mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-15 10:21:05 +00:00
Merge pull request #235 from Overbryd/fix/notification-timeout
Fix InlineNotification and ToastNotification timeout
This commit is contained in:
commit
c00dbe6830
2 changed files with 33 additions and 14 deletions
|
@ -17,6 +17,12 @@
|
||||||
*/
|
*/
|
||||||
export let lowContrast = false;
|
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
|
* Set the `role` attribute
|
||||||
* @type {string} [role="alert"]
|
* @type {string} [role="alert"]
|
||||||
|
@ -47,14 +53,30 @@
|
||||||
*/
|
*/
|
||||||
export let iconDescription = "Closes notification";
|
export let iconDescription = "Closes notification";
|
||||||
|
|
||||||
import { createEventDispatcher } from "svelte";
|
import { createEventDispatcher, onMount } from "svelte";
|
||||||
import NotificationIcon from "./NotificationIcon.svelte";
|
import NotificationIcon from "./NotificationIcon.svelte";
|
||||||
import NotificationTextDetails from "./NotificationTextDetails.svelte";
|
import NotificationTextDetails from "./NotificationTextDetails.svelte";
|
||||||
import NotificationButton from "./NotificationButton.svelte";
|
import NotificationButton from "./NotificationButton.svelte";
|
||||||
|
|
||||||
const dispatch = createEventDispatcher();
|
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>
|
</script>
|
||||||
|
|
||||||
{#if open}
|
{#if open}
|
||||||
|
@ -81,10 +103,7 @@
|
||||||
<NotificationButton
|
<NotificationButton
|
||||||
{iconDescription}
|
{iconDescription}
|
||||||
{notificationType}
|
{notificationType}
|
||||||
on:click={() => {
|
on:click={close} />
|
||||||
open = false;
|
|
||||||
dispatch('close');
|
|
||||||
}} />
|
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
export let lowContrast = false;
|
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]
|
* @type {number} [timeout=0]
|
||||||
*/
|
*/
|
||||||
export let timeout = 0;
|
export let timeout = 0;
|
||||||
|
@ -69,11 +69,14 @@
|
||||||
let open = true;
|
let open = true;
|
||||||
let timeoutId = undefined;
|
let timeoutId = undefined;
|
||||||
|
|
||||||
|
function close() {
|
||||||
|
open = false;
|
||||||
|
dispatch('close');
|
||||||
|
}
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
if (timeout) {
|
if (timeout) {
|
||||||
timeoutId = setTimeout(() => {
|
timeoutId = setTimeout(() => close(), timeout);
|
||||||
open = false;
|
|
||||||
}, timeout);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
@ -102,10 +105,7 @@
|
||||||
<NotificationButton
|
<NotificationButton
|
||||||
{iconDescription}
|
{iconDescription}
|
||||||
{notificationType}
|
{notificationType}
|
||||||
on:click={() => {
|
on:click={close} />
|
||||||
open = false;
|
|
||||||
dispatch('close');
|
|
||||||
}} />
|
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue