Skip to content

Commit dfbff16

Browse files
authored
Merge pull request #7327 from IgniteUI/ddincheva/advanceFilterClose
Close advanced filter dialog when escape is pressed
2 parents 3a19823 + d4efc11 commit dfbff16

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

projects/igniteui-angular/src/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -797,9 +797,11 @@ export class IgxAdvancedFilteringDialogComponent implements AfterViewInit, OnDes
797797
*/
798798
public onKeyDown(eventArgs: KeyboardEvent) {
799799
eventArgs.stopPropagation();
800-
if (!this.contextMenuToggle.collapsed &&
801-
(eventArgs.key === KEYS.ESCAPE || eventArgs.key === KEYS.ESCAPE_IE)) {
800+
const key = eventArgs.key;
801+
if (!this.contextMenuToggle.collapsed && (key === KEYS.ESCAPE || key === KEYS.ESCAPE_IE)) {
802802
this.clearSelection();
803+
} else if (key === KEYS.ESCAPE || key === KEYS.ESCAPE_IE) {
804+
this.closeDialog();
803805
}
804806
}
805807

@@ -1072,6 +1074,9 @@ export class IgxAdvancedFilteringDialogComponent implements AfterViewInit, OnDes
10721074
if (this._overlayComponentId) {
10731075
this._overlayService.hide(this._overlayComponentId);
10741076
}
1077+
if (this.grid.navigation.activeNode && this.grid.navigation.activeNode.row === -1) {
1078+
(this.grid as any).theadRow.nativeElement.focus();
1079+
}
10751080
}
10761081

10771082
/**

projects/igniteui-angular/src/lib/grids/grid/grid-keyBoardNav-headers.spec.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,35 @@ describe('IgxGrid - Headers Keyboard navigation #grid', () => {
421421
expect(GridFunctions.getAdvancedFilteringComponent(fix)).not.toBeNull();
422422
});
423423

424+
it('Advanced Filtering: Should be able to close Advanced filtering with "escape"', fakeAsync(() => {
425+
// Enable Advanced Filtering
426+
grid.allowAdvancedFiltering = true;
427+
fix.detectChanges();
428+
let header = GridFunctions.getColumnHeader('Name', fix);
429+
UIInteractions.simulateClickAndSelectEvent(header);
430+
fix.detectChanges();
431+
432+
// Verify first header is focused
433+
GridFunctions.verifyHeaderIsFocused(header.parent);
434+
435+
UIInteractions.triggerEventHandlerKeyDown('L', gridHeader, true);
436+
fix.detectChanges();
437+
438+
// Verify AF dialog is opened.
439+
expect(GridFunctions.getAdvancedFilteringComponent(fix)).not.toBeNull();
440+
441+
const afDialog = fix.nativeElement.querySelector('.igx-advanced-filter');
442+
UIInteractions.triggerKeyDownEvtUponElem('Escape', afDialog);
443+
tick(DEBOUNCETIME);
444+
fix.detectChanges();
445+
446+
// Verify AF dialog is closed.
447+
header = GridFunctions.getColumnHeader('Name', fix);
448+
expect(GridFunctions.getAdvancedFilteringComponent(fix)).toBeNull();
449+
GridFunctions.verifyHeaderIsFocused(header.parent);
450+
}));
451+
452+
424453
it('Column selection: Should be able to select columns when columnSelection is multi', () => {
425454
const columnID = grid.getColumnByName('ID');
426455
const columnParentID = grid.getColumnByName('ParentID');

0 commit comments

Comments
 (0)