Skip to content

Commit

Permalink
fix(toast-notification): fire on:clear from timeout correctly
Browse files Browse the repository at this point in the history
Fixes #1914

Co-Authored-By: brunnerh <[email protected]>
  • Loading branch information
metonym and brunnerh committed Feb 25, 2024
1 parent ced9673 commit 9aabe3c
Showing 1 changed file with 17 additions and 4 deletions.
21 changes: 17 additions & 4 deletions src/Notification/ToastNotification.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@
let timeoutId = undefined;
function close(closeFromTimeout) {
// Clear the timer if the close button was clicked.
clearTimeout(timeoutId);
const shouldContinue = dispatch(
"close",
{ timeout: closeFromTimeout === true },
Expand All @@ -66,14 +69,24 @@
}
onMount(() => {
if (timeout) {
timeoutId = setTimeout(() => close(true), timeout);
}
return () => {
clearTimeout(timeoutId);
};
});
$: if (typeof window !== "undefined") {
/**
* Clear the timer if {@link timeout} changes.
* If set to `0`, no new timeout is started.
* Else, a new timeout is started if {@link open} is not set to `false`.
*/
clearTimeout(timeoutId);
/** Only start the timer of {@link open} has not been set to `false`. */
if (open && timeout) {
timeoutId = setTimeout(() => close(true), timeout);
}
}
</script>

<!-- svelte-ignore a11y-mouse-events-have-key-events -->
Expand Down

0 comments on commit 9aabe3c

Please sign in to comment.