diff --git a/src/components/Copy/Copy.svelte b/src/components/Copy/Copy.svelte index 6b83ec63..f7fbf910 100644 --- a/src/components/Copy/Copy.svelte +++ b/src/components/Copy/Copy.svelte @@ -11,10 +11,8 @@ let timeoutId = undefined; onDestroy(() => { - if (timeoutId !== undefined) { - window.clearTimeout(timeoutId); - timeoutId = undefined; - } + window.clearTimeout(timeoutId); + timeoutId = undefined; }); $: showFeedback = timeoutId !== undefined; diff --git a/src/components/CopyButton/CopyButton.svelte b/src/components/CopyButton/CopyButton.svelte index 8cc77904..0562f7c4 100644 --- a/src/components/CopyButton/CopyButton.svelte +++ b/src/components/CopyButton/CopyButton.svelte @@ -6,19 +6,25 @@ export let feedbackTimeout = 2000; export let style = undefined; - import { onDestroy } from 'svelte'; + import { afterUpdate, onDestroy } from 'svelte'; import Copy16 from 'carbon-icons-svelte/lib/Copy16'; import { cx } from '../../lib'; let animation = undefined; let timeoutId = undefined; - onDestroy(() => { - if (timeoutId !== undefined) { - window.clearTimeout(timeoutId); - timeoutId = undefined; + afterUpdate(() => { + if (animation === 'fade-in') { + timeoutId = window.setTimeout(() => { + animation = 'fade-out'; + }, feedbackTimeout); } }); + + onDestroy(() => { + window.clearTimeout(timeoutId); + timeoutId = undefined; + });