diff --git a/src/lib/components/dialog/Dialog.svelte b/src/lib/components/dialog/Dialog.svelte
index 43bc80c..6a65324 100644
--- a/src/lib/components/dialog/Dialog.svelte
+++ b/src/lib/components/dialog/Dialog.svelte
@@ -59,7 +59,7 @@
import { get_current_component } from "svelte/internal";
import type { SupportedAs } from "$lib/internal/elements";
import type { HTMLActionArray } from "$lib/hooks/use-actions";
- import Render from "$lib/utils/Render.svelte";
+ import Render, { Features } from "$lib/utils/Render.svelte";
const forwardEvents = forwardEventsBuilder(get_current_component(), [
"close",
]);
@@ -247,42 +247,42 @@
on:mousedown={handleWindowMousedown}
on:keydown={handleWindowKeydown}
/>
-{#if visible}
-
- {
- return match(message, {
- [StackMessage.Add]() {
- containers.add(element);
- },
- [StackMessage.Remove]() {
- containers.delete(element);
- },
- });
- }}
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{/if}
+
+ {
+ return match(message, {
+ [StackMessage.Add]() {
+ containers.add(element);
+ },
+ [StackMessage.Remove]() {
+ containers.delete(element);
+ },
+ });
+ }}
+>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/lib/components/disclosure/DisclosurePanel.svelte b/src/lib/components/disclosure/DisclosurePanel.svelte
index 5d0fe0c..06e885a 100644
--- a/src/lib/components/disclosure/DisclosurePanel.svelte
+++ b/src/lib/components/disclosure/DisclosurePanel.svelte
@@ -14,7 +14,7 @@
import { get_current_component } from "svelte/internal";
import type { SupportedAs } from "$lib/internal/elements";
import type { HTMLActionArray } from "$lib/hooks/use-actions";
- import Render from "$lib/utils/Render.svelte";
+ import Render, { Features } from "$lib/utils/Render.svelte";
const forwardEvents = forwardEventsBuilder(get_current_component());
export let as: SupportedAs = "div";
@@ -41,15 +41,15 @@
};
-{#if visible}
-
-
-
-{/if}
+
+
+
diff --git a/src/lib/components/listbox/ListboxOptions.svelte b/src/lib/components/listbox/ListboxOptions.svelte
index 5839a85..f3b04a2 100644
--- a/src/lib/components/listbox/ListboxOptions.svelte
+++ b/src/lib/components/listbox/ListboxOptions.svelte
@@ -6,7 +6,7 @@
import { Keys } from "$lib/utils/keyboard";
import { Focus } from "$lib/utils/calculate-active-index";
import { State, useOpenClosed } from "$lib/internal/open-closed";
- import Render from "$lib/utils/Render.svelte";
+ import Render, { Features } from "$lib/utils/Render.svelte";
import { forwardEventsBuilder } from "$lib/internal/forwardEventsBuilder";
import type { SupportedAs } from "$lib/internal/elements";
import type { HTMLActionArray } from "$lib/hooks/use-actions";
@@ -120,17 +120,17 @@
$: slotProps = { open: $api.listboxState === ListboxStates.Open };
-{#if visible}
-
-
-
-{/if}
+
+
+
diff --git a/src/lib/components/menu/MenuItems.svelte b/src/lib/components/menu/MenuItems.svelte
index f9a4432..d4cfe5d 100644
--- a/src/lib/components/menu/MenuItems.svelte
+++ b/src/lib/components/menu/MenuItems.svelte
@@ -8,7 +8,7 @@
import { tick } from "svelte";
import type { HTMLActionArray } from "$lib/hooks/use-actions";
import type { SupportedAs } from "$lib/internal/elements";
- import Render from "$lib/utils/Render.svelte";
+ import Render, { Features } from "$lib/utils/Render.svelte";
import { forwardEventsBuilder } from "$lib/internal/forwardEventsBuilder";
import { get_current_component } from "svelte/internal";
@@ -138,17 +138,17 @@
$: slotProps = { open: $api.menuState === MenuStates.Open };
-{#if visible}
-
-
-
-{/if}
+
+
+
diff --git a/src/lib/components/popover/PopoverOverlay.svelte b/src/lib/components/popover/PopoverOverlay.svelte
index d1eabfe..17b55d2 100644
--- a/src/lib/components/popover/PopoverOverlay.svelte
+++ b/src/lib/components/popover/PopoverOverlay.svelte
@@ -5,7 +5,7 @@
import { get_current_component } from "svelte/internal";
import type { SupportedAs } from "$lib/internal/elements";
import type { HTMLActionArray } from "$lib/hooks/use-actions";
- import Render from "$lib/utils/Render.svelte";
+ import Render, { Features } from "$lib/utils/Render.svelte";
const forwardEvents = forwardEventsBuilder(get_current_component());
export let as: SupportedAs = "div";
@@ -27,16 +27,16 @@
$: slotProps = { open: $api.popoverState === PopoverStates.Open };
-{#if visible}
-
-
-
-{/if}
+
+
+
diff --git a/src/lib/components/popover/PopoverPanel.svelte b/src/lib/components/popover/PopoverPanel.svelte
index 89668f1..4cfa723 100644
--- a/src/lib/components/popover/PopoverPanel.svelte
+++ b/src/lib/components/popover/PopoverPanel.svelte
@@ -28,7 +28,7 @@
import { get_current_component } from "svelte/internal";
import type { SupportedAs } from "$lib/internal/elements";
import type { HTMLActionArray } from "$lib/hooks/use-actions";
- import Render from "$lib/utils/Render.svelte";
+ import Render, { Features } from "$lib/utils/Render.svelte";
const forwardEvents = forwardEventsBuilder(get_current_component());
export let as: SupportedAs = "div";
@@ -135,17 +135,17 @@
on:keydown={handleWindowKeydown}
on:focus|capture={handleFocus}
/>
-{#if visible}
-
-
-
-{/if}
+
+
+
diff --git a/src/lib/components/tabs/TabPanel.svelte b/src/lib/components/tabs/TabPanel.svelte
index 27bc861..7cec664 100644
--- a/src/lib/components/tabs/TabPanel.svelte
+++ b/src/lib/components/tabs/TabPanel.svelte
@@ -6,7 +6,7 @@
import { get_current_component } from "svelte/internal";
import type { SupportedAs } from "$lib/internal/elements";
import type { HTMLActionArray } from "$lib/hooks/use-actions";
- import Render from "$lib/utils/Render.svelte";
+ import Render, { Features } from "$lib/utils/Render.svelte";
const forwardEvents = forwardEventsBuilder(get_current_component());
export let as: SupportedAs = "div";
@@ -31,13 +31,13 @@
};
-{#if selected}
-
-
-
-{/if}
+
+
+
diff --git a/src/lib/components/transitions/TransitionChild.svelte b/src/lib/components/transitions/TransitionChild.svelte
index ae42cd8..9138b90 100644
--- a/src/lib/components/transitions/TransitionChild.svelte
+++ b/src/lib/components/transitions/TransitionChild.svelte
@@ -18,7 +18,7 @@
import { get_current_component } from "svelte/internal";
import type { SupportedAs } from "$lib/internal/elements";
import type { HTMLActionArray } from "$lib/hooks/use-actions";
- import Render from "$lib/utils/Render.svelte";
+ import Render, { Features, RenderStrategy } from "$lib/utils/Render.svelte";
const forwardEvents = forwardEventsBuilder(get_current_component(), [
"beforeEnter",
"beforeLeave",
@@ -29,7 +29,6 @@
export let as: SupportedAs = "div";
export let use: HTMLActionArray = [];
- export let unmount = true;
export let enter = "";
export let enterFrom = "";
export let enterTo = "";
@@ -186,8 +185,8 @@
name={"TransitionChild"}
bind:el={container}
class={classes}
+ visible={state === TreeStates.Visible}
+ features={Features.RenderStrategy}
>
- {#if state === TreeStates.Visible}
-
- {/if}
+
diff --git a/src/lib/components/transitions/TransitionRoot.svelte b/src/lib/components/transitions/TransitionRoot.svelte
index 823a67e..992e399 100644
--- a/src/lib/components/transitions/TransitionRoot.svelte
+++ b/src/lib/components/transitions/TransitionRoot.svelte
@@ -126,7 +126,6 @@
export let use: HTMLActionArray = [];
export let show: boolean | undefined = undefined;
- export let unmount = true;
export let appear = false;
let openClosedState = useOpenClosed();
@@ -191,12 +190,11 @@
setContext(TRANSITION_CONTEXT_NAME, transitionBag);
-{#if state === TreeStates.Visible}
+{#if state === TreeStates.Visible || $$props.unmount === false}
import type { ActionArray } from "$lib/hooks/use-actions";
import { forwardEventsBuilder } from "$lib/internal/forwardEventsBuilder";
+ const forwardEvents = forwardEventsBuilder(get_current_component());
export let name: string;
export let as: SvelteComponent | SupportedElement;
export let el: HTMLElement | null = null;
export let use: ActionArray = [];
export let slotProps: unknown = {};
- const forwardEvents = forwardEventsBuilder(get_current_component());
+ export let visible = true;
+ export let features: Features = Features.None;
+ // The static and unmount props are only used in conjunction with the render strategies
+ export let unmount = true;
if (!as) {
throw new Error(`<${name}> did not provide an \`as\` value to `);
@@ -34,14 +58,30 @@
}
$: classStyle = $$props.class;
+
+ $: show =
+ visible ||
+ (features & Features.Static && $$props.static) ||
+ !(features & Features.RenderStrategy && unmount);
+ $: hidden =
+ !visible &&
+ !(features & Features.Static && $$props.static) &&
+ features & Features.RenderStrategy &&
+ !unmount;
-
-
-
+{#if show}
+
+
+
+{/if}