diff --git a/src/lib/components/dialog/Dialog.svelte b/src/lib/components/dialog/Dialog.svelte index fda270b..5977347 100644 --- a/src/lib/components/dialog/Dialog.svelte +++ b/src/lib/components/dialog/Dialog.svelte @@ -253,10 +253,11 @@ onUpdate={(message, element) => { return match(message, { [StackMessage.Add]() { - containers.add(element); + containers = new Set([...containers, element]); }, [StackMessage.Remove]() { containers.delete(element); + containers = new Set([...containers]); }, }); }} diff --git a/src/lib/components/focus-trap/FocusTrap.svelte b/src/lib/components/focus-trap/FocusTrap.svelte index af9dab3..d93f4dc 100644 --- a/src/lib/components/focus-trap/FocusTrap.svelte +++ b/src/lib/components/focus-trap/FocusTrap.svelte @@ -7,7 +7,7 @@ FocusResult, } from "$lib/utils/focus-management"; import { contains } from "$lib/internal/dom-containers"; - import { afterUpdate, onMount, onDestroy, tick } from "svelte"; + import { onMount, onDestroy, tick } from "svelte"; export let containers: Set; export let enabled: boolean = true; @@ -74,7 +74,7 @@ // Handle initial focus onMount(handleFocus); - afterUpdate(() => (enabled ? handleFocus() : restore())); + $: enabled && containers ? handleFocus() : restore(); // When this component is being destroyed, focusElement is called // before handleWindowFocus is removed, so in the svelte port we add this diff --git a/src/lib/internal/StackContextProvider.svelte b/src/lib/internal/StackContextProvider.svelte index eb74e75..51ba62b 100644 --- a/src/lib/internal/StackContextProvider.svelte +++ b/src/lib/internal/StackContextProvider.svelte @@ -9,24 +9,21 @@