diff --git a/projects/igniteui-angular/src/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.ts b/projects/igniteui-angular/src/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.ts index e334ede030b..a1ab005dc9e 100644 --- a/projects/igniteui-angular/src/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.ts +++ b/projects/igniteui-angular/src/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.ts @@ -63,11 +63,13 @@ export class IgxAdvancedFilteringDialogComponent implements AfterViewInit, OnDes private _grid: GridType; constructor(public cdr: ChangeDetectorRef, protected platform: PlatformUtil) { } + /** * @hidden @internal */ public ngAfterViewInit(): void { this.queryBuilder.setPickerOutlet(this.grid.outlet); + this.queryBuilder.isAdvancedFiltering = true; } /** @@ -197,6 +199,10 @@ export class IgxAdvancedFilteringDialogComponent implements AfterViewInit, OnDes * @hidden @internal */ public generateEntity() { + if (this.queryBuilder) { + this.queryBuilder.isAdvancedFiltering = true; + } + if (this.queryBuilder?.entities) { return this.queryBuilder?.entities; } else if (this.grid.type === 'hierarchical') { diff --git a/projects/igniteui-angular/src/lib/query-builder/query-builder-functions.spec.ts b/projects/igniteui-angular/src/lib/query-builder/query-builder-functions.spec.ts index 917a630ffaf..d8779ebf872 100644 --- a/projects/igniteui-angular/src/lib/query-builder/query-builder-functions.spec.ts +++ b/projects/igniteui-angular/src/lib/query-builder/query-builder-functions.spec.ts @@ -153,7 +153,7 @@ export class QueryBuilderFunctions { * Get the root group. */ public static getQueryBuilderTreeRootGroup(fix: ComponentFixture, level = 0) { - const exprContainer = QueryBuilderFunctions.getQueryBuilderExpressionsContainer(fix, level).children[1]; + const exprContainer = QueryBuilderFunctions.getQueryBuilderExpressionsContainer(fix, level).children[0]; const rootGroup = exprContainer.querySelector(`:scope > .${QueryBuilderSelectors.FILTER_TREE}`); return rootGroup; } diff --git a/projects/igniteui-angular/src/lib/query-builder/query-builder-tree.component.html b/projects/igniteui-angular/src/lib/query-builder/query-builder-tree.component.html index 7e167a243c7..5a2e8fced35 100644 --- a/projects/igniteui-angular/src/lib/query-builder/query-builder-tree.component.html +++ b/projects/igniteui-angular/src/lib/query-builder/query-builder-tree.component.html @@ -7,88 +7,90 @@ -
-
- {{ this.resourceStrings.igx_query_builder_from_label }} - - @for (entity of entities; track entity.name) { - - {{entity.name}} - - } - -
- -
- @if (!this.isHierarchicalNestedQuery()) { - {{ this.resourceStrings.igx_query_builder_select_label }} - } - @if (!parentExpression) { - - -
- - -
- {{ this.resourceStrings.igx_query_builder_select_all }} -
-
-
-
- } - @else { - +
+ {{ this.resourceStrings.igx_query_builder_from_label }} + - @for (field of fields; track field.field) { - - {{ field.field }} + @for (entity of entities; track entity.name) { + + {{entity.name}} } - } +
+ +
+ @if (!this.isHierarchicalNestedQuery()) { + {{ this.resourceStrings.igx_query_builder_select_label }} + } + @if (!parentExpression) { + + +
+ + +
+ {{ this.resourceStrings.igx_query_builder_select_all }} +
+
+
+
+ } + @else { + + @for (field of fields; track field.field) { + + {{ field.field }} + + } + + } +
-
+ }
- @if (!this.isAdvancedFiltering()) { + @if (isViewInit() && !this.isAdvancedFiltering()) { Where } f.field) : []; } @@ -475,6 +475,7 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy { private _locale; private _entityNewValue: EntityType; private _resourceStrings = getCurrentResourceStrings(QueryBuilderResourceStringsEN); + private _viewInitialized = false; /** * Returns if the select entity dropdown at the root level is disabled after the initial selection. @@ -521,9 +522,7 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy { /** @hidden */ protected isAdvancedFiltering(): boolean { - return (this.entities?.length === 1 && !this.entities[0]?.name) || - this.entities?.find(e => e.childEntities?.length > 0) !== undefined || - this.entities !== this.queryBuilder?.entities; + return this.queryBuilder?.isAdvancedFiltering; } /** @hidden */ @@ -570,6 +569,8 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy { // Trigger additional change detection cycle this.cdr.detectChanges(); + + this._viewInitialized = true; } /** @@ -868,7 +869,7 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy { this._editedExpression = null; } - if (this.selectedReturnFields.length === 0) { + if (this.selectedReturnFields?.length === 0) { this.selectedReturnFields = this.fields.map(f => f.field); } @@ -1188,9 +1189,11 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy { this._editedExpression = expressionItem; this.cdr.detectChanges(); - this.entitySelectOverlaySettings.target = this.entitySelect.element; - this.entitySelectOverlaySettings.excludeFromOutsideClick = [this.entitySelect.element as HTMLElement]; - this.entitySelectOverlaySettings.positionStrategy = new AutoPositionStrategy(); + if (this.entitySelect) { + this.entitySelectOverlaySettings.target = this.entitySelect.element; + this.entitySelectOverlaySettings.excludeFromOutsideClick = [this.entitySelect.element as HTMLElement]; + this.entitySelectOverlaySettings.positionStrategy = new AutoPositionStrategy(); + } if (this.returnFieldSelect) { this.returnFieldSelectOverlaySettings.target = this.returnFieldSelect.element; @@ -1449,8 +1452,13 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy { return text; } + public isViewInit(): boolean { + return this._viewInitialized; + } + public isInEditMode(): boolean { - return !this.parentExpression || (this.parentExpression && this.parentExpression.inEditMode); + const isInEditMode = !this.parentExpression || (this.parentExpression && this.parentExpression.inEditMode); + return isInEditMode; } public onInEditModeChanged(expressionItem: ExpressionOperandItem) { diff --git a/projects/igniteui-angular/src/lib/query-builder/query-builder.component.ts b/projects/igniteui-angular/src/lib/query-builder/query-builder.component.ts index 2f101085378..4e1337bf560 100644 --- a/projects/igniteui-angular/src/lib/query-builder/query-builder.component.ts +++ b/projects/igniteui-angular/src/lib/query-builder/query-builder.component.ts @@ -165,6 +165,13 @@ export class IgxQueryBuilderComponent implements OnDestroy { @Output() public expressionTreeChange = new EventEmitter(); + /** + * @hidden @internal + * + * used by the grid + */ + public isAdvancedFiltering = false; + /** * @hidden @internal */