From 54793a7c0e7e950869b3d56ceaa5c5c5b22335a4 Mon Sep 17 00:00:00 2001 From: teodosiah Date: Wed, 5 Mar 2025 14:40:39 +0200 Subject: [PATCH] fix(esf): check for untyped non-string columns when filtering grid through esf --- .../excel-style-filtering.component.ts | 2 +- .../tree-grid/tree-grid-filtering.spec.ts | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-filtering.component.ts b/projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-filtering.component.ts index 408fc8a8199..cec31ea9d66 100644 --- a/projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-filtering.component.ts +++ b/projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-filtering.component.ts @@ -549,7 +549,7 @@ export class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent const lowerCaseFilterValues = new Set(Array.from(expr.expression.searchVal).map((value: string) => value.toLowerCase())); this.grid.data.forEach(item => { - if (lowerCaseFilterValues.has(item[this.column.field]?.toLowerCase())) { + if (typeof item[this.column.field] === "string" && lowerCaseFilterValues.has(item[this.column.field]?.toLowerCase())) { expr.expression.searchVal.add(item[this.column.field]); } }); diff --git a/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid-filtering.spec.ts b/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid-filtering.spec.ts index 77d131ccda2..6a8b67f260d 100644 --- a/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid-filtering.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid-filtering.spec.ts @@ -13,6 +13,7 @@ import { GridFunctions } from '../../test-utils/grid-functions.spec'; import { UIInteractions } from '../../test-utils/ui-interactions.spec'; import { SampleTestData } from '../../test-utils/sample-test-data.spec'; import { By } from '@angular/platform-browser'; +import { GridColumnDataType } from '../../data-operations/data-util'; const IGX_CHECKBOX_LABEL = '.igx-checkbox__label'; @@ -751,6 +752,29 @@ describe('IgxTreeGrid - Filtering actions #tGrid', () => { emptyTextEl = searchComponent.querySelector('.igx-excel-filter__empty'); expect(emptyTextEl.innerText).toEqual('No matches'); })); + + it('Should not throw console error when number column with dataType string is filtered.', fakeAsync(() => { + tGrid.columns[0].dataType = GridColumnDataType.String; + fix.detectChanges(); + spyOn(console, 'error'); + + GridFunctions.clickExcelFilterIcon(fix, 'ID'); + fix.detectChanges(); + tick(); + + const excelMenu = GridFunctions.getExcelStyleFilteringComponent(fix, 'igx-tree-grid'); + const checkboxes: any[] = Array.from(GridFunctions.getExcelStyleFilteringCheckboxes(fix, excelMenu, 'igx-tree-grid')); + + checkboxes[2].click(); + tick(); + fix.detectChanges(); + + GridFunctions.clickApplyExcelStyleFiltering(fix, null, 'igx-tree-grid'); + fix.detectChanges(); + tick(); + + expect(console.error).not.toHaveBeenCalled(); + })); }); describe('Tree grid ESF templates', () => {