@pzerelles/headlessui-svelte 2.1.1-next.1 → 2.1.2-next.11
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 +6 -10
- package/dist/button/Button.svelte.d.ts +34 -26
- package/dist/checkbox/Checkbox.svelte +43 -25
- package/dist/checkbox/Checkbox.svelte.d.ts +42 -28
- package/dist/close-button/CloseButton.svelte +5 -4
- package/dist/close-button/CloseButton.svelte.d.ts +36 -13
- package/dist/combobox/Combobox.svelte +2 -2
- package/dist/combobox/Combobox.svelte.d.ts +9 -9
- package/dist/data-interactive/DataInteractive.svelte +41 -0
- package/dist/data-interactive/DataInteractive.svelte.d.ts +39 -0
- package/dist/data-interactive/index.d.ts +1 -0
- package/dist/data-interactive/index.js +1 -0
- package/dist/description/Description.svelte +10 -53
- package/dist/description/Description.svelte.d.ts +15 -32
- package/dist/description/context.svelte.d.ts +17 -0
- package/dist/description/context.svelte.js +51 -0
- package/dist/dialog/Dialog.svelte +51 -0
- package/dist/dialog/Dialog.svelte.d.ts +60 -0
- package/dist/dialog/DialogBackdrop.svelte +39 -0
- package/dist/dialog/DialogBackdrop.svelte.d.ts +38 -0
- package/dist/dialog/DialogPanel.svelte +46 -0
- package/dist/dialog/DialogPanel.svelte.d.ts +40 -0
- package/dist/dialog/DialogTitle.svelte +29 -0
- package/dist/dialog/DialogTitle.svelte.d.ts +34 -0
- package/dist/dialog/InternalDialog.svelte +233 -0
- package/dist/dialog/InternalDialog.svelte.d.ts +42 -0
- package/dist/dialog/context.svelte.d.ts +15 -0
- package/dist/dialog/context.svelte.js +16 -0
- package/dist/dialog/index.d.ts +4 -0
- package/dist/dialog/index.js +4 -0
- package/dist/field/Field.svelte +8 -11
- package/dist/field/Field.svelte.d.ts +21 -17
- package/dist/fieldset/Fieldset.svelte +11 -9
- package/dist/fieldset/Fieldset.svelte.d.ts +21 -17
- package/dist/focus-trap/FocusTrap.svelte +325 -0
- package/dist/focus-trap/FocusTrap.svelte.d.ts +46 -0
- package/dist/focus-trap/FocusTrapFeatures.d.ts +14 -0
- package/dist/focus-trap/FocusTrapFeatures.js +15 -0
- package/dist/hooks/use-controllable.svelte.d.ts +1 -1
- package/dist/hooks/use-controllable.svelte.js +3 -3
- package/dist/hooks/use-did-element-move.svelte.js +5 -10
- package/dist/hooks/use-escape.svelte.d.ts +5 -0
- package/dist/hooks/use-escape.svelte.js +26 -0
- package/dist/hooks/use-event-listener.svelte.d.ts +6 -0
- package/dist/hooks/use-event-listener.svelte.js +12 -0
- package/dist/hooks/use-inert-others.svelte.d.ts +2 -2
- package/dist/hooks/use-inert-others.svelte.js +3 -3
- package/dist/hooks/use-is-mounted.svelte.d.ts +3 -0
- package/dist/hooks/use-is-mounted.svelte.js +14 -0
- package/dist/hooks/use-is-touch-device.svelte.d.ts +3 -0
- package/dist/hooks/use-is-touch-device.svelte.js +20 -0
- package/dist/hooks/use-root-containers.svelte.d.ts +9 -0
- package/dist/hooks/use-root-containers.svelte.js +50 -0
- package/dist/hooks/use-tab-direction.svelte.d.ts +7 -0
- package/dist/hooks/use-tab-direction.svelte.js +25 -0
- package/dist/hooks/use-transition.svelte.js +14 -13
- package/dist/hooks/use-tree-walker.svelte.d.ts +8 -0
- package/dist/hooks/use-tree-walker.svelte.js +19 -0
- package/dist/hooks/use-watch.svelte.d.ts +4 -0
- package/dist/hooks/use-watch.svelte.js +16 -0
- package/dist/hooks/use-window-event.svelte.d.ts +6 -0
- package/dist/hooks/use-window-event.svelte.js +12 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +10 -0
- package/dist/input/Input.svelte +59 -0
- package/dist/input/Input.svelte.d.ts +50 -0
- package/dist/input/index.d.ts +1 -0
- package/dist/input/index.js +1 -0
- package/dist/internal/FloatingProvider.svelte +12 -0
- package/dist/internal/FloatingProvider.svelte.d.ts +22 -0
- package/dist/internal/FocusSentinel.svelte.d.ts +4 -1
- package/dist/internal/ForcePortalRoot.svelte +6 -0
- package/dist/internal/ForcePortalRoot.svelte.d.ts +22 -0
- package/dist/internal/FormFields.svelte.d.ts +4 -1
- package/dist/internal/FormResolver.svelte.d.ts +4 -1
- package/dist/internal/Hidden.svelte +6 -14
- package/dist/internal/Hidden.svelte.d.ts +19 -15
- package/dist/internal/HiddenFeatures.d.ts +5 -0
- package/dist/internal/HiddenFeatures.js +9 -0
- package/dist/internal/HoistFormFields.svelte.d.ts +4 -1
- package/dist/internal/MainTreeProvider.svelte +45 -0
- package/dist/internal/MainTreeProvider.svelte.d.ts +31 -0
- package/dist/internal/Portal.svelte.d.ts +4 -1
- package/dist/internal/close-provider.d.ts +7 -0
- package/dist/internal/close-provider.js +7 -0
- 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 +50 -20
- package/dist/internal/floating.svelte.js +100 -271
- package/dist/internal/inner.svelte.d.ts +91 -0
- package/dist/internal/inner.svelte.js +202 -0
- package/dist/internal/open-closed.d.ts +1 -1
- package/dist/internal/open-closed.js +1 -1
- package/dist/label/Label.svelte +17 -65
- package/dist/label/Label.svelte.d.ts +19 -32
- package/dist/label/context.svelte.d.ts +17 -0
- package/dist/label/context.svelte.js +56 -0
- package/dist/legend/Legend.svelte +4 -3
- package/dist/legend/Legend.svelte.d.ts +33 -15
- package/dist/listbox/Listbox.svelte +40 -74
- package/dist/listbox/Listbox.svelte.d.ts +30 -72
- package/dist/listbox/ListboxButton.svelte +16 -18
- package/dist/listbox/ListboxButton.svelte.d.ts +16 -7
- package/dist/listbox/ListboxOption.svelte +10 -10
- package/dist/listbox/ListboxOption.svelte.d.ts +22 -11
- package/dist/listbox/ListboxOptions.svelte +62 -60
- package/dist/listbox/ListboxOptions.svelte.d.ts +23 -7
- package/dist/listbox/ListboxSelectedOption.svelte +15 -7
- package/dist/listbox/ListboxSelectedOption.svelte.d.ts +24 -14
- package/dist/listbox/context.svelte.d.ts +75 -0
- package/dist/listbox/context.svelte.js +36 -0
- package/dist/menu/Menu.svelte +235 -0
- package/dist/menu/Menu.svelte.d.ts +42 -0
- package/dist/menu/MenuButton.svelte +129 -0
- package/dist/menu/MenuButton.svelte.d.ts +52 -0
- package/dist/menu/MenuHeading.svelte +19 -0
- package/dist/menu/MenuHeading.svelte.d.ts +39 -0
- package/dist/menu/MenuItem.svelte +114 -0
- package/dist/menu/MenuItem.svelte.d.ts +49 -0
- package/dist/menu/MenuItems.svelte +248 -0
- package/dist/menu/MenuItems.svelte.d.ts +55 -0
- package/dist/menu/MenuSection.svelte +14 -0
- package/dist/menu/MenuSection.svelte.d.ts +35 -0
- package/dist/menu/MenuSeparator.svelte +9 -0
- package/dist/menu/MenuSeparator.svelte.d.ts +35 -0
- package/dist/menu/context.svelte.d.ts +47 -0
- package/dist/menu/context.svelte.js +21 -0
- package/dist/menu/index.d.ts +7 -0
- package/dist/menu/index.js +7 -0
- package/dist/portal/InternalPortal.svelte +22 -33
- package/dist/portal/InternalPortal.svelte.d.ts +16 -7
- package/dist/portal/Portal.svelte +4 -8
- package/dist/portal/Portal.svelte.d.ts +6 -6
- package/dist/portal/PortalGroup.svelte +5 -6
- package/dist/portal/PortalGroup.svelte.d.ts +16 -7
- package/dist/switch/Switch.svelte +41 -37
- package/dist/switch/Switch.svelte.d.ts +24 -7
- package/dist/switch/SwitchGroup.svelte +7 -8
- package/dist/switch/SwitchGroup.svelte.d.ts +14 -7
- package/dist/tabs/Tab.svelte +9 -14
- package/dist/tabs/Tab.svelte.d.ts +18 -6
- package/dist/tabs/TabGroup.svelte +20 -23
- package/dist/tabs/TabGroup.svelte.d.ts +19 -6
- package/dist/tabs/TabList.svelte +5 -7
- package/dist/tabs/TabList.svelte.d.ts +13 -6
- package/dist/tabs/TabPanel.svelte +30 -32
- package/dist/tabs/TabPanel.svelte.d.ts +19 -6
- package/dist/tabs/TabPanels.svelte +5 -6
- package/dist/tabs/TabPanels.svelte.d.ts +13 -6
- package/dist/textarea/Textarea.svelte +67 -0
- package/dist/textarea/Textarea.svelte.d.ts +50 -0
- package/dist/textarea/index.d.ts +1 -0
- package/dist/textarea/index.js +1 -0
- package/dist/transition/InternalTransitionChild.svelte +178 -0
- package/dist/transition/InternalTransitionChild.svelte.d.ts +55 -0
- package/dist/transition/Transition.svelte +89 -0
- package/dist/transition/Transition.svelte.d.ts +42 -0
- package/dist/transition/TransitionChild.svelte +16 -0
- package/dist/transition/TransitionChild.svelte.d.ts +44 -0
- package/dist/transition/context.svelte.d.ts +64 -0
- package/dist/transition/context.svelte.js +120 -0
- package/dist/transition/index.d.ts +2 -0
- package/dist/transition/index.js +2 -0
- package/dist/utils/ElementOrComponent.svelte +26 -0
- package/dist/utils/ElementOrComponent.svelte.d.ts +56 -0
- package/dist/utils/Generic.svelte +44 -0
- package/dist/utils/Generic.svelte.d.ts +35 -0
- package/dist/utils/StableCollection.svelte +1 -1
- package/dist/utils/StableCollection.svelte.d.ts +4 -1
- package/dist/utils/active-element-history.d.ts +1 -0
- package/dist/utils/active-element-history.js +35 -0
- package/dist/utils/alternative-types.d.ts +21 -0
- package/dist/utils/alternative-types.js +1 -0
- package/dist/utils/class-names.d.ts +1 -0
- package/dist/utils/class-names.js +10 -0
- package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +17 -0
- package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte.d.ts +23 -0
- package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +50 -0
- package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte.d.ts +41 -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/types.js +1 -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/focus-management.d.ts +2 -1
- package/dist/utils/focus-management.js +13 -13
- package/dist/utils/id.d.ts +1 -1
- package/dist/utils/id.js +1 -1
- package/dist/utils/on-document-ready.d.ts +1 -0
- package/dist/utils/on-document-ready.js +12 -0
- package/dist/utils/render.d.ts +3 -0
- package/dist/utils/render.js +63 -0
- package/dist/utils/state.d.ts +7 -1
- package/dist/utils/state.js +10 -6
- package/dist/utils/style.d.ts +2 -0
- package/dist/utils/style.js +6 -0
- package/dist/utils/types.d.ts +14 -17
- package/dist/utils/types.js +0 -5
- package/package.json +33 -31
- package/dist/internal/id.d.ts +0 -8
- package/dist/internal/id.js +0 -11
- package/dist/tabs/Button.svelte +0 -65
- package/dist/tabs/Button.svelte.d.ts +0 -39
- package/dist/utils/close.d.ts +0 -2
- package/dist/utils/close.js +0 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang="ts"
|
|
1
|
+
<script lang="ts" module>import { sortByDomNode } from "../utils/focus-management.js";
|
|
2
2
|
import { match } from "../utils/match.js";
|
|
3
3
|
import FocusSentinel from "../internal/FocusSentinel.svelte";
|
|
4
4
|
import { setContext, getContext, untrack } from "svelte";
|
|
@@ -23,7 +23,8 @@ export function useActions(component) {
|
|
|
23
23
|
}
|
|
24
24
|
</script>
|
|
25
25
|
|
|
26
|
-
<script lang="ts" generics="TTag extends ElementType">import StableCollection from "../utils/StableCollection.svelte";
|
|
26
|
+
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_TABS_TAG">import StableCollection from "../utils/StableCollection.svelte";
|
|
27
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte";
|
|
27
28
|
var Direction = /* @__PURE__ */ ((Direction2) => {
|
|
28
29
|
Direction2[Direction2["Forwards"] = 0] = "Forwards";
|
|
29
30
|
Direction2[Direction2["Backwards"] = 1] = "Backwards";
|
|
@@ -52,8 +53,8 @@ const stateReducer = (initialState) => {
|
|
|
52
53
|
},
|
|
53
54
|
setSelectedIndex(index) {
|
|
54
55
|
if (index === _state2.selectedIndex) return _state2;
|
|
55
|
-
let tabs = sortByDomNode(_state2.tabs, (tab) => tab.current);
|
|
56
|
-
let panels = sortByDomNode(_state2.panels, (panel) => panel.current);
|
|
56
|
+
let tabs = sortByDomNode(_state2.tabs, (tab) => tab.current ?? null);
|
|
57
|
+
let panels = sortByDomNode(_state2.panels, (panel) => panel.current ?? null);
|
|
57
58
|
let focusableTabs = tabs.filter((tab) => !tab?.current?.hasAttribute("disabled"));
|
|
58
59
|
let nextState = { ..._state2, tabs, panels };
|
|
59
60
|
if (
|
|
@@ -77,8 +78,8 @@ const stateReducer = (initialState) => {
|
|
|
77
78
|
return _state2;
|
|
78
79
|
}
|
|
79
80
|
let nextSelectedIndex = match(direction, {
|
|
80
|
-
[0 /* Forwards */]: () => tabs.findIndex((tab) =>
|
|
81
|
-
[1 /* Backwards */]: () => tabs.findIndex((tab) =>
|
|
81
|
+
[0 /* Forwards */]: () => tabs.findIndex((tab) => tab === focusableTabs[0]),
|
|
82
|
+
[1 /* Backwards */]: () => tabs.findIndex((tab) => tab === focusableTabs[focusableTabs.length - 1])
|
|
82
83
|
});
|
|
83
84
|
_state2 = {
|
|
84
85
|
...nextState,
|
|
@@ -88,50 +89,48 @@ const stateReducer = (initialState) => {
|
|
|
88
89
|
}
|
|
89
90
|
let before = tabs.slice(0, index);
|
|
90
91
|
let after = tabs.slice(index);
|
|
91
|
-
let next = [...after, ...before].find((tab) => focusableTabs.some((_tab) =>
|
|
92
|
+
let next = [...after, ...before].find((tab) => focusableTabs.some((_tab) => _tab === tab));
|
|
92
93
|
if (!next) {
|
|
93
94
|
_state2 = nextState;
|
|
94
95
|
return _state2;
|
|
95
96
|
}
|
|
96
|
-
let selectedIndex2 = tabs.findIndex((tab) =>
|
|
97
|
+
let selectedIndex2 = tabs.findIndex((tab) => tab === next) ?? _state2.selectedIndex;
|
|
97
98
|
if (selectedIndex2 === -1) selectedIndex2 = _state2.selectedIndex;
|
|
98
99
|
_state2 = { ...nextState, selectedIndex: selectedIndex2 };
|
|
99
100
|
return _state2;
|
|
100
101
|
},
|
|
101
102
|
registerTab(tab) {
|
|
102
|
-
if (_state2.tabs.some((_tab) =>
|
|
103
|
-
_state2.tabs = sortByDomNode([..._state2.tabs, tab], (tab2) => tab2.current);
|
|
103
|
+
if (_state2.tabs.some((_tab) => _tab === tab)) return _state2;
|
|
104
|
+
_state2.tabs = sortByDomNode([..._state2.tabs, tab], (tab2) => tab2.current ?? null);
|
|
104
105
|
let activeTab = _state2.tabs[_state2.selectedIndex];
|
|
105
106
|
if (!_state2.info.isControlled) {
|
|
106
|
-
const selectedIndex2 = _state2.tabs.findIndex((tab2) =>
|
|
107
|
+
const selectedIndex2 = _state2.tabs.findIndex((tab2) => tab2 === activeTab);
|
|
107
108
|
if (selectedIndex2 !== _state2.selectedIndex) _state2.selectedIndex = selectedIndex2;
|
|
108
109
|
}
|
|
109
110
|
return _state2;
|
|
110
111
|
},
|
|
111
112
|
unregisterTab(tab) {
|
|
112
|
-
_state2.tabs = _state2.tabs.filter((_tab) =>
|
|
113
|
+
_state2.tabs = _state2.tabs.filter((_tab) => _tab !== tab);
|
|
113
114
|
return _state2;
|
|
114
115
|
},
|
|
115
116
|
registerPanel(panel) {
|
|
116
|
-
if (_state2.panels.some((_panel) =>
|
|
117
|
-
_state2.panels = sortByDomNode([..._state2.panels, panel], (panel2) => panel2.current);
|
|
117
|
+
if (_state2.panels.some((_panel) => _panel === panel)) return _state2;
|
|
118
|
+
_state2.panels = sortByDomNode([..._state2.panels, panel], (panel2) => panel2.current ?? null);
|
|
118
119
|
return _state2;
|
|
119
120
|
},
|
|
120
121
|
unregisterPanel(panel) {
|
|
121
|
-
|
|
122
|
-
_state2.panels = _state2.panels.filter((_panel) => !$state.is(_panel, panel));
|
|
122
|
+
_state2.panels = _state2.panels.filter((_panel) => _panel !== panel);
|
|
123
123
|
return _state2;
|
|
124
124
|
}
|
|
125
125
|
};
|
|
126
126
|
};
|
|
127
127
|
let {
|
|
128
|
-
|
|
128
|
+
ref = $bindable(),
|
|
129
129
|
defaultIndex = 0,
|
|
130
130
|
vertical = false,
|
|
131
131
|
manual = false,
|
|
132
132
|
onchange,
|
|
133
133
|
selectedIndex = void 0,
|
|
134
|
-
children,
|
|
135
134
|
...theirProps
|
|
136
135
|
} = $props();
|
|
137
136
|
const orientation = $derived(vertical ? "vertical" : "horizontal");
|
|
@@ -215,10 +214,10 @@ $effect(() => {
|
|
|
215
214
|
$effect(() => {
|
|
216
215
|
if (realSelectedIndex === void 0) return;
|
|
217
216
|
if (_state.tabs.length <= 0) return;
|
|
218
|
-
let sorted = sortByDomNode(_state.tabs, (tab) => tab.current);
|
|
217
|
+
let sorted = sortByDomNode(_state.tabs, (tab) => tab.current ?? null);
|
|
219
218
|
let didOrderChange = sorted.some((tab, i) => _state.tabs[i] !== tab);
|
|
220
219
|
if (didOrderChange) {
|
|
221
|
-
change(sorted.findIndex((tab) =>
|
|
220
|
+
change(sorted.findIndex((tab) => tab === _state.tabs[realSelectedIndex]));
|
|
222
221
|
}
|
|
223
222
|
});
|
|
224
223
|
</script>
|
|
@@ -238,7 +237,5 @@ $effect(() => {
|
|
|
238
237
|
}}
|
|
239
238
|
/>
|
|
240
239
|
{/if}
|
|
241
|
-
<
|
|
242
|
-
{#if children}{@render children(slot)}{/if}
|
|
243
|
-
</svelte:element>
|
|
240
|
+
<ElementOrComponent {theirProps} defaultTag={DEFAULT_TABS_TAG} name="TabGroup" bind:ref />
|
|
244
241
|
</StableCollection>
|
|
@@ -31,24 +31,37 @@ type TabsActionsContext = {
|
|
|
31
31
|
};
|
|
32
32
|
export declare function useActions(component: string): TabsActionsContext;
|
|
33
33
|
import type { MutableRefObject } from "../utils/ref.svelte.js";
|
|
34
|
-
declare class __sveltets_Render<TTag extends ElementType> {
|
|
35
|
-
props():
|
|
34
|
+
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_TABS_TAG> {
|
|
35
|
+
props(): {
|
|
36
|
+
as?: TTag | undefined;
|
|
37
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "onchange" | "vertical" | "manual" | "defaultIndex" | "selectedIndex"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
38
|
+
children?: import("../utils/types.js").Children<TabsRenderPropArg> | undefined;
|
|
39
|
+
ref?: HTMLElement;
|
|
40
|
+
} & (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) ? {
|
|
41
|
+
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: TabsRenderPropArg) => string) | undefined;
|
|
42
|
+
} : {}) & {
|
|
43
|
+
defaultIndex?: number;
|
|
44
|
+
onchange?: (index: number) => void;
|
|
45
|
+
selectedIndex?: number;
|
|
46
|
+
vertical?: boolean;
|
|
47
|
+
manual?: boolean;
|
|
48
|
+
};
|
|
36
49
|
events(): {} & {
|
|
37
50
|
[evt: string]: CustomEvent<any>;
|
|
38
51
|
};
|
|
39
52
|
slots(): {};
|
|
40
|
-
bindings(): "";
|
|
53
|
+
bindings(): "ref";
|
|
41
54
|
exports(): {};
|
|
42
55
|
}
|
|
43
56
|
interface $$IsomorphicComponent {
|
|
44
|
-
new <TTag extends ElementType>(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']>> & {
|
|
57
|
+
new <TTag extends ElementType = typeof DEFAULT_TABS_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']>> & {
|
|
45
58
|
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
46
59
|
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
47
|
-
<TTag extends ElementType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
60
|
+
<TTag extends ElementType = typeof DEFAULT_TABS_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
48
61
|
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
49
62
|
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
50
63
|
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
51
64
|
}
|
|
52
65
|
declare const TabGroup: $$IsomorphicComponent;
|
|
53
|
-
type TabGroup<TTag extends ElementType> = InstanceType<typeof TabGroup<TTag>>;
|
|
66
|
+
type TabGroup<TTag extends ElementType = typeof DEFAULT_TABS_TAG> = InstanceType<typeof TabGroup<TTag>>;
|
|
54
67
|
export default TabGroup;
|
package/dist/tabs/TabList.svelte
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
<script lang="ts"
|
|
2
|
-
const DEFAULT_LIST_TAG = "div";
|
|
1
|
+
<script lang="ts" module>const DEFAULT_LIST_TAG = "div";
|
|
3
2
|
</script>
|
|
4
3
|
|
|
5
|
-
<script lang="ts" generics="TTag extends ElementType">import { useData } from "./TabGroup.svelte";
|
|
4
|
+
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_LIST_TAG">import { useData } from "./TabGroup.svelte";
|
|
5
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte";
|
|
6
6
|
const data = useData("Tab.List");
|
|
7
7
|
const { orientation, selectedIndex } = $derived(data);
|
|
8
8
|
const slot = $derived({ selectedIndex });
|
|
9
|
-
|
|
9
|
+
let { ref = $bindable(), ...theirProps } = $props();
|
|
10
10
|
const ourProps = $derived({
|
|
11
11
|
role: "tablist",
|
|
12
12
|
"aria-orientation": orientation
|
|
13
13
|
});
|
|
14
14
|
</script>
|
|
15
15
|
|
|
16
|
-
<
|
|
17
|
-
{#if children}{@render children(slot)}{/if}
|
|
18
|
-
</svelte:element>
|
|
16
|
+
<ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_LIST_TAG} name="TabList" bind:ref />
|
|
@@ -5,24 +5,31 @@ type ListRenderPropArg = {
|
|
|
5
5
|
};
|
|
6
6
|
type ListPropsWeControl = "aria-orientation" | "role";
|
|
7
7
|
export type TabListProps<TTag extends ElementType = typeof DEFAULT_LIST_TAG> = Props<TTag, ListRenderPropArg, ListPropsWeControl, {}>;
|
|
8
|
-
declare class __sveltets_Render<TTag extends ElementType> {
|
|
9
|
-
props():
|
|
8
|
+
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_LIST_TAG> {
|
|
9
|
+
props(): {
|
|
10
|
+
as?: TTag | undefined;
|
|
11
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | ListPropsWeControl> 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<ListRenderPropArg> | 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: ListRenderPropArg) => string) | undefined;
|
|
16
|
+
} : {});
|
|
10
17
|
events(): {} & {
|
|
11
18
|
[evt: string]: CustomEvent<any>;
|
|
12
19
|
};
|
|
13
20
|
slots(): {};
|
|
14
|
-
bindings(): "";
|
|
21
|
+
bindings(): "ref";
|
|
15
22
|
exports(): {};
|
|
16
23
|
}
|
|
17
24
|
interface $$IsomorphicComponent {
|
|
18
|
-
new <TTag extends ElementType>(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
|
+
new <TTag extends ElementType = typeof DEFAULT_LIST_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']>> & {
|
|
19
26
|
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
20
27
|
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
21
|
-
<TTag extends ElementType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
28
|
+
<TTag extends ElementType = typeof DEFAULT_LIST_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
22
29
|
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
23
30
|
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
24
31
|
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
25
32
|
}
|
|
26
33
|
declare const TabList: $$IsomorphicComponent;
|
|
27
|
-
type TabList<TTag extends ElementType> = InstanceType<typeof TabList<TTag>>;
|
|
34
|
+
type TabList<TTag extends ElementType = typeof DEFAULT_LIST_TAG> = InstanceType<typeof TabList<TTag>>;
|
|
28
35
|
export default TabList;
|
|
@@ -1,34 +1,30 @@
|
|
|
1
|
-
<script lang="ts"
|
|
1
|
+
<script lang="ts" module>const DEFAULT_PANEL_TAG = "div";
|
|
2
2
|
const PanelRenderFeatures = RenderFeatures.RenderStrategy | RenderFeatures.Static;
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
|
-
<script lang="ts" generics="TTag extends ElementType">import { useId } from "../hooks/use-id.js";
|
|
6
|
-
import { RenderFeatures } from "../utils/render.js";
|
|
5
|
+
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_PANEL_TAG">import { useId } from "../hooks/use-id.js";
|
|
6
|
+
import { mergeProps, RenderFeatures } from "../utils/render.js";
|
|
7
7
|
import { useActions, useData } from "./TabGroup.svelte";
|
|
8
8
|
import { useStableCollectionIndex } from "../utils/StableCollection.svelte";
|
|
9
9
|
import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
|
|
10
10
|
import Hidden from "../internal/Hidden.svelte";
|
|
11
|
-
import { stateFromSlot } from "../utils/state.js";
|
|
12
11
|
import { onMount } from "svelte";
|
|
12
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte";
|
|
13
13
|
const internalId = useId();
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
let {
|
|
15
|
+
ref = $bindable(),
|
|
16
16
|
id = `headlessui-tabs-panel-${internalId}`,
|
|
17
17
|
tabIndex = 0,
|
|
18
|
-
children,
|
|
19
|
-
static: isStatic = false,
|
|
20
|
-
unmount = true,
|
|
21
18
|
...theirProps
|
|
22
19
|
} = $props();
|
|
23
20
|
const data = useData("Tab.Panel");
|
|
24
21
|
const { selectedIndex, tabs, panels } = $derived(data);
|
|
25
22
|
const actions = useActions("Tab.Panel");
|
|
26
|
-
|
|
27
|
-
const panelRef = $derived({ current: internalPanelRef });
|
|
23
|
+
const panelRef = $derived({ current: ref });
|
|
28
24
|
onMount(() => actions.registerPanel(panelRef));
|
|
29
25
|
const mySSRIndex = useStableCollectionIndex("panels");
|
|
30
26
|
const myIndex = $derived.by(() => {
|
|
31
|
-
const index = tabs.findIndex((panel) =>
|
|
27
|
+
const index = tabs.findIndex((panel) => panel === panelRef);
|
|
32
28
|
return index === -1 ? mySSRIndex : index;
|
|
33
29
|
});
|
|
34
30
|
const selected = $derived(myIndex === selectedIndex);
|
|
@@ -37,27 +33,29 @@ const slot = $derived({
|
|
|
37
33
|
selected,
|
|
38
34
|
focus
|
|
39
35
|
});
|
|
40
|
-
const ourProps = $derived(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
36
|
+
const ourProps = $derived(
|
|
37
|
+
mergeProps(
|
|
38
|
+
{
|
|
39
|
+
id,
|
|
40
|
+
role: "tabpanel",
|
|
41
|
+
"aria-labelledby": tabs[myIndex]?.current?.id,
|
|
42
|
+
tabIndex: selected ? 0 : -1
|
|
43
|
+
},
|
|
44
|
+
focusProps
|
|
45
|
+
)
|
|
46
|
+
);
|
|
48
47
|
</script>
|
|
49
48
|
|
|
50
|
-
{#if !selected && unmount && !
|
|
51
|
-
<Hidden
|
|
49
|
+
{#if !selected && (theirProps.unmount ?? true) && !(theirProps.static ?? false)}
|
|
50
|
+
<Hidden aria-hidden="true" {...ourProps} bind:ref />
|
|
52
51
|
{:else}
|
|
53
|
-
<
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
{
|
|
57
|
-
{
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
</svelte:element>
|
|
52
|
+
<ElementOrComponent
|
|
53
|
+
{ourProps}
|
|
54
|
+
{theirProps}
|
|
55
|
+
{slot}
|
|
56
|
+
defaultTag={DEFAULT_PANEL_TAG}
|
|
57
|
+
features={PanelRenderFeatures}
|
|
58
|
+
name="TabPanel"
|
|
59
|
+
bind:ref
|
|
60
|
+
/>
|
|
63
61
|
{/if}
|
|
@@ -11,24 +11,37 @@ export type TabPanelProps<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> =
|
|
|
11
11
|
tabIndex?: number;
|
|
12
12
|
}>;
|
|
13
13
|
import { type PropsForFeatures } from "../utils/render.js";
|
|
14
|
-
declare class __sveltets_Render<TTag extends ElementType> {
|
|
15
|
-
props():
|
|
14
|
+
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> {
|
|
15
|
+
props(): {
|
|
16
|
+
as?: TTag | undefined;
|
|
17
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "unmount" | "static" | "id" | "tabIndex" | PanelPropsWeControl> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
18
|
+
children?: import("../utils/types.js").Children<PanelRenderPropArg> | undefined;
|
|
19
|
+
ref?: HTMLElement;
|
|
20
|
+
} & (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) ? {
|
|
21
|
+
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: PanelRenderPropArg) => string) | undefined;
|
|
22
|
+
} : {}) & {
|
|
23
|
+
static?: boolean | undefined;
|
|
24
|
+
unmount?: boolean | undefined;
|
|
25
|
+
} & {
|
|
26
|
+
id?: string;
|
|
27
|
+
tabIndex?: number;
|
|
28
|
+
};
|
|
16
29
|
events(): {} & {
|
|
17
30
|
[evt: string]: CustomEvent<any>;
|
|
18
31
|
};
|
|
19
32
|
slots(): {};
|
|
20
|
-
bindings(): "";
|
|
33
|
+
bindings(): "ref";
|
|
21
34
|
exports(): {};
|
|
22
35
|
}
|
|
23
36
|
interface $$IsomorphicComponent {
|
|
24
|
-
new <TTag extends ElementType>(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']>> & {
|
|
37
|
+
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']>> & {
|
|
25
38
|
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
26
39
|
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
27
|
-
<TTag extends ElementType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
40
|
+
<TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
28
41
|
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
29
42
|
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
30
43
|
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
31
44
|
}
|
|
32
45
|
declare const TabPanel: $$IsomorphicComponent;
|
|
33
|
-
type TabPanel<TTag extends ElementType> = InstanceType<typeof TabPanel<TTag>>;
|
|
46
|
+
type TabPanel<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> = InstanceType<typeof TabPanel<TTag>>;
|
|
34
47
|
export default TabPanel;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
<script lang="ts"
|
|
1
|
+
<script lang="ts" module>import ElementOrComponent from "../utils/ElementOrComponent.svelte";
|
|
2
|
+
import { useData } from "./TabGroup.svelte";
|
|
2
3
|
let DEFAULT_PANELS_TAG = "div";
|
|
3
4
|
</script>
|
|
4
5
|
|
|
5
|
-
<script lang="ts" generics="TTag extends ElementType">const data = useData("Tab.Panels");
|
|
6
|
+
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_PANELS_TAG">const data = useData("Tab.Panels");
|
|
6
7
|
const { selectedIndex } = $derived(data);
|
|
7
8
|
const slot = $derived({ selectedIndex });
|
|
8
|
-
|
|
9
|
+
let { ref = $bindable(), ...theirProps } = $props();
|
|
9
10
|
</script>
|
|
10
11
|
|
|
11
|
-
<
|
|
12
|
-
{#if children}{@render children(slot)}{/if}
|
|
13
|
-
</svelte:element>
|
|
12
|
+
<ElementOrComponent {theirProps} {slot} defaultTag={DEFAULT_PANELS_TAG} name="TabPanel" bind:ref />
|
|
@@ -4,24 +4,31 @@ type PanelsRenderPropArg = {
|
|
|
4
4
|
selectedIndex: number;
|
|
5
5
|
};
|
|
6
6
|
export type TabPanelsProps<TTag extends ElementType = typeof DEFAULT_PANELS_TAG> = Props<TTag, PanelsRenderPropArg>;
|
|
7
|
-
declare class __sveltets_Render<TTag extends ElementType> {
|
|
8
|
-
props():
|
|
7
|
+
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_PANELS_TAG> {
|
|
8
|
+
props(): {
|
|
9
|
+
as?: TTag | undefined;
|
|
10
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "as" | "children" | "refName" | "class"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
11
|
+
children?: import("../utils/types.js").Children<PanelsRenderPropArg> | undefined;
|
|
12
|
+
ref?: HTMLElement;
|
|
13
|
+
} & (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) ? {
|
|
14
|
+
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: PanelsRenderPropArg) => string) | undefined;
|
|
15
|
+
} : {});
|
|
9
16
|
events(): {} & {
|
|
10
17
|
[evt: string]: CustomEvent<any>;
|
|
11
18
|
};
|
|
12
19
|
slots(): {};
|
|
13
|
-
bindings(): "";
|
|
20
|
+
bindings(): "ref";
|
|
14
21
|
exports(): {};
|
|
15
22
|
}
|
|
16
23
|
interface $$IsomorphicComponent {
|
|
17
|
-
new <TTag extends ElementType>(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']>> & {
|
|
24
|
+
new <TTag extends ElementType = typeof DEFAULT_PANELS_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']>> & {
|
|
18
25
|
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
19
26
|
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
20
|
-
<TTag extends ElementType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
27
|
+
<TTag extends ElementType = typeof DEFAULT_PANELS_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
21
28
|
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
22
29
|
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
23
30
|
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
24
31
|
}
|
|
25
32
|
declare const TabPanels: $$IsomorphicComponent;
|
|
26
|
-
type TabPanels<TTag extends ElementType> = InstanceType<typeof TabPanels<TTag>>;
|
|
33
|
+
type TabPanels<TTag extends ElementType = typeof DEFAULT_PANELS_TAG> = InstanceType<typeof TabPanels<TTag>>;
|
|
27
34
|
export default TabPanels;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<script lang="ts" module>const DEFAULT_TEXTAREA_TAG = "textarea";
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_TEXTAREA_TAG, TValue = string">import { htmlid } from "../utils/id.js";
|
|
5
|
+
import { useDisabled } from "../hooks/use-disabled.js";
|
|
6
|
+
import { useProvidedId } from "../utils/id.js";
|
|
7
|
+
import { useLabelledBy } from "../label/context.svelte.js";
|
|
8
|
+
import { useDescribedBy } from "../description/context.svelte.js";
|
|
9
|
+
import { useHover } from "../hooks/use-hover.svelte.js";
|
|
10
|
+
import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
|
|
11
|
+
import { mergeProps } from "../utils/render.js";
|
|
12
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte";
|
|
13
|
+
const internalId = htmlid();
|
|
14
|
+
const providedId = useProvidedId();
|
|
15
|
+
const providedDisabled = useDisabled();
|
|
16
|
+
let {
|
|
17
|
+
ref = $bindable(),
|
|
18
|
+
value = $bindable(),
|
|
19
|
+
id = providedId || `headlessui-input-${internalId}`,
|
|
20
|
+
disabled: theirDisabled = false,
|
|
21
|
+
autofocus = false,
|
|
22
|
+
invalid = false,
|
|
23
|
+
...theirProps
|
|
24
|
+
} = $props();
|
|
25
|
+
const disabled = $derived(providedDisabled?.value ?? theirDisabled);
|
|
26
|
+
const labelledBy = useLabelledBy();
|
|
27
|
+
const describedBy = useDescribedBy();
|
|
28
|
+
const { isFocusVisible: focus, focusProps } = $derived(
|
|
29
|
+
useFocusRing({
|
|
30
|
+
get autofocus() {
|
|
31
|
+
return autofocus;
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
);
|
|
35
|
+
const { isHovered: hover, hoverProps } = $derived(
|
|
36
|
+
useHover({
|
|
37
|
+
get disabled() {
|
|
38
|
+
return disabled;
|
|
39
|
+
}
|
|
40
|
+
})
|
|
41
|
+
);
|
|
42
|
+
const ourProps = $derived(
|
|
43
|
+
mergeProps(
|
|
44
|
+
{
|
|
45
|
+
id,
|
|
46
|
+
"aria-labelledby": labelledBy?.value,
|
|
47
|
+
"aria-describedby": describedBy?.value,
|
|
48
|
+
"aria-invalid": invalid ? "" : void 0,
|
|
49
|
+
disabled: disabled || void 0,
|
|
50
|
+
autofocus
|
|
51
|
+
},
|
|
52
|
+
focusProps,
|
|
53
|
+
hoverProps
|
|
54
|
+
)
|
|
55
|
+
);
|
|
56
|
+
const slot = $derived({ disabled, invalid, hover, focus, autofocus });
|
|
57
|
+
</script>
|
|
58
|
+
|
|
59
|
+
<ElementOrComponent
|
|
60
|
+
{ourProps}
|
|
61
|
+
{theirProps}
|
|
62
|
+
{slot}
|
|
63
|
+
defaultTag={DEFAULT_TEXTAREA_TAG}
|
|
64
|
+
name="Textarea"
|
|
65
|
+
bind:ref
|
|
66
|
+
bind:value
|
|
67
|
+
/>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ElementType, Props, PropsOf } from "../utils/types.js";
|
|
2
|
+
declare const DEFAULT_TEXTAREA_TAG: "textarea";
|
|
3
|
+
type TextareaRenderPropArg = {
|
|
4
|
+
disabled: boolean;
|
|
5
|
+
hover: boolean;
|
|
6
|
+
focus: boolean;
|
|
7
|
+
autofocus: boolean;
|
|
8
|
+
invalid: boolean;
|
|
9
|
+
};
|
|
10
|
+
type TextareaPropsWeControl = "aria-labelledby" | "aria-describedby";
|
|
11
|
+
export type TextareaProps<TTag extends ElementType = typeof DEFAULT_TEXTAREA_TAG, TValue = string> = Props<TTag, TextareaRenderPropArg, TextareaPropsWeControl, {
|
|
12
|
+
value?: TValue;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
invalid?: boolean;
|
|
15
|
+
autofocus?: boolean;
|
|
16
|
+
}>;
|
|
17
|
+
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_TEXTAREA_TAG, TValue = string> {
|
|
18
|
+
props(): {
|
|
19
|
+
as?: TTag | undefined;
|
|
20
|
+
value?: TValue | undefined;
|
|
21
|
+
} & (Exclude<keyof PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "invalid" | "disabled" | "autofocus" | "value" | TextareaPropsWeControl> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
|
|
22
|
+
children?: import("../utils/types.js").Children<TextareaRenderPropArg> | undefined;
|
|
23
|
+
ref?: HTMLElement;
|
|
24
|
+
} & (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) ? {
|
|
25
|
+
class?: PropsOf<TTag>["class"] | ((bag: TextareaRenderPropArg) => string) | undefined;
|
|
26
|
+
} : {}) & {
|
|
27
|
+
value?: TValue | undefined;
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
invalid?: boolean;
|
|
30
|
+
autofocus?: boolean;
|
|
31
|
+
};
|
|
32
|
+
events(): {} & {
|
|
33
|
+
[evt: string]: CustomEvent<any>;
|
|
34
|
+
};
|
|
35
|
+
slots(): {};
|
|
36
|
+
bindings(): "ref" | "value";
|
|
37
|
+
exports(): {};
|
|
38
|
+
}
|
|
39
|
+
interface $$IsomorphicComponent {
|
|
40
|
+
new <TTag extends ElementType = typeof DEFAULT_TEXTAREA_TAG, TValue = string>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag, TValue>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag, TValue>['props']>, ReturnType<__sveltets_Render<TTag, TValue>['events']>, ReturnType<__sveltets_Render<TTag, TValue>['slots']>> & {
|
|
41
|
+
$$bindings?: ReturnType<__sveltets_Render<TTag, TValue>['bindings']>;
|
|
42
|
+
} & ReturnType<__sveltets_Render<TTag, TValue>['exports']>;
|
|
43
|
+
<TTag extends ElementType = typeof DEFAULT_TEXTAREA_TAG, TValue = string>(internal: unknown, props: ReturnType<__sveltets_Render<TTag, TValue>['props']> & {
|
|
44
|
+
$$events?: ReturnType<__sveltets_Render<TTag, TValue>['events']>;
|
|
45
|
+
}): ReturnType<__sveltets_Render<TTag, TValue>['exports']>;
|
|
46
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
47
|
+
}
|
|
48
|
+
declare const Textarea: $$IsomorphicComponent;
|
|
49
|
+
type Textarea<TTag extends ElementType = typeof DEFAULT_TEXTAREA_TAG, TValue = string> = InstanceType<typeof Textarea<TTag, TValue>>;
|
|
50
|
+
export default Textarea;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Textarea, type TextareaProps } from "./Textarea.svelte";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Textarea } from "./Textarea.svelte";
|