Skip to content

Commit 7f538ff

Browse files
authored
fix(ESF): Fix ExpressionChangedAfterItHasBeenCheckedError on opening ESF with a conditional filter. #16244 (#16286)
* fix(ESF): Adding a test for the conditional filter. #16244 * fix(ESF): Removed `this.` from conditional filter template.
1 parent 5993c89 commit 7f538ff

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
@@ -44,7 +44,8 @@ import {
4444
IgxGridExternalESFTemplateComponent,
4545
IgxGridDatesFilteringComponent,
4646
LoadOnDemandFilterStrategy,
47-
IgxGridFilteringNumericComponent
47+
IgxGridFilteringNumericComponent,
48+
IgxGridConditionalFilteringComponent
4849
} from '../../test-utils/grid-samples.spec';
4950
import { GridSelectionMode, FilterMode, Size } from '../common/enums';
5051
import { ControlsFunction } from '../../test-utils/controls-functions.spec';
@@ -7083,6 +7084,27 @@ describe('IgxGrid - Filtering actions - Excel style filtering #grid', () => {
70837084
}));
70847085

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

70887110
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 { ColumnPinningPosition, ISortingOptions, IgxExcelStyleHeaderIconDirective, IgxGridToolbarAdvancedFilteringComponent, IgxSortAscendingHeaderIconDirective, IgxSortDescendingHeaderIconDirective, IgxSortHeaderIconDirective } from '../grids/public_api';
16+
import { ColumnPinningPosition, 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';
@@ -2782,3 +2782,33 @@ export class ObjectCloneStrategy implements IDataCloneStrategy {
27822782
export class IgxGridRowEditingDefinedColumnsComponent extends BasicGridComponent {
27832783
public override data = SampleTestData.foodProductData();
27842784
}
2785+
2786+
@Component({
2787+
template: `<igx-grid [data]="data" height="500px" [allowFiltering]="true">
2788+
<igx-grid-excel-style-filtering>
2789+
<igx-excel-style-filter-operations>
2790+
<igx-excel-style-conditional-filter></igx-excel-style-conditional-filter>
2791+
</igx-excel-style-filter-operations>
2792+
</igx-grid-excel-style-filtering>
2793+
<igx-column width="100px" [field]="'ID'" [header]="'ID'" [hasSummary]="true"
2794+
[filterable]="false" [resizable]="resizable"></igx-column>
2795+
<igx-column width="100px" [field]="'ProductName'" [filterable]="filterable" [resizable]="resizable" dataType="string"></igx-column>
2796+
<igx-column width="100px" [field]="'Downloads'" [filterable]="filterable" [resizable]="resizable" dataType="number"></igx-column>
2797+
<igx-column width="100px" [field]="'Released'" [filterable]="filterable" [resizable]="resizable" dataType="boolean"></igx-column>
2798+
<igx-column width="100px" [field]="'ReleaseDate'" [header]="'ReleaseDate'" headerClasses="header-release-date"
2799+
[filterable]="filterable" [resizable]="resizable" dataType="date">
2800+
</igx-column>
2801+
<igx-column width="100px" [field]="'ReleaseDateTime'" [header]="'ReleaseDateTime'" headerClasses="header-release-date-time"
2802+
[filterable]="filterable" [resizable]="resizable" dataType="dateTime">
2803+
</igx-column>
2804+
<igx-column width="100px" [field]="'ReleaseTime'" [header]="'ReleaseTime'" headerClasses="header-release-time"
2805+
[filterable]="filterable" [resizable]="resizable" dataType="time">
2806+
</igx-column>
2807+
<igx-column width="100px" [field]="'AnotherField'" [header]="'Another Field'" [filterable]="filterable"
2808+
dataType="string" [filters]="customFilter">
2809+
</igx-column>
2810+
</igx-grid>`,
2811+
imports: [IgxGridComponent, IgxColumnComponent, IgxExcelStyleConditionalFilterComponent, IgxGridExcelStyleFilteringComponent, IgxExcelStyleFilterOperationsTemplateDirective]
2812+
})
2813+
export class IgxGridConditionalFilteringComponent extends IgxGridFilteringComponent {
2814+
}

0 commit comments

Comments
 (0)