@pzerelles/headlessui-svelte 2.1.2-next.31 → 2.1.2-next.33
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 -55
- package/dist/button/Button.svelte.d.ts +4 -32
- package/dist/checkbox/Checkbox.svelte +177 -121
- package/dist/checkbox/Checkbox.svelte.d.ts +14 -32
- package/dist/close-button/CloseButton.svelte +10 -7
- package/dist/close-button/CloseButton.svelte.d.ts +2 -44
- package/dist/data-interactive/DataInteractive.svelte +49 -37
- package/dist/data-interactive/DataInteractive.svelte.d.ts +7 -30
- package/dist/description/Description.svelte +35 -22
- package/dist/description/Description.svelte.d.ts +7 -28
- package/dist/dialog/Dialog.svelte +326 -232
- package/dist/dialog/Dialog.svelte.d.ts +4 -42
- package/dist/dialog/DialogBackdrop.svelte +33 -16
- package/dist/dialog/DialogBackdrop.svelte.d.ts +4 -29
- package/dist/dialog/DialogPanel.svelte +60 -29
- package/dist/dialog/DialogPanel.svelte.d.ts +4 -30
- package/dist/dialog/DialogTitle.svelte +51 -24
- package/dist/dialog/DialogTitle.svelte.d.ts +6 -27
- package/dist/field/Field.svelte +44 -28
- package/dist/field/Field.svelte.d.ts +4 -30
- package/dist/fieldset/Fieldset.svelte +48 -30
- package/dist/fieldset/Fieldset.svelte.d.ts +5 -31
- package/dist/focus-trap/FocusTrap.svelte +430 -298
- package/dist/focus-trap/FocusTrap.svelte.d.ts +5 -34
- package/dist/hooks/use-inert-others.svelte.js +10 -10
- package/dist/hooks/use-resolve-button-type.svelte.js +0 -1
- package/dist/input/Input.svelte +95 -54
- package/dist/input/Input.svelte.d.ts +13 -27
- package/dist/internal/FloatingProvider.svelte +14 -9
- package/dist/internal/FocusSentinel.svelte +49 -40
- 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 +25 -16
- package/dist/internal/Hidden.svelte +45 -38
- package/dist/internal/Hidden.svelte.d.ts +4 -30
- package/dist/internal/MainTreeProvider.svelte +90 -37
- package/dist/internal/Portal.svelte +18 -14
- package/dist/label/Label.svelte +100 -59
- package/dist/label/Label.svelte.d.ts +7 -32
- package/dist/legend/Legend.svelte +27 -4
- package/dist/legend/Legend.svelte.d.ts +4 -3
- package/dist/listbox/Listbox.svelte +518 -391
- package/dist/listbox/Listbox.svelte.d.ts +11 -35
- package/dist/listbox/ListboxButton.svelte +175 -128
- package/dist/listbox/ListboxButton.svelte.d.ts +5 -32
- package/dist/listbox/ListboxOption.svelte +171 -130
- package/dist/listbox/ListboxOption.svelte.d.ts +12 -26
- package/dist/listbox/ListboxOptions.svelte +403 -305
- package/dist/listbox/ListboxOptions.svelte.d.ts +4 -38
- package/dist/listbox/ListboxSelectedOption.svelte +40 -19
- package/dist/listbox/ListboxSelectedOption.svelte.d.ts +8 -33
- package/dist/menu/Menu.svelte +76 -52
- package/dist/menu/Menu.svelte.d.ts +3 -31
- package/dist/menu/MenuButton.svelte +158 -118
- package/dist/menu/MenuButton.svelte.d.ts +4 -34
- package/dist/menu/MenuHeading.svelte +34 -15
- package/dist/menu/MenuHeading.svelte.d.ts +4 -31
- package/dist/menu/MenuItem.svelte +143 -108
- package/dist/menu/MenuItem.svelte.d.ts +5 -32
- package/dist/menu/MenuItems.svelte +301 -230
- package/dist/menu/MenuItems.svelte.d.ts +4 -38
- package/dist/menu/MenuSection.svelte +26 -10
- package/dist/menu/MenuSection.svelte.d.ts +5 -29
- package/dist/menu/MenuSeparator.svelte +20 -5
- package/dist/menu/MenuSeparator.svelte.d.ts +5 -28
- package/dist/popover/Popover.svelte +217 -151
- package/dist/popover/Popover.svelte.d.ts +4 -30
- package/dist/popover/PopoverBackdrop.svelte +71 -42
- package/dist/popover/PopoverBackdrop.svelte.d.ts +6 -34
- package/dist/popover/PopoverButton.svelte +302 -222
- package/dist/popover/PopoverButton.svelte.d.ts +6 -29
- package/dist/popover/PopoverGroup.svelte +64 -36
- package/dist/popover/PopoverGroup.svelte.d.ts +5 -28
- package/dist/popover/PopoverPanel.svelte +335 -248
- package/dist/popover/PopoverPanel.svelte.d.ts +5 -36
- package/dist/popover/index.d.ts +1 -1
- package/dist/portal/InternalPortal.svelte +143 -86
- package/dist/portal/InternalPortal.svelte.d.ts +4 -30
- package/dist/portal/Portal.svelte +8 -4
- package/dist/portal/Portal.svelte.d.ts +2 -18
- package/dist/portal/PortalGroup.svelte +23 -10
- package/dist/portal/PortalGroup.svelte.d.ts +3 -31
- package/dist/select/Select.svelte +100 -69
- package/dist/select/Select.svelte.d.ts +5 -32
- package/dist/switch/Switch.svelte +181 -133
- package/dist/switch/Switch.svelte.d.ts +5 -38
- package/dist/switch/SwitchGroup.svelte +45 -32
- package/dist/switch/SwitchGroup.svelte.d.ts +7 -28
- package/dist/tabs/Tab.svelte +195 -143
- package/dist/tabs/Tab.svelte.d.ts +4 -32
- package/dist/tabs/TabGroup.svelte +87 -57
- package/dist/tabs/TabGroup.svelte.d.ts +4 -34
- package/dist/tabs/TabList.svelte +31 -12
- package/dist/tabs/TabList.svelte.d.ts +5 -28
- package/dist/tabs/TabPanel.svelte +69 -44
- package/dist/tabs/TabPanel.svelte.d.ts +4 -34
- package/dist/tabs/TabPanels.svelte +19 -8
- package/dist/tabs/TabPanels.svelte.d.ts +5 -27
- package/dist/textarea/Textarea.svelte +87 -54
- package/dist/textarea/Textarea.svelte.d.ts +13 -27
- package/dist/transition/InternalTransitionChild.svelte +267 -171
- package/dist/transition/InternalTransitionChild.svelte.d.ts +3 -33
- package/dist/transition/Transition.svelte +88 -67
- package/dist/transition/Transition.svelte.d.ts +3 -36
- package/dist/transition/TransitionChild.svelte +31 -12
- package/dist/transition/TransitionChild.svelte.d.ts +8 -35
- package/dist/transition/context.svelte.js +7 -7
- package/dist/utils/DisabledProvider.svelte +7 -3
- package/dist/utils/ElementOrComponent.svelte +88 -24
- package/dist/utils/ElementOrComponent.svelte.d.ts +32 -27
- 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/state.js +4 -4
- package/dist/utils/types.d.ts +14 -12
- package/package.json +12 -12
- package/dist/combobox/Combobox.svelte +0 -6
- package/dist/combobox/Combobox.svelte.d.ts +0 -50
- package/dist/utils/Generic.svelte +0 -46
- package/dist/utils/Generic.svelte.d.ts +0 -32
- package/dist/utils/alternative-types.d.ts +0 -20
- package/dist/utils/alternative-types.js +0 -1
|
@@ -1,29 +1,46 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
|
+
import type { SvelteHTMLElements } from "svelte/elements"
|
|
4
|
+
|
|
5
|
+
let DEFAULT_BACKDROP_TAG = "div" as const
|
|
6
|
+
type BackdropRenderPropArg = {
|
|
7
|
+
open: boolean
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type DialogBackdropProps = Props<
|
|
11
|
+
typeof DEFAULT_BACKDROP_TAG,
|
|
12
|
+
BackdropRenderPropArg,
|
|
13
|
+
{ transition?: boolean; element?: HTMLElement }
|
|
14
|
+
>
|
|
2
15
|
</script>
|
|
3
16
|
|
|
4
|
-
<script lang="ts"
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
})
|
|
17
|
+
<script lang="ts">
|
|
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 { element = $bindable(), transition = false, ...theirProps }: DialogBackdropProps = $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
|
-
<TransitionChild {unmount} {
|
|
19
|
-
{#snippet children({
|
|
35
|
+
<TransitionChild asChild {unmount} {element}>
|
|
36
|
+
{#snippet children({ props, ...slot })}
|
|
20
37
|
<ElementOrComponent
|
|
21
38
|
ourProps={{ ...ourProps, ...props }}
|
|
22
39
|
{theirProps}
|
|
23
40
|
slots={slot}
|
|
24
41
|
defaultTag={DEFAULT_BACKDROP_TAG}
|
|
25
42
|
name="DialogBackdrop"
|
|
26
|
-
bind:
|
|
43
|
+
bind:element
|
|
27
44
|
/>
|
|
28
45
|
{/snippet}
|
|
29
46
|
</TransitionChild>
|
|
@@ -34,6 +51,6 @@ const ourProps = mergeProps({
|
|
|
34
51
|
slots={slot}
|
|
35
52
|
defaultTag={DEFAULT_BACKDROP_TAG}
|
|
36
53
|
name="DialogBackdrop"
|
|
37
|
-
bind:
|
|
54
|
+
bind:element
|
|
38
55
|
/>
|
|
39
56
|
{/if}
|
|
@@ -1,36 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare let DEFAULT_BACKDROP_TAG: "div";
|
|
3
3
|
type BackdropRenderPropArg = {
|
|
4
4
|
open: boolean;
|
|
5
5
|
};
|
|
6
|
-
export type DialogBackdropProps
|
|
6
|
+
export type DialogBackdropProps = Props<typeof DEFAULT_BACKDROP_TAG, BackdropRenderPropArg, {
|
|
7
7
|
transition?: boolean;
|
|
8
|
+
element?: HTMLElement;
|
|
8
9
|
}>;
|
|
9
|
-
declare
|
|
10
|
-
props(): {
|
|
11
|
-
as?: TTag | undefined;
|
|
12
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "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;
|
|
17
|
-
class?: string | ((bag: BackdropRenderPropArg) => string) | null | undefined;
|
|
18
|
-
ref?: HTMLElement;
|
|
19
|
-
} & {
|
|
20
|
-
transition?: boolean;
|
|
21
|
-
};
|
|
22
|
-
events(): {};
|
|
23
|
-
slots(): {};
|
|
24
|
-
bindings(): "ref";
|
|
25
|
-
exports(): {};
|
|
26
|
-
}
|
|
27
|
-
interface $$IsomorphicComponent {
|
|
28
|
-
new <TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
|
|
29
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
30
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
31
|
-
<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
32
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
33
|
-
}
|
|
34
|
-
declare const DialogBackdrop: $$IsomorphicComponent;
|
|
35
|
-
type DialogBackdrop<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG> = InstanceType<typeof DialogBackdrop<TTag>>;
|
|
10
|
+
declare const DialogBackdrop: import("svelte").Component<DialogBackdropProps, {}, "element">;
|
|
36
11
|
export default DialogBackdrop;
|
|
@@ -1,45 +1,76 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
|
+
import type { SvelteHTMLElements } from "svelte/elements"
|
|
4
|
+
|
|
5
|
+
let DEFAULT_PANEL_TAG = "div" as const
|
|
6
|
+
type PanelRenderPropArg = {
|
|
7
|
+
open: boolean
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type DialogPanelProps = Props<
|
|
11
|
+
typeof DEFAULT_PANEL_TAG,
|
|
12
|
+
PanelRenderPropArg,
|
|
13
|
+
{
|
|
14
|
+
element?: HTMLElement
|
|
15
|
+
id?: string
|
|
16
|
+
transition?: boolean
|
|
17
|
+
}
|
|
18
|
+
>
|
|
2
19
|
</script>
|
|
3
20
|
|
|
4
|
-
<script lang="ts"
|
|
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
|
-
|
|
21
|
+
<script lang="ts">
|
|
22
|
+
import { useId } from "../hooks/use-id.js"
|
|
23
|
+
import { DialogStates, useDialogContext } from "./context.svelte.js"
|
|
24
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
25
|
+
import { mergeProps } from "../utils/render.js"
|
|
26
|
+
import TransitionChild from "../transition/TransitionChild.svelte"
|
|
27
|
+
|
|
28
|
+
let internalId = useId()
|
|
29
|
+
let {
|
|
30
|
+
element = $bindable(),
|
|
31
|
+
id = `headlessui-dialog-panel-${internalId}`,
|
|
32
|
+
transition = false,
|
|
33
|
+
...theirProps
|
|
34
|
+
}: DialogPanelProps = $props()
|
|
35
|
+
const _state = useDialogContext("Dialog.Panel")
|
|
36
|
+
const { dialogState, unmount } = $derived(_state)
|
|
37
|
+
|
|
38
|
+
const slot = $derived({ open: dialogState === DialogStates.Open } satisfies PanelRenderPropArg)
|
|
39
|
+
|
|
40
|
+
// Prevent the click events inside the Dialog.Panel from bubbling through the React Tree which
|
|
41
|
+
// could submit wrapping <form> elements even if we portalled the Dialog.
|
|
42
|
+
const handleClick = (event: MouseEvent) => {
|
|
43
|
+
event.stopPropagation()
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const ourProps = $derived(
|
|
47
|
+
mergeProps({
|
|
48
|
+
id,
|
|
49
|
+
onclick: handleClick,
|
|
50
|
+
})
|
|
51
|
+
)
|
|
28
52
|
</script>
|
|
29
53
|
|
|
30
54
|
{#if transition}
|
|
31
|
-
<TransitionChild {unmount} {
|
|
32
|
-
{#snippet children({
|
|
55
|
+
<TransitionChild asChild {unmount} {element}>
|
|
56
|
+
{#snippet children({ props, ...slot })}
|
|
33
57
|
<ElementOrComponent
|
|
34
58
|
ourProps={{ ...ourProps, ...props }}
|
|
35
59
|
{theirProps}
|
|
36
60
|
slots={slot}
|
|
37
61
|
defaultTag={DEFAULT_PANEL_TAG}
|
|
38
62
|
name="DialogPanel"
|
|
39
|
-
bind:
|
|
63
|
+
bind:element
|
|
40
64
|
/>
|
|
41
65
|
{/snippet}
|
|
42
66
|
</TransitionChild>
|
|
43
67
|
{:else}
|
|
44
|
-
<ElementOrComponent
|
|
68
|
+
<ElementOrComponent
|
|
69
|
+
{ourProps}
|
|
70
|
+
{theirProps}
|
|
71
|
+
slots={slot}
|
|
72
|
+
defaultTag={DEFAULT_PANEL_TAG}
|
|
73
|
+
name="DialogPanel"
|
|
74
|
+
bind:element
|
|
75
|
+
/>
|
|
45
76
|
{/if}
|
|
@@ -1,38 +1,12 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare let DEFAULT_PANEL_TAG: "div";
|
|
3
3
|
type PanelRenderPropArg = {
|
|
4
4
|
open: boolean;
|
|
5
5
|
};
|
|
6
|
-
export type DialogPanelProps
|
|
6
|
+
export type DialogPanelProps = Props<typeof DEFAULT_PANEL_TAG, PanelRenderPropArg, {
|
|
7
|
+
element?: HTMLElement;
|
|
7
8
|
id?: string;
|
|
8
9
|
transition?: boolean;
|
|
9
10
|
}>;
|
|
10
|
-
declare
|
|
11
|
-
props(): {
|
|
12
|
-
as?: TTag | undefined;
|
|
13
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "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;
|
|
18
|
-
class?: string | ((bag: PanelRenderPropArg) => string) | null | undefined;
|
|
19
|
-
ref?: HTMLElement;
|
|
20
|
-
} & {
|
|
21
|
-
id?: string;
|
|
22
|
-
transition?: boolean;
|
|
23
|
-
};
|
|
24
|
-
events(): {};
|
|
25
|
-
slots(): {};
|
|
26
|
-
bindings(): "ref";
|
|
27
|
-
exports(): {};
|
|
28
|
-
}
|
|
29
|
-
interface $$IsomorphicComponent {
|
|
30
|
-
new <TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
|
|
31
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
32
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
33
|
-
<TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
34
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
35
|
-
}
|
|
36
|
-
declare const DialogPanel: $$IsomorphicComponent;
|
|
37
|
-
type DialogPanel<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> = InstanceType<typeof DialogPanel<TTag>>;
|
|
11
|
+
declare const DialogPanel: import("svelte").Component<DialogPanelProps, {}, "element">;
|
|
38
12
|
export default DialogPanel;
|
|
@@ -1,29 +1,56 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
|
+
import type { SvelteHTMLElements } from "svelte/elements"
|
|
4
|
+
|
|
5
|
+
let DEFAULT_TITLE_TAG = "h2" as const
|
|
6
|
+
type TitleRenderPropArg = {
|
|
7
|
+
open: boolean
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export type DialogTitleProps = Props<
|
|
11
|
+
typeof DEFAULT_TITLE_TAG,
|
|
12
|
+
TitleRenderPropArg,
|
|
13
|
+
{ id?: string; element?: HTMLElement }
|
|
14
|
+
>
|
|
15
|
+
|
|
16
|
+
//
|
|
2
17
|
</script>
|
|
3
18
|
|
|
4
|
-
<script lang="ts"
|
|
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
|
|
19
|
+
<script lang="ts">
|
|
20
|
+
import { useId } from "../hooks/use-id.js"
|
|
21
|
+
import { DialogStates, useDialogContext } from "./context.svelte.js"
|
|
22
|
+
import { onMount } from "svelte"
|
|
23
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
24
|
+
import { mergeProps } from "../utils/render.js"
|
|
25
|
+
|
|
26
|
+
const internalId = useId()
|
|
27
|
+
let {
|
|
28
|
+
element = $bindable(),
|
|
29
|
+
id = `headlessui-dialog-title-${internalId}`,
|
|
30
|
+
...theirProps
|
|
31
|
+
}: DialogTitleProps = $props()
|
|
32
|
+
const _state = useDialogContext("Dialog.Panel")
|
|
33
|
+
const { dialogState, setTitleId } = $derived(_state)
|
|
34
|
+
|
|
35
|
+
onMount(() => {
|
|
36
|
+
setTitleId(id)
|
|
37
|
+
return () => setTitleId(null)
|
|
25
38
|
})
|
|
26
|
-
|
|
39
|
+
|
|
40
|
+
const slot = $derived({ open: dialogState === DialogStates.Open } satisfies TitleRenderPropArg)
|
|
41
|
+
|
|
42
|
+
const ourProps = $derived(
|
|
43
|
+
mergeProps({
|
|
44
|
+
id,
|
|
45
|
+
})
|
|
46
|
+
)
|
|
27
47
|
</script>
|
|
28
48
|
|
|
29
|
-
<ElementOrComponent
|
|
49
|
+
<ElementOrComponent
|
|
50
|
+
{ourProps}
|
|
51
|
+
{theirProps}
|
|
52
|
+
slots={slot}
|
|
53
|
+
defaultTag={DEFAULT_TITLE_TAG}
|
|
54
|
+
name="DialogTitle"
|
|
55
|
+
bind:element
|
|
56
|
+
/>
|
|
@@ -1,32 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare let DEFAULT_TITLE_TAG: "h2";
|
|
3
3
|
type TitleRenderPropArg = {
|
|
4
4
|
open: boolean;
|
|
5
5
|
};
|
|
6
|
-
export type DialogTitleProps
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
children?: import("svelte").Snippet<[{
|
|
12
|
-
slot: TitleRenderPropArg;
|
|
13
|
-
props: Record<string, any>;
|
|
14
|
-
}]> | undefined;
|
|
15
|
-
class?: string | ((bag: TitleRenderPropArg) => string) | null | undefined;
|
|
16
|
-
ref?: HTMLElement;
|
|
17
|
-
};
|
|
18
|
-
events(): {};
|
|
19
|
-
slots(): {};
|
|
20
|
-
bindings(): "ref";
|
|
21
|
-
exports(): {};
|
|
22
|
-
}
|
|
23
|
-
interface $$IsomorphicComponent {
|
|
24
|
-
new <TTag extends ElementType = typeof DEFAULT_TITLE_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
|
|
25
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
26
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
27
|
-
<TTag extends ElementType = typeof DEFAULT_TITLE_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
28
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
29
|
-
}
|
|
30
|
-
declare const DialogTitle: $$IsomorphicComponent;
|
|
31
|
-
type DialogTitle<TTag extends ElementType = typeof DEFAULT_TITLE_TAG> = InstanceType<typeof DialogTitle<TTag>>;
|
|
6
|
+
export type DialogTitleProps = Props<typeof DEFAULT_TITLE_TAG, TitleRenderPropArg, {
|
|
7
|
+
id?: string;
|
|
8
|
+
element?: HTMLElement;
|
|
9
|
+
}>;
|
|
10
|
+
declare const DialogTitle: import("svelte").Component<DialogTitleProps, {}, "element">;
|
|
32
11
|
export default DialogTitle;
|
package/dist/field/Field.svelte
CHANGED
|
@@ -1,35 +1,51 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
|
+
|
|
4
|
+
let DEFAULT_FIELD_TAG = "div" as const
|
|
5
|
+
|
|
6
|
+
type FieldRenderPropArg = {}
|
|
7
|
+
|
|
8
|
+
export type FieldProps = Props<
|
|
9
|
+
typeof DEFAULT_FIELD_TAG,
|
|
10
|
+
FieldRenderPropArg,
|
|
11
|
+
{
|
|
12
|
+
element?: HTMLElement
|
|
13
|
+
disabled?: boolean
|
|
14
|
+
}
|
|
15
|
+
>
|
|
2
16
|
</script>
|
|
3
17
|
|
|
4
|
-
<script lang="ts"
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
disabled: ownDisabled = false,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const disabledContext = provideDisabled(() => ownDisabled)
|
|
22
|
-
const { current: disabled } = $derived(disabledContext)
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
<script lang="ts">
|
|
19
|
+
import { provideDisabled } from "../hooks/use-disabled.js"
|
|
20
|
+
import { createIdContext } from "../utils/id.js"
|
|
21
|
+
import { nanoid } from "nanoid"
|
|
22
|
+
import { useLabels } from "../label/context.svelte.js"
|
|
23
|
+
import { useDescriptions } from "../description/context.svelte.js"
|
|
24
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
25
|
+
import FormFieldsProvider from "../internal/FormFieldsProvider.svelte"
|
|
26
|
+
|
|
27
|
+
let { element = $bindable(), disabled: ownDisabled = false, children, ...theirProps }: FieldProps = $props()
|
|
28
|
+
|
|
29
|
+
const inputId = `headlessui-control-${nanoid(8)}`
|
|
30
|
+
createIdContext(inputId)
|
|
31
|
+
|
|
32
|
+
useLabels()
|
|
33
|
+
useDescriptions()
|
|
34
|
+
|
|
35
|
+
const disabledContext = provideDisabled(() => ownDisabled)
|
|
36
|
+
const { current: disabled } = $derived(disabledContext)
|
|
37
|
+
|
|
38
|
+
const slot = $derived({ disabled })
|
|
39
|
+
|
|
40
|
+
const ourProps = $derived({
|
|
41
|
+
disabled: disabled || undefined,
|
|
42
|
+
"aria-disabled": disabled || undefined,
|
|
43
|
+
})
|
|
28
44
|
</script>
|
|
29
45
|
|
|
30
|
-
{#snippet wrapper(args:
|
|
46
|
+
{#snippet wrapper(args: { props: Record<string, any> })}
|
|
31
47
|
<FormFieldsProvider>
|
|
32
|
-
{
|
|
48
|
+
{@render children?.(args)}
|
|
33
49
|
</FormFieldsProvider>
|
|
34
50
|
{/snippet}
|
|
35
51
|
|
|
@@ -39,5 +55,5 @@ const ourProps = $derived({
|
|
|
39
55
|
{slot}
|
|
40
56
|
defaultTag={DEFAULT_FIELD_TAG}
|
|
41
57
|
name="Field"
|
|
42
|
-
bind:
|
|
58
|
+
bind:element
|
|
43
59
|
/>
|
|
@@ -1,35 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare let DEFAULT_FIELD_TAG: "div";
|
|
3
3
|
type FieldRenderPropArg = {};
|
|
4
|
-
type
|
|
5
|
-
|
|
4
|
+
export type FieldProps = Props<typeof DEFAULT_FIELD_TAG, FieldRenderPropArg, {
|
|
5
|
+
element?: HTMLElement;
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
}>;
|
|
8
|
-
declare
|
|
9
|
-
props(): {
|
|
10
|
-
as?: TTag | undefined;
|
|
11
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "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;
|
|
16
|
-
class?: string | ((bag: FieldRenderPropArg) => string) | null | undefined;
|
|
17
|
-
ref?: HTMLElement;
|
|
18
|
-
} & {
|
|
19
|
-
disabled?: boolean;
|
|
20
|
-
};
|
|
21
|
-
events(): {};
|
|
22
|
-
slots(): {};
|
|
23
|
-
bindings(): "ref";
|
|
24
|
-
exports(): {};
|
|
25
|
-
}
|
|
26
|
-
interface $$IsomorphicComponent {
|
|
27
|
-
new <TTag extends ElementType = typeof DEFAULT_FIELD_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
|
|
28
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
29
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
30
|
-
<TTag extends ElementType = typeof DEFAULT_FIELD_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
31
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
32
|
-
}
|
|
33
|
-
declare const Field: $$IsomorphicComponent;
|
|
34
|
-
type Field<TTag extends ElementType = typeof DEFAULT_FIELD_TAG> = InstanceType<typeof Field<TTag>>;
|
|
8
|
+
declare const Field: import("svelte").Component<FieldProps, {}, "element">;
|
|
35
9
|
export default Field;
|
|
@@ -1,34 +1,52 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
|
+
|
|
4
|
+
const DEFAULT_FIELDSET_TAG = "fieldset" as const
|
|
5
|
+
|
|
6
|
+
type FieldsetRenderPropArg = {}
|
|
7
|
+
type FieldsetPropsWeControl = "aria-labelledby" | "aria-disabled" | "role"
|
|
8
|
+
|
|
9
|
+
export type FieldsetProps = Props<
|
|
10
|
+
typeof DEFAULT_FIELDSET_TAG,
|
|
11
|
+
FieldsetRenderPropArg,
|
|
12
|
+
{
|
|
13
|
+
element?: HTMLElement
|
|
14
|
+
disabled?: boolean
|
|
15
|
+
}
|
|
16
|
+
>
|
|
2
17
|
</script>
|
|
3
18
|
|
|
4
|
-
<script lang="ts"
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
disabled: ownDisabled = false,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
setContext("DisabledContext", {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
19
|
+
<script lang="ts">
|
|
20
|
+
import { setContext } from "svelte"
|
|
21
|
+
import { useDisabled } from "../hooks/use-disabled.js"
|
|
22
|
+
import { useLabels } from "../label/context.svelte.js"
|
|
23
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
24
|
+
|
|
25
|
+
let { element = $bindable(), disabled: ownDisabled = false, ...theirProps }: FieldsetProps = $props()
|
|
26
|
+
|
|
27
|
+
const providedDisabled = useDisabled()
|
|
28
|
+
const disabled = $derived(providedDisabled.current || ownDisabled)
|
|
29
|
+
|
|
30
|
+
setContext("DisabledContext", {
|
|
31
|
+
get value() {
|
|
32
|
+
return disabled
|
|
33
|
+
},
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
const labelledBy = useLabels()
|
|
37
|
+
const slot = $derived({ disabled })
|
|
38
|
+
const ourProps = $derived(
|
|
39
|
+
!theirProps.asChild
|
|
40
|
+
? {
|
|
41
|
+
"aria-labelledby": labelledBy.value,
|
|
42
|
+
disabled: disabled || undefined,
|
|
43
|
+
}
|
|
44
|
+
: {
|
|
45
|
+
role: "group",
|
|
46
|
+
"aria-labelledby": labelledBy.value,
|
|
47
|
+
"aria-disabled": disabled || undefined,
|
|
48
|
+
}
|
|
49
|
+
)
|
|
32
50
|
</script>
|
|
33
51
|
|
|
34
|
-
<ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_FIELDSET_TAG} name="Fieldset" bind:
|
|
52
|
+
<ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_FIELDSET_TAG} name="Fieldset" bind:element />
|
|
@@ -1,35 +1,9 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
|
+
declare const DEFAULT_FIELDSET_TAG: "fieldset";
|
|
3
3
|
type FieldsetRenderPropArg = {};
|
|
4
|
-
type
|
|
5
|
-
|
|
4
|
+
export type FieldsetProps = Props<typeof DEFAULT_FIELDSET_TAG, FieldsetRenderPropArg, {
|
|
5
|
+
element?: HTMLElement;
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
}>;
|
|
8
|
-
declare
|
|
9
|
-
props(): {
|
|
10
|
-
as?: TTag | undefined;
|
|
11
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "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;
|
|
16
|
-
class?: string | ((bag: FieldsetRenderPropArg) => string) | null | undefined;
|
|
17
|
-
ref?: HTMLElement;
|
|
18
|
-
} & {
|
|
19
|
-
disabled?: boolean;
|
|
20
|
-
};
|
|
21
|
-
events(): {};
|
|
22
|
-
slots(): {};
|
|
23
|
-
bindings(): "ref";
|
|
24
|
-
exports(): {};
|
|
25
|
-
}
|
|
26
|
-
interface $$IsomorphicComponent {
|
|
27
|
-
new <TTag extends ElementType = typeof DEFAULT_FIELDSET_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
|
|
28
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
29
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
30
|
-
<TTag extends ElementType = typeof DEFAULT_FIELDSET_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
31
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
32
|
-
}
|
|
33
|
-
declare const Fieldset: $$IsomorphicComponent;
|
|
34
|
-
type Fieldset<TTag extends ElementType = typeof DEFAULT_FIELDSET_TAG> = InstanceType<typeof Fieldset<TTag>>;
|
|
8
|
+
declare const Fieldset: import("svelte").Component<FieldsetProps, {}, "element">;
|
|
35
9
|
export default Fieldset;
|