Move Transition to <Render>

This commit is contained in:
Ryan Gossiaux
2021-12-20 22:55:35 -08:00
parent 7ff28492a2
commit aa3017990d
3 changed files with 55 additions and 3 deletions

View File

@@ -4,7 +4,6 @@
import { match } from "$lib/utils/match"; import { match } from "$lib/utils/match";
import { State, useOpenClosedProvider } from "$lib/internal/open-closed"; import { State, useOpenClosedProvider } from "$lib/internal/open-closed";
import { Reason, transition } from "$lib/utils/transition"; import { Reason, transition } from "$lib/utils/transition";
import { import {
hasChildren, hasChildren,
NestingContextValues, NestingContextValues,
@@ -15,6 +14,20 @@
useTransitionContext, useTransitionContext,
} from "./TransitionRoot.svelte"; } from "./TransitionRoot.svelte";
import { useId } from "$lib/hooks/use-id"; import { useId } from "$lib/hooks/use-id";
import { forwardEventsBuilder } from "$lib/internal/forwardEventsBuilder";
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";
const forwardEvents = forwardEventsBuilder(get_current_component(), [
"beforeEnter",
"beforeLeave",
"afterEnter",
"afterLeave",
]);
export let as: SupportedAs = "div";
export let use: HTMLActionArray = [];
export let unmount = true; export let unmount = true;
export let enter = ""; export let enter = "";
@@ -166,8 +179,15 @@
: `${$$props.class || ""} ${entered}`; : `${$$props.class || ""} ${entered}`;
</script> </script>
<div bind:this={container} {...$$restProps} class={classes}> <Render
{...$$restProps}
{as}
use={[...use, forwardEvents]}
name={"TransitionChild"}
bind:el={container}
class={classes}
>
{#if state === TreeStates.Visible} {#if state === TreeStates.Visible}
<slot /> <slot />
{/if} {/if}
</div> </Render>

View File

@@ -4,6 +4,19 @@
import TransitionRoot, { import TransitionRoot, {
hasTransitionContext, hasTransitionContext,
} from "./TransitionRoot.svelte"; } from "./TransitionRoot.svelte";
import { forwardEventsBuilder } from "$lib/internal/forwardEventsBuilder";
import { get_current_component } from "svelte/internal";
import type { SupportedAs } from "$lib/internal/elements";
import type { HTMLActionArray } from "$lib/hooks/use-actions";
const forwardEvents = forwardEventsBuilder(get_current_component(), [
"beforeEnter",
"beforeLeave",
"afterEnter",
"afterLeave",
]);
export let as: SupportedAs = "div";
export let use: HTMLActionArray = [];
let hasTransition = hasTransitionContext(); let hasTransition = hasTransitionContext();
let hasOpen = hasOpenClosed(); let hasOpen = hasOpenClosed();
@@ -12,6 +25,8 @@
{#if !hasTransition && hasOpen} {#if !hasTransition && hasOpen}
<TransitionRoot <TransitionRoot
{...$$props} {...$$props}
{as}
use={[...use, forwardEvents]}
on:afterEnter on:afterEnter
on:afterLeave on:afterLeave
on:beforeEnter on:beforeEnter
@@ -22,6 +37,8 @@
{:else} {:else}
<TransitionChild <TransitionChild
{...$$props} {...$$props}
{as}
use={[...use, forwardEvents]}
on:afterEnter on:afterEnter
on:afterLeave on:afterLeave
on:beforeEnter on:beforeEnter

View File

@@ -111,6 +111,19 @@
import { RenderStrategy } from "$lib/utils/Render.svelte"; import { RenderStrategy } from "$lib/utils/Render.svelte";
import TransitionChild from "./TransitionChild.svelte"; import TransitionChild from "./TransitionChild.svelte";
import type { useId } from "$lib/hooks/use-id"; import type { useId } from "$lib/hooks/use-id";
import { forwardEventsBuilder } from "$lib/internal/forwardEventsBuilder";
import { get_current_component } from "svelte/internal";
import type { SupportedAs } from "$lib/internal/elements";
import type { HTMLActionArray } from "$lib/hooks/use-actions";
const forwardEvents = forwardEventsBuilder(get_current_component(), [
"beforeEnter",
"beforeLeave",
"afterEnter",
"afterLeave",
]);
export let as: SupportedAs = "div";
export let use: HTMLActionArray = [];
export let show: boolean | undefined = undefined; export let show: boolean | undefined = undefined;
export let unmount = true; export let unmount = true;
@@ -181,6 +194,8 @@
{#if state === TreeStates.Visible} {#if state === TreeStates.Visible}
<TransitionChild <TransitionChild
{...$$restProps} {...$$restProps}
{as}
use={[...use, forwardEvents]}
{unmount} {unmount}
on:afterEnter on:afterEnter
on:afterLeave on:afterLeave