Skip to content

Commit 8c0a495

Browse files
Merge pull request #14466 from IgniteUI/aahmedov/fix-filterCellClick-14322-18.0.x
fix(grid): Fix filtering UI mousedown event handling - 18.0.x
2 parents 994e06e + 5f6ad03 commit 8c0a495

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2751,6 +2751,30 @@ describe('IgxGrid - Filtering Row UI actions #grid', () => {
27512751
filterUIRow = fix.debugElement.query(By.css(FILTER_UI_ROW));
27522752
expect(filterUIRow).toBeNull('Default filter template was found on a column with custom filtering.');
27532753
}));
2754+
2755+
it('Should not prevent mousedown event when target is within the filter cell template', fakeAsync(() => {
2756+
const filterCell = GridFunctions.getFilterCell(fix, 'ProductName');
2757+
const input = filterCell.query(By.css('input')).nativeElement;
2758+
2759+
const mousedownEvent = new MouseEvent('mousedown', { bubbles: true });
2760+
const preventDefaultSpy = spyOn(mousedownEvent, 'preventDefault');
2761+
input.dispatchEvent(mousedownEvent, { bubbles: true });
2762+
fix.detectChanges();
2763+
2764+
expect(preventDefaultSpy).not.toHaveBeenCalled();
2765+
}));
2766+
2767+
it('Should prevent mousedown event when target is filter cell or its parent elements', fakeAsync(() => {
2768+
const filteringCells = fix.debugElement.queryAll(By.css(FILTER_UI_CELL));
2769+
const firstCell = filteringCells[0].nativeElement;
2770+
2771+
const mousedownEvent = new MouseEvent('mousedown', { bubbles: true });
2772+
const preventDefaultSpy = spyOn(mousedownEvent, 'preventDefault');
2773+
firstCell.dispatchEvent(mousedownEvent);
2774+
fix.detectChanges();
2775+
2776+
expect(preventDefaultSpy).toHaveBeenCalled();
2777+
}));
27542778
});
27552779

27562780
describe(null, () => {
@@ -2827,6 +2851,7 @@ describe('IgxGrid - Filtering Row UI actions #grid', () => {
28272851

28282852
expect(grid.rowList.length).toEqual(1);
28292853
}));
2854+
28302855
});
28312856

28322857
describe('Filtering events', () => {

projects/igniteui-angular/src/lib/grids/headers/grid-header-group.component.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,12 @@ export class IgxGridHeaderGroupComponent implements DoCheck {
262262
*/
263263
@HostListener('mousedown', ['$event'])
264264
public onMouseDown(event: MouseEvent): void {
265-
// hack for preventing text selection in IE and Edge while dragging the resize element
266-
event.preventDefault();
265+
if (!this.grid.allowFiltering ||
266+
(event.composedPath().findIndex(el =>
267+
(el as Element).tagName?.toLowerCase() === 'igx-grid-filtering-cell') < 1)) {
268+
// Hack for preventing text selection in IE and Edge while dragging the resize element
269+
event.preventDefault();
270+
}
267271
}
268272

269273
/**

0 commit comments

Comments
 (0)