fix(modal): fix timing issue when rapidly closing and opening controller modal (#24380)

This commit is contained in:
Amanda Smith
2021-12-14 13:21:33 -06:00
committed by GitHub
parent e7d06743ae
commit 732f8e10ce

View File

@@ -494,7 +494,20 @@ export class Modal implements ComponentInterface, OverlayInterface {
if (dismissed) {
const { delegate } = this.getDelegate();
await detachComponent(delegate, this.usersElement);
/**
* If the modal is presented through a controller, we don't need to detach
* since the el was already removed during the `dismiss` call above. Skipping
* this step also prevents an issue where rapdily dismissing right after
* presenting could cause `detachComponent` to be called after the present
* finished, blanking out the newly opened modal.
*
* TODO(FW-423) try and find a way to resolve the race condition directly
*/
if (this.inline) {
await detachComponent(delegate, this.usersElement);
}
if (this.animation) {
this.animation.destroy();
}
@@ -507,7 +520,6 @@ export class Modal implements ComponentInterface, OverlayInterface {
this.currentTransition = undefined;
this.animation = undefined;
return dismissed;
}