Skip to content

Commit f79941d

Browse files
Merge pull request #7131 from IgniteUI/ibarakov/fix-6619-8.2.x
fix(ESF): searching text on a date column works properly #6619
2 parents 00356d5 + bf6ec2e commit f79941d

File tree

4 files changed

+60
-8
lines changed

4 files changed

+60
-8
lines changed

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,12 @@
3131
[indeterminate]="item.indeterminate"
3232
[disableTransitions]="true"
3333
(change)="onCheckboxChange($event)">
34-
{{ column.formatter && !item.isSpecial ? column.formatter(item.label) : column.dataType === 'number' ? (item.label | igxdecimal:
35-
column.grid.locale) : column.dataType === 'date' ? (item.label | igxdate: column.grid.locale) : item.label }}
34+
{{ item.label }}
3635
</igx-checkbox>
3736
</igx-list-item>
3837
</div>
3938

40-
<ng-template igxDataLoading>
39+
<ng-template igxDataLoading>
4140
<div class="igx-excel-filter__loading">
4241
<ng-container *ngTemplateOutlet="valuesLoadingTemplate">
4342
</ng-container>

projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-search.pipe.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ export class IgxExcelStyleSearchFilterPipe implements PipeTransform {
2020

2121
searchText = searchText.toLowerCase();
2222
const result = items.filter((it, i) => (i === 0 && it.isSpecial) ||
23-
(it.value !== null && it.value !== undefined) &&
24-
it.value.toString().toLowerCase().indexOf(searchText) > -1);
23+
(it.label !== null && it.label !== undefined) &&
24+
!it.isBlanks &&
25+
it.label.toString().toLowerCase().indexOf(searchText) > -1);
2526

2627
// If 'result' contains the 'Select All' item and at least one more - we use it, otherwise we use an empty array.
2728
return result.length > 1 ? result : [];

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

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import { IgxExcelStyleSortingComponent } from './excel-style-sorting.component';
3838
import { takeUntil } from 'rxjs/operators';
3939
import { ISelectionEventArgs, IgxDropDownComponent } from '../../../drop-down';
4040
import { IgxColumnComponent } from '../../column.component';
41+
import { IgxDatePipeComponent, IgxDecimalPipeComponent } from '../../grid.common';
4142

4243
/**
4344
*@hidden
@@ -48,6 +49,7 @@ export class FilterListItem {
4849
public isSelected: boolean;
4950
public indeterminate: boolean;
5051
public isSpecial = false;
52+
public isBlanks = false;
5153
}
5254

5355
@Directive({
@@ -486,6 +488,10 @@ export class IgxGridExcelStyleFilteringComponent implements OnDestroy, OnInit, A
486488
private addItems(shouldUpdateSelection: boolean) {
487489
this.selectAllSelected = true;
488490
this.selectAllIndeterminate = false;
491+
492+
const numberPipe = new IgxDecimalPipeComponent(this.column.grid.locale);
493+
const datePipe = new IgxDatePipeComponent(this.column.grid.locale);
494+
489495
this.uniqueValues.forEach(element => {
490496
if (element !== undefined && element !== null && element !== '') {
491497
const filterListItem = new FilterListItem();
@@ -505,12 +511,29 @@ export class IgxGridExcelStyleFilteringComponent implements OnDestroy, OnInit, A
505511
filterListItem.isSelected = true;
506512
}
507513
if (this.column.dataType === DataType.Date) {
508-
filterListItem.value = new Date(element);
509-
filterListItem.label = new Date(element);
514+
const date = new Date(element);
515+
516+
filterListItem.value = date;
517+
518+
filterListItem.label = this.column.formatter ?
519+
this.column.formatter(date) :
520+
datePipe.transform(date, this.column.grid.locale);
521+
522+
} else if (this.column.dataType === DataType.Number) {
523+
filterListItem.value = element;
524+
525+
filterListItem.label = this.column.formatter ?
526+
this.column.formatter(element) :
527+
numberPipe.transform(element, this.column.grid.locale);
528+
510529
} else {
511530
filterListItem.value = element;
512-
filterListItem.label = element;
531+
532+
filterListItem.label = this.column.formatter ?
533+
this.column.formatter(element) :
534+
element;
513535
}
536+
514537
filterListItem.indeterminate = false;
515538
this.listData.push(filterListItem);
516539
} else {
@@ -546,6 +569,7 @@ export class IgxGridExcelStyleFilteringComponent implements OnDestroy, OnInit, A
546569
blanks.label = this.grid.resourceStrings.igx_grid_excel_blanks;
547570
blanks.indeterminate = false;
548571
blanks.isSpecial = true;
572+
blanks.isBlanks = true;
549573
this.listData.unshift(blanks);
550574
}
551575

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

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5801,6 +5801,34 @@ describe('IgxGrid - Filtering actions - Excel style filtering #grid', () => {
58015801
expect(pinButton.classList.contains('igx-button--disabled')).toBe(true,
58025802
'pinButton in header area should be disabled');
58035803
}));
5804+
5805+
it('Should filter date by input string', fakeAsync(() => {
5806+
GridFunctions.clickExcelFilterIcon(fix, 'ReleaseDate');
5807+
tick(100);
5808+
fix.detectChanges();
5809+
5810+
const searchComponent = GridFunctions.getExcelStyleSearchComponent(fix);
5811+
let listItems = searchComponent.querySelectorAll('igx-list-item');
5812+
const inputNativeElement = searchComponent.querySelector('.igx-input-group__input');
5813+
5814+
const todayDateFull = SampleTestData.today;
5815+
const todayDate = todayDateFull.getDate().toString();
5816+
const dayOfWeek = todayDateFull.toString().substring(0, 3);
5817+
5818+
sendInputNativeElement(inputNativeElement, todayDate, fix);
5819+
tick(100);
5820+
fix.detectChanges();
5821+
5822+
listItems = searchComponent.querySelectorAll('igx-list-item');
5823+
expect(listItems.length).toBe(4, 'incorrect rendered list items count');
5824+
5825+
sendInputNativeElement(inputNativeElement, dayOfWeek, fix);
5826+
tick(100);
5827+
fix.detectChanges();
5828+
5829+
listItems = searchComponent.querySelectorAll('igx-list-item');
5830+
expect(listItems.length).toBe(0, 'incorrect rendered list items count');
5831+
}));
58045832
});
58055833

58065834
describe(null, () => {

0 commit comments

Comments
 (0)