Styles and Appearances in Blazor QueryBuilder Component

30 Jun 20268 minutes to read

Customize the appearance of the Query Builder by overriding the component’s default CSS. The following table lists commonly used CSS selectors and the corresponding UI areas they affect. For consistent theming across applications, consider generating a custom theme with Theme Studio.

CSS Class Purpose of Class
.e-query-builder .e-btn-group input + label.e-btn Customize the condition button in the Query Builder.
.e-query-builder .e-btn-group input:checked + label.e-btn Customize the selected condition button in the Query Builder.
.e-query-builder .e-group-body .e-rule-container Customize the Query Builder rule container.
.e-query-builder .e-group-action .e-btn Customize the Query Builder Add Group/Add Condition buttons.
.e-query-builder .e-removerule.e-btn.e-round Customize the Query Builder delete button.
.e-query-builder .e-rule-list > ::after, .e-query-builder .e-rule-list > ::before Customize the Query Builder group joining line.
.e-query-builder .e-rule-container.e-joined-rule Customize the Query Builder condition joining line.

Background Customization

The outermost wrapper rendered by QueryBuilder carries the .e-query-builder class. Override its background, border and border-radius to control the overall surface of the component.

.e-query-builder {
    background-color: #f5f7fb;
    border: 1px solid #c3cad6;
    border-radius: 10px;
}

Group Container Customization

Every group (the root group and any nested groups) is wrapped in a .e-group-container. The container holds both the header (AND/OR + actions) and the body (rules). Use .e-query-builder .e-group-container to change its background, border and rounding; for nested groups, qualify the selector with a descendant .e-group-container.

.e-query-builder .e-group-container {
    background-color: #ffffff;
    border: 1px solid #d6dce5;
    border-radius: 6px;
}

Group Header Customization

The header strip that contains the AND/OR toggle and the add / lock-group buttons uses .e-group-header. Override its background and padding to visually separate the header from the rules area, and add a bottom border to draw a divider.

.e-query-builder .e-group-header {
    background-color: #eef2f7;
    border-bottom: 1px solid #d6dce5;
    padding: 8px 12px;
}

Group Body Customization

The rules region below the header uses .e-group-body .e-rule-container. Adjust its background and inner padding to control the breathing room around the rule rows.

.e-query-builder .e-group-body, 
.e-query-builder .e-rule-container {
    background-color: beige;
    padding: 12px 16px;
}

AND / OR Button Group Customization

The connector toggle is a Blazor button group. The two visible buttons are the labels .e-btngroup-and-lbl and .e-btngroup-or-lbl; the active label is selected via the :checked + label sibling selector against the hidden radios .e-btngroup-and / .e-btngroup-or. Use these to style the unselected, hover and selected states.

.e-query-builder .e-group-header .e-btn.e-btngroup-and-lbl,
.e-query-builder .e-group-header .e-btn.e-btngroup-or-lbl {
    background-color: #d9d9d9;
    border: none;
    color: #2c547b;
}

.e-query-builder .e-group-header .e-btn.e-btngroup-and-lbl:hover,
.e-query-builder .e-group-header .e-btn.e-btngroup-or-lbl:hover {
    background-color: #fff2c6;
    color: #ff0707;
}

.e-query-builder .e-group-header .e-btngroup-and:checked + .e-btngroup-and-lbl,
.e-query-builder .e-group-header .e-btngroup-or:checked + .e-btngroup-or-lbl {
    background-color: #6cfd0d;
    border-color: #6cfd0d;
    color: #f30041;
}

Add Button & Lock Group Button Customization

The right-hand action area of the group header hosts the “Add Group/Condition” dropdown button (.e-add-btn) and the “Lock Group” button (.e-lock-grp-btn). Both render as round icon buttons; override their background, border and the embedded .e-icons color to restyle them.

.e-query-builder .e-group-header .e-add-btn,
.e-query-builder .e-group-header .e-lock-grp-btn {
    background-color: #0d6efd;
    border: 1px solid #0035ff;
    color: #ffffff;
}

.e-query-builder .e-group-header .e-add-btn:hover,
.e-query-builder .e-group-header .e-lock-grp-btn:hover {
    background-color: beige;
    border-color: transparent;
    box-shadow: 0px 0px 5px chocolate;
}

.e-query-builder .e-group-header .e-add-btn .e-icons,
.e-query-builder .e-group-header .e-lock-grp-btn .e-icons {
    color: #0035ff;
}

.e-query-builder .e-group-header .e-add-btn .e-icons:hover {
    color: orangered;
}

Rule Container Customization

Each rule row is wrapped in .e-rule-container. Override its background, border and radius to give every rule a distinct card-like appearance. The default theme also adds the modifier class .e-horizontal-mode or .e-vertical-mode — chain it to scope the override to a specific layout.

.e-query-builder .e-rule-container {
    background-color: darkorange;
    border: 5px solid chocolate;
    border-radius: 5px;
    padding: 10px;
}

.e-query-builder .e-rule-container.e-horizontal-mode {
    background-color: antiquewhite;
}

Rule Action Buttons Customization

Each rule’s right-hand action group sits inside .e-rule-value-delete and contains three round icon buttons: clone (.e-clone-rule), lock (.e-lock-rule) and delete (.e-rule-delete, also marked .e-removerule). Style them individually or together.

.e-query-builder .e-rule-value-delete .e-clone-rule,
.e-query-builder .e-rule-value-delete .e-lock-rule,
.e-query-builder .e-rule-value-delete .e-rule-delete {
    background-color: #ffffff;
    border: 1px solid #d6dce5;
    color: #495057;
}

.e-query-builder .e-rule-value-delete .e-clone-rule:hover,
.e-query-builder .e-rule-value-delete .e-lock-rule:hover {
    background-color: #eef2f7;
    color: #0d6efd;
}

.e-query-builder .e-rule-value-delete .e-rule-delete:hover,
.e-query-builder .e-rule-value-delete .e-removerule:hover {
    background-color: #fdecec;
    border-color: #dc3545;
    color: #dc3545;
}

Connector Lines Between Rules

The dotted L-shaped lines that link sibling rules are drawn with the ::before and ::after pseudo-elements of the children of .e-rule-list. Override their border-color, border-style and border-width to restyle the connectors; the first child’s ::before and the last child’s ::after are hidden by default to keep the chain clean.

.e-query-builder .e-rule-list > ::before,
.e-query-builder .e-rule-list > ::after {
    border-color: #0d6efd;
    border-style: dashed;
}

.e-query-builder .e-rule-list > ::before {
    border-width: 0 0 2px 2px;
}

.e-query-builder .e-rule-list > ::after {
    border-width: 0 0 0 2px;
}

.e-query-builder .e-rule-list > :first-child::before,
.e-query-builder .e-rule-list > :last-child::after {
    display: none;
}

Horizontal vs Vertical Mode Tweaks

The Query Builder switches between two layouts by toggling .e-horizontal-mode and .e-vertical-mode on each .e-rule-container. Use the modifier class to apply layout-specific spacing — for example a wider value column in horizontal mode and a right-aligned delete button in vertical mode.

.e-query-builder .e-rule-container.e-horizontal-mode .e-rule-value {
    width: 240px;
}

.e-query-builder .e-rule-container.e-horizontal-mode .e-rule-value-delete {
    margin-left: 8px;
}

.e-query-builder .e-rule-container.e-vertical-mode .e-rule-value-delete {
    display: block;
    text-align: right;
    margin-top: 8px;
}

.e-query-builder .e-rule-container.e-vertical-mode .e-rule-delete {
    margin-bottom: 12px;
}