@pzerelles/headlessui-svelte 2.1.2-next.22 → 2.1.2-next.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/button/Button.svelte +84 -54
- package/dist/button/Button.svelte.d.ts +7 -4
- package/dist/checkbox/Checkbox.svelte +173 -120
- package/dist/checkbox/Checkbox.svelte.d.ts +7 -4
- package/dist/close-button/CloseButton.svelte +12 -6
- package/dist/close-button/CloseButton.svelte.d.ts +13 -10
- package/dist/combobox/Combobox.svelte +50 -3
- package/dist/data-interactive/DataInteractive.svelte +55 -29
- package/dist/data-interactive/DataInteractive.svelte.d.ts +7 -5
- package/dist/description/Description.svelte +39 -24
- package/dist/description/Description.svelte.d.ts +8 -5
- package/dist/description/context.svelte.js +13 -15
- package/dist/dialog/Dialog.svelte +358 -38
- package/dist/dialog/Dialog.svelte.d.ts +10 -7
- package/dist/dialog/DialogBackdrop.svelte +30 -13
- package/dist/dialog/DialogBackdrop.svelte.d.ts +7 -4
- package/dist/dialog/DialogPanel.svelte +49 -26
- package/dist/dialog/DialogPanel.svelte.d.ts +7 -4
- package/dist/dialog/DialogTitle.svelte +38 -23
- package/dist/dialog/DialogTitle.svelte.d.ts +7 -4
- package/dist/field/Field.svelte +50 -34
- package/dist/field/Field.svelte.d.ts +7 -4
- package/dist/fieldset/Fieldset.svelte +50 -29
- package/dist/fieldset/Fieldset.svelte.d.ts +7 -4
- package/dist/focus-trap/FocusTrap.svelte +419 -283
- package/dist/focus-trap/FocusTrap.svelte.d.ts +7 -4
- package/dist/hooks/use-disabled.d.ts +4 -1
- package/dist/hooks/use-disabled.js +10 -5
- package/dist/input/Input.svelte +84 -53
- package/dist/input/Input.svelte.d.ts +7 -4
- package/dist/internal/FloatingProvider.svelte +14 -9
- package/dist/internal/FocusSentinel.svelte +16 -8
- package/dist/internal/ForcePortalRoot.svelte +7 -3
- package/dist/internal/FormFields.svelte +47 -34
- package/dist/internal/FormFieldsProvider.svelte +9 -5
- package/dist/internal/FormResolver.svelte +20 -15
- package/dist/internal/Hidden.svelte +50 -29
- package/dist/internal/Hidden.svelte.d.ts +7 -4
- package/dist/internal/MainTreeProvider.svelte +89 -36
- package/dist/internal/Portal.svelte +18 -14
- package/dist/internal/floating-provider.svelte.js +1 -1
- package/dist/internal/floating.svelte.d.ts +5 -5
- package/dist/internal/floating.svelte.js +17 -17
- package/dist/label/Label.svelte +93 -58
- package/dist/label/Label.svelte.d.ts +7 -4
- package/dist/legend/Legend.svelte +12 -3
- package/dist/listbox/Listbox.svelte +525 -387
- package/dist/listbox/Listbox.svelte.d.ts +7 -5
- package/dist/listbox/ListboxButton.svelte +173 -127
- package/dist/listbox/ListboxButton.svelte.d.ts +7 -5
- package/dist/listbox/ListboxOption.svelte +170 -129
- package/dist/listbox/ListboxOption.svelte.d.ts +7 -5
- package/dist/listbox/ListboxOptions.svelte +400 -304
- package/dist/listbox/ListboxOptions.svelte.d.ts +7 -5
- package/dist/listbox/ListboxSelectedOption.svelte +38 -15
- package/dist/listbox/ListboxSelectedOption.svelte.d.ts +7 -4
- package/dist/listbox/index.d.ts +4 -4
- package/dist/listbox/index.js +1 -1
- package/dist/menu/Menu.svelte +78 -57
- package/dist/menu/Menu.svelte.d.ts +7 -5
- package/dist/menu/MenuButton.svelte +157 -117
- package/dist/menu/MenuButton.svelte.d.ts +7 -5
- package/dist/menu/MenuHeading.svelte +32 -14
- package/dist/menu/MenuHeading.svelte.d.ts +7 -5
- package/dist/menu/MenuItem.svelte +142 -107
- package/dist/menu/MenuItem.svelte.d.ts +8 -8
- package/dist/menu/MenuItems.svelte +301 -229
- package/dist/menu/MenuItems.svelte.d.ts +7 -5
- package/dist/menu/MenuSection.svelte +24 -9
- package/dist/menu/MenuSection.svelte.d.ts +7 -5
- package/dist/menu/MenuSeparator.svelte +17 -4
- package/dist/menu/MenuSeparator.svelte.d.ts +7 -6
- package/dist/menu/context.svelte.d.ts +1 -29
- package/dist/menu/context.svelte.js +29 -27
- package/dist/menu/index.d.ts +7 -7
- package/dist/popover/Popover.svelte +216 -150
- package/dist/popover/Popover.svelte.d.ts +7 -4
- package/dist/popover/PopoverBackdrop.svelte +67 -41
- package/dist/popover/PopoverBackdrop.svelte.d.ts +7 -4
- package/dist/popover/PopoverButton.svelte +292 -212
- package/dist/popover/PopoverButton.svelte.d.ts +7 -4
- package/dist/popover/PopoverGroup.svelte +62 -35
- package/dist/popover/PopoverGroup.svelte.d.ts +7 -4
- package/dist/popover/PopoverPanel.svelte +311 -229
- package/dist/popover/PopoverPanel.svelte.d.ts +7 -4
- package/dist/portal/InternalPortal.svelte +141 -85
- package/dist/portal/InternalPortal.svelte.d.ts +7 -4
- package/dist/portal/Portal.svelte +5 -2
- package/dist/portal/PortalGroup.svelte +30 -9
- package/dist/portal/PortalGroup.svelte.d.ts +7 -4
- package/dist/select/Select.svelte +98 -68
- package/dist/select/Select.svelte.d.ts +7 -4
- package/dist/switch/Switch.svelte +179 -132
- package/dist/switch/Switch.svelte.d.ts +7 -4
- package/dist/switch/SwitchGroup.svelte +44 -31
- package/dist/switch/SwitchGroup.svelte.d.ts +7 -4
- package/dist/tabs/Tab.svelte +194 -143
- package/dist/tabs/Tab.svelte.d.ts +7 -4
- package/dist/tabs/TabGroup.svelte +81 -214
- package/dist/tabs/TabGroup.svelte.d.ts +7 -24
- package/dist/tabs/TabList.svelte +31 -11
- package/dist/tabs/TabList.svelte.d.ts +7 -4
- package/dist/tabs/TabPanel.svelte +67 -43
- package/dist/tabs/TabPanel.svelte.d.ts +7 -4
- package/dist/tabs/TabPanels.svelte +18 -7
- package/dist/tabs/TabPanels.svelte.d.ts +7 -4
- package/dist/tabs/context.svelte.d.ts +31 -0
- package/dist/tabs/context.svelte.js +134 -0
- package/dist/textarea/Textarea.svelte +84 -53
- package/dist/textarea/Textarea.svelte.d.ts +7 -4
- package/dist/transition/InternalTransitionChild.svelte +259 -170
- package/dist/transition/InternalTransitionChild.svelte.d.ts +7 -4
- package/dist/transition/Transition.svelte +96 -66
- package/dist/transition/Transition.svelte.d.ts +7 -4
- package/dist/transition/TransitionChild.svelte +31 -11
- package/dist/transition/TransitionChild.svelte.d.ts +7 -4
- package/dist/utils/ElementOrComponent.svelte +43 -23
- package/dist/utils/ElementOrComponent.svelte.d.ts +10 -4
- package/dist/utils/Generic.svelte +36 -22
- package/dist/utils/Generic.svelte.d.ts +7 -4
- package/dist/utils/StableCollection.svelte +54 -36
- package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +27 -12
- package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +88 -44
- package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.js +7 -7
- package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.js +1 -1
- package/dist/utils/floating-ui/svelte/types.d.ts +4 -4
- package/dist/utils/floating-ui/svelte-dom/types.d.ts +2 -2
- package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.js +6 -6
- package/dist/utils/types.d.ts +11 -4
- package/package.json +2 -2
- package/dist/dialog/InternalDialog.svelte +0 -233
- package/dist/dialog/InternalDialog.svelte.d.ts +0 -42
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { type PropsForFeatures } from "../utils/render.js";
|
|
2
1
|
import type { ElementType, Props } from "../utils/types.js";
|
|
3
|
-
import { type
|
|
2
|
+
import { type PropsForFeatures } from "../utils/render.js";
|
|
4
3
|
export declare const DEFAULT_DIALOG_TAG: "div";
|
|
5
4
|
export type DialogRenderPropArg = {
|
|
6
5
|
open: boolean;
|
|
@@ -8,6 +7,7 @@ export type DialogRenderPropArg = {
|
|
|
8
7
|
type DialogPropsWeControl = "aria-describedby" | "aria-labelledby" | "aria-modal";
|
|
9
8
|
export declare const DialogRenderFeatures: number;
|
|
10
9
|
export type DialogProps<TTag extends ElementType = typeof DEFAULT_DIALOG_TAG> = Props<TTag, DialogRenderPropArg, DialogPropsWeControl, PropsForFeatures<typeof DialogRenderFeatures> & {
|
|
10
|
+
as?: TTag;
|
|
11
11
|
id?: string;
|
|
12
12
|
open?: boolean;
|
|
13
13
|
onclose(value: boolean): void;
|
|
@@ -17,19 +17,22 @@ export type DialogProps<TTag extends ElementType = typeof DEFAULT_DIALOG_TAG> =
|
|
|
17
17
|
transition?: boolean;
|
|
18
18
|
__demoMode?: boolean;
|
|
19
19
|
}>;
|
|
20
|
-
export type DialogChildren = Snippet<[DialogRenderPropArg]>;
|
|
21
20
|
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_DIALOG_TAG> {
|
|
22
21
|
props(): {
|
|
23
22
|
as?: TTag | undefined;
|
|
24
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "
|
|
25
|
-
children?: Snippet<[
|
|
23
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "class") | "autofocus" | "unmount" | "static" | "id" | "role" | "onclose" | "initialFocus" | "transition" | DialogPropsWeControl | "open" | "__demoMode"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
24
|
+
children?: import("svelte").Snippet<[{
|
|
25
|
+
slot: DialogRenderPropArg;
|
|
26
|
+
props: Record<string, any>;
|
|
27
|
+
}]> | undefined;
|
|
26
28
|
ref?: HTMLElement;
|
|
27
|
-
} & (true extends (import("
|
|
28
|
-
class?:
|
|
29
|
+
} & (true extends (import("svelte/elements.js").SvelteHTMLElements[TTag] extends infer T_1 ? T_1 extends import("svelte/elements.js").SvelteHTMLElements[TTag] ? T_1 extends never ? never : "class" extends infer T_2 ? T_2 extends "class" ? T_2 extends keyof T_1 ? true : never : never : never : never : never) ? {
|
|
30
|
+
class?: string | ((bag: DialogRenderPropArg) => string) | null | undefined;
|
|
29
31
|
} : {}) & {
|
|
30
32
|
static?: boolean | undefined;
|
|
31
33
|
unmount?: boolean | undefined;
|
|
32
34
|
} & {
|
|
35
|
+
as?: TTag | undefined;
|
|
33
36
|
id?: string;
|
|
34
37
|
open?: boolean;
|
|
35
38
|
onclose(value: boolean): void;
|
|
@@ -1,22 +1,39 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { ElementType, Props } from "../utils/types.js"
|
|
3
|
+
|
|
4
|
+
let DEFAULT_BACKDROP_TAG = "div" as const
|
|
5
|
+
type BackdropRenderPropArg = {
|
|
6
|
+
open: boolean
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type DialogBackdropProps<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG> = Props<
|
|
10
|
+
TTag,
|
|
11
|
+
BackdropRenderPropArg,
|
|
12
|
+
never,
|
|
13
|
+
{ transition?: boolean }
|
|
14
|
+
>
|
|
2
15
|
</script>
|
|
3
16
|
|
|
4
|
-
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG">
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
})
|
|
17
|
+
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG">
|
|
18
|
+
import { DialogStates, useDialogContext } from "./context.svelte.js"
|
|
19
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
20
|
+
import { mergeProps } from "../utils/render.js"
|
|
21
|
+
import TransitionChild from "../transition/TransitionChild.svelte"
|
|
22
|
+
|
|
23
|
+
let { ref = $bindable(), transition = false, ...theirProps }: { as?: TTag } & DialogBackdropProps<TTag> = $props()
|
|
24
|
+
const _state = useDialogContext("Dialog.Panel")
|
|
25
|
+
const { dialogState, unmount } = $derived(_state)
|
|
26
|
+
|
|
27
|
+
const slot = $derived({ open: dialogState === DialogStates.Open } satisfies BackdropRenderPropArg)
|
|
28
|
+
|
|
29
|
+
const ourProps = mergeProps({
|
|
30
|
+
"aria-hidden": true,
|
|
31
|
+
})
|
|
15
32
|
</script>
|
|
16
33
|
|
|
17
34
|
{#if transition}
|
|
18
35
|
<TransitionChild {unmount} {ref}>
|
|
19
|
-
{#snippet children(slot, props)}
|
|
36
|
+
{#snippet children({ slot, props })}
|
|
20
37
|
<ElementOrComponent
|
|
21
38
|
ourProps={{ ...ourProps, ...props }}
|
|
22
39
|
{theirProps}
|
|
@@ -9,11 +9,14 @@ export type DialogBackdropProps<TTag extends ElementType = typeof DEFAULT_BACKDR
|
|
|
9
9
|
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG> {
|
|
10
10
|
props(): {
|
|
11
11
|
as?: TTag | undefined;
|
|
12
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "
|
|
13
|
-
children?: import("svelte").Snippet<[
|
|
12
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "class") | "transition"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
13
|
+
children?: import("svelte").Snippet<[{
|
|
14
|
+
slot: BackdropRenderPropArg;
|
|
15
|
+
props: Record<string, any>;
|
|
16
|
+
}]> | undefined;
|
|
14
17
|
ref?: HTMLElement;
|
|
15
|
-
} & (true extends (import("
|
|
16
|
-
class?:
|
|
18
|
+
} & (true extends (import("svelte/elements.js").SvelteHTMLElements[TTag] extends infer T_1 ? T_1 extends import("svelte/elements.js").SvelteHTMLElements[TTag] ? T_1 extends never ? never : "class" extends infer T_2 ? T_2 extends "class" ? T_2 extends keyof T_1 ? true : never : never : never : never : never) ? {
|
|
19
|
+
class?: string | ((bag: BackdropRenderPropArg) => string) | null | undefined;
|
|
17
20
|
} : {}) & {
|
|
18
21
|
transition?: boolean;
|
|
19
22
|
};
|
|
@@ -1,35 +1,58 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { ElementType, Props } from "../utils/types.js"
|
|
3
|
+
|
|
4
|
+
let DEFAULT_PANEL_TAG = "div" as const
|
|
5
|
+
type PanelRenderPropArg = {
|
|
6
|
+
open: boolean
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type DialogPanelProps<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> = Props<
|
|
10
|
+
TTag,
|
|
11
|
+
PanelRenderPropArg,
|
|
12
|
+
never,
|
|
13
|
+
{
|
|
14
|
+
id?: string
|
|
15
|
+
transition?: boolean
|
|
16
|
+
}
|
|
17
|
+
>
|
|
2
18
|
</script>
|
|
3
19
|
|
|
4
|
-
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_PANEL_TAG">
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_PANEL_TAG">
|
|
21
|
+
import { useId } from "../hooks/use-id.js"
|
|
22
|
+
import { DialogStates, useDialogContext } from "./context.svelte.js"
|
|
23
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
24
|
+
import { mergeProps } from "../utils/render.js"
|
|
25
|
+
import TransitionChild from "../transition/TransitionChild.svelte"
|
|
26
|
+
|
|
27
|
+
let internalId = useId()
|
|
28
|
+
let {
|
|
29
|
+
ref = $bindable(),
|
|
30
|
+
id = `headlessui-dialog-panel-${internalId}`,
|
|
31
|
+
transition = false,
|
|
32
|
+
...theirProps
|
|
33
|
+
}: { as?: TTag } & DialogPanelProps<TTag> = $props()
|
|
34
|
+
const _state = useDialogContext("Dialog.Panel")
|
|
35
|
+
const { dialogState, unmount } = $derived(_state)
|
|
36
|
+
|
|
37
|
+
const slot = $derived({ open: dialogState === DialogStates.Open } satisfies PanelRenderPropArg)
|
|
38
|
+
|
|
39
|
+
// Prevent the click events inside the Dialog.Panel from bubbling through the React Tree which
|
|
40
|
+
// could submit wrapping <form> elements even if we portalled the Dialog.
|
|
41
|
+
const handleClick = (event: MouseEvent) => {
|
|
42
|
+
event.stopPropagation()
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const ourProps = $derived(
|
|
46
|
+
mergeProps({
|
|
47
|
+
id,
|
|
48
|
+
onclick: handleClick,
|
|
49
|
+
})
|
|
50
|
+
)
|
|
28
51
|
</script>
|
|
29
52
|
|
|
30
53
|
{#if transition}
|
|
31
54
|
<TransitionChild {unmount} {ref}>
|
|
32
|
-
{#snippet children(slot, props)}
|
|
55
|
+
{#snippet children({ slot, props })}
|
|
33
56
|
<ElementOrComponent
|
|
34
57
|
ourProps={{ ...ourProps, ...props }}
|
|
35
58
|
{theirProps}
|
|
@@ -10,11 +10,14 @@ export type DialogPanelProps<TTag extends ElementType = typeof DEFAULT_PANEL_TAG
|
|
|
10
10
|
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> {
|
|
11
11
|
props(): {
|
|
12
12
|
as?: TTag | undefined;
|
|
13
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "
|
|
14
|
-
children?: import("svelte").Snippet<[
|
|
13
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "class") | "id" | "transition"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
14
|
+
children?: import("svelte").Snippet<[{
|
|
15
|
+
slot: PanelRenderPropArg;
|
|
16
|
+
props: Record<string, any>;
|
|
17
|
+
}]> | undefined;
|
|
15
18
|
ref?: HTMLElement;
|
|
16
|
-
} & (true extends (import("
|
|
17
|
-
class?:
|
|
19
|
+
} & (true extends (import("svelte/elements.js").SvelteHTMLElements[TTag] extends infer T_1 ? T_1 extends import("svelte/elements.js").SvelteHTMLElements[TTag] ? T_1 extends never ? never : "class" extends infer T_2 ? T_2 extends "class" ? T_2 extends keyof T_1 ? true : never : never : never : never : never) ? {
|
|
20
|
+
class?: string | ((bag: PanelRenderPropArg) => string) | null | undefined;
|
|
18
21
|
} : {}) & {
|
|
19
22
|
id?: string;
|
|
20
23
|
transition?: boolean;
|
|
@@ -1,29 +1,44 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { ElementType, Props, PropsOf } from "../utils/types.js"
|
|
3
|
+
|
|
4
|
+
let DEFAULT_TITLE_TAG = "h2" as const
|
|
5
|
+
type TitleRenderPropArg = {
|
|
6
|
+
open: boolean
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type DialogTitleProps<TTag extends ElementType = typeof DEFAULT_TITLE_TAG> = Props<TTag, TitleRenderPropArg>
|
|
10
|
+
|
|
11
|
+
//
|
|
2
12
|
</script>
|
|
3
13
|
|
|
4
|
-
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_TITLE_TAG">
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
setTitleId(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
mergeProps({
|
|
24
|
-
id
|
|
14
|
+
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_TITLE_TAG">
|
|
15
|
+
import { useId } from "../hooks/use-id.js"
|
|
16
|
+
import { DialogStates, useDialogContext } from "./context.svelte.js"
|
|
17
|
+
import { onMount } from "svelte"
|
|
18
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
19
|
+
import { mergeProps } from "../utils/render.js"
|
|
20
|
+
|
|
21
|
+
const internalId = useId()
|
|
22
|
+
let {
|
|
23
|
+
ref = $bindable(),
|
|
24
|
+
id = `headlessui-dialog-title-${internalId}` as PropsOf<TTag>[string],
|
|
25
|
+
...theirProps
|
|
26
|
+
}: { as?: TTag } & DialogTitleProps<TTag> = $props()
|
|
27
|
+
const _state = useDialogContext("Dialog.Panel")
|
|
28
|
+
const { dialogState, setTitleId } = $derived(_state)
|
|
29
|
+
|
|
30
|
+
onMount(() => {
|
|
31
|
+
setTitleId(id)
|
|
32
|
+
return () => setTitleId(null)
|
|
25
33
|
})
|
|
26
|
-
|
|
34
|
+
|
|
35
|
+
const slot = $derived({ open: dialogState === DialogStates.Open } satisfies TitleRenderPropArg)
|
|
36
|
+
|
|
37
|
+
const ourProps = $derived(
|
|
38
|
+
mergeProps({
|
|
39
|
+
id,
|
|
40
|
+
})
|
|
41
|
+
)
|
|
27
42
|
</script>
|
|
28
43
|
|
|
29
44
|
<ElementOrComponent {ourProps} {theirProps} slots={slot} defaultTag={DEFAULT_TITLE_TAG} name="DialogTitle" bind:ref />
|
|
@@ -7,11 +7,14 @@ export type DialogTitleProps<TTag extends ElementType = typeof DEFAULT_TITLE_TAG
|
|
|
7
7
|
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_TITLE_TAG> {
|
|
8
8
|
props(): {
|
|
9
9
|
as?: TTag | undefined;
|
|
10
|
-
} & (Exclude<keyof PropsOf<TTag>, "as" | "children" | "
|
|
11
|
-
children?: import("svelte").Snippet<[
|
|
10
|
+
} & (Exclude<keyof PropsOf<TTag>, "as" | "children" | "class"> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
|
|
11
|
+
children?: import("svelte").Snippet<[{
|
|
12
|
+
slot: TitleRenderPropArg;
|
|
13
|
+
props: Record<string, any>;
|
|
14
|
+
}]> | undefined;
|
|
12
15
|
ref?: HTMLElement;
|
|
13
|
-
} & (true extends (
|
|
14
|
-
class?:
|
|
16
|
+
} & (true extends (import("svelte/elements.js").SvelteHTMLElements[TTag] extends infer T_1 ? T_1 extends import("svelte/elements.js").SvelteHTMLElements[TTag] ? T_1 extends never ? never : "class" extends infer T_2 ? T_2 extends "class" ? T_2 extends keyof T_1 ? true : never : never : never : never : never) ? {
|
|
17
|
+
class?: string | ((bag: TitleRenderPropArg) => string) | null | undefined;
|
|
15
18
|
} : {});
|
|
16
19
|
events(): {} & {
|
|
17
20
|
[evt: string]: CustomEvent<any>;
|
package/dist/field/Field.svelte
CHANGED
|
@@ -1,47 +1,63 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { ElementType, Props } from "../utils/types.js"
|
|
3
|
+
|
|
4
|
+
let DEFAULT_FIELD_TAG = "div" as const
|
|
5
|
+
|
|
6
|
+
type FieldRenderPropArg = {}
|
|
7
|
+
type FieldPropsWeControl = never
|
|
8
|
+
|
|
9
|
+
export type FieldProps<TTag extends ElementType = typeof DEFAULT_FIELD_TAG> = Props<
|
|
10
|
+
TTag,
|
|
11
|
+
FieldRenderPropArg,
|
|
12
|
+
FieldPropsWeControl,
|
|
13
|
+
{
|
|
14
|
+
disabled?: boolean
|
|
15
|
+
}
|
|
16
|
+
>
|
|
2
17
|
</script>
|
|
3
18
|
|
|
4
|
-
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_FIELD_TAG">
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { useLabels } from "../label/context.svelte.js"
|
|
9
|
-
import { useDescriptions } from "../description/context.svelte.js"
|
|
10
|
-
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
11
|
-
import FormFieldsProvider from "../internal/FormFieldsProvider.svelte"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const slot = $derived({ disabled })
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
19
|
+
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_FIELD_TAG">
|
|
20
|
+
import { provideDisabled } from "../hooks/use-disabled.js"
|
|
21
|
+
import { createIdContext } from "../utils/id.js"
|
|
22
|
+
import { nanoid } from "nanoid"
|
|
23
|
+
import { useLabels } from "../label/context.svelte.js"
|
|
24
|
+
import { useDescriptions } from "../description/context.svelte.js"
|
|
25
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
26
|
+
import FormFieldsProvider from "../internal/FormFieldsProvider.svelte"
|
|
27
|
+
|
|
28
|
+
let {
|
|
29
|
+
ref = $bindable(),
|
|
30
|
+
disabled: ownDisabled = false,
|
|
31
|
+
children,
|
|
32
|
+
...theirProps
|
|
33
|
+
}: { as?: TTag } & FieldProps<TTag> = $props()
|
|
34
|
+
|
|
35
|
+
const inputId = `headlessui-control-${nanoid(8)}`
|
|
36
|
+
createIdContext(inputId)
|
|
37
|
+
|
|
38
|
+
useLabels()
|
|
39
|
+
useDescriptions()
|
|
40
|
+
|
|
41
|
+
const disabledContext = provideDisabled(() => ownDisabled)
|
|
42
|
+
const { current: disabled } = $derived(disabledContext)
|
|
43
|
+
|
|
44
|
+
const slot = $derived({ disabled })
|
|
45
|
+
|
|
46
|
+
const ourProps = $derived({
|
|
47
|
+
disabled: disabled || undefined,
|
|
48
|
+
"aria-disabled": disabled || undefined,
|
|
49
|
+
})
|
|
34
50
|
</script>
|
|
35
51
|
|
|
36
|
-
{#snippet
|
|
52
|
+
{#snippet wrapper(args: Parameters<Exclude<typeof children, undefined>>[0])}
|
|
37
53
|
<FormFieldsProvider>
|
|
38
|
-
{#if
|
|
54
|
+
{#if children}{@render children(args)}{/if}
|
|
39
55
|
</FormFieldsProvider>
|
|
40
56
|
{/snippet}
|
|
41
57
|
|
|
42
58
|
<ElementOrComponent
|
|
43
59
|
{ourProps}
|
|
44
|
-
theirProps={{ ...theirProps, children }}
|
|
60
|
+
theirProps={{ ...theirProps, children: wrapper }}
|
|
45
61
|
{slot}
|
|
46
62
|
defaultTag={DEFAULT_FIELD_TAG}
|
|
47
63
|
name="Field"
|
|
@@ -8,11 +8,14 @@ export type FieldProps<TTag extends ElementType = typeof DEFAULT_FIELD_TAG> = Pr
|
|
|
8
8
|
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_FIELD_TAG> {
|
|
9
9
|
props(): {
|
|
10
10
|
as?: TTag | undefined;
|
|
11
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "
|
|
12
|
-
children?: import("svelte").Snippet<[
|
|
11
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "class") | "disabled"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
12
|
+
children?: import("svelte").Snippet<[{
|
|
13
|
+
slot: FieldRenderPropArg;
|
|
14
|
+
props: Record<string, any>;
|
|
15
|
+
}]> | undefined;
|
|
13
16
|
ref?: HTMLElement;
|
|
14
|
-
} & (true extends (import("
|
|
15
|
-
class?:
|
|
17
|
+
} & (true extends (import("svelte/elements.js").SvelteHTMLElements[TTag] extends infer T_1 ? T_1 extends import("svelte/elements.js").SvelteHTMLElements[TTag] ? T_1 extends never ? never : "class" extends infer T_2 ? T_2 extends "class" ? T_2 extends keyof T_1 ? true : never : never : never : never : never) ? {
|
|
18
|
+
class?: string | ((bag: FieldRenderPropArg) => string) | null | undefined;
|
|
16
19
|
} : {}) & {
|
|
17
20
|
disabled?: boolean;
|
|
18
21
|
};
|
|
@@ -1,34 +1,55 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { ElementType, Props } from "../utils/types.js"
|
|
3
|
+
let DEFAULT_FIELDSET_TAG = "fieldset" as const
|
|
4
|
+
|
|
5
|
+
type FieldsetRenderPropArg = {}
|
|
6
|
+
type FieldsetPropsWeControl = "aria-labelledby" | "aria-disabled" | "role"
|
|
7
|
+
|
|
8
|
+
export type FieldsetProps<TTag extends ElementType = typeof DEFAULT_FIELDSET_TAG> = Props<
|
|
9
|
+
TTag,
|
|
10
|
+
FieldsetRenderPropArg,
|
|
11
|
+
FieldsetPropsWeControl,
|
|
12
|
+
{
|
|
13
|
+
disabled?: boolean
|
|
14
|
+
}
|
|
15
|
+
>
|
|
2
16
|
</script>
|
|
3
17
|
|
|
4
|
-
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_FIELDSET_TAG">
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
18
|
+
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_FIELDSET_TAG">
|
|
19
|
+
import { setContext } from "svelte"
|
|
20
|
+
import { useDisabled } from "../hooks/use-disabled.js"
|
|
21
|
+
import { useLabels } from "../label/context.svelte.js"
|
|
22
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
23
|
+
|
|
24
|
+
let {
|
|
25
|
+
ref = $bindable(),
|
|
26
|
+
disabled: ownDisabled = false,
|
|
27
|
+
...theirProps
|
|
28
|
+
}: { as?: TTag } & FieldsetProps<TTag> = $props()
|
|
29
|
+
|
|
30
|
+
const providedDisabled = useDisabled()
|
|
31
|
+
const disabled = $derived(providedDisabled.current || ownDisabled)
|
|
32
|
+
|
|
33
|
+
setContext("DisabledContext", {
|
|
34
|
+
get value() {
|
|
35
|
+
return disabled
|
|
36
|
+
},
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
const labelledBy = useLabels()
|
|
40
|
+
const slot = $derived({ disabled })
|
|
41
|
+
const ourProps = $derived(
|
|
42
|
+
(theirProps.as ?? DEFAULT_FIELDSET_TAG) === "fieldset"
|
|
43
|
+
? {
|
|
44
|
+
"aria-labelledby": labelledBy.value,
|
|
45
|
+
disabled: disabled || undefined,
|
|
46
|
+
}
|
|
47
|
+
: {
|
|
48
|
+
role: "group",
|
|
49
|
+
"aria-labelledby": labelledBy.value,
|
|
50
|
+
"aria-disabled": disabled || undefined,
|
|
51
|
+
}
|
|
52
|
+
)
|
|
32
53
|
</script>
|
|
33
54
|
|
|
34
55
|
<ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_FIELDSET_TAG} name="Fieldset" bind:ref />
|
|
@@ -8,11 +8,14 @@ export type FieldsetProps<TTag extends ElementType = typeof DEFAULT_FIELDSET_TAG
|
|
|
8
8
|
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_FIELDSET_TAG> {
|
|
9
9
|
props(): {
|
|
10
10
|
as?: TTag | undefined;
|
|
11
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "
|
|
12
|
-
children?: import("svelte").Snippet<[
|
|
11
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "class") | "disabled" | FieldsetPropsWeControl> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
12
|
+
children?: import("svelte").Snippet<[{
|
|
13
|
+
slot: FieldsetRenderPropArg;
|
|
14
|
+
props: Record<string, any>;
|
|
15
|
+
}]> | undefined;
|
|
13
16
|
ref?: HTMLElement;
|
|
14
|
-
} & (true extends (import("
|
|
15
|
-
class?:
|
|
17
|
+
} & (true extends (import("svelte/elements.js").SvelteHTMLElements[TTag] extends infer T_1 ? T_1 extends import("svelte/elements.js").SvelteHTMLElements[TTag] ? T_1 extends never ? never : "class" extends infer T_2 ? T_2 extends "class" ? T_2 extends keyof T_1 ? true : never : never : never : never : never) ? {
|
|
18
|
+
class?: string | ((bag: FieldsetRenderPropArg) => string) | null | undefined;
|
|
16
19
|
} : {}) & {
|
|
17
20
|
disabled?: boolean;
|
|
18
21
|
};
|