Skip to content

Commit a9fba21

Browse files
ddariboteodosiahChronosSF
authored
fix(advanced-filtering): commit changes on applying (#12277)
* fix(adv-filtering): commit changes on applying * fix(adv-filtering): use QB exitOperandEdit method Co-authored-by: Teodosia Hristodorova <[email protected]> Co-authored-by: Stamen Stoychev <[email protected]>
1 parent 0b7b0b9 commit a9fba21

File tree

2 files changed

+77
-1
lines changed

2 files changed

+77
-1
lines changed

projects/igniteui-angular/src/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { DisplayDensity } from '../../../core/displayDensity';
1111
import { IgxQueryBuilderComponent } from '../../../query-builder/query-builder.component';
1212
import { CurrentResourceStrings } from '../../../core/i18n/resources';
1313
import { GridResourceStringsEN } from '../../../core/i18n/grid-resources';
14+
import { IFilteringExpressionsTree } from '../../../data-operations/filtering-expressions-tree';
1415

1516
/**
1617
* A component used for presenting advanced filtering UI for a Grid.
@@ -176,7 +177,8 @@ export class IgxAdvancedFilteringDialogComponent implements AfterViewInit, OnDes
176177
*/
177178
public applyChanges(event?: Event) {
178179
this.grid.crudService.endEdit(false, event);
179-
this.grid.advancedFilteringExpressionsTree = this.queryBuilder.createExpressionTreeFromGroupItem(this.queryBuilder.rootGroup);
180+
this.queryBuilder.exitOperandEdit();
181+
this.grid.advancedFilteringExpressionsTree = this.queryBuilder.expressionTree as IFilteringExpressionsTree;
180182
}
181183

182184
/**

projects/igniteui-angular/src/lib/grids/grid/grid-filtering-advanced.spec.ts

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -908,6 +908,80 @@ describe('IgxGrid - Advanced Filtering #grid - ', () => {
908908
expect(GridFunctions.getAdvancedFilteringInitialAddGroupButtons(fix).length).toBe(2);
909909
}));
910910

911+
it('Should apply filters on Apply button click without prior Commit button click', fakeAsync(() => {
912+
grid.openAdvancedFilteringDialog();
913+
fix.detectChanges();
914+
915+
GridFunctions.clickAdvancedFilteringInitialAddGroupButton(fix, 0);
916+
tick(100);
917+
fix.detectChanges();
918+
919+
selectColumnInEditModeExpression(fix, 1); // Select 'ProductName' column.
920+
selectOperatorInEditModeExpression(fix, 2); // Select 'Starts With' operator.
921+
const input = GridFunctions.getAdvancedFilteringValueInput(fix).querySelector('input');
922+
UIInteractions.clickAndSendInputElementValue(input, 'ign', fix); // Type filter value.
923+
924+
GridFunctions.clickAdvancedFilteringApplyButton(fix);
925+
tick(100);
926+
fix.detectChanges();
927+
928+
// Verify the filter results.
929+
expect(grid.filteredData.length).toEqual(2);
930+
expect(grid.rowList.length).toBe(2);
931+
expect(GridFunctions.getCurrentCellFromGrid(grid, 0, 1).value).toBe('Ignite UI for JavaScript');
932+
expect(GridFunctions.getCurrentCellFromGrid(grid, 1, 1).value).toBe('Ignite UI for Angular');
933+
}));
934+
935+
it('Should close the dialog on Apply button click if not all expression inputs are set', fakeAsync(() => {
936+
grid.openAdvancedFilteringDialog();
937+
fix.detectChanges();
938+
939+
GridFunctions.clickAdvancedFilteringInitialAddGroupButton(fix, 0);
940+
tick(100);
941+
fix.detectChanges();
942+
943+
GridFunctions.clickAdvancedFilteringApplyButton(fix);
944+
tick(100);
945+
fix.detectChanges();
946+
947+
// Verify the dialog is closed an no records are filtered
948+
expect(GridFunctions.getAdvancedFilteringComponent(fix)).toBeNull();
949+
expect(grid.filteredData).toBe(null);
950+
951+
grid.openAdvancedFilteringDialog();
952+
fix.detectChanges();
953+
954+
GridFunctions.clickAdvancedFilteringInitialAddGroupButton(fix, 0);
955+
tick(100);
956+
fix.detectChanges();
957+
958+
selectColumnInEditModeExpression(fix, 1); // Select 'ProductName' column.
959+
960+
GridFunctions.clickAdvancedFilteringApplyButton(fix);
961+
tick(100);
962+
fix.detectChanges();
963+
964+
expect(GridFunctions.getAdvancedFilteringComponent(fix)).toBeNull();
965+
expect(grid.filteredData).toBe(null);
966+
967+
grid.openAdvancedFilteringDialog();
968+
fix.detectChanges();
969+
970+
GridFunctions.clickAdvancedFilteringInitialAddGroupButton(fix, 0);
971+
tick(100);
972+
fix.detectChanges();
973+
974+
selectColumnInEditModeExpression(fix, 1); // Select 'ProductName' column.
975+
selectOperatorInEditModeExpression(fix, 2); // Select 'Starts With' operator.
976+
977+
GridFunctions.clickAdvancedFilteringApplyButton(fix);
978+
tick(100);
979+
fix.detectChanges();
980+
981+
expect(GridFunctions.getAdvancedFilteringComponent(fix)).toBeNull();
982+
expect(grid.filteredData).toBe(null);
983+
}));
984+
911985
it('Column dropdown should contain only filterable columns.', fakeAsync(() => {
912986
// Open Advanced Filtering dialog.
913987
grid.openAdvancedFilteringDialog();

0 commit comments

Comments
 (0)