Merge pull request #235 from Overbryd/fix/notification-timeout

Fix InlineNotification and ToastNotification timeout
This commit is contained in:
Eric Liu 2020-08-23 13:29:07 -07:00 committed by GitHub
commit c00dbe6830
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 14 deletions

View file

@ -17,6 +17,12 @@
*/
export let lowContrast = false;
/**
* Set the timeout duration (ms) to hide the notification after opening it
* @type {number} [timeout=0]
*/
export let timeout = 0;
/**
* Set the `role` attribute
* @type {string} [role="alert"]
@ -47,14 +53,30 @@
*/
export let iconDescription = "Closes notification";
import { createEventDispatcher } from "svelte";
import { createEventDispatcher, onMount } from "svelte";
import NotificationIcon from "./NotificationIcon.svelte";
import NotificationTextDetails from "./NotificationTextDetails.svelte";
import NotificationButton from "./NotificationButton.svelte";
const dispatch = createEventDispatcher();
$: open = true;
let open = true;
let timeoutId = undefined;
function close() {
open = false;
dispatch('close');
}
onMount(() => {
if (timeout) {
timeoutId = setTimeout(() => close(), timeout);
}
return () => {
clearTimeout(timeoutId);
};
});
</script>
{#if open}
@ -81,10 +103,7 @@
<NotificationButton
{iconDescription}
{notificationType}
on:click={() => {
open = false;
dispatch('close');
}} />
on:click={close} />
{/if}
</div>
{/if}

View file

@ -18,7 +18,7 @@
export let lowContrast = false;
/**
* Set the timeout duration (ms) to hide the notification after closing it
* Set the timeout duration (ms) to hide the notification after opening it
* @type {number} [timeout=0]
*/
export let timeout = 0;
@ -69,11 +69,14 @@
let open = true;
let timeoutId = undefined;
function close() {
open = false;
dispatch('close');
}
onMount(() => {
if (timeout) {
timeoutId = setTimeout(() => {
open = false;
}, timeout);
timeoutId = setTimeout(() => close(), timeout);
}
return () => {
@ -102,10 +105,7 @@
<NotificationButton
{iconDescription}
{notificationType}
on:click={() => {
open = false;
dispatch('close');
}} />
on:click={close} />
{/if}
</div>
{/if}