Skip to content

Commit 8547d90

Browse files
committed
refactor(overlay): refactor close on escape handler handling
1 parent 96d244c commit 8547d90

File tree

1 file changed

+8
-9
lines changed
  • projects/igniteui-angular/src/lib/services/overlay

1 file changed

+8
-9
lines changed

projects/igniteui-angular/src/lib/services/overlay/overlay.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ export class IgxOverlayService implements OnDestroy {
319319

320320
this.addOutsideClickListener(info);
321321
this.addResizeHandler();
322-
this.addCloseOnEscapeListener();
322+
this.addCloseOnEscapeListener(info);
323323

324324
if (info.settings.modal) {
325325
const wrapperElement = info.elementRef.nativeElement.parentElement.parentElement;
@@ -723,10 +723,8 @@ export class IgxOverlayService implements OnDestroy {
723723
}
724724
}
725725

726-
private addCloseOnEscapeListener() {
727-
// if all overlays minus closing overlays equals one add the handler
728-
if (this._overlayInfos.length - this._overlayInfos.filter(x => x.closeAnimationPlayer
729-
&& x.closeAnimationPlayer.hasStarted()).length === 1) {
726+
private addCloseOnEscapeListener(info: OverlayInfo) {
727+
if (info.settings.closeOnEscape && !this._keyPressEventListener) {
730728
this._keyPressEventListener = fromEvent(this._document, 'keydown').pipe(
731729
filter((ev: KeyboardEvent) => ev.key === 'Escape' || ev.key === 'Esc')
732730
).subscribe(() => {
@@ -740,11 +738,12 @@ export class IgxOverlayService implements OnDestroy {
740738

741739
private removeCloseOnEscapeListener() {
742740
const closingOverlaysCount =
743-
this._overlayInfos
744-
.filter(o => o.closeAnimationPlayer && o.closeAnimationPlayer.hasStarted())
745-
.length;
746-
if (this._overlayInfos.length - closingOverlaysCount === 1 && !this._keyPressEventListener.closed) {
741+
this._overlayInfos
742+
.filter(o => o.closeAnimationPlayer && o.closeAnimationPlayer.hasStarted())
743+
.length;
744+
if (this._overlayInfos.length - closingOverlaysCount === 1 && this._keyPressEventListener && !this._keyPressEventListener.closed) {
747745
this._keyPressEventListener.unsubscribe();
746+
this._keyPressEventListener = null;
748747
}
749748
}
750749

0 commit comments

Comments
 (0)