Skip to content

Commit 2d72137

Browse files
authored
Merge pull request #2533 from Akshat55/issue.2530
fix: Emit close event on Escape
2 parents 9ad19b0 + 00871f1 commit 2d72137

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

src/modal/base-modal.service.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export class BaseModalService {
5252
component.instance.open = false;
5353
}),
5454
// delay closing by an arbitrary amount to allow the animation to finish
55-
delay(150)
55+
delay(240)
5656
).subscribe(() => {
5757
this.placeholderService.destroyComponent(component);
5858
// filter out our component
@@ -82,8 +82,11 @@ export class BaseModalService {
8282
index = BaseModalService.modalList.length - 1;
8383
}
8484

85-
this.placeholderService.destroyComponent(BaseModalService.modalList[index]);
86-
BaseModalService.modalList.splice(index, 1);
85+
// Let animation finish before component is removed
86+
setTimeout(() => {
87+
this.placeholderService.destroyComponent(BaseModalService.modalList[index]);
88+
BaseModalService.modalList.splice(index, 1);
89+
}, 240);
8790
}
8891
}
8992

src/modal/modal.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,10 @@ export class Modal implements AfterViewInit, OnChanges, OnDestroy {
196196
switch (event.key) {
197197
case "Escape": {
198198
event.stopImmediatePropagation(); // prevents events being fired for multiple modals if more than 2 open
199-
this.modalService.destroy(); // destroy top (latest) modal
199+
// Manually close modal
200+
this.open = false;
200201
this.close.emit();
202+
this.modalService.destroy(); // destroy top (latest) modal
201203
break;
202204
}
203205

0 commit comments

Comments
 (0)