Skip to content

Commit ed19b66

Browse files
authored
fix(query-builder): improve isAdvancedFiltering check - 20.0.x (#16020)
* fix(query-builder): improve isAdvancedFiltering check and add checks when entities is not set
1 parent 732b58f commit ed19b66

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

projects/igniteui-angular/src/lib/query-builder/query-builder-tree.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
(selectionChanging)="onReturnFieldSelectChanging($event)"
7676
[overlaySettings]="returnFieldSelectOverlaySettings"
7777
[disabled]="!selectedEntity"
78-
[ngModel]="selectedReturnFields[0]"
78+
[ngModel]="selectedReturnFields ? selectedReturnFields[0] : null"
7979
[placeholder]="this.resourceStrings.igx_query_builder_select_return_field_single"
8080
[style.display]="isInEditMode() ? 'block' : 'none'"
8181
(opening)="exitEditAddMode()"
@@ -466,7 +466,7 @@
466466
<ng-container>
467467
<igx-query-builder-tree
468468
[style.display]="expressionItem.inEditMode || expressionItem.expanded ? 'block' : 'none'"
469-
[entities]="(this.selectedEntity ? this.selectedEntity.childEntities : entities[0].childEntities) ?? entities"
469+
[entities]="(this.selectedEntity ? this.selectedEntity.childEntities : entities?.[0]?.childEntities) ?? (entities ?? [])"
470470
[queryBuilder]="this.queryBuilder"
471471
[parentExpression]="expressionItem"
472472
[expectedReturnField]="this.selectedField?.field"

projects/igniteui-angular/src/lib/query-builder/query-builder-tree.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,7 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
523523
protected isAdvancedFiltering(): boolean {
524524
return (this.entities?.length === 1 && !this.entities[0]?.name) ||
525525
this.entities?.find(e => e.childEntities?.length > 0) !== undefined ||
526-
this.entities !== this.queryBuilder?.entities;
526+
(this.entities?.length > 0 && this.queryBuilder?.entities?.length > 0 && this.entities !== this.queryBuilder?.entities);
527527
}
528528

529529
/** @hidden */

projects/igniteui-angular/src/lib/query-builder/query-builder.component.spec.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,13 @@ describe('IgxQueryBuilder', () => {
127127
expect(field.pipeArgs).toBeUndefined();
128128
});
129129
}));
130+
131+
it('Should not throw error when entities are empty and expressionTree is set.', fakeAsync(() => {
132+
expect(() => {
133+
fix = TestBed.createComponent(IgxQueryBuilderInvalidSampleTestComponent);
134+
fix.detectChanges();
135+
}).not.toThrow();
136+
}));
130137
});
131138

132139
describe('Interactions', () => {
@@ -3234,6 +3241,27 @@ export class IgxQueryBuilderSampleTestComponent implements OnInit {
32343241
}
32353242
}
32363243

3244+
@Component({
3245+
template: `
3246+
<igx-query-builder #queryBuilder [entities]="this.entities" [expressionTree]="this.expressionTree">
3247+
</igx-query-builder>
3248+
`,
3249+
standalone: true,
3250+
imports: [
3251+
IgxQueryBuilderComponent
3252+
]
3253+
})
3254+
export class IgxQueryBuilderInvalidSampleTestComponent implements OnInit {
3255+
@ViewChild(IgxQueryBuilderComponent) public queryBuilder: IgxQueryBuilderComponent;
3256+
public entities: Array<any>;
3257+
public expressionTree: IExpressionTree;
3258+
3259+
public ngOnInit(): void {
3260+
this.entities = [];
3261+
this.expressionTree = QueryBuilderFunctions.generateExpressionTree();
3262+
}
3263+
}
3264+
32373265
@Component({
32383266
template: `
32393267
<igx-query-builder #queryBuilder [entities]="this.entities" [expressionTree]="this.expressionTree">

0 commit comments

Comments
 (0)