@use '../../base' as *;
@use 'sass:string';

/// @access private
/// @author <a href="https://github.com/simeonoff" target="_blank">Simeon Simeonoff</a>
@mixin component {
    @include _advanced-filtering-tree();
    @include _query-builder-tree();
    @include _query-builder-dialog();

    @include b(igx-query-builder) {
        $this: bem--selector-to-string(&);
        @include register-component(
            $name: string.slice($this, 2, -1),
            $deps: (
                igx-icon,
                igx-button,
                igx-chip,
                igx-select,
                igx-input-button,
                igx-icon-button,
                igx-overlay,
            )
        );

        @extend %advanced-filter !optional;

        @include e(header) {
            @extend %advanced-filter__header !optional;
        }

        @include e(title) {
            @extend %advanced-filter__title !optional;
        }

        @include e(label) {
            @extend %advanced-filter__label !optional;
        }

        @include e(main) {
            @extend %advanced-filter__main !optional;
        }

        @include e(root) {
            @extend %advanced-filter__root !optional;
        }

        @include e(root-actions) {
            @extend %advanced-filter__root-actions !optional;
        }

        @include e(outlet) {
            @extend %advanced-filter__outlet !optional;
        }

        @include m('inline') {
            @extend %advanced-filter--inline !optional;
        }
    }
}

@mixin _advanced-filtering-tree {
    @include b(igx-filter-tree) {
        @extend %filter-tree !optional;

        @include e(subquery) {
            @extend %filter-tree__subquery !optional;
        }

        @include e(section) {
            @extend %filter-tree__section !optional;
        }

        @include e(line) {
            @extend %filter-tree__line !optional;
        }

        @include e(line, $m: 'and') {
            @extend %filter-tree__line--and !optional;
        }

        @include e(line, $m: 'or') {
            @extend %filter-tree__line--or !optional;
        }

        @include e(button, $m: 'and') {
            @extend %filter-tree__button--and !optional;
        }

        @include e(button, $m: 'or') {
            @extend %filter-tree__button--or !optional;
        }

        @include e(expressions) {
            @extend %filter-tree__expressions !optional;
        }

        @include e(expression-context-menu) {
            @extend %filter-tree__expression-context-menu !optional;
        }

        @include e(expression-section) {
            @extend %filter-tree__expression-section !optional;
        }

        @include e(expression-item) {
            @extend %filter-tree__expression-item !optional;
        }

        @include e(expression-item-drop-ghost) {
            @extend %filter-tree__expression-item-ghost !optional;
        }
	    
	    @include e(expression-item-keyboard-ghost) {
		    @extend %filter-tree__expression-item-keyboard-ghost !optional;
	    }

        @include e(expression-column) {
            @extend %filter-tree__expression-column !optional;
        }

        @include e(expression-actions) {
            @extend %filter-tree__expression-actions !optional;
        }

        @include e(expression-condition) {
            @extend %filter-tree__expression-condition !optional;
        }

        @include e(buttons) {
            @extend %filter-tree__buttons !optional;
        }

        @include e(inputs) {
            @extend %filter-tree__inputs !optional;
        }

        @include e(inputs-field) {
            @extend %filter-tree__inputs-field !optional;
        }

        @include e(inputs-actions) {
            @extend %filter-tree__inputs-actions !optional;
        }

        @include e(details-button) {
            @extend %filter-tree-details-button !optional;;
        }
    }
}

@mixin _query-builder-tree {
    @include b(igx-query-builder-tree) {
        @extend %query-builder-tree !optional;

        @include m(level-0) {
            @extend %query-level-0 !optional;
        }
    }
}

@mixin _query-builder-dialog {
    @include b(igx-query-builder-dialog) {
        @extend %query-builder-dialog !optional;;
    }
}
