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();
- }