diff --git a/src/components/CodeSnippet/CodeSnippet.svelte b/src/components/CodeSnippet/CodeSnippet.svelte index afdd3de6..6d1eb7d8 100644 --- a/src/components/CodeSnippet/CodeSnippet.svelte +++ b/src/components/CodeSnippet/CodeSnippet.svelte @@ -11,6 +11,7 @@ export let light = false; export let style = undefined; + import { afterUpdate } from 'svelte'; import ChevronDown16 from 'carbon-icons-svelte/lib/ChevronDown16'; import { cx } from '../../lib'; import Button from '../Button'; @@ -22,10 +23,11 @@ let expanded = false; let showMoreLess = false; - $: expandText = expanded ? showLessText : showMoreText; - $: if (codeRef) { + afterUpdate(() => { showMoreLess = type === 'multi' && codeRef.getBoundingClientRect().height > 255; - } + }); + + $: expandText = expanded ? showLessText : showMoreText; {#if type === 'inline'} diff --git a/src/components/ComposedModal/ComposedModal.svelte b/src/components/ComposedModal/ComposedModal.svelte index ad30981e..61caa9bf 100644 --- a/src/components/ComposedModal/ComposedModal.svelte +++ b/src/components/ComposedModal/ComposedModal.svelte @@ -8,7 +8,7 @@ export let size = undefined; export let style = undefined; - import { createEventDispatcher, setContext, onDestroy } from 'svelte'; + import { createEventDispatcher, tick, setContext, onMount, afterUpdate } from 'svelte'; import { writable } from 'svelte/store'; import { cx } from '../../lib'; @@ -30,10 +30,6 @@ } }); - onDestroy(() => { - document.body.classList.remove(cx('--body--with-modal-open')); - }); - function focus(element) { if (element.querySelector(selectorPrimaryFocus)) { return focusElement.focus(); @@ -44,10 +40,18 @@ } } - $: didOpen = open; - $: { - if (innerModal) { - focus(innerModal); + onMount(async () => { + await tick(); + focus(innerModal); + + return () => { + document.body.classList.remove(cx('--body--with-modal-open')); + }; + }); + + afterUpdate(() => { + if (!didOpen) { + focus(outerModal); } if (open) { @@ -56,7 +60,9 @@ dispatch('close'); document.body.classList.remove(cx('--body--with-modal-open')); } - } + }); + + $: didOpen = open;
{ if (didOpen) { - focus(outerModal); didOpen = false; } }} diff --git a/src/components/ContentSwitcher/Switch.svelte b/src/components/ContentSwitcher/Switch.svelte index bc3c7f7b..f88314b3 100644 --- a/src/components/ContentSwitcher/Switch.svelte +++ b/src/components/ContentSwitcher/Switch.svelte @@ -6,8 +6,8 @@ export let disabled = false; export let style = undefined; + import { afterUpdate, getContext } from 'svelte'; import { cx } from '../../lib'; - import { getContext } from 'svelte'; const id = Math.random(); const { currentId, add, update, change } = getContext('ContentSwitcher'); @@ -16,10 +16,13 @@ add({ id, text, selected }); + afterUpdate(() => { + if (selected) { + buttonRef.focus(); + } + }); + $: selected = $currentId === id; - $: if (selected && buttonRef) { - buttonRef.focus(); - }
diff --git a/src/components/FileUploader/FileUploader.svelte b/src/components/FileUploader/FileUploader.svelte index 94d33574..61ae76d9 100644 --- a/src/components/FileUploader/FileUploader.svelte +++ b/src/components/FileUploader/FileUploader.svelte @@ -2,6 +2,7 @@ let className = undefined; export { className as class }; export let files = []; + export const clearFiles = () => (files = []); export let name = ''; export let labelDescription = ''; export let labelTitle = ''; @@ -13,7 +14,7 @@ export let accept = []; export let style = undefined; - import { createEventDispatcher } from 'svelte'; + import { createEventDispatcher, afterUpdate } from 'svelte'; import { cx } from '../../lib'; import Filename from './Filename.svelte'; import FileUploaderButton from './FileUploaderButton.svelte'; @@ -22,7 +23,7 @@ let prevFiles = []; - $: { + afterUpdate(() => { if (files.length > prevFiles.length) { dispatch('add', files); } else { @@ -33,7 +34,7 @@ } prevFiles = [...files]; - } + });
diff --git a/src/components/FileUploader/FileUploaderDropContainer.svelte b/src/components/FileUploader/FileUploaderDropContainer.svelte index 09ee1ecd..24e40c9e 100644 --- a/src/components/FileUploader/FileUploaderDropContainer.svelte +++ b/src/components/FileUploader/FileUploaderDropContainer.svelte @@ -21,9 +21,6 @@ let over = false; let inputRef = undefined; - - $: _class = cx('--file__drop-container', over && '--file__drop-container--drag-over', className); - $: _labelClass = cx('--file-browse-btn', disabled && '--file-browse-btn--disabled');