@pzerelles/headlessui-svelte 2.1.2-next.4 → 2.1.2-next.41
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 +15 -18
- package/dist/button/Button.svelte.d.ts +8 -36
- package/dist/button/index.d.ts +1 -1
- package/dist/button/index.js +1 -1
- package/dist/checkbox/Checkbox.svelte +30 -26
- package/dist/checkbox/Checkbox.svelte.d.ts +17 -38
- package/dist/checkbox/index.d.ts +1 -1
- package/dist/checkbox/index.js +1 -1
- package/dist/close-button/CloseButton.svelte +4 -7
- package/dist/close-button/CloseButton.svelte.d.ts +3 -46
- package/dist/close-button/index.d.ts +1 -0
- package/dist/close-button/index.js +1 -0
- package/dist/data-interactive/DataInteractive.svelte +6 -22
- package/dist/data-interactive/DataInteractive.svelte.d.ts +9 -34
- package/dist/data-interactive/index.d.ts +1 -1
- package/dist/data-interactive/index.js +1 -1
- package/dist/description/Description.svelte +28 -23
- package/dist/description/Description.svelte.d.ts +9 -30
- package/dist/description/context.svelte.js +14 -16
- package/dist/description/index.d.ts +1 -1
- package/dist/dialog/Dialog.svelte +315 -31
- package/dist/dialog/Dialog.svelte.d.ts +7 -45
- package/dist/dialog/DialogBackdrop.svelte +11 -14
- package/dist/dialog/DialogBackdrop.svelte.d.ts +8 -33
- package/dist/dialog/DialogPanel.svelte +23 -19
- package/dist/dialog/DialogPanel.svelte.d.ts +8 -34
- package/dist/dialog/DialogTitle.svelte +17 -8
- package/dist/dialog/DialogTitle.svelte.d.ts +9 -30
- package/dist/dialog/context.svelte.js +2 -2
- package/dist/dialog/index.d.ts +4 -4
- package/dist/dialog/index.js +4 -4
- package/dist/field/Field.svelte +27 -26
- package/dist/field/Field.svelte.d.ts +7 -34
- package/dist/field/index.d.ts +1 -1
- package/dist/fieldset/Fieldset.svelte +14 -20
- package/dist/fieldset/Fieldset.svelte.d.ts +8 -35
- package/dist/fieldset/index.d.ts +1 -1
- package/dist/focus-trap/FocusTrap.svelte +30 -54
- package/dist/focus-trap/FocusTrap.svelte.d.ts +10 -52
- package/dist/focus-trap/FocusTrapFeatures.d.ts +14 -0
- package/dist/focus-trap/FocusTrapFeatures.js +15 -0
- package/dist/hooks/use-controllable.svelte.js +2 -1
- package/dist/hooks/use-did-element-move.svelte.js +5 -10
- package/dist/hooks/use-disabled.d.ts +6 -1
- package/dist/hooks/use-disabled.js +10 -5
- package/dist/hooks/use-event-listener.svelte.d.ts +1 -1
- package/dist/hooks/use-event-listener.svelte.js +3 -1
- package/dist/hooks/use-inert-others.svelte.js +10 -10
- package/dist/hooks/use-resolve-button-type.svelte.js +0 -1
- package/dist/hooks/use-root-containers.svelte.d.ts +2 -2
- package/dist/hooks/use-root-containers.svelte.js +5 -5
- package/dist/hooks/use-tab-direction.svelte.js +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +5 -2
- package/dist/input/Input.svelte +28 -21
- package/dist/input/Input.svelte.d.ts +16 -33
- package/dist/input/index.d.ts +1 -1
- package/dist/input/index.js +1 -1
- package/dist/internal/FloatingProvider.svelte +17 -0
- package/dist/internal/FloatingProvider.svelte.d.ts +8 -0
- package/dist/internal/FocusSentinel.svelte +33 -32
- package/dist/internal/FocusSentinel.svelte.d.ts +4 -18
- package/dist/internal/ForcePortalRoot.svelte.d.ts +4 -18
- package/dist/internal/FormFields.svelte +18 -13
- package/dist/internal/FormFields.svelte.d.ts +4 -18
- package/dist/internal/FormFieldsProvider.svelte +17 -0
- package/dist/internal/FormFieldsProvider.svelte.d.ts +7 -0
- package/dist/internal/FormResolver.svelte +6 -2
- package/dist/internal/FormResolver.svelte.d.ts +4 -18
- package/dist/internal/Hidden.svelte +10 -10
- package/dist/internal/Hidden.svelte.d.ts +6 -33
- package/dist/internal/MainTreeProvider.svelte +1 -1
- package/dist/internal/MainTreeProvider.svelte.d.ts +4 -18
- package/dist/internal/Portal.svelte.d.ts +4 -18
- package/dist/internal/floating-provider.svelte.d.ts +3 -0
- package/dist/internal/floating-provider.svelte.js +206 -0
- package/dist/internal/floating.svelte.d.ts +46 -22
- package/dist/internal/floating.svelte.js +90 -272
- package/dist/internal/form-fields.svelte.d.ts +10 -0
- package/dist/internal/form-fields.svelte.js +23 -0
- package/dist/label/Label.svelte +17 -13
- package/dist/label/Label.svelte.d.ts +8 -33
- package/dist/label/context.svelte.js +1 -1
- package/dist/label/index.d.ts +1 -1
- package/dist/legend/Legend.svelte +21 -15
- package/dist/legend/Legend.svelte.d.ts +9 -34
- package/dist/listbox/Listbox.svelte +79 -163
- package/dist/listbox/Listbox.svelte.d.ts +16 -101
- package/dist/listbox/ListboxButton.svelte +24 -29
- package/dist/listbox/ListboxButton.svelte.d.ts +8 -38
- package/dist/listbox/ListboxOption.svelte +33 -27
- package/dist/listbox/ListboxOption.svelte.d.ts +16 -32
- package/dist/listbox/ListboxOptions.svelte +126 -73
- package/dist/listbox/ListboxOptions.svelte.d.ts +8 -43
- package/dist/listbox/ListboxSelectedOption.svelte +24 -26
- package/dist/listbox/ListboxSelectedOption.svelte.d.ts +14 -39
- package/dist/listbox/context.svelte.d.ts +76 -0
- package/dist/listbox/context.svelte.js +36 -0
- package/dist/listbox/index.d.ts +5 -5
- package/dist/listbox/index.js +4 -4
- package/dist/menu/Menu.svelte +22 -266
- package/dist/menu/Menu.svelte.d.ts +7 -37
- package/dist/menu/MenuButton.svelte +22 -24
- package/dist/menu/MenuButton.svelte.d.ts +8 -39
- package/dist/menu/MenuHeading.svelte +12 -16
- package/dist/menu/MenuHeading.svelte.d.ts +7 -36
- package/dist/menu/MenuItem.svelte +18 -23
- package/dist/menu/MenuItem.svelte.d.ts +9 -39
- package/dist/menu/MenuItems.svelte +33 -34
- package/dist/menu/MenuItems.svelte.d.ts +8 -43
- package/dist/menu/MenuSection.svelte +9 -12
- package/dist/menu/MenuSection.svelte.d.ts +7 -33
- package/dist/menu/MenuSeparator.svelte +9 -12
- package/dist/menu/MenuSeparator.svelte.d.ts +7 -33
- package/dist/menu/context.svelte.d.ts +2 -1
- package/dist/menu/context.svelte.js +212 -2
- package/dist/menu/index.d.ts +7 -7
- package/dist/menu/index.js +3 -3
- package/dist/popover/Popover.svelte +225 -0
- package/dist/popover/Popover.svelte.d.ts +15 -0
- package/dist/popover/PopoverBackdrop.svelte +83 -0
- package/dist/popover/PopoverBackdrop.svelte.d.ts +17 -0
- package/dist/popover/PopoverButton.svelte +324 -0
- package/dist/popover/PopoverButton.svelte.d.ts +21 -0
- package/dist/popover/PopoverGroup.svelte +66 -0
- package/dist/popover/PopoverGroup.svelte.d.ts +9 -0
- package/dist/popover/PopoverPanel.svelte +359 -0
- package/dist/popover/PopoverPanel.svelte.d.ts +22 -0
- package/dist/popover/context.svelte.d.ts +51 -0
- package/dist/popover/context.svelte.js +108 -0
- package/dist/popover/index.d.ts +5 -0
- package/dist/popover/index.js +5 -0
- package/dist/portal/InternalPortal.svelte +17 -17
- package/dist/portal/InternalPortal.svelte.d.ts +6 -33
- package/dist/portal/Portal.svelte +7 -6
- package/dist/portal/Portal.svelte.d.ts +3 -22
- package/dist/portal/PortalGroup.svelte +6 -14
- package/dist/portal/PortalGroup.svelte.d.ts +5 -34
- package/dist/radio-group/Radio.svelte +135 -0
- package/dist/radio-group/Radio.svelte.d.ts +35 -0
- package/dist/radio-group/RadioGroup.svelte +223 -0
- package/dist/radio-group/RadioGroup.svelte.d.ts +34 -0
- package/dist/radio-group/RadioOption.svelte +138 -0
- package/dist/radio-group/RadioOption.svelte.d.ts +37 -0
- package/dist/radio-group/contest.svelte.d.ts +30 -0
- package/dist/radio-group/contest.svelte.js +40 -0
- package/dist/radio-group/index.d.ts +3 -0
- package/dist/radio-group/index.js +3 -0
- package/dist/select/Select.svelte +112 -0
- package/dist/select/Select.svelte.d.ts +21 -0
- package/dist/select/index.d.ts +1 -0
- package/dist/select/index.js +1 -0
- package/dist/switch/Switch.svelte +27 -28
- package/dist/switch/Switch.svelte.d.ts +9 -42
- package/dist/switch/SwitchGroup.svelte +5 -5
- package/dist/switch/SwitchGroup.svelte.d.ts +8 -30
- package/dist/switch/index.d.ts +1 -1
- package/dist/switch/index.js +1 -1
- package/dist/tabs/Tab.svelte +26 -29
- package/dist/tabs/Tab.svelte.d.ts +8 -36
- package/dist/tabs/TabGroup.svelte +42 -264
- package/dist/tabs/TabGroup.svelte.d.ts +7 -57
- package/dist/tabs/TabList.svelte +13 -16
- package/dist/tabs/TabList.svelte.d.ts +8 -31
- package/dist/tabs/TabPanel.svelte +19 -19
- package/dist/tabs/TabPanel.svelte.d.ts +8 -38
- package/dist/tabs/TabPanels.svelte +11 -9
- package/dist/tabs/TabPanels.svelte.d.ts +8 -30
- package/dist/tabs/context.svelte.d.ts +31 -0
- package/dist/tabs/context.svelte.js +134 -0
- package/dist/tabs/index.d.ts +5 -5
- package/dist/tabs/index.js +4 -4
- package/dist/textarea/Textarea.svelte +23 -19
- package/dist/textarea/Textarea.svelte.d.ts +18 -30
- package/dist/textarea/index.d.ts +1 -1
- package/dist/textarea/index.js +1 -1
- package/dist/transition/InternalTransitionChild.svelte +19 -12
- package/dist/transition/InternalTransitionChild.svelte.d.ts +4 -35
- package/dist/transition/Transition.svelte +16 -17
- package/dist/transition/Transition.svelte.d.ts +8 -38
- package/dist/transition/TransitionChild.svelte +13 -12
- package/dist/transition/TransitionChild.svelte.d.ts +11 -38
- package/dist/transition/context.svelte.js +9 -9
- package/dist/transition/index.d.ts +2 -2
- package/dist/transition/index.js +2 -2
- package/dist/utils/DisabledProvider.svelte +10 -0
- package/dist/utils/DisabledProvider.svelte.d.ts +8 -0
- package/dist/utils/ElementOrComponent.svelte +57 -14
- package/dist/utils/ElementOrComponent.svelte.d.ts +19 -29
- package/dist/utils/StableCollection.svelte.d.ts +4 -18
- package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +32 -0
- package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte.d.ts +8 -0
- package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +94 -0
- package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte.d.ts +26 -0
- package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.d.ts +6 -0
- package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.js +158 -0
- package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.d.ts +11 -0
- package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.js +53 -0
- package/dist/utils/floating-ui/svelte/hooks/useId.svelte.d.ts +9 -0
- package/dist/utils/floating-ui/svelte/hooks/useId.svelte.js +28 -0
- package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.d.ts +23 -0
- package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.js +72 -0
- package/dist/utils/floating-ui/svelte/index.d.ts +5 -0
- package/dist/utils/floating-ui/svelte/index.js +5 -0
- package/dist/utils/floating-ui/svelte/inner.svelte.d.ts +83 -0
- package/dist/utils/floating-ui/svelte/inner.svelte.js +178 -0
- package/dist/utils/floating-ui/svelte/types.d.ts +114 -0
- package/dist/utils/floating-ui/svelte/utils/createPubSub.d.ts +5 -0
- package/dist/utils/floating-ui/svelte/utils/createPubSub.js +14 -0
- package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.d.ts +2 -0
- package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.js +13 -0
- package/dist/utils/floating-ui/svelte/utils/log.d.ts +2 -0
- package/dist/utils/floating-ui/svelte/utils/log.js +19 -0
- package/dist/utils/floating-ui/svelte/utils.d.ts +19 -0
- package/dist/utils/floating-ui/svelte/utils.js +136 -0
- package/dist/utils/floating-ui/svelte-dom/arrow.d.ts +22 -0
- package/dist/utils/floating-ui/svelte-dom/arrow.js +29 -0
- package/dist/utils/floating-ui/svelte-dom/index.d.ts +2 -0
- package/dist/utils/floating-ui/svelte-dom/index.js +2 -0
- package/dist/utils/floating-ui/svelte-dom/types.d.ts +80 -0
- package/dist/utils/floating-ui/svelte-dom/types.js +3 -0
- package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.d.ts +6 -0
- package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.js +182 -0
- package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.d.ts +1 -0
- package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.js +50 -0
- package/dist/utils/floating-ui/svelte-dom/utils/getDPR.d.ts +1 -0
- package/dist/utils/floating-ui/svelte-dom/utils/getDPR.js +7 -0
- package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.d.ts +1 -0
- package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.js +5 -0
- package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.d.ts +4 -0
- package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.js +7 -0
- package/dist/utils/id.d.ts +1 -1
- package/dist/utils/id.js +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/state.js +4 -4
- package/dist/utils/style.d.ts +2 -0
- package/dist/utils/style.js +6 -0
- package/dist/utils/types.d.ts +12 -18
- package/package.json +33 -32
- package/dist/combobox/Combobox.svelte +0 -53
- package/dist/combobox/Combobox.svelte.d.ts +0 -50
- package/dist/dialog/InternalDialog.svelte +0 -294
- package/dist/dialog/InternalDialog.svelte.d.ts +0 -42
- package/dist/internal/HoistFormFields.svelte +0 -14
- package/dist/internal/HoistFormFields.svelte.d.ts +0 -21
- package/dist/internal/id.d.ts +0 -8
- package/dist/internal/id.js +0 -11
- package/dist/utils/Generic.svelte +0 -56
- package/dist/utils/Generic.svelte.d.ts +0 -35
- package/dist/utils/alternative-types.d.ts +0 -21
- /package/dist/utils/{alternative-types.js → floating-ui/svelte/types.js} +0 -0
|
@@ -1,37 +1,34 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
3
|
|
|
4
4
|
let DEFAULT_PANEL_TAG = "div" as const
|
|
5
|
-
type PanelRenderPropArg = {
|
|
5
|
+
export type PanelRenderPropArg = {
|
|
6
6
|
open: boolean
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
export type
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
>
|
|
9
|
+
export type DialogPanelOwnProps = {
|
|
10
|
+
element?: HTMLElement
|
|
11
|
+
id?: string
|
|
12
|
+
transition?: boolean
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type DialogPanelProps = Props<typeof DEFAULT_PANEL_TAG, PanelRenderPropArg, DialogPanelOwnProps>
|
|
18
16
|
</script>
|
|
19
17
|
|
|
20
|
-
<script lang="ts"
|
|
18
|
+
<script lang="ts">
|
|
21
19
|
import { useId } from "../hooks/use-id.js"
|
|
22
20
|
import { DialogStates, useDialogContext } from "./context.svelte.js"
|
|
23
21
|
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
24
22
|
import { mergeProps } from "../utils/render.js"
|
|
25
23
|
import TransitionChild from "../transition/TransitionChild.svelte"
|
|
26
|
-
import { onMount } from "svelte"
|
|
27
24
|
|
|
28
25
|
let internalId = useId()
|
|
29
26
|
let {
|
|
30
|
-
|
|
27
|
+
element = $bindable(),
|
|
31
28
|
id = `headlessui-dialog-panel-${internalId}`,
|
|
32
29
|
transition = false,
|
|
33
30
|
...theirProps
|
|
34
|
-
}:
|
|
31
|
+
}: DialogPanelProps = $props()
|
|
35
32
|
const _state = useDialogContext("Dialog.Panel")
|
|
36
33
|
const { dialogState, unmount } = $derived(_state)
|
|
37
34
|
|
|
@@ -52,18 +49,25 @@
|
|
|
52
49
|
</script>
|
|
53
50
|
|
|
54
51
|
{#if transition}
|
|
55
|
-
<TransitionChild {unmount} {
|
|
56
|
-
{#snippet children(
|
|
52
|
+
<TransitionChild asChild {unmount} {element}>
|
|
53
|
+
{#snippet children({ props, ...slot })}
|
|
57
54
|
<ElementOrComponent
|
|
58
55
|
ourProps={{ ...ourProps, ...props }}
|
|
59
56
|
{theirProps}
|
|
60
57
|
slots={slot}
|
|
61
58
|
defaultTag={DEFAULT_PANEL_TAG}
|
|
62
59
|
name="DialogPanel"
|
|
63
|
-
bind:
|
|
60
|
+
bind:element
|
|
64
61
|
/>
|
|
65
62
|
{/snippet}
|
|
66
63
|
</TransitionChild>
|
|
67
64
|
{:else}
|
|
68
|
-
<ElementOrComponent
|
|
65
|
+
<ElementOrComponent
|
|
66
|
+
{ourProps}
|
|
67
|
+
{theirProps}
|
|
68
|
+
slots={slot}
|
|
69
|
+
defaultTag={DEFAULT_PANEL_TAG}
|
|
70
|
+
name="DialogPanel"
|
|
71
|
+
bind:element
|
|
72
|
+
/>
|
|
69
73
|
{/if}
|
|
@@ -1,40 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare let DEFAULT_PANEL_TAG: "div";
|
|
3
|
-
type PanelRenderPropArg = {
|
|
3
|
+
export type PanelRenderPropArg = {
|
|
4
4
|
open: boolean;
|
|
5
5
|
};
|
|
6
|
-
export type
|
|
6
|
+
export type DialogPanelOwnProps = {
|
|
7
|
+
element?: HTMLElement;
|
|
7
8
|
id?: string;
|
|
8
9
|
transition?: boolean;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "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("../utils/types.js").Children<PanelRenderPropArg> | undefined;
|
|
15
|
-
ref?: HTMLElement;
|
|
16
|
-
} & (true extends (import("../utils/types.js").PropsOf<TTag> extends infer T_1 ? T_1 extends import("../utils/types.js").PropsOf<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?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: PanelRenderPropArg) => string) | undefined;
|
|
18
|
-
} : {}) & {
|
|
19
|
-
id?: string;
|
|
20
|
-
transition?: boolean;
|
|
21
|
-
};
|
|
22
|
-
events(): {} & {
|
|
23
|
-
[evt: string]: CustomEvent<any>;
|
|
24
|
-
};
|
|
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']> & {
|
|
34
|
-
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
35
|
-
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
36
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
37
|
-
}
|
|
38
|
-
declare const DialogPanel: $$IsomorphicComponent;
|
|
39
|
-
type DialogPanel<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> = InstanceType<typeof DialogPanel<TTag>>;
|
|
10
|
+
};
|
|
11
|
+
export type DialogPanelProps = Props<typeof DEFAULT_PANEL_TAG, PanelRenderPropArg, DialogPanelOwnProps>;
|
|
12
|
+
declare const DialogPanel: import("svelte").Component<DialogPanelProps, {}, "element">;
|
|
13
|
+
type DialogPanel = ReturnType<typeof DialogPanel>;
|
|
40
14
|
export default DialogPanel;
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
3
|
|
|
4
4
|
let DEFAULT_TITLE_TAG = "h2" as const
|
|
5
|
-
type TitleRenderPropArg = {
|
|
5
|
+
export type TitleRenderPropArg = {
|
|
6
6
|
open: boolean
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
export type
|
|
9
|
+
export type DialogTitleOwnProps = { id?: string; element?: HTMLElement }
|
|
10
|
+
|
|
11
|
+
export type DialogTitleProps = Props<typeof DEFAULT_TITLE_TAG, TitleRenderPropArg, DialogTitleOwnProps>
|
|
10
12
|
|
|
11
13
|
//
|
|
12
14
|
</script>
|
|
13
15
|
|
|
14
|
-
<script lang="ts"
|
|
16
|
+
<script lang="ts">
|
|
15
17
|
import { useId } from "../hooks/use-id.js"
|
|
16
18
|
import { DialogStates, useDialogContext } from "./context.svelte.js"
|
|
17
19
|
import { onMount } from "svelte"
|
|
@@ -20,10 +22,10 @@
|
|
|
20
22
|
|
|
21
23
|
const internalId = useId()
|
|
22
24
|
let {
|
|
23
|
-
|
|
24
|
-
id = `headlessui-dialog-title-${internalId}
|
|
25
|
+
element = $bindable(),
|
|
26
|
+
id = `headlessui-dialog-title-${internalId}`,
|
|
25
27
|
...theirProps
|
|
26
|
-
}:
|
|
28
|
+
}: DialogTitleProps = $props()
|
|
27
29
|
const _state = useDialogContext("Dialog.Panel")
|
|
28
30
|
const { dialogState, setTitleId } = $derived(_state)
|
|
29
31
|
|
|
@@ -41,4 +43,11 @@
|
|
|
41
43
|
)
|
|
42
44
|
</script>
|
|
43
45
|
|
|
44
|
-
<ElementOrComponent
|
|
46
|
+
<ElementOrComponent
|
|
47
|
+
{ourProps}
|
|
48
|
+
{theirProps}
|
|
49
|
+
slots={slot}
|
|
50
|
+
defaultTag={DEFAULT_TITLE_TAG}
|
|
51
|
+
name="DialogTitle"
|
|
52
|
+
bind:element
|
|
53
|
+
/>
|
|
@@ -1,34 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare let DEFAULT_TITLE_TAG: "h2";
|
|
3
|
-
type TitleRenderPropArg = {
|
|
3
|
+
export type TitleRenderPropArg = {
|
|
4
4
|
open: boolean;
|
|
5
5
|
};
|
|
6
|
-
export type
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} & (true extends (PropsOf<TTag> extends infer T_1 ? T_1 extends PropsOf<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) ? {
|
|
14
|
-
class?: PropsOf<TTag>["class"] | ((bag: TitleRenderPropArg) => string) | undefined;
|
|
15
|
-
} : {});
|
|
16
|
-
events(): {} & {
|
|
17
|
-
[evt: string]: CustomEvent<any>;
|
|
18
|
-
};
|
|
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']> & {
|
|
28
|
-
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
29
|
-
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
30
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
31
|
-
}
|
|
32
|
-
declare const DialogTitle: $$IsomorphicComponent;
|
|
33
|
-
type DialogTitle<TTag extends ElementType = typeof DEFAULT_TITLE_TAG> = InstanceType<typeof DialogTitle<TTag>>;
|
|
6
|
+
export type DialogTitleOwnProps = {
|
|
7
|
+
id?: string;
|
|
8
|
+
element?: HTMLElement;
|
|
9
|
+
};
|
|
10
|
+
export type DialogTitleProps = Props<typeof DEFAULT_TITLE_TAG, TitleRenderPropArg, DialogTitleOwnProps>;
|
|
11
|
+
declare const DialogTitle: import("svelte").Component<DialogTitleProps, {}, "element">;
|
|
12
|
+
type DialogTitle = ReturnType<typeof DialogTitle>;
|
|
34
13
|
export default DialogTitle;
|
|
@@ -6,8 +6,8 @@ export var DialogStates;
|
|
|
6
6
|
})(DialogStates || (DialogStates = {}));
|
|
7
7
|
export function useDialogContext(component) {
|
|
8
8
|
const context = getContext("DialogContext");
|
|
9
|
-
if (context
|
|
10
|
-
|
|
9
|
+
if (!context) {
|
|
10
|
+
const err = new Error(`<${component} /> is missing a parent <Dialog /> component.`);
|
|
11
11
|
if (Error.captureStackTrace)
|
|
12
12
|
Error.captureStackTrace(err, useDialogContext);
|
|
13
13
|
throw err;
|
package/dist/dialog/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as Dialog, type DialogProps } from "./Dialog.svelte";
|
|
2
|
-
export { default as DialogBackdrop, type DialogBackdropProps } from "./DialogBackdrop.svelte";
|
|
3
|
-
export { default as DialogPanel, type DialogPanelProps } from "./DialogPanel.svelte";
|
|
4
|
-
export { default as DialogTitle, type DialogTitleProps } from "./DialogTitle.svelte";
|
|
1
|
+
export { default as Dialog, type DialogProps, type DialogRenderPropArg as DialogSlot, type DialogOwnProps, } from "./Dialog.svelte";
|
|
2
|
+
export { default as DialogBackdrop, type DialogBackdropProps, type BackdropRenderPropArg as DialogBackdropSlot, type DialogBackdropOwnProps, } from "./DialogBackdrop.svelte";
|
|
3
|
+
export { default as DialogPanel, type DialogPanelProps, type PanelRenderPropArg as DialogPanelSlot, type DialogPanelOwnProps, } from "./DialogPanel.svelte";
|
|
4
|
+
export { default as DialogTitle, type DialogTitleProps, type TitleRenderPropArg as DialogTitleSlot, type DialogTitleOwnProps, } from "./DialogTitle.svelte";
|
package/dist/dialog/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as Dialog } from "./Dialog.svelte";
|
|
2
|
-
export { default as DialogBackdrop } from "./DialogBackdrop.svelte";
|
|
3
|
-
export { default as DialogPanel } from "./DialogPanel.svelte";
|
|
4
|
-
export { default as DialogTitle } from "./DialogTitle.svelte";
|
|
1
|
+
export { default as Dialog, } from "./Dialog.svelte";
|
|
2
|
+
export { default as DialogBackdrop, } from "./DialogBackdrop.svelte";
|
|
3
|
+
export { default as DialogPanel, } from "./DialogPanel.svelte";
|
|
4
|
+
export { default as DialogTitle, } from "./DialogTitle.svelte";
|
package/dist/field/Field.svelte
CHANGED
|
@@ -1,32 +1,26 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
3
|
|
|
4
4
|
let DEFAULT_FIELD_TAG = "div" as const
|
|
5
5
|
|
|
6
|
-
type
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
FieldPropsWeControl,
|
|
13
|
-
{
|
|
14
|
-
disabled?: boolean
|
|
15
|
-
}
|
|
16
|
-
>
|
|
6
|
+
export type FieldOwnProps = {
|
|
7
|
+
element?: HTMLElement
|
|
8
|
+
disabled?: boolean
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export type FieldProps = Props<typeof DEFAULT_FIELD_TAG, {}, FieldOwnProps>
|
|
17
12
|
</script>
|
|
18
13
|
|
|
19
|
-
<script lang="ts"
|
|
20
|
-
import {
|
|
14
|
+
<script lang="ts">
|
|
15
|
+
import { provideDisabled } from "../hooks/use-disabled.js"
|
|
21
16
|
import { createIdContext } from "../utils/id.js"
|
|
22
|
-
import { stateFromSlot } from "../utils/state.js"
|
|
23
17
|
import { nanoid } from "nanoid"
|
|
24
|
-
import { setContext, type Snippet } from "svelte"
|
|
25
18
|
import { useLabels } from "../label/context.svelte.js"
|
|
26
19
|
import { useDescriptions } from "../description/context.svelte.js"
|
|
27
20
|
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
21
|
+
import FormFieldsProvider from "../internal/FormFieldsProvider.svelte"
|
|
28
22
|
|
|
29
|
-
let {
|
|
23
|
+
let { element = $bindable(), disabled: ownDisabled = false, children, ...theirProps }: FieldProps = $props()
|
|
30
24
|
|
|
31
25
|
const inputId = `headlessui-control-${nanoid(8)}`
|
|
32
26
|
createIdContext(inputId)
|
|
@@ -34,14 +28,8 @@
|
|
|
34
28
|
useLabels()
|
|
35
29
|
useDescriptions()
|
|
36
30
|
|
|
37
|
-
const
|
|
38
|
-
const disabled = $derived(
|
|
39
|
-
|
|
40
|
-
setContext("DisabledContext", {
|
|
41
|
-
get value() {
|
|
42
|
-
return disabled
|
|
43
|
-
},
|
|
44
|
-
})
|
|
31
|
+
const disabledContext = provideDisabled(() => ownDisabled)
|
|
32
|
+
const { current: disabled } = $derived(disabledContext)
|
|
45
33
|
|
|
46
34
|
const slot = $derived({ disabled })
|
|
47
35
|
|
|
@@ -51,4 +39,17 @@
|
|
|
51
39
|
})
|
|
52
40
|
</script>
|
|
53
41
|
|
|
54
|
-
|
|
42
|
+
{#snippet wrapper(args: { props: Record<string, any> })}
|
|
43
|
+
<FormFieldsProvider>
|
|
44
|
+
{@render children?.(args)}
|
|
45
|
+
</FormFieldsProvider>
|
|
46
|
+
{/snippet}
|
|
47
|
+
|
|
48
|
+
<ElementOrComponent
|
|
49
|
+
{ourProps}
|
|
50
|
+
theirProps={{ ...theirProps, children: wrapper }}
|
|
51
|
+
{slot}
|
|
52
|
+
defaultTag={DEFAULT_FIELD_TAG}
|
|
53
|
+
name="Field"
|
|
54
|
+
bind:element
|
|
55
|
+
/>
|
|
@@ -1,37 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare let DEFAULT_FIELD_TAG: "div";
|
|
3
|
-
type
|
|
4
|
-
|
|
5
|
-
export type FieldProps<TTag extends ElementType = typeof DEFAULT_FIELD_TAG> = Props<TTag, FieldRenderPropArg, FieldPropsWeControl, {
|
|
3
|
+
export type FieldOwnProps = {
|
|
4
|
+
element?: HTMLElement;
|
|
6
5
|
disabled?: boolean;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "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("../utils/types.js").Children<FieldRenderPropArg> | undefined;
|
|
13
|
-
ref?: HTMLElement;
|
|
14
|
-
} & (true extends (import("../utils/types.js").PropsOf<TTag> extends infer T_1 ? T_1 extends import("../utils/types.js").PropsOf<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) ? {
|
|
15
|
-
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: FieldRenderPropArg) => string) | undefined;
|
|
16
|
-
} : {}) & {
|
|
17
|
-
disabled?: boolean;
|
|
18
|
-
};
|
|
19
|
-
events(): {} & {
|
|
20
|
-
[evt: string]: CustomEvent<any>;
|
|
21
|
-
};
|
|
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']> & {
|
|
31
|
-
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
32
|
-
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
33
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
34
|
-
}
|
|
35
|
-
declare const Field: $$IsomorphicComponent;
|
|
36
|
-
type Field<TTag extends ElementType = typeof DEFAULT_FIELD_TAG> = InstanceType<typeof Field<TTag>>;
|
|
6
|
+
};
|
|
7
|
+
export type FieldProps = Props<typeof DEFAULT_FIELD_TAG, {}, FieldOwnProps>;
|
|
8
|
+
declare const Field: import("svelte").Component<FieldProps, {}, "element">;
|
|
9
|
+
type Field = ReturnType<typeof Field>;
|
|
37
10
|
export default Field;
|
package/dist/field/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Field, type FieldProps } from "./Field.svelte";
|
|
1
|
+
export { default as Field, type FieldProps, type FieldOwnProps } from "./Field.svelte";
|
|
@@ -1,34 +1,28 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
3
|
-
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
|
+
|
|
4
|
+
const DEFAULT_FIELDSET_TAG = "fieldset" as const
|
|
4
5
|
|
|
5
|
-
type FieldsetRenderPropArg = {}
|
|
6
6
|
type FieldsetPropsWeControl = "aria-labelledby" | "aria-disabled" | "role"
|
|
7
7
|
|
|
8
|
-
export type
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
>
|
|
8
|
+
export type FieldsetOwnProps = {
|
|
9
|
+
element?: HTMLElement
|
|
10
|
+
disabled?: boolean
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type FieldsetProps = Props<typeof DEFAULT_FIELDSET_TAG, {}, FieldsetOwnProps>
|
|
16
14
|
</script>
|
|
17
15
|
|
|
18
|
-
<script lang="ts"
|
|
16
|
+
<script lang="ts">
|
|
19
17
|
import { setContext } from "svelte"
|
|
20
18
|
import { useDisabled } from "../hooks/use-disabled.js"
|
|
21
19
|
import { useLabels } from "../label/context.svelte.js"
|
|
22
20
|
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
23
21
|
|
|
24
|
-
let {
|
|
25
|
-
ref = $bindable(),
|
|
26
|
-
disabled: ownDisabled = false,
|
|
27
|
-
...theirProps
|
|
28
|
-
}: { as?: TTag } & FieldsetProps<TTag> = $props()
|
|
22
|
+
let { element = $bindable(), disabled: ownDisabled = false, ...theirProps }: FieldsetProps = $props()
|
|
29
23
|
|
|
30
24
|
const providedDisabled = useDisabled()
|
|
31
|
-
const disabled = $derived(providedDisabled.
|
|
25
|
+
const disabled = $derived(providedDisabled.current || ownDisabled)
|
|
32
26
|
|
|
33
27
|
setContext("DisabledContext", {
|
|
34
28
|
get value() {
|
|
@@ -39,7 +33,7 @@
|
|
|
39
33
|
const labelledBy = useLabels()
|
|
40
34
|
const slot = $derived({ disabled })
|
|
41
35
|
const ourProps = $derived(
|
|
42
|
-
|
|
36
|
+
!theirProps.asChild
|
|
43
37
|
? {
|
|
44
38
|
"aria-labelledby": labelledBy.value,
|
|
45
39
|
disabled: disabled || undefined,
|
|
@@ -52,4 +46,4 @@
|
|
|
52
46
|
)
|
|
53
47
|
</script>
|
|
54
48
|
|
|
55
|
-
<ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_FIELDSET_TAG} name="Fieldset" bind:
|
|
49
|
+
<ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_FIELDSET_TAG} name="Fieldset" bind:element />
|
|
@@ -1,37 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare
|
|
3
|
-
type
|
|
4
|
-
|
|
5
|
-
export type FieldsetProps<TTag extends ElementType = typeof DEFAULT_FIELDSET_TAG> = Props<TTag, FieldsetRenderPropArg, FieldsetPropsWeControl, {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
|
+
declare const DEFAULT_FIELDSET_TAG: "fieldset";
|
|
3
|
+
export type FieldsetOwnProps = {
|
|
4
|
+
element?: HTMLElement;
|
|
6
5
|
disabled?: boolean;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "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("../utils/types.js").Children<FieldsetRenderPropArg> | undefined;
|
|
13
|
-
ref?: HTMLElement;
|
|
14
|
-
} & (true extends (import("../utils/types.js").PropsOf<TTag> extends infer T_1 ? T_1 extends import("../utils/types.js").PropsOf<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) ? {
|
|
15
|
-
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: FieldsetRenderPropArg) => string) | undefined;
|
|
16
|
-
} : {}) & {
|
|
17
|
-
disabled?: boolean;
|
|
18
|
-
};
|
|
19
|
-
events(): {} & {
|
|
20
|
-
[evt: string]: CustomEvent<any>;
|
|
21
|
-
};
|
|
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']> & {
|
|
31
|
-
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
32
|
-
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
33
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
34
|
-
}
|
|
35
|
-
declare const Fieldset: $$IsomorphicComponent;
|
|
36
|
-
type Fieldset<TTag extends ElementType = typeof DEFAULT_FIELDSET_TAG> = InstanceType<typeof Fieldset<TTag>>;
|
|
6
|
+
};
|
|
7
|
+
export type FieldsetProps = Props<typeof DEFAULT_FIELDSET_TAG, {}, FieldsetOwnProps>;
|
|
8
|
+
declare const Fieldset: import("svelte").Component<FieldsetProps, {}, "element">;
|
|
9
|
+
type Fieldset = ReturnType<typeof Fieldset>;
|
|
37
10
|
export default Fieldset;
|
package/dist/fieldset/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Fieldset, type FieldsetProps } from "./Fieldset.svelte";
|
|
1
|
+
export { default as Fieldset, type FieldsetProps, type FieldsetOwnProps } from "./Fieldset.svelte";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
2
|
import { getOwnerDocument } from "../utils/owner.js"
|
|
3
|
-
import type {
|
|
3
|
+
import type { Props } from "../utils/types.js"
|
|
4
4
|
import { history } from "../utils/active-element-history.js"
|
|
5
5
|
import { useWatch } from "../hooks/use-watch.svelte.js"
|
|
6
6
|
import { microTask } from "../utils/microTask.js"
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
import { useDisposables } from "../utils/disposables.js"
|
|
14
14
|
import Hidden, { HiddenFeatures } from "../internal/Hidden.svelte"
|
|
15
15
|
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
16
|
+
import { FocusTrapFeatures } from "./FocusTrapFeatures.js"
|
|
16
17
|
|
|
17
18
|
type Containers =
|
|
18
19
|
// Lazy resolved containers
|
|
@@ -34,45 +35,24 @@
|
|
|
34
35
|
return all
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
|
|
38
|
+
const DEFAULT_FOCUS_TRAP_TAG = "div" as const
|
|
38
39
|
|
|
39
|
-
export
|
|
40
|
-
/** No features enabled for the focus trap. */
|
|
41
|
-
None = 0,
|
|
40
|
+
export * from "./FocusTrapFeatures.js"
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
InitialFocus = 1 << 0,
|
|
45
|
-
|
|
46
|
-
/** Ensure that pressing `Tab` and `Shift+Tab` is trapped within the container. */
|
|
47
|
-
TabLock = 1 << 1,
|
|
48
|
-
|
|
49
|
-
/** Ensure that programmatically moving focus outside of the container is disallowed. */
|
|
50
|
-
FocusLock = 1 << 2,
|
|
51
|
-
|
|
52
|
-
/** Ensure that we restore the focus when unmounting the focus trap. */
|
|
53
|
-
RestoreFocus = 1 << 3,
|
|
42
|
+
type FocusTrapPropsWeControl = never
|
|
54
43
|
|
|
55
|
-
|
|
56
|
-
|
|
44
|
+
export type FocusTrapOwnProps = {
|
|
45
|
+
element?: HTMLElement
|
|
46
|
+
initialFocus?: HTMLElement
|
|
47
|
+
// A fallback element to focus, but this element will be skipped when tabbing around. This is
|
|
48
|
+
// only done for focusing a fallback parent container (e.g.: A `Dialog`, but you want to tab
|
|
49
|
+
// *inside* the dialog excluding the dialog itself).
|
|
50
|
+
initialFocusFallback?: HTMLElement
|
|
51
|
+
features?: FocusTrapFeatures
|
|
52
|
+
containers?: Containers
|
|
57
53
|
}
|
|
58
54
|
|
|
59
|
-
type
|
|
60
|
-
type FocusTrapPropsWeControl = never
|
|
61
|
-
|
|
62
|
-
export type FocusTrapProps<TTag extends ElementType = typeof DEFAULT_FOCUS_TRAP_TAG> = Props<
|
|
63
|
-
TTag,
|
|
64
|
-
FocusTrapRenderPropArg,
|
|
65
|
-
FocusTrapPropsWeControl,
|
|
66
|
-
{
|
|
67
|
-
initialFocus?: HTMLElement
|
|
68
|
-
// A fallback element to focus, but this element will be skipped when tabbing around. This is
|
|
69
|
-
// only done for focusing a fallback parent container (e.g.: A `Dialog`, but you want to tab
|
|
70
|
-
// *inside* the dialog excluding the dialog itself).
|
|
71
|
-
initialFocusFallback?: HTMLElement
|
|
72
|
-
features?: FocusTrapFeatures
|
|
73
|
-
containers?: Containers
|
|
74
|
-
}
|
|
75
|
-
>
|
|
55
|
+
export type FocusTrapProps = Props<typeof DEFAULT_FOCUS_TRAP_TAG, {}, FocusTrapOwnProps>
|
|
76
56
|
|
|
77
57
|
function useRestoreElement(options?: { enabled: boolean }) {
|
|
78
58
|
const { enabled } = $derived(options ?? { enabled: true })
|
|
@@ -310,10 +290,10 @@
|
|
|
310
290
|
}
|
|
311
291
|
</script>
|
|
312
292
|
|
|
313
|
-
<script lang="ts"
|
|
293
|
+
<script lang="ts">
|
|
314
294
|
let container = $state<HTMLElement | null>(null)
|
|
315
295
|
let {
|
|
316
|
-
|
|
296
|
+
element = $bindable(),
|
|
317
297
|
initialFocus,
|
|
318
298
|
initialFocusFallback,
|
|
319
299
|
containers,
|
|
@@ -322,13 +302,13 @@
|
|
|
322
302
|
FocusTrapFeatures.FocusLock |
|
|
323
303
|
FocusTrapFeatures.RestoreFocus,
|
|
324
304
|
...theirProps
|
|
325
|
-
}:
|
|
305
|
+
}: FocusTrapProps = $props()
|
|
326
306
|
|
|
327
307
|
/*if (!useServerHandoffComplete()) {
|
|
328
308
|
features = FocusTrapFeatures.None
|
|
329
309
|
}*/
|
|
330
310
|
|
|
331
|
-
const ownerDocument = $derived(getOwnerDocument(
|
|
311
|
+
const ownerDocument = $derived(getOwnerDocument(element))
|
|
332
312
|
|
|
333
313
|
useRestoreFocus({
|
|
334
314
|
get features() {
|
|
@@ -458,21 +438,17 @@
|
|
|
458
438
|
</script>
|
|
459
439
|
|
|
460
440
|
{#if tabLockEnabled}
|
|
461
|
-
<Hidden
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
features={HiddenFeatures.Focusable}
|
|
467
|
-
/>
|
|
441
|
+
<Hidden asChild features={HiddenFeatures.Focusable}>
|
|
442
|
+
{#snippet children({ props })}
|
|
443
|
+
<button {...props} type="button" data-headlessui-focus-guard onfocus={handleFocus}>‌</button>
|
|
444
|
+
{/snippet}
|
|
445
|
+
</Hidden>
|
|
468
446
|
{/if}
|
|
469
|
-
<ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_FOCUS_TRAP_TAG} name="FocusTrap" bind:
|
|
447
|
+
<ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_FOCUS_TRAP_TAG} name="FocusTrap" bind:element />
|
|
470
448
|
{#if tabLockEnabled}
|
|
471
|
-
<Hidden
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
features={HiddenFeatures.Focusable}
|
|
477
|
-
/>
|
|
449
|
+
<Hidden asChild features={HiddenFeatures.Focusable}>
|
|
450
|
+
{#snippet children({ props })}
|
|
451
|
+
<button {...props} type="button" data-headlessui-focus-guard onfocus={handleFocus}>‌</button>
|
|
452
|
+
{/snippet}
|
|
453
|
+
</Hidden>
|
|
478
454
|
{/if}
|