Skip to content

Commit c14b3eb

Browse files
committed
fix(query-builder): on select all click return fields should be *
1 parent 232d9fc commit c14b3eb

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -611,11 +611,7 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
611611
if (this._expressionTree) {
612612
this._expressionTree.entity = this._entityNewValue.name;
613613

614-
if (this.fields.length === this._selectedReturnFields.length) {
615-
this._expressionTree.returnFields = ['*'];
616-
} else {
617-
this._expressionTree.returnFields = this._selectedReturnFields;
618-
}
614+
this._expressionTree.returnFields = this.fields.length === this._selectedReturnFields.length ? ['*'] : this._selectedReturnFields;
619615

620616
this._expressionTree.filteringOperands = [];
621617

@@ -649,7 +645,7 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
649645
this._selectedReturnFields = value;
650646

651647
if (this._expressionTree && !this.parentExpression) {
652-
this._expressionTree.returnFields = value;
648+
this._expressionTree.returnFields = value.length === this.fields.length ? ['*'] : value;
653649
this.expressionTreeChange.emit(this._expressionTree);
654650
}
655651
}

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ describe('IgxQueryBuilder', () => {
444444
expect((dropdownItems[4] as HTMLElement).innerText).toBe('Released');
445445
}));
446446

447-
it('ReturnFields should be properly calculated.', fakeAsync(() => {
447+
it('ReturnFields should be properly calculated on entity change.', fakeAsync(() => {
448448
queryBuilder.expressionTree = QueryBuilderFunctions.generateExpressionTree();
449449
queryBuilder.showEntityChangeDialog = false;
450450
fix.detectChanges();
@@ -470,6 +470,30 @@ describe('IgxQueryBuilder', () => {
470470
expect(exprTreeReturnFields).toBe(`["*"]`);
471471
}));
472472

473+
it('ReturnFields should be properly calculated on selectAll click.', fakeAsync(() => {
474+
queryBuilder.expressionTree = QueryBuilderFunctions.generateExpressionTree();
475+
queryBuilder.showEntityChangeDialog = false;
476+
fix.detectChanges();
477+
478+
// Click selectAll button in order to deselect all fields
479+
QueryBuilderFunctions.selectFieldsInEditModeExpression(fix, [0]);
480+
tick(100);
481+
fix.detectChanges();
482+
483+
// Verify the returnFields
484+
let exprTreeReturnFields = JSON.stringify(fix.componentInstance.queryBuilder.expressionTree.returnFields);
485+
expect(exprTreeReturnFields).toBe(`[]`);
486+
487+
// Click selectAll button in order to select all fields
488+
QueryBuilderFunctions.selectFieldsInEditModeExpression(fix, [0]);
489+
tick(100);
490+
fix.detectChanges();
491+
492+
// Verify the returnFields
493+
exprTreeReturnFields = JSON.stringify(fix.componentInstance.queryBuilder.expressionTree.returnFields);
494+
expect(exprTreeReturnFields).toBe(`["*"]`);
495+
}));
496+
473497
it('Column dropdown should contain proper fields based on the entity.', fakeAsync(() => {
474498
const queryBuilderElement: HTMLElement = fix.debugElement.queryAll(By.css(`.${QueryBuilderSelectors.QUERY_BUILDER_TREE}`))[0].nativeElement;
475499

0 commit comments

Comments
 (0)