@pzerelles/headlessui-svelte 2.1.2-next.5 → 2.1.2-next.50
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 +16 -19
- 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 +31 -27
- 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 +29 -24
- 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/disclosure/Disclosure.svelte +61 -0
- package/dist/disclosure/Disclosure.svelte.d.ts +14 -0
- package/dist/disclosure/DisclosureButton.svelte +191 -0
- package/dist/disclosure/DisclosureButton.svelte.d.ts +19 -0
- package/dist/disclosure/DisclosurePanel.svelte +98 -0
- package/dist/disclosure/DisclosurePanel.svelte.d.ts +16 -0
- package/dist/disclosure/context.svelte.d.ts +32 -0
- package/dist/disclosure/context.svelte.js +94 -0
- package/dist/disclosure/index.d.ts +3 -0
- package/dist/disclosure/index.js +3 -0
- 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 +21 -20
- package/dist/fieldset/Fieldset.svelte.d.ts +8 -35
- package/dist/fieldset/index.d.ts +1 -1
- package/dist/focus-trap/FocusTrap.svelte +29 -36
- package/dist/focus-trap/FocusTrap.svelte.d.ts +8 -38
- package/dist/hooks/use-controllable.svelte.js +3 -2
- 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-element-size.svelte.js +1 -1
- 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-focus-ring.svelte.js +1 -1
- package/dist/hooks/use-inert-others.svelte.js +10 -10
- package/dist/hooks/use-is-top-layer.svelte.js +2 -2
- 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/hooks/use-transition.svelte.js +2 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.js +6 -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/internal/frozen.svelte.js +1 -1
- 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 +22 -15
- package/dist/legend/Legend.svelte.d.ts +10 -34
- package/dist/listbox/Listbox.svelte +79 -151
- package/dist/listbox/Listbox.svelte.d.ts +16 -91
- package/dist/listbox/ListboxButton.svelte +31 -29
- package/dist/listbox/ListboxButton.svelte.d.ts +8 -38
- package/dist/listbox/ListboxOption.svelte +40 -27
- package/dist/listbox/ListboxOption.svelte.d.ts +16 -32
- package/dist/listbox/ListboxOptions.svelte +126 -72
- 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 +29 -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 +228 -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 +142 -0
- package/dist/radio-group/Radio.svelte.d.ts +35 -0
- package/dist/radio-group/RadioGroup.svelte +222 -0
- package/dist/radio-group/RadioGroup.svelte.d.ts +34 -0
- package/dist/radio-group/RadioOption.svelte +145 -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 +28 -31
- 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 +20 -20
- 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 +24 -20
- 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 +36 -22
- package/dist/transition/InternalTransitionChild.svelte.d.ts +6 -37
- 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 +11 -11
- 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 +58 -17
- package/dist/utils/ElementOrComponent.svelte.d.ts +19 -30
- 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 +183 -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 +13 -19
- package/package.json +54 -53
- 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/listbox/ListboxStates.d.ts +0 -12
- package/dist/listbox/ListboxStates.js +0 -15
- 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,6 +1,6 @@
|
|
|
1
1
|
export declare function useEventListener<TType extends keyof WindowEventMap>(params: {
|
|
2
2
|
element: HTMLElement | Document | Window | EventTarget | null | undefined;
|
|
3
3
|
type: TType;
|
|
4
|
-
listener: (event: WindowEventMap[TType]) =>
|
|
4
|
+
listener: (event: WindowEventMap[TType]) => unknown;
|
|
5
5
|
options?: boolean | AddEventListenerOptions;
|
|
6
6
|
}): void;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export function useEventListener(params) {
|
|
2
|
-
|
|
2
|
+
if (typeof window === "undefined")
|
|
3
|
+
return;
|
|
4
|
+
const { element = window, type, listener, options } = $derived(params);
|
|
3
5
|
$effect(() => {
|
|
4
6
|
if (!element)
|
|
5
7
|
return;
|
|
@@ -2,7 +2,7 @@ import { isFocusVisible, useFocusVisibleListener } from "../utils/focusVisible.s
|
|
|
2
2
|
export const useFocusRing = (options = {}) => {
|
|
3
3
|
const { autofocus, within } = $derived(options);
|
|
4
4
|
let focused = $state(false);
|
|
5
|
-
let _isFocusVisible = $state(autofocus || isFocusVisible());
|
|
5
|
+
let _isFocusVisible = $state((() => autofocus || isFocusVisible())());
|
|
6
6
|
useFocusVisibleListener((isFocusVisible) => {
|
|
7
7
|
_isFocusVisible = isFocusVisible;
|
|
8
8
|
});
|
|
@@ -5,7 +5,7 @@ const originals = new Map();
|
|
|
5
5
|
const counts = new Map();
|
|
6
6
|
function markInert(element) {
|
|
7
7
|
// Increase count
|
|
8
|
-
|
|
8
|
+
const count = counts.get(element) ?? 0;
|
|
9
9
|
counts.set(element, count + 1);
|
|
10
10
|
// Already marked as inert, no need to do it again
|
|
11
11
|
if (count !== 0)
|
|
@@ -22,7 +22,7 @@ function markInert(element) {
|
|
|
22
22
|
}
|
|
23
23
|
function markNotInert(element) {
|
|
24
24
|
// Decrease counts
|
|
25
|
-
|
|
25
|
+
const count = counts.get(element) ?? 1; // Should always exist
|
|
26
26
|
if (count === 1)
|
|
27
27
|
counts.delete(element); // We are the last one, so we can delete the count
|
|
28
28
|
else
|
|
@@ -30,7 +30,7 @@ function markNotInert(element) {
|
|
|
30
30
|
// Not the last one, so we don't restore the original values (yet)
|
|
31
31
|
if (count !== 1)
|
|
32
32
|
return;
|
|
33
|
-
|
|
33
|
+
const original = originals.get(element);
|
|
34
34
|
if (!original)
|
|
35
35
|
return; // Should never happen
|
|
36
36
|
// Restore original values
|
|
@@ -70,7 +70,7 @@ function markNotInert(element) {
|
|
|
70
70
|
export function useInertOthers(options) {
|
|
71
71
|
const { enabled, elements } = $derived(options);
|
|
72
72
|
const { allowed, disallowed } = $derived(elements ?? {});
|
|
73
|
-
|
|
73
|
+
const isTopLayer = useIsTopLayer({
|
|
74
74
|
get enabled() {
|
|
75
75
|
return enabled;
|
|
76
76
|
},
|
|
@@ -79,25 +79,25 @@ export function useInertOthers(options) {
|
|
|
79
79
|
$effect(() => {
|
|
80
80
|
if (!isTopLayer.value)
|
|
81
81
|
return;
|
|
82
|
-
|
|
82
|
+
const d = disposables();
|
|
83
83
|
// Mark all disallowed elements as inert
|
|
84
|
-
for (
|
|
84
|
+
for (const element of disallowed ?? []) {
|
|
85
85
|
if (!element)
|
|
86
86
|
continue;
|
|
87
87
|
d.add(markInert(element));
|
|
88
88
|
}
|
|
89
89
|
// Mark all siblings of allowed elements (and parents) as inert
|
|
90
|
-
|
|
91
|
-
for (
|
|
90
|
+
const allowedElements = allowed ?? [];
|
|
91
|
+
for (const element of allowedElements) {
|
|
92
92
|
if (!element)
|
|
93
93
|
continue;
|
|
94
|
-
|
|
94
|
+
const ownerDocument = getOwnerDocument(element);
|
|
95
95
|
if (!ownerDocument)
|
|
96
96
|
continue;
|
|
97
97
|
let parent = element.parentElement;
|
|
98
98
|
while (parent && parent !== ownerDocument.body) {
|
|
99
99
|
// Mark all siblings as inert
|
|
100
|
-
for (
|
|
100
|
+
for (const node of parent.children) {
|
|
101
101
|
// If the node contains any of the elements we should not mark it as inert
|
|
102
102
|
// because it would make the elements unreachable.
|
|
103
103
|
if (node.tagName.toLowerCase() === "svelte:fragment" || allowedElements.some((el) => node.contains(el)))
|
|
@@ -44,9 +44,9 @@ let hierarchyStores = new DefaultMap(() => createStore(() => [], {
|
|
|
44
44
|
*/
|
|
45
45
|
export function useIsTopLayer(options) {
|
|
46
46
|
const { enabled, scope } = $derived(options);
|
|
47
|
-
const hierarchyStore = hierarchyStores.get(scope);
|
|
47
|
+
const hierarchyStore = $derived(hierarchyStores.get(scope));
|
|
48
48
|
const id = useId();
|
|
49
|
-
let hierarchy = $state(hierarchyStore.getSnapshot());
|
|
49
|
+
let hierarchy = $state((() => hierarchyStore.getSnapshot())());
|
|
50
50
|
$effect(() => {
|
|
51
51
|
const unsubscribe = hierarchyStore.subscribe(() => {
|
|
52
52
|
hierarchy = hierarchyStore.getSnapshot();
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { default as MainTreeProvider, useMainTreeNode } from "../internal/MainTreeProvider.svelte";
|
|
2
2
|
export declare function useRootContainers(options?: {
|
|
3
|
-
defaultContainers?: (HTMLElement | null)[];
|
|
3
|
+
defaultContainers?: (HTMLElement | undefined | null)[];
|
|
4
4
|
portals?: HTMLElement[];
|
|
5
|
-
mainTreeNode?: HTMLElement | null;
|
|
5
|
+
mainTreeNode?: HTMLElement | undefined | null;
|
|
6
6
|
}): {
|
|
7
7
|
readonly resolvedContainers: HTMLElement[];
|
|
8
8
|
contains: (element: HTMLElement) => boolean;
|
|
@@ -6,21 +6,21 @@ export function useRootContainers(options = {}) {
|
|
|
6
6
|
mainTreeNode, } = $derived(options);
|
|
7
7
|
const ownerDocument = $derived(getOwnerDocument(mainTreeNode));
|
|
8
8
|
const resolvedContainers = $derived.by(() => {
|
|
9
|
-
|
|
9
|
+
const containers = [];
|
|
10
10
|
// Resolve default containers
|
|
11
|
-
for (
|
|
12
|
-
if (container
|
|
11
|
+
for (const container of defaultContainers) {
|
|
12
|
+
if (!container)
|
|
13
13
|
continue;
|
|
14
14
|
containers.push(container);
|
|
15
15
|
}
|
|
16
16
|
// Resolve portal containers
|
|
17
17
|
if (portals) {
|
|
18
|
-
for (
|
|
18
|
+
for (const portal of portals) {
|
|
19
19
|
containers.push(portal);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
// Resolve third party (root) containers
|
|
23
|
-
for (
|
|
23
|
+
for (const container of ownerDocument?.querySelectorAll("html > *, body > *") ?? []) {
|
|
24
24
|
if (container === document.body)
|
|
25
25
|
continue; // Skip `<body>`
|
|
26
26
|
if (container === document.head)
|
|
@@ -37,8 +37,8 @@ export function transitionDataAttributes(data) {
|
|
|
37
37
|
}
|
|
38
38
|
export function useTransition(options) {
|
|
39
39
|
const { enabled, element, show, events } = $derived(options);
|
|
40
|
-
let visible = $state(show);
|
|
41
|
-
let flags = $state(enabled && visible ? TransitionState.Enter | TransitionState.Closed : TransitionState.None);
|
|
40
|
+
let visible = $state((() => show)());
|
|
41
|
+
let flags = $state((() => (enabled && visible ? TransitionState.Enter | TransitionState.Closed : TransitionState.None))());
|
|
42
42
|
let inFlight = $state(false);
|
|
43
43
|
let cancelled = $state(false);
|
|
44
44
|
const d = useDisposables();
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from "./close-button/index.js";
|
|
|
4
4
|
export * from "./data-interactive/index.js";
|
|
5
5
|
export * from "./description/index.js";
|
|
6
6
|
export * from "./dialog/index.js";
|
|
7
|
+
export * from "./disclosure/index.js";
|
|
7
8
|
export * from "./field/index.js";
|
|
8
9
|
export * from "./fieldset/index.js";
|
|
9
10
|
export * from "./input/index.js";
|
|
@@ -11,10 +12,13 @@ export * from "./label/index.js";
|
|
|
11
12
|
export * from "./legend/index.js";
|
|
12
13
|
export * from "./listbox/index.js";
|
|
13
14
|
export * from "./menu/index.js";
|
|
15
|
+
export * from "./popover/index.js";
|
|
16
|
+
export * from "./radio-group/index.js";
|
|
17
|
+
export * from "./select/index.js";
|
|
14
18
|
export * from "./switch/index.js";
|
|
15
19
|
export * from "./tabs/index.js";
|
|
16
20
|
export * from "./textarea/index.js";
|
|
17
21
|
export * from "./transition/index.js";
|
|
22
|
+
export * from "./utils/index.js";
|
|
18
23
|
export * from "./hooks/use-id.js";
|
|
19
|
-
export * from "./
|
|
20
|
-
export { mergeProps } from "./utils/render.js";
|
|
24
|
+
export * from "./hooks/use-disabled.js";
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export * from "./close-button/index.js";
|
|
|
4
4
|
export * from "./data-interactive/index.js";
|
|
5
5
|
export * from "./description/index.js";
|
|
6
6
|
export * from "./dialog/index.js";
|
|
7
|
+
export * from "./disclosure/index.js";
|
|
7
8
|
export * from "./field/index.js";
|
|
8
9
|
export * from "./fieldset/index.js";
|
|
9
10
|
export * from "./input/index.js";
|
|
@@ -11,10 +12,13 @@ export * from "./label/index.js";
|
|
|
11
12
|
export * from "./legend/index.js";
|
|
12
13
|
export * from "./listbox/index.js";
|
|
13
14
|
export * from "./menu/index.js";
|
|
15
|
+
export * from "./popover/index.js";
|
|
16
|
+
export * from "./radio-group/index.js";
|
|
17
|
+
export * from "./select/index.js";
|
|
14
18
|
export * from "./switch/index.js";
|
|
15
19
|
export * from "./tabs/index.js";
|
|
16
20
|
export * from "./textarea/index.js";
|
|
17
21
|
export * from "./transition/index.js";
|
|
22
|
+
export * from "./utils/index.js";
|
|
18
23
|
export * from "./hooks/use-id.js";
|
|
19
|
-
export * from "./
|
|
20
|
-
export { mergeProps } from "./utils/render.js";
|
|
24
|
+
export * from "./hooks/use-disabled.js";
|
package/dist/input/Input.svelte
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
|
+
import type { SvelteHTMLElements } from "svelte/elements"
|
|
3
4
|
|
|
4
5
|
const DEFAULT_INPUT_TAG = "input" as const
|
|
5
6
|
|
|
6
|
-
type InputRenderPropArg = {
|
|
7
|
+
export type InputRenderPropArg = {
|
|
7
8
|
disabled: boolean
|
|
8
9
|
hover: boolean
|
|
9
10
|
focus: boolean
|
|
@@ -12,24 +13,22 @@
|
|
|
12
13
|
}
|
|
13
14
|
type InputPropsWeControl = "aria-labelledby" | "aria-describedby"
|
|
14
15
|
|
|
15
|
-
export type
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
>
|
|
16
|
+
export type InputOwnProps<TValue = string> = {
|
|
17
|
+
element?: HTMLElement
|
|
18
|
+
id?: string
|
|
19
|
+
value?: TValue
|
|
20
|
+
disabled?: boolean
|
|
21
|
+
invalid?: boolean
|
|
22
|
+
autofocus?: boolean
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export type InputProps<TValue = string> = Props<typeof DEFAULT_INPUT_TAG, InputRenderPropArg, InputOwnProps<TValue>>
|
|
27
26
|
</script>
|
|
28
27
|
|
|
29
|
-
<script lang="ts" generics="
|
|
28
|
+
<script lang="ts" generics="TValue = string">
|
|
30
29
|
import { htmlid } from "../utils/id.js"
|
|
31
30
|
import { useDisabled } from "../hooks/use-disabled.js"
|
|
32
|
-
import { useProvidedId } from "../
|
|
31
|
+
import { useProvidedId } from "../utils/id.js"
|
|
33
32
|
import { useLabelledBy } from "../label/context.svelte.js"
|
|
34
33
|
import { useDescribedBy } from "../description/context.svelte.js"
|
|
35
34
|
import { useHover } from "../hooks/use-hover.svelte.js"
|
|
@@ -42,15 +41,15 @@
|
|
|
42
41
|
const providedDisabled = useDisabled()
|
|
43
42
|
|
|
44
43
|
let {
|
|
45
|
-
|
|
44
|
+
element = $bindable(),
|
|
46
45
|
value = $bindable(),
|
|
47
|
-
id = providedId
|
|
46
|
+
id = providedId || `headlessui-input-${internalId}`,
|
|
48
47
|
disabled: theirDisabled = false,
|
|
49
48
|
autofocus = false,
|
|
50
49
|
invalid = false,
|
|
51
50
|
...theirProps
|
|
52
|
-
}:
|
|
53
|
-
const disabled = $derived(providedDisabled
|
|
51
|
+
}: InputProps<TValue> = $props()
|
|
52
|
+
const disabled = $derived(providedDisabled.current || theirDisabled)
|
|
54
53
|
|
|
55
54
|
const labelledBy = useLabelledBy()
|
|
56
55
|
const describedBy = useDescribedBy()
|
|
@@ -88,4 +87,12 @@
|
|
|
88
87
|
const slot = $derived({ disabled, invalid, hover, focus, autofocus } satisfies InputRenderPropArg)
|
|
89
88
|
</script>
|
|
90
89
|
|
|
91
|
-
<ElementOrComponent
|
|
90
|
+
<ElementOrComponent
|
|
91
|
+
{ourProps}
|
|
92
|
+
{theirProps}
|
|
93
|
+
slots={slot}
|
|
94
|
+
defaultTag={DEFAULT_INPUT_TAG}
|
|
95
|
+
name="Input"
|
|
96
|
+
bind:element
|
|
97
|
+
bind:value
|
|
98
|
+
/>
|
|
@@ -1,52 +1,35 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare const DEFAULT_INPUT_TAG: "input";
|
|
3
|
-
type InputRenderPropArg = {
|
|
3
|
+
export type InputRenderPropArg = {
|
|
4
4
|
disabled: boolean;
|
|
5
5
|
hover: boolean;
|
|
6
6
|
focus: boolean;
|
|
7
7
|
autofocus: boolean;
|
|
8
8
|
invalid: boolean;
|
|
9
9
|
};
|
|
10
|
-
type
|
|
11
|
-
|
|
10
|
+
export type InputOwnProps<TValue = string> = {
|
|
11
|
+
element?: HTMLElement;
|
|
12
12
|
id?: string;
|
|
13
13
|
value?: TValue;
|
|
14
14
|
disabled?: boolean;
|
|
15
15
|
invalid?: boolean;
|
|
16
16
|
autofocus?: boolean;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "invalid" | "disabled" | "autofocus" | "value" | "id" | InputPropsWeControl> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
23
|
-
children?: import("../utils/types.js").Children<InputRenderPropArg> | undefined;
|
|
24
|
-
ref?: HTMLElement;
|
|
25
|
-
} & (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) ? {
|
|
26
|
-
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: InputRenderPropArg) => string) | undefined;
|
|
27
|
-
} : {}) & {
|
|
28
|
-
id?: string;
|
|
29
|
-
value?: TValue | undefined;
|
|
30
|
-
disabled?: boolean;
|
|
31
|
-
invalid?: boolean;
|
|
32
|
-
autofocus?: boolean;
|
|
33
|
-
};
|
|
34
|
-
events(): {} & {
|
|
35
|
-
[evt: string]: CustomEvent<any>;
|
|
36
|
-
};
|
|
17
|
+
};
|
|
18
|
+
export type InputProps<TValue = string> = Props<typeof DEFAULT_INPUT_TAG, InputRenderPropArg, InputOwnProps<TValue>>;
|
|
19
|
+
declare class __sveltets_Render<TValue = string> {
|
|
20
|
+
props(): InputProps<TValue>;
|
|
21
|
+
events(): {};
|
|
37
22
|
slots(): {};
|
|
38
|
-
bindings(): "
|
|
23
|
+
bindings(): "element" | "value";
|
|
39
24
|
exports(): {};
|
|
40
25
|
}
|
|
41
26
|
interface $$IsomorphicComponent {
|
|
42
|
-
new <
|
|
43
|
-
$$bindings?: ReturnType<__sveltets_Render<
|
|
44
|
-
} & ReturnType<__sveltets_Render<
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
}): ReturnType<__sveltets_Render<TTag, TValue>['exports']>;
|
|
48
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
27
|
+
new <TValue = string>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TValue>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TValue>['props']>, ReturnType<__sveltets_Render<TValue>['events']>, ReturnType<__sveltets_Render<TValue>['slots']>> & {
|
|
28
|
+
$$bindings?: ReturnType<__sveltets_Render<TValue>['bindings']>;
|
|
29
|
+
} & ReturnType<__sveltets_Render<TValue>['exports']>;
|
|
30
|
+
<TValue = string>(internal: unknown, props: ReturnType<__sveltets_Render<TValue>['props']> & {}): ReturnType<__sveltets_Render<TValue>['exports']>;
|
|
31
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
49
32
|
}
|
|
50
33
|
declare const Input: $$IsomorphicComponent;
|
|
51
|
-
type Input<
|
|
34
|
+
type Input<TValue = string> = InstanceType<typeof Input<TValue>>;
|
|
52
35
|
export default Input;
|
package/dist/input/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Input, type InputProps } from "./Input.svelte";
|
|
1
|
+
export { default as Input, type InputProps, type InputRenderPropArg as InputSlot, type InputOwnProps, } from "./Input.svelte";
|
package/dist/input/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Input } from "./Input.svelte";
|
|
1
|
+
export { default as Input, } from "./Input.svelte";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<script lang="ts">
|
|
5
|
+
import type { Snippet } from "svelte"
|
|
6
|
+
import { useFloatingProvider } from "./floating-provider.svelte.js"
|
|
7
|
+
|
|
8
|
+
const { children, enabled = true }: { children: Snippet; enabled?: boolean } = $props()
|
|
9
|
+
|
|
10
|
+
useFloatingProvider({
|
|
11
|
+
get enabled() {
|
|
12
|
+
return enabled
|
|
13
|
+
},
|
|
14
|
+
})
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
{#if children}{@render children()}{/if}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Snippet } from "svelte";
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
children: Snippet;
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
};
|
|
6
|
+
declare const FloatingProvider: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
7
|
+
type FloatingProvider = ReturnType<typeof FloatingProvider>;
|
|
8
|
+
export default FloatingProvider;
|
|
@@ -14,40 +14,41 @@
|
|
|
14
14
|
onMount(() => {
|
|
15
15
|
mounted = true
|
|
16
16
|
})
|
|
17
|
-
</script>
|
|
18
17
|
|
|
19
|
-
{
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
cancelAnimationFrame(frame)
|
|
40
|
-
if (!mounted) return
|
|
41
|
-
|
|
42
|
-
enabled = false
|
|
43
|
-
return
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Retry
|
|
47
|
-
frame = requestAnimationFrame(forwardFocus)
|
|
18
|
+
const handleFocus = (event: FocusEvent) => {
|
|
19
|
+
event.preventDefault()
|
|
20
|
+
let frame: ReturnType<typeof requestAnimationFrame>
|
|
21
|
+
|
|
22
|
+
let tries = 50
|
|
23
|
+
function forwardFocus() {
|
|
24
|
+
// Prevent infinite loops
|
|
25
|
+
if (tries-- <= 0) {
|
|
26
|
+
if (frame) cancelAnimationFrame(frame)
|
|
27
|
+
return
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Try to move focus to the correct element. This depends on the implementation
|
|
31
|
+
// of `onFocus` of course since it would be different for each place we use it in.
|
|
32
|
+
if (onfocus?.()) {
|
|
33
|
+
cancelAnimationFrame(frame)
|
|
34
|
+
if (!mounted) return
|
|
35
|
+
|
|
36
|
+
enabled = false
|
|
37
|
+
return
|
|
48
38
|
}
|
|
49
39
|
|
|
40
|
+
// Retry
|
|
50
41
|
frame = requestAnimationFrame(forwardFocus)
|
|
51
|
-
}
|
|
52
|
-
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
frame = requestAnimationFrame(forwardFocus)
|
|
45
|
+
}
|
|
46
|
+
</script>
|
|
47
|
+
|
|
48
|
+
{#if enabled}
|
|
49
|
+
<Hidden asChild features={HiddenFeatures.Focusable}>
|
|
50
|
+
{#snippet children({ props })}
|
|
51
|
+
<button {...props} type="button" onfocus={handleFocus}>‌</button>
|
|
52
|
+
{/snippet}
|
|
53
|
+
</Hidden>
|
|
53
54
|
{/if}
|
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
interface
|
|
2
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
-
$$bindings?: Bindings;
|
|
4
|
-
} & Exports;
|
|
5
|
-
(internal: unknown, props: Props & {
|
|
6
|
-
$$events?: Events;
|
|
7
|
-
$$slots?: Slots;
|
|
8
|
-
}): Exports & {
|
|
9
|
-
$set?: any;
|
|
10
|
-
$on?: any;
|
|
11
|
-
};
|
|
12
|
-
z_$$bindings?: Bindings;
|
|
13
|
-
}
|
|
14
|
-
declare const FocusSentinel: $$__sveltets_2_IsomorphicComponent<{
|
|
1
|
+
interface FocusSentinelProps {
|
|
15
2
|
onfocus: () => boolean;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
type FocusSentinel = InstanceType<typeof FocusSentinel>;
|
|
3
|
+
}
|
|
4
|
+
declare const FocusSentinel: import("svelte").Component<FocusSentinelProps, {}, "">;
|
|
5
|
+
type FocusSentinel = ReturnType<typeof FocusSentinel>;
|
|
20
6
|
export default FocusSentinel;
|
|
@@ -1,22 +1,8 @@
|
|
|
1
1
|
import type { Snippet } from "svelte";
|
|
2
|
-
|
|
3
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
4
|
-
$$bindings?: Bindings;
|
|
5
|
-
} & Exports;
|
|
6
|
-
(internal: unknown, props: Props & {
|
|
7
|
-
$$events?: Events;
|
|
8
|
-
$$slots?: Slots;
|
|
9
|
-
}): Exports & {
|
|
10
|
-
$set?: any;
|
|
11
|
-
$on?: any;
|
|
12
|
-
};
|
|
13
|
-
z_$$bindings?: Bindings;
|
|
14
|
-
}
|
|
15
|
-
declare const ForcePortalRoot: $$__sveltets_2_IsomorphicComponent<{
|
|
2
|
+
type $$ComponentProps = {
|
|
16
3
|
force: boolean;
|
|
17
4
|
children: Snippet;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
type ForcePortalRoot = InstanceType<typeof ForcePortalRoot>;
|
|
5
|
+
};
|
|
6
|
+
declare const ForcePortalRoot: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
7
|
+
type ForcePortalRoot = ReturnType<typeof ForcePortalRoot>;
|
|
22
8
|
export default ForcePortalRoot;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { disposables } from "../utils/disposables.js"
|
|
3
3
|
import { objectToFormEntries } from "../utils/form.js"
|
|
4
4
|
import FormResolver from "./FormResolver.svelte"
|
|
5
|
-
import
|
|
5
|
+
import { hoistFormFields } from "./form-fields.svelte.js"
|
|
6
6
|
import Hidden, { HiddenFeatures } from "./Hidden.svelte"
|
|
7
7
|
import { compact } from "../utils/object.js"
|
|
8
8
|
|
|
@@ -29,25 +29,30 @@
|
|
|
29
29
|
|
|
30
30
|
return d.addEventListener(form, "reset", onReset)
|
|
31
31
|
})
|
|
32
|
-
</script>
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<Hidden
|
|
38
|
-
features={HiddenFeatures.Hidden}
|
|
39
|
-
{...compact({
|
|
33
|
+
const fields = $derived(
|
|
34
|
+
objectToFormEntries(data).map(([name, value]) =>
|
|
35
|
+
compact({
|
|
40
36
|
key: name,
|
|
41
37
|
as: "input",
|
|
42
38
|
type: "hidden",
|
|
43
|
-
hidden: true,
|
|
44
|
-
readOnly: true,
|
|
45
39
|
form: formId,
|
|
46
40
|
disabled,
|
|
47
41
|
name,
|
|
48
42
|
value,
|
|
49
43
|
...overrides,
|
|
50
|
-
})
|
|
51
|
-
|
|
44
|
+
})
|
|
45
|
+
)
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
const hoisted = hoistFormFields(formFields)
|
|
49
|
+
</script>
|
|
50
|
+
|
|
51
|
+
{#snippet formFields()}
|
|
52
|
+
<FormResolver setForm={(value) => (form = value)} {formId} />
|
|
53
|
+
{#each fields as props}
|
|
54
|
+
<Hidden features={HiddenFeatures.Hidden} {...props} />
|
|
52
55
|
{/each}
|
|
53
|
-
|
|
56
|
+
{/snippet}
|
|
57
|
+
|
|
58
|
+
{#if !hoisted}{@render formFields()}{/if}
|
|
@@ -1,24 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
-
$$bindings?: Bindings;
|
|
4
|
-
} & Exports;
|
|
5
|
-
(internal: unknown, props: Props & {
|
|
6
|
-
$$events?: Events;
|
|
7
|
-
$$slots?: Slots;
|
|
8
|
-
}): Exports & {
|
|
9
|
-
$set?: any;
|
|
10
|
-
$on?: any;
|
|
11
|
-
};
|
|
12
|
-
z_$$bindings?: Bindings;
|
|
13
|
-
}
|
|
14
|
-
declare const FormFields: $$__sveltets_2_IsomorphicComponent<{
|
|
1
|
+
type $$ComponentProps = {
|
|
15
2
|
data: Record<string, any>;
|
|
16
3
|
overrides?: Record<string, any>;
|
|
17
4
|
form?: string;
|
|
18
5
|
disabled?: boolean;
|
|
19
6
|
onReset?: (e: Event) => void;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
type FormFields = InstanceType<typeof FormFields>;
|
|
7
|
+
};
|
|
8
|
+
declare const FormFields: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
9
|
+
type FormFields = ReturnType<typeof FormFields>;
|
|
24
10
|
export default FormFields;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from "svelte"
|
|
3
|
+
import Hidden, { HiddenFeatures } from "./Hidden.svelte"
|
|
4
|
+
import { createFormFieldsContext } from "./form-fields.svelte.js"
|
|
5
|
+
|
|
6
|
+
const { children }: { children?: Snippet } = $props()
|
|
7
|
+
|
|
8
|
+
const context = createFormFieldsContext()
|
|
9
|
+
const { fields } = $derived(context)
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
{#if children}{@render children()}{/if}
|
|
13
|
+
<Hidden features={HiddenFeatures.Hidden}>
|
|
14
|
+
{#each fields as field}
|
|
15
|
+
{@render field()}
|
|
16
|
+
{/each}
|
|
17
|
+
</Hidden>
|