From c73d9bf9196cd253296f1210ffe5b41a4435ecb8 Mon Sep 17 00:00:00 2001 From: Ryan Gossiaux Date: Mon, 20 Dec 2021 18:34:38 -0800 Subject: [PATCH] Add to Dialog --- src/lib/components/dialog/Dialog.svelte | 28 +++++++++++++---- .../components/dialog/DialogOverlay.svelte | 30 ++++++++++++++++--- src/lib/components/dialog/DialogTitle.svelte | 23 ++++++++++++-- 3 files changed, 69 insertions(+), 12 deletions(-) diff --git a/src/lib/components/dialog/Dialog.svelte b/src/lib/components/dialog/Dialog.svelte index fe83a54..43bc80c 100644 --- a/src/lib/components/dialog/Dialog.svelte +++ b/src/lib/components/dialog/Dialog.svelte @@ -55,6 +55,17 @@ import ForcePortalRootContext from "$lib/internal/ForcePortalRootContext.svelte"; import Portal from "$lib/components/portal/Portal.svelte"; import PortalGroup from "$lib/components/portal/PortalGroup.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"; + import Render from "$lib/utils/Render.svelte"; + const forwardEvents = forwardEventsBuilder(get_current_component(), [ + "close", + ]); + export let as: SupportedAs = "div"; + export let use: HTMLActionArray = []; + export let open: Boolean | undefined = undefined; export let initialFocus: HTMLElement | null = null; @@ -217,7 +228,8 @@ } }); - function handleClick(event: MouseEvent) { + function handleClick(e: CustomEvent) { + let event = e as any as MouseEvent; event.stopPropagation(); } @@ -227,6 +239,8 @@ "aria-modal": dialogState === DialogStates.Open ? true : undefined, "aria-labelledby": titleId, }; + + $: slotProps = { open }; -
- -
+ +
diff --git a/src/lib/components/dialog/DialogOverlay.svelte b/src/lib/components/dialog/DialogOverlay.svelte index 74de6b3..6712995 100644 --- a/src/lib/components/dialog/DialogOverlay.svelte +++ b/src/lib/components/dialog/DialogOverlay.svelte @@ -1,20 +1,42 @@ -
- -
+ + + diff --git a/src/lib/components/dialog/DialogTitle.svelte b/src/lib/components/dialog/DialogTitle.svelte index 431e60f..1eee489 100644 --- a/src/lib/components/dialog/DialogTitle.svelte +++ b/src/lib/components/dialog/DialogTitle.svelte @@ -2,6 +2,15 @@ import { DialogStates, useDialogContext } from "./Dialog.svelte"; import { useId } from "$lib/hooks/use-id"; import { onMount } from "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"; + import Render from "$lib/utils/Render.svelte"; + const forwardEvents = forwardEventsBuilder(get_current_component()); + export let as: SupportedAs = "h2"; + export let use: HTMLActionArray = []; + let api = useDialogContext("DialogTitle"); let id = `headlessui-dialog-title-${useId()}`; @@ -12,8 +21,16 @@ $: propsWeControl = { id, }; + + $: slotProps = { open: $api.dialogState === DialogStates.Open }; -

- -

+ + +