From 93b035159b6cb56787ecddf55b0f97f46e762f02 Mon Sep 17 00:00:00 2001 From: bytedream Date: Mon, 10 Nov 2025 14:24:38 +0100 Subject: [PATCH] fix empty popups --- src/app/website/index/Countdown.svelte | 2 +- src/components/popup/ConfirmPopup.svelte | 10 ++++++++-- src/components/popup/Popup.svelte | 8 +++++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/app/website/index/Countdown.svelte b/src/app/website/index/Countdown.svelte index f3eb0f3..e9ddd40 100644 --- a/src/app/website/index/Countdown.svelte +++ b/src/app/website/index/Countdown.svelte @@ -2,7 +2,7 @@ import { onDestroy } from 'svelte'; interface Props { - end: Date, + end: Date; } let { end }: Props = $props(); diff --git a/src/components/popup/ConfirmPopup.svelte b/src/components/popup/ConfirmPopup.svelte index 259f429..8648c7b 100644 --- a/src/components/popup/ConfirmPopup.svelte +++ b/src/components/popup/ConfirmPopup.svelte @@ -5,16 +5,22 @@ // html bindings let modal: HTMLDialogElement; + // state + let closeTimeoutId = $state(-1); + // lifecycle const cancel = confirmPopupState.subscribe((value) => { - if (value) modal.show(); + if (!value) return; + + clearTimeout(closeTimeoutId); + modal.show(); }); onDestroy(cancel); // callbacks function onModalClose() { - setTimeout(() => ($confirmPopupState = null), 300); + closeTimeoutId = setTimeout(() => ($confirmPopupState = null), 300); } diff --git a/src/components/popup/Popup.svelte b/src/components/popup/Popup.svelte index c7d00f2..2cbcf0a 100644 --- a/src/components/popup/Popup.svelte +++ b/src/components/popup/Popup.svelte @@ -5,9 +5,15 @@ // html bindings let modal: HTMLDialogElement; + // state + let closeTimeoutId = $state(-1); + // lifecycle const cancel = popupState.subscribe((value) => { - if (value) modal.show(); + if (!value) return; + + clearTimeout(closeTimeoutId); + modal.show(); }); onDestroy(cancel);