Skip to content

Commit 733b44b

Browse files
authored
fix(ESF): Fix ExpressionChangedAfterItHasBeenCheckedError on opening ESF with a conditional filter. #16244 (#16285)
* fix(ESF): Adding a test for the conditional filter. #16244 * fix(ESF): Removed `this.` from conditional filter template.
1 parent c0b6d5b commit 733b44b

File tree

3 files changed

+56
-4
lines changed

3 files changed

+56
-4
lines changed

projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
[igxDropDownItemNavigation]="subMenu"
88
role="menuitem"
99
aria-haspopup="true"
10-
[attr.aria-controls]="this.subMenu?.listId"
11-
[attr.aria-activedescendant]="!this.subMenu?.collapsed ? this.subMenu?.focusedItem?.id : null">
10+
[attr.aria-controls]="subMenu?.listId"
11+
[attr.aria-activedescendant]="!subMenu?.collapsed ? subMenu?.focusedItem?.id : null">
1212
<span class="igx-excel-filter__filter-number">
1313
{{ subMenuText }}
1414
@if (filterNumber > 0) { ({{filterNumber}}) }

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

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ import {
4343
IgxGridExternalESFTemplateComponent,
4444
IgxGridDatesFilteringComponent,
4545
LoadOnDemandFilterStrategy,
46-
IgxGridFilteringNumericComponent
46+
IgxGridFilteringNumericComponent,
47+
IgxGridConditionalFilteringComponent
4748
} from '../../test-utils/grid-samples.spec';
4849
import { GridSelectionMode, FilterMode, Size } from '../common/enums';
4950
import { ControlsFunction } from '../../test-utils/controls-functions.spec';
@@ -7080,6 +7081,27 @@ describe('IgxGrid - Filtering actions - Excel style filtering #grid', () => {
70807081
}));
70817082

70827083
});
7084+
7085+
describe('IgxGrid - Conditional Filter', () => {
7086+
let fix: ComponentFixture<IgxGridConditionalFilteringComponent>;
7087+
let grid: IgxGridComponent;
7088+
beforeEach(fakeAsync(() => {
7089+
fix = TestBed.createComponent(IgxGridConditionalFilteringComponent);
7090+
fix.detectChanges();
7091+
grid = fix.componentInstance.grid;
7092+
grid.filterMode = FilterMode.excelStyleFilter;
7093+
fix.detectChanges();
7094+
}));
7095+
7096+
it('Should not throw console error on opening the drop-down.', async () => {
7097+
spyOn(console, 'error');
7098+
GridFunctions.clickExcelFilterIconFromCodeAsync(fix, grid, 'Downloads');
7099+
fix.detectChanges();
7100+
await wait(100);
7101+
7102+
expect(console.error).not.toHaveBeenCalled();
7103+
});
7104+
});
70837105
});
70847106

70857107
describe('IgxGrid - Custom Filtering Strategy #grid', () => {

projects/igniteui-angular/src/lib/test-utils/grid-samples.spec.ts

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { IgxColumnComponent } from '../grids/columns/column.component';
1313
import { IgxFilteringOperand, IgxNumberFilteringOperand } from '../data-operations/filtering-condition';
1414
import { IFilteringExpressionsTree, FilteringExpressionsTree } from '../data-operations/filtering-expressions-tree';
1515
import { FilteringStrategy, IgxFilterItem } from '../data-operations/filtering-strategy';
16-
import { ISortingOptions, IgxExcelStyleHeaderIconDirective, IgxGridToolbarAdvancedFilteringComponent, IgxSortAscendingHeaderIconDirective, IgxSortDescendingHeaderIconDirective, IgxSortHeaderIconDirective } from '../grids/public_api';
16+
import { ISortingOptions, IgxExcelStyleConditionalFilterComponent, IgxExcelStyleHeaderIconDirective, IgxGridToolbarAdvancedFilteringComponent, IgxSortAscendingHeaderIconDirective, IgxSortDescendingHeaderIconDirective, IgxSortHeaderIconDirective } from '../grids/public_api';
1717
import { IgxRowAddTextDirective, IgxRowEditActionsDirective, IgxRowEditTabStopDirective, IgxRowEditTemplateDirective, IgxRowEditTextDirective } from '../grids/grid.rowEdit.directive';
1818
import { IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleFilterOperationsTemplateDirective, IgxGridExcelStyleFilteringComponent } from '../grids/filtering/excel-style/excel-style-filtering.component';
1919
import { FilteringLogic } from '../data-operations/filtering-expression.interface';
@@ -2761,3 +2761,33 @@ export class ObjectCloneStrategy implements IDataCloneStrategy {
27612761
export class IgxGridRowEditingDefinedColumnsComponent extends BasicGridComponent {
27622762
public override data = SampleTestData.foodProductData();
27632763
}
2764+
2765+
@Component({
2766+
template: `<igx-grid [data]="data" height="500px" [allowFiltering]="true">
2767+
<igx-grid-excel-style-filtering>
2768+
<igx-excel-style-filter-operations>
2769+
<igx-excel-style-conditional-filter></igx-excel-style-conditional-filter>
2770+
</igx-excel-style-filter-operations>
2771+
</igx-grid-excel-style-filtering>
2772+
<igx-column width="100px" [field]="'ID'" [header]="'ID'" [hasSummary]="true"
2773+
[filterable]="false" [resizable]="resizable"></igx-column>
2774+
<igx-column width="100px" [field]="'ProductName'" [filterable]="filterable" [resizable]="resizable" dataType="string"></igx-column>
2775+
<igx-column width="100px" [field]="'Downloads'" [filterable]="filterable" [resizable]="resizable" dataType="number"></igx-column>
2776+
<igx-column width="100px" [field]="'Released'" [filterable]="filterable" [resizable]="resizable" dataType="boolean"></igx-column>
2777+
<igx-column width="100px" [field]="'ReleaseDate'" [header]="'ReleaseDate'" headerClasses="header-release-date"
2778+
[filterable]="filterable" [resizable]="resizable" dataType="date">
2779+
</igx-column>
2780+
<igx-column width="100px" [field]="'ReleaseDateTime'" [header]="'ReleaseDateTime'" headerClasses="header-release-date-time"
2781+
[filterable]="filterable" [resizable]="resizable" dataType="dateTime">
2782+
</igx-column>
2783+
<igx-column width="100px" [field]="'ReleaseTime'" [header]="'ReleaseTime'" headerClasses="header-release-time"
2784+
[filterable]="filterable" [resizable]="resizable" dataType="time">
2785+
</igx-column>
2786+
<igx-column width="100px" [field]="'AnotherField'" [header]="'Another Field'" [filterable]="filterable"
2787+
dataType="string" [filters]="customFilter">
2788+
</igx-column>
2789+
</igx-grid>`,
2790+
imports: [IgxGridComponent, IgxColumnComponent, IgxExcelStyleConditionalFilterComponent, IgxGridExcelStyleFilteringComponent, IgxExcelStyleFilterOperationsTemplateDirective]
2791+
})
2792+
export class IgxGridConditionalFilteringComponent extends IgxGridFilteringComponent {
2793+
}

0 commit comments

Comments
 (0)