From 3e6cc31c79d29fb17f861fd85402fdacfd9615e9 Mon Sep 17 00:00:00 2001 From: neverland Date: Sun, 16 Mar 2025 13:11:00 +0800 Subject: [PATCH 1/2] fix(overlay): avoid multiple error overlay instances --- packages/core/src/client/overlay.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/core/src/client/overlay.ts b/packages/core/src/client/overlay.ts index 0e09a32a9b..c3f044837b 100644 --- a/packages/core/src/client/overlay.ts +++ b/packages/core/src/client/overlay.ts @@ -41,10 +41,10 @@ class ErrorOverlay extends HTMLElement { document.addEventListener('keydown', onEscKeydown); } - close = () => { + close = (immediate = false) => { const remove = () => this.parentNode?.removeChild(this); - if (this.animate) { + if (this.animate && immediate !== true) { this.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 300, easing: 'ease-out', @@ -69,7 +69,10 @@ function createOverlay(html: string) { function clearOverlay() { // use NodeList's forEach api instead of dom.iterable // biome-ignore lint/complexity/noForEach: - document.querySelectorAll(overlayId).forEach((n) => n.close()); + document + .querySelectorAll(overlayId) + // close overlay immediately to avoid multiple overlays at the same time + .forEach((n) => n.close(true)); } if (typeof document !== 'undefined') { From 950747aee76d1f43fd11b3553a959d912aaea131 Mon Sep 17 00:00:00 2001 From: neverland Date: Sun, 16 Mar 2025 13:14:54 +0800 Subject: [PATCH 2/2] fix: type --- packages/core/src/client/overlay.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/client/overlay.ts b/packages/core/src/client/overlay.ts index c3f044837b..e9be102637 100644 --- a/packages/core/src/client/overlay.ts +++ b/packages/core/src/client/overlay.ts @@ -41,7 +41,7 @@ class ErrorOverlay extends HTMLElement { document.addEventListener('keydown', onEscKeydown); } - close = (immediate = false) => { + close = (immediate: unknown = false) => { const remove = () => this.parentNode?.removeChild(this); if (this.animate && immediate !== true) {