Skip to content

Commit bf9b99c

Browse files
committed
fix(esf): don't duplicate records in esf menu when filteringIgnoreCase is true
1 parent 40a2972 commit bf9b99c

File tree

4 files changed

+37
-3
lines changed

4 files changed

+37
-3
lines changed

projects/igniteui-angular/src/lib/grids/filtering/excel-style/grid.excel-style-filtering.component.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,13 @@ export class IgxGridExcelStyleFilteringComponent implements OnDestroy {
599599

600600
this.uniqueValues.forEach(element => {
601601
if (element !== undefined && element !== null && element !== '') {
602+
if (this.column.dataType === DataType.String &&
603+
this.column.filteringIgnoreCase &&
604+
this.listData.length > 0 &&
605+
this.listData.map(el => el.label.toLowerCase()).indexOf(element.toLowerCase()) !== -1) {
606+
return;
607+
}
608+
602609
const filterListItem = new FilterListItem();
603610
if (this.column.filteringExpressionsTree) {
604611
if (shouldUpdateSelection) {

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4344,6 +4344,33 @@ describe('IgxGrid - Filtering actions - Excel style filtering #grid', () => {
43444344
listItems = GridFunctions.getExcelStyleSearchComponentListItems(fix, searchComponent);
43454345
expect(listItems.length).toBe(0, 'incorrect rendered list items count');
43464346
}));
4347+
4348+
it('Should ignore duplicate records when column\'\s filteringIgnoreCase is true', fakeAsync(() => {
4349+
const column = grid.getColumnByName('AnotherField');
4350+
expect(column.filteringIgnoreCase).toBeTrue();
4351+
4352+
GridFunctions.clickExcelFilterIconFromCode(fix, grid, 'AnotherField');
4353+
tick(100);
4354+
fix.detectChanges();
4355+
4356+
const searchComponent = GridFunctions.getExcelStyleSearchComponent(fix);
4357+
const listItems = GridFunctions.getExcelStyleSearchComponentListItems(fix, searchComponent);
4358+
expect(listItems.length).toBe(3, 'incorrect rendered list items count');
4359+
}));
4360+
4361+
it('Should not ignore duplicate records when column\'\s filteringIgnoreCase is false', fakeAsync(() => {
4362+
const column = grid.getColumnByName('AnotherField');
4363+
column.filteringIgnoreCase = false;
4364+
expect(column.filteringIgnoreCase).toBeFalse();
4365+
4366+
GridFunctions.clickExcelFilterIconFromCode(fix, grid, 'AnotherField');
4367+
tick(100);
4368+
fix.detectChanges();
4369+
4370+
const searchComponent = GridFunctions.getExcelStyleSearchComponent(fix);
4371+
const listItems = GridFunctions.getExcelStyleSearchComponentListItems(fix, searchComponent);
4372+
expect(listItems.length).toBe(5, 'incorrect rendered list items count');
4373+
}));
43474374
});
43484375

43494376
describe('Templates: ', () => {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -997,7 +997,7 @@ export class CustomFilter extends IgxFilteringOperand {
997997
<igx-column width="100px" [field]="'ReleaseDate'" [header]="'ReleaseDate'" headerClasses="header-release-date"
998998
[filterable]="filterable" [resizable]="resizable" dataType="date">
999999
</igx-column>
1000-
<igx-column width="100px" [field]="'AnotherField'" [header]="'Anogther Field'" [filterable]="filterable"
1000+
<igx-column width="100px" [field]="'AnotherField'" [header]="'Another Field'" [filterable]="filterable"
10011001
dataType="string" [filters]="customFilter">
10021002
</igx-column>
10031003
</igx-grid>`

projects/igniteui-angular/src/lib/test-utils/sample-test-data.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1515,15 +1515,15 @@ export class SampleTestData {
15151515
ProductName: 'Some other item with Script',
15161516
ReleaseDate: SampleTestData.timeGenerator.timedelta(SampleTestData.today, 'day', 1),
15171517
Released: null,
1518-
AnotherField: 'a'
1518+
AnotherField: 'Custom'
15191519
},
15201520
{
15211521
Downloads: 0,
15221522
ID: 7,
15231523
ProductName: null,
15241524
ReleaseDate: SampleTestData.timeGenerator.timedelta(SampleTestData.today, 'month', 1),
15251525
Released: true,
1526-
AnotherField: 'a'
1526+
AnotherField: 'custoM'
15271527
},
15281528
{
15291529
Downloads: 1000,

0 commit comments

Comments
 (0)