Skip to content

Commit c6e22df

Browse files
Merge pull request #8286 from IgniteUI/ibarakov/fix-8162-master
Don't duplicate records in esf menu when filteringIgnoreCase is true.
2 parents 4632520 + 2cd4791 commit c6e22df

File tree

4 files changed

+47
-7
lines changed

4 files changed

+47
-7
lines changed

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,15 @@ export class IgxGridExcelStyleFilteringComponent implements OnDestroy {
500500
}
501501

502502
private generateUniqueValues(columnValues: any[]) {
503-
this.uniqueValues = Array.from(new Set(columnValues));
503+
if (this.column.dataType === DataType.String && this.column.filteringIgnoreCase) {
504+
const filteredUniqueValues = columnValues.map(s => s?.toLowerCase())
505+
.reduce((map, val, i) => map.get(val) ? map : map.set(val, columnValues[i]),
506+
new Map);
507+
508+
this.uniqueValues = Array.from(filteredUniqueValues.values());
509+
} else {
510+
this.uniqueValues = Array.from(new Set(columnValues));
511+
}
504512
}
505513

506514
private generateFilterValues(isDateColumn: boolean = false) {

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

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4384,10 +4384,42 @@ describe('IgxGrid - Filtering actions - Excel style filtering #grid', () => {
43844384
expect(listItems.length).toBe(0, 'incorrect rendered list items count');
43854385
}));
43864386

4387-
it('Should display "Add to current filter selection" button on typing in input', fakeAsync(() => {
4388-
// Open excel style filtering dialog.
4389-
GridFunctions.clickExcelFilterIconFromCode(fix, grid, 'Downloads');
4387+
it('Should ignore duplicate records when column\'\s filteringIgnoreCase is true', fakeAsync(() => {
4388+
const column = grid.getColumnByName('AnotherField');
4389+
expect(column.filteringIgnoreCase).toBeTrue();
4390+
4391+
GridFunctions.clickExcelFilterIconFromCode(fix, grid, 'AnotherField');
4392+
tick(100);
4393+
fix.detectChanges();
4394+
4395+
const searchComponent = GridFunctions.getExcelStyleSearchComponent(fix);
4396+
const listItems = GridFunctions.getExcelStyleSearchComponentListItems(fix, searchComponent);
4397+
4398+
expect(listItems.length).toBe(3, 'incorrect rendered list items count');
4399+
expect(listItems[1].innerText).toBe('Custom', 'incorrect list item label');
4400+
}));
4401+
4402+
it('Should not ignore duplicate records when column\'\s filteringIgnoreCase is false', fakeAsync(() => {
4403+
const column = grid.getColumnByName('AnotherField');
4404+
column.filteringIgnoreCase = false;
4405+
expect(column.filteringIgnoreCase).toBeFalse();
43904406

4407+
GridFunctions.clickExcelFilterIconFromCode(fix, grid, 'AnotherField');
4408+
tick(100);
4409+
fix.detectChanges();
4410+
4411+
const searchComponent = GridFunctions.getExcelStyleSearchComponent(fix);
4412+
const listItems = GridFunctions.getExcelStyleSearchComponentListItems(fix, searchComponent);
4413+
4414+
expect(listItems.length).toBe(5, 'incorrect rendered list items count');
4415+
expect(listItems[1].innerText).toBe('Custom', 'incorrect list item label');
4416+
expect(listItems[3].innerText).toBe('custoM', 'incorrect list item label');
4417+
expect(listItems[4].innerText).toBe('custom', 'incorrect list item label');
4418+
}));
4419+
4420+
it('Should display "Add to current filter selection" button on typing in input', fakeAsync(() => {
4421+
// Open excel style filtering dialog.
4422+
GridFunctions.clickExcelFilterIconFromCode(fix, grid, 'Downloads');
43914423
// Type string in search box.
43924424
const searchComponent = GridFunctions.getExcelStyleSearchComponent(fix);
43934425
const inputNativeElement = GridFunctions.getExcelStyleSearchComponentInput(fix, searchComponent);

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
@@ -998,7 +998,7 @@ export class CustomFilter extends IgxFilteringOperand {
998998
<igx-column width="100px" [field]="'ReleaseDate'" [header]="'ReleaseDate'" headerClasses="header-release-date"
999999
[filterable]="filterable" [resizable]="resizable" dataType="date">
10001000
</igx-column>
1001-
<igx-column width="100px" [field]="'AnotherField'" [header]="'Anogther Field'" [filterable]="filterable"
1001+
<igx-column width="100px" [field]="'AnotherField'" [header]="'Another Field'" [filterable]="filterable"
10021002
dataType="string" [filters]="customFilter">
10031003
</igx-column>
10041004
</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)