Skip to content

Commit 74458cd

Browse files
authored
fix(filtering): reset expression to selected unary condition (#12807)
1 parent 1f75158 commit 74458cd

File tree

2 files changed

+41
-5
lines changed

2 files changed

+41
-5
lines changed

projects/igniteui-angular/src/lib/grids/filtering/base/grid-filtering-row.component.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,14 @@ export class IgxGridFilteringRowComponent implements AfterViewInit, OnDestroy {
6868
}
6969

7070
public set value(val) {
71-
if (!val && val !== 0) {
71+
if (!val && val !== 0 && this.expression.searchVal) {
7272
this.expression.searchVal = null;
7373
const index = this.expressionsList.findIndex(item => item.expression === this.expression);
7474
if (index === 0 && this.expressionsList.length === 1) {
7575
this.filteringService.clearFilter(this.column.field);
7676

7777
if (this.expression.condition.isUnary) {
78-
this.resetExpression();
78+
this.resetExpression(this.expression.condition.name);
7979
}
8080

8181
return;
@@ -767,7 +767,7 @@ export class IgxGridFilteringRowComponent implements AfterViewInit, OnDestroy {
767767
this.showHideArrowButtons();
768768
}
769769

770-
private resetExpression() {
770+
private resetExpression(condition?: string) {
771771
this.expression = {
772772
fieldName: this.column.field,
773773
condition: null,
@@ -776,7 +776,7 @@ export class IgxGridFilteringRowComponent implements AfterViewInit, OnDestroy {
776776
};
777777

778778
if (this.column.dataType !== GridColumnDataType.Boolean) {
779-
this.expression.condition = this.getCondition(this.conditions[0]);
779+
this.expression.condition = this.getCondition(condition ?? this.conditions[0]);
780780
}
781781

782782
if (this.column.dataType === GridColumnDataType.Date && this.input) {

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

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2084,14 +2084,50 @@ describe('IgxGrid - Filtering Row UI actions #grid', () => {
20842084
// iterate over unary conditions
20852085
// empty
20862086
GridFunctions.openFilterDDAndSelectCondition(fix, 6);
2087+
expect(grid.filteringRow.expression.condition.name).toEqual('empty');
20872088

2088-
grid.filteringRow.onClearClick();
2089+
const filterUIRow = fix.debugElement.query(By.directive(IgxGridFilteringRowComponent));
2090+
const reset = filterUIRow.queryAll(By.css('button'))[0];
2091+
2092+
reset.triggerEventHandler('click', null);
20892093
tick(100);
20902094
fix.detectChanges();
20912095

20922096
expect(grid.filteringRow.expression.condition.name).toEqual('contains');
20932097
}));
20942098

2099+
it('should reset expression to selected unary condition', fakeAsync(() => {
2100+
GridFunctions.clickFilterCellChip(fix, 'ReleaseDate');
2101+
2102+
const filterUIRow = fix.debugElement.query(By.directive(IgxGridFilteringRowComponent));
2103+
const datePicker = filterUIRow.query(By.directive(IgxDatePickerComponent));
2104+
2105+
// Equals condition
2106+
datePicker.triggerEventHandler('click', null);
2107+
tick();
2108+
fix.detectChanges();
2109+
2110+
const currentDay = document.querySelector('.igx-calendar__date--current');
2111+
2112+
currentDay.dispatchEvent(new Event('click'));
2113+
tick();
2114+
fix.detectChanges();
2115+
2116+
expect(grid.filteringRow.expression.condition.name).toEqual('equals');
2117+
expect(grid.rowList.length).toEqual(1);
2118+
2119+
// This Month condition
2120+
GridFunctions.openFilterDDAndSelectCondition(fix, 6);
2121+
tick();
2122+
fix.detectChanges();
2123+
2124+
expect(grid.filteringRow.expression.condition.name).toEqual('thisMonth');
2125+
expect(grid.rowList.length).toEqual(3);
2126+
2127+
const conditionChips = filterUIRow.queryAll(By.directive(IgxChipComponent));
2128+
expect(conditionChips.length).toBe(1);
2129+
}));
2130+
20952131
it('Should filter by cells formatted data when using FormattedValuesFilteringStrategy', fakeAsync(() => {
20962132
const formattedStrategy = new FormattedValuesFilteringStrategy(['Downloads']);
20972133
grid.filterStrategy = formattedStrategy;

0 commit comments

Comments
 (0)