@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,54 +1,23 @@
|
|
|
1
|
-
<script lang="ts"
|
|
1
|
+
<script lang="ts" module>import { useByComparator } from "../hooks/use-by-comparator.js";
|
|
2
2
|
import { useControllable } from "../hooks/use-controllable.svelte.js";
|
|
3
3
|
import { useDisabled } from "../hooks/use-disabled.js";
|
|
4
4
|
import { calculateActiveIndex, Focus } from "../utils/calculate-active-index.js";
|
|
5
5
|
import { FocusableMode, isFocusableElement, sortByDomNode } from "../utils/focus-management.js";
|
|
6
6
|
import { match } from "../utils/match.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { setContext } from "svelte";
|
|
8
|
+
import { ActivationTrigger, ListboxStates, ValueMode } from "./context.svelte.js";
|
|
9
9
|
let DEFAULT_LISTBOX_TAG = "svelte:fragment";
|
|
10
|
-
export
|
|
11
|
-
ListboxStates2[ListboxStates2["Open"] = 0] = "Open";
|
|
12
|
-
ListboxStates2[ListboxStates2["Closed"] = 1] = "Closed";
|
|
13
|
-
return ListboxStates2;
|
|
14
|
-
})(ListboxStates || {});
|
|
15
|
-
export var ValueMode = /* @__PURE__ */ ((ValueMode2) => {
|
|
16
|
-
ValueMode2[ValueMode2["Single"] = 0] = "Single";
|
|
17
|
-
ValueMode2[ValueMode2["Multi"] = 1] = "Multi";
|
|
18
|
-
return ValueMode2;
|
|
19
|
-
})(ValueMode || {});
|
|
20
|
-
export var ActivationTrigger = /* @__PURE__ */ ((ActivationTrigger2) => {
|
|
21
|
-
ActivationTrigger2[ActivationTrigger2["Pointer"] = 0] = "Pointer";
|
|
22
|
-
ActivationTrigger2[ActivationTrigger2["Other"] = 1] = "Other";
|
|
23
|
-
return ActivationTrigger2;
|
|
24
|
-
})(ActivationTrigger || {});
|
|
25
|
-
export function useActions(component) {
|
|
26
|
-
const context = getContext("ListboxActionsContext");
|
|
27
|
-
if (!context) {
|
|
28
|
-
let err = new Error(`<${component} /> is missing a parent <Listbox /> component.`);
|
|
29
|
-
if (Error.captureStackTrace) Error.captureStackTrace(err, useActions);
|
|
30
|
-
throw err;
|
|
31
|
-
}
|
|
32
|
-
return context;
|
|
33
|
-
}
|
|
34
|
-
export function useData(component) {
|
|
35
|
-
const context = getContext("ListboxData");
|
|
36
|
-
if (context === null) {
|
|
37
|
-
let err = new Error(`<${component} /> is missing a parent <Listbox /> component.`);
|
|
38
|
-
if (Error.captureStackTrace) Error.captureStackTrace(err, useData);
|
|
39
|
-
throw err;
|
|
40
|
-
}
|
|
41
|
-
return context;
|
|
42
|
-
}
|
|
10
|
+
export * from "./context.svelte.js";
|
|
43
11
|
</script>
|
|
44
12
|
|
|
45
|
-
<script lang="ts" generics="TTag extends ElementType
|
|
13
|
+
<script lang="ts" generics="TType, TActualType, TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG">import { disposables } from "../utils/disposables.js";
|
|
46
14
|
import FormFields from "../internal/FormFields.svelte";
|
|
47
|
-
import {
|
|
15
|
+
import { useFloatingProvider } from "../internal/floating.svelte.js";
|
|
48
16
|
import { createOpenClosedContext, State } from "../internal/open-closed.js";
|
|
49
|
-
import {
|
|
50
|
-
import { useLabels } from "../label/Label.svelte";
|
|
17
|
+
import { useLabels } from "../label/context.svelte.js";
|
|
51
18
|
import { useOutsideClick } from "../hooks/use-outside-click.svelte.js";
|
|
19
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte";
|
|
20
|
+
import { SvelteMap } from "svelte/reactivity";
|
|
52
21
|
function adjustOrderedState(state, adjustment = (i) => i) {
|
|
53
22
|
let currentActiveOption = state.activeOptionIndex !== null ? state.options[state.activeOptionIndex] : null;
|
|
54
23
|
let sortedOptions = sortByDomNode(
|
|
@@ -202,11 +171,11 @@ const stateReducer = (initialState) => {
|
|
|
202
171
|
_state2.searchQuery = "";
|
|
203
172
|
return _state2;
|
|
204
173
|
},
|
|
205
|
-
registerOption(
|
|
206
|
-
let option = { id
|
|
174
|
+
registerOption(id, dataRef) {
|
|
175
|
+
let option = { id, dataRef };
|
|
207
176
|
let adjustedState = adjustOrderedState(_state2, (options) => [...options, option]);
|
|
208
177
|
if (_state2.activeOptionIndex === null) {
|
|
209
|
-
if (isSelected(
|
|
178
|
+
if (isSelected(dataRef.current.value)) {
|
|
210
179
|
adjustedState.activeOptionIndex = adjustedState.options.indexOf(option);
|
|
211
180
|
}
|
|
212
181
|
}
|
|
@@ -214,9 +183,9 @@ const stateReducer = (initialState) => {
|
|
|
214
183
|
_state2.activeOptionIndex = adjustedState.activeOptionIndex;
|
|
215
184
|
return _state2;
|
|
216
185
|
},
|
|
217
|
-
unregisterOption(
|
|
186
|
+
unregisterOption(id) {
|
|
218
187
|
let adjustedState = adjustOrderedState(_state2, (options) => {
|
|
219
|
-
let idx = options.findIndex((a) => a.id ===
|
|
188
|
+
let idx = options.findIndex((a) => a.id === id);
|
|
220
189
|
if (idx !== -1) options.splice(idx, 1);
|
|
221
190
|
return options;
|
|
222
191
|
});
|
|
@@ -227,12 +196,8 @@ const stateReducer = (initialState) => {
|
|
|
227
196
|
}
|
|
228
197
|
};
|
|
229
198
|
};
|
|
230
|
-
const listboxActionsContext = null;
|
|
231
|
-
setContext("ListboxActionsContext", listboxActionsContext);
|
|
232
|
-
const listboxDataContext = null;
|
|
233
|
-
setContext("ListboxDataContext", listboxDataContext);
|
|
234
199
|
let {
|
|
235
|
-
|
|
200
|
+
ref = $bindable(),
|
|
236
201
|
value: controlledValue,
|
|
237
202
|
defaultValue,
|
|
238
203
|
form,
|
|
@@ -244,7 +209,6 @@ let {
|
|
|
244
209
|
horizontal = false,
|
|
245
210
|
multiple = false,
|
|
246
211
|
__demoMode = false,
|
|
247
|
-
children,
|
|
248
212
|
...theirProps
|
|
249
213
|
} = $props();
|
|
250
214
|
const providedDisabled = useDisabled();
|
|
@@ -269,10 +233,10 @@ const _state = stateReducer({
|
|
|
269
233
|
optionsVisible: false,
|
|
270
234
|
__demoMode
|
|
271
235
|
});
|
|
272
|
-
const
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
const
|
|
236
|
+
const optionsProps = $state({ static: false, hold: false });
|
|
237
|
+
let buttonElement = $state(null);
|
|
238
|
+
let optionsElement = $state(null);
|
|
239
|
+
const listElements = new SvelteMap();
|
|
276
240
|
const compare = useByComparator(by);
|
|
277
241
|
const isSelected = (compareValue) => match(data.mode, {
|
|
278
242
|
[ValueMode.Multi]: () => {
|
|
@@ -318,34 +282,39 @@ const data = {
|
|
|
318
282
|
},
|
|
319
283
|
compare,
|
|
320
284
|
isSelected,
|
|
321
|
-
get
|
|
322
|
-
return
|
|
285
|
+
get optionsProps() {
|
|
286
|
+
return optionsProps;
|
|
287
|
+
},
|
|
288
|
+
get buttonElement() {
|
|
289
|
+
return buttonElement;
|
|
290
|
+
},
|
|
291
|
+
set buttonElement(value2) {
|
|
292
|
+
buttonElement = value2;
|
|
323
293
|
},
|
|
324
|
-
get
|
|
325
|
-
return
|
|
294
|
+
get optionsElement() {
|
|
295
|
+
return optionsElement;
|
|
326
296
|
},
|
|
327
|
-
|
|
328
|
-
|
|
297
|
+
set optionsElement(value2) {
|
|
298
|
+
optionsElement = value2;
|
|
329
299
|
},
|
|
330
|
-
get
|
|
331
|
-
return
|
|
300
|
+
get listElements() {
|
|
301
|
+
return listElements;
|
|
332
302
|
}
|
|
333
303
|
};
|
|
334
304
|
setContext("ListboxDataContext", data);
|
|
335
|
-
setContext("ListboxData", data);
|
|
336
305
|
const outsideClickEnabled = $derived(data.listboxState === ListboxStates.Open);
|
|
337
306
|
useOutsideClick({
|
|
338
307
|
get enabled() {
|
|
339
308
|
return outsideClickEnabled;
|
|
340
309
|
},
|
|
341
310
|
get containers() {
|
|
342
|
-
return [data.
|
|
311
|
+
return [data.buttonElement, data.optionsElement];
|
|
343
312
|
},
|
|
344
313
|
cb: (event, target) => {
|
|
345
314
|
_state.closeListbox();
|
|
346
315
|
if (!isFocusableElement(target, FocusableMode.Loose)) {
|
|
347
316
|
event.preventDefault();
|
|
348
|
-
data.
|
|
317
|
+
data.buttonElement?.focus();
|
|
349
318
|
}
|
|
350
319
|
}
|
|
351
320
|
});
|
|
@@ -377,8 +346,8 @@ const goToOption = (focus, id, trigger) => {
|
|
|
377
346
|
});
|
|
378
347
|
};
|
|
379
348
|
const registerOption = (id, dataRef) => {
|
|
380
|
-
_state.registerOption(
|
|
381
|
-
return () => _state.unregisterOption(
|
|
349
|
+
_state.registerOption(id, dataRef);
|
|
350
|
+
return () => _state.unregisterOption(id);
|
|
382
351
|
};
|
|
383
352
|
const onChange = (value2) => {
|
|
384
353
|
return match(data.mode, {
|
|
@@ -408,7 +377,7 @@ setContext("ListboxActionsContext", {
|
|
|
408
377
|
search: _state.search,
|
|
409
378
|
clearSearch: _state.clearSearch
|
|
410
379
|
});
|
|
411
|
-
|
|
380
|
+
useFloatingProvider();
|
|
412
381
|
const openClosed = $derived(
|
|
413
382
|
match(data.listboxState, {
|
|
414
383
|
[ListboxStates.Open]: State.Open,
|
|
@@ -424,7 +393,7 @@ useLabels({
|
|
|
424
393
|
inherit: true,
|
|
425
394
|
props: {
|
|
426
395
|
get htmlFor() {
|
|
427
|
-
return data.
|
|
396
|
+
return data.buttonElement?.id;
|
|
428
397
|
}
|
|
429
398
|
},
|
|
430
399
|
slot: {
|
|
@@ -436,7 +405,6 @@ useLabels({
|
|
|
436
405
|
}
|
|
437
406
|
}
|
|
438
407
|
});
|
|
439
|
-
const ourProps = $derived(stateFromSlot(slot));
|
|
440
408
|
const reset = () => {
|
|
441
409
|
if (defaultValue === void 0) return;
|
|
442
410
|
return theirOnChange?.(defaultValue);
|
|
@@ -446,6 +414,4 @@ const reset = () => {
|
|
|
446
414
|
{#if name && value}
|
|
447
415
|
<FormFields {disabled} data={{ [name]: value }} {form} onReset={reset} />
|
|
448
416
|
{/if}
|
|
449
|
-
<
|
|
450
|
-
{#if children}{@render children(slot)}{/if}
|
|
451
|
-
</svelte:element>
|
|
417
|
+
<ElementOrComponent {theirProps} slots={slot} defaultTag={DEFAULT_LISTBOX_TAG} name="Listbox" bind:ref />
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { type ByComparator } from "../hooks/use-by-comparator.js";
|
|
2
|
-
import { Focus } from "../utils/calculate-active-index.js";
|
|
3
|
-
import { type MutableRefObject } from "../utils/ref.svelte.js";
|
|
4
2
|
import type { ElementType, Props } from "../utils/types.js";
|
|
5
3
|
import { type Snippet } from "svelte";
|
|
6
4
|
declare let DEFAULT_LISTBOX_TAG: string;
|
|
@@ -24,84 +22,44 @@ export type ListboxProps<TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG,
|
|
|
24
22
|
__demoMode?: boolean;
|
|
25
23
|
}>;
|
|
26
24
|
export type ListboxChildren<T> = Snippet<[ListboxRenderPropArg<T>]>;
|
|
27
|
-
export
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
dataRef: ListboxOptionDataRef<T>;
|
|
50
|
-
}[];
|
|
51
|
-
searchQuery: string;
|
|
52
|
-
activeOptionIndex: number | null;
|
|
53
|
-
activationTrigger: ActivationTrigger;
|
|
54
|
-
__demoMode: boolean;
|
|
55
|
-
}
|
|
56
|
-
type ListboxActionsContext = {
|
|
57
|
-
openListbox(): void;
|
|
58
|
-
closeListbox(): void;
|
|
59
|
-
registerOption(id: string, dataRef: ListboxOptionDataRef<unknown>): () => void;
|
|
60
|
-
goToOption(focus: Focus.Specific, id: string, trigger?: ActivationTrigger): void;
|
|
61
|
-
goToOption(focus: Focus, id?: string, trigger?: ActivationTrigger): void;
|
|
62
|
-
selectOption(id: string): void;
|
|
63
|
-
selectActiveOption(): void;
|
|
64
|
-
onChange(value: unknown): void;
|
|
65
|
-
search(query: string): void;
|
|
66
|
-
clearSearch(): void;
|
|
67
|
-
};
|
|
68
|
-
export declare function useActions(component: string): ListboxActionsContext;
|
|
69
|
-
export type ListboxDataContext = {
|
|
70
|
-
value: unknown;
|
|
71
|
-
disabled: boolean;
|
|
72
|
-
invalid: boolean;
|
|
73
|
-
mode: ValueMode;
|
|
74
|
-
orientation: "horizontal" | "vertical";
|
|
75
|
-
activeOptionIndex: number | null;
|
|
76
|
-
compare(a: unknown, z: unknown): boolean;
|
|
77
|
-
isSelected(value: unknown): boolean;
|
|
78
|
-
optionsPropsRef: MutableRefObject<{
|
|
79
|
-
static: boolean;
|
|
80
|
-
hold: boolean;
|
|
81
|
-
}>;
|
|
82
|
-
listRef: MutableRefObject<Map<string, HTMLElement | null>>;
|
|
83
|
-
buttonRef: MutableRefObject<HTMLElement | null>;
|
|
84
|
-
optionsRef: MutableRefObject<HTMLElement | null>;
|
|
85
|
-
} & Omit<StateDefinition<unknown>, "dataRef">;
|
|
86
|
-
export declare function useData(component: string): ListboxDataContext;
|
|
87
|
-
declare class __sveltets_Render<TTag extends ElementType, TType, TActualType> {
|
|
88
|
-
props(): ListboxProps<TTag, TType, TActualType>;
|
|
25
|
+
export * from "./context.svelte.js";
|
|
26
|
+
declare class __sveltets_Render<TType, TActualType, TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG> {
|
|
27
|
+
props(): {
|
|
28
|
+
as?: TTag | undefined;
|
|
29
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "form" | ("as" | "children" | "refName" | "class") | "invalid" | "disabled" | "name" | "value" | "onchange" | "multiple" | "__demoMode" | "horizontal" | "defaultValue" | "by"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
30
|
+
children?: import("../utils/types.js").Children<ListboxRenderPropArg<TType>> | undefined;
|
|
31
|
+
ref?: HTMLElement;
|
|
32
|
+
} & (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) ? {
|
|
33
|
+
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: ListboxRenderPropArg<TType>) => string) | undefined;
|
|
34
|
+
} : {}) & {
|
|
35
|
+
value?: TType | undefined;
|
|
36
|
+
defaultValue?: TType | undefined;
|
|
37
|
+
onchange?: ((value: TType) => void) | undefined;
|
|
38
|
+
by?: ByComparator<TActualType> | undefined;
|
|
39
|
+
disabled?: boolean;
|
|
40
|
+
invalid?: boolean;
|
|
41
|
+
horizontal?: boolean;
|
|
42
|
+
form?: string;
|
|
43
|
+
name?: string;
|
|
44
|
+
multiple?: boolean;
|
|
45
|
+
__demoMode?: boolean;
|
|
46
|
+
};
|
|
89
47
|
events(): {} & {
|
|
90
48
|
[evt: string]: CustomEvent<any>;
|
|
91
49
|
};
|
|
92
50
|
slots(): {};
|
|
93
|
-
bindings(): "";
|
|
51
|
+
bindings(): "ref";
|
|
94
52
|
exports(): {};
|
|
95
53
|
}
|
|
96
54
|
interface $$IsomorphicComponent {
|
|
97
|
-
new <TTag extends ElementType
|
|
98
|
-
$$bindings?: ReturnType<__sveltets_Render<
|
|
99
|
-
} & ReturnType<__sveltets_Render<
|
|
100
|
-
<TTag extends ElementType
|
|
101
|
-
$$events?: ReturnType<__sveltets_Render<
|
|
102
|
-
}): ReturnType<__sveltets_Render<
|
|
55
|
+
new <TType, TActualType, TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TType, TActualType, TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TType, TActualType, TTag>['props']>, ReturnType<__sveltets_Render<TType, TActualType, TTag>['events']>, ReturnType<__sveltets_Render<TType, TActualType, TTag>['slots']>> & {
|
|
56
|
+
$$bindings?: ReturnType<__sveltets_Render<TType, TActualType, TTag>['bindings']>;
|
|
57
|
+
} & ReturnType<__sveltets_Render<TType, TActualType, TTag>['exports']>;
|
|
58
|
+
<TType, TActualType, TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TType, TActualType, TTag>['props']> & {
|
|
59
|
+
$$events?: ReturnType<__sveltets_Render<TType, TActualType, TTag>['events']>;
|
|
60
|
+
}): ReturnType<__sveltets_Render<TType, TActualType, TTag>['exports']>;
|
|
103
61
|
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
|
|
104
62
|
}
|
|
105
63
|
declare const Listbox: $$IsomorphicComponent;
|
|
106
|
-
type Listbox<TTag extends ElementType
|
|
64
|
+
type Listbox<TType, TActualType, TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG> = InstanceType<typeof Listbox<TType, TActualType, TTag>>;
|
|
107
65
|
export default Listbox;
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
<script lang="ts"
|
|
2
|
-
import {
|
|
1
|
+
<script lang="ts" module>import { useId } from "../hooks/use-id.js";
|
|
2
|
+
import { useProvidedId } from "../utils/id.js";
|
|
3
3
|
import { ListboxStates, useActions, useData } from "./Listbox.svelte";
|
|
4
4
|
import { attemptSubmit } from "../utils/form.js";
|
|
5
5
|
import { Focus } from "../utils/calculate-active-index.js";
|
|
6
6
|
import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
|
|
7
7
|
import { useActivePress } from "../hooks/use-active-press.svelte.js";
|
|
8
8
|
import { useResolveButtonType } from "../hooks/use-resolve-button-type.svelte.js";
|
|
9
|
-
import {
|
|
9
|
+
import { useFloatingReference, useFloatingReferenceProps } from "../internal/floating.svelte.js";
|
|
10
10
|
import { stateFromSlot } from "../utils/state.js";
|
|
11
|
-
import { useLabelledBy } from "../label/
|
|
12
|
-
import { useDescribedBy } from "../description/
|
|
11
|
+
import { useLabelledBy } from "../label/context.svelte.js";
|
|
12
|
+
import { useDescribedBy } from "../description/context.svelte.js";
|
|
13
13
|
import { useHover } from "../hooks/use-hover.svelte.js";
|
|
14
14
|
import { mergeProps } from "../utils/render.js";
|
|
15
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte";
|
|
15
16
|
const DEFAULT_BUTTON_TAG = "button";
|
|
16
17
|
</script>
|
|
17
18
|
|
|
18
|
-
<script lang="ts" generics="TTag extends ElementType">const data = useData("ListboxButton");
|
|
19
|
+
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_BUTTON_TAG">const data = useData("ListboxButton");
|
|
19
20
|
const actions = useActions("ListboxButton");
|
|
20
21
|
const internalId = useId();
|
|
21
|
-
const providedId =
|
|
22
|
+
const providedId = useProvidedId();
|
|
22
23
|
let {
|
|
23
|
-
as = DEFAULT_BUTTON_TAG,
|
|
24
24
|
ref = $bindable(),
|
|
25
25
|
id = providedId || `headlessui-listbox-button-${internalId}`,
|
|
26
26
|
disabled: ownDisabled = false,
|
|
27
27
|
autofocus = false,
|
|
28
|
-
children,
|
|
29
28
|
...theirProps
|
|
30
29
|
} = $props();
|
|
31
|
-
const { setReference
|
|
30
|
+
const { setReference } = useFloatingReference();
|
|
31
|
+
const { getReferenceProps: getFloatingReferenceProps } = useFloatingReferenceProps();
|
|
32
32
|
$effect(() => {
|
|
33
|
-
data.
|
|
33
|
+
data.buttonElement = ref || null;
|
|
34
34
|
setReference(ref);
|
|
35
35
|
});
|
|
36
36
|
const disabled = $derived(data.disabled || ownDisabled);
|
|
@@ -62,7 +62,7 @@ const handleKeyUp = (event) => {
|
|
|
62
62
|
const handleClick = (event) => {
|
|
63
63
|
if (data.listboxState === ListboxStates.Open) {
|
|
64
64
|
actions.closeListbox();
|
|
65
|
-
data.
|
|
65
|
+
data.buttonElement?.focus({ preventScroll: true });
|
|
66
66
|
} else {
|
|
67
67
|
event.preventDefault();
|
|
68
68
|
actions.openListbox();
|
|
@@ -104,10 +104,10 @@ const slot = $derived({
|
|
|
104
104
|
});
|
|
105
105
|
const buttonType = useResolveButtonType({
|
|
106
106
|
get props() {
|
|
107
|
-
return { type: theirProps.type, as };
|
|
107
|
+
return { type: theirProps.type, as: theirProps.as };
|
|
108
108
|
},
|
|
109
109
|
get ref() {
|
|
110
|
-
return data.
|
|
110
|
+
return { current: data.buttonElement };
|
|
111
111
|
}
|
|
112
112
|
});
|
|
113
113
|
const ourProps = $derived(
|
|
@@ -117,7 +117,7 @@ const ourProps = $derived(
|
|
|
117
117
|
id,
|
|
118
118
|
type: buttonType.type,
|
|
119
119
|
"aria-haspopup": "listbox",
|
|
120
|
-
"aria-controls": data.
|
|
120
|
+
"aria-controls": data.optionsElement?.id,
|
|
121
121
|
"aria-expanded": data.listboxState === ListboxStates.Open,
|
|
122
122
|
"aria-labelledby": labelledBy.value,
|
|
123
123
|
"aria-describedby": describedBy.value,
|
|
@@ -136,6 +136,4 @@ const ourProps = $derived(
|
|
|
136
136
|
);
|
|
137
137
|
</script>
|
|
138
138
|
|
|
139
|
-
<
|
|
140
|
-
{#if children}{@render children(slot)}{/if}
|
|
141
|
-
</svelte:element>
|
|
139
|
+
<ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_BUTTON_TAG} name="ListboxButton" bind:ref />
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ElementType,
|
|
1
|
+
import type { ElementType, Props, PropsOf } from "../utils/types.js";
|
|
2
2
|
import type { Snippet } from "svelte";
|
|
3
3
|
declare const DEFAULT_BUTTON_TAG: "button";
|
|
4
4
|
type ButtonRenderPropArg = {
|
|
@@ -15,11 +15,20 @@ type ButtonPropsWeControl = "aria-controls" | "aria-expanded" | "aria-haspopup"
|
|
|
15
15
|
export type ListboxButtonProps<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = Props<TTag, ButtonRenderPropArg, ButtonPropsWeControl, {
|
|
16
16
|
autofocus?: boolean;
|
|
17
17
|
disabled?: boolean;
|
|
18
|
-
ref?: HTMLElementType<TTag> | null;
|
|
19
18
|
}>;
|
|
20
19
|
export type ListboxButtonChildren = Snippet<[ButtonRenderPropArg]>;
|
|
21
|
-
declare class __sveltets_Render<TTag extends ElementType> {
|
|
22
|
-
props():
|
|
20
|
+
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> {
|
|
21
|
+
props(): {
|
|
22
|
+
as?: TTag | undefined;
|
|
23
|
+
} & (Exclude<keyof PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "autofocus" | ButtonPropsWeControl> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
|
|
24
|
+
children?: import("../utils/types.js").Children<ButtonRenderPropArg> | undefined;
|
|
25
|
+
ref?: HTMLElement;
|
|
26
|
+
} & (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) ? {
|
|
27
|
+
class?: PropsOf<TTag>["class"] | ((bag: ButtonRenderPropArg) => string) | undefined;
|
|
28
|
+
} : {}) & {
|
|
29
|
+
autofocus?: boolean;
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
};
|
|
23
32
|
events(): {} & {
|
|
24
33
|
[evt: string]: CustomEvent<any>;
|
|
25
34
|
};
|
|
@@ -28,14 +37,14 @@ declare class __sveltets_Render<TTag extends ElementType> {
|
|
|
28
37
|
exports(): {};
|
|
29
38
|
}
|
|
30
39
|
interface $$IsomorphicComponent {
|
|
31
|
-
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']>> & {
|
|
40
|
+
new <TTag extends ElementType = typeof DEFAULT_BUTTON_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']>> & {
|
|
32
41
|
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
33
42
|
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
34
|
-
<TTag extends ElementType>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
43
|
+
<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
35
44
|
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
36
45
|
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
37
46
|
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
38
47
|
}
|
|
39
48
|
declare const ListboxButton: $$IsomorphicComponent;
|
|
40
|
-
type ListboxButton<TTag extends ElementType> = InstanceType<typeof ListboxButton<TTag>>;
|
|
49
|
+
type ListboxButton<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = InstanceType<typeof ListboxButton<TTag>>;
|
|
41
50
|
export default ListboxButton;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
<script lang="ts"
|
|
1
|
+
<script lang="ts" module>const DEFAULT_OPTION_TAG = "div";
|
|
2
2
|
</script>
|
|
3
3
|
|
|
4
|
-
<script lang="ts" generics="TTag extends ElementType
|
|
4
|
+
<script lang="ts" generics="TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG">import { useId } from "../hooks/use-id.js";
|
|
5
5
|
import {
|
|
6
6
|
ActivationTrigger,
|
|
7
7
|
ListboxStates,
|
|
@@ -15,14 +15,13 @@ import { getContext, onMount } from "svelte";
|
|
|
15
15
|
import { useTextValue } from "../hooks/use-text-value.svelte.js";
|
|
16
16
|
import { useTrackedPointer } from "../hooks/use-tracked-pointer.js";
|
|
17
17
|
import { stateFromSlot } from "../utils/state.js";
|
|
18
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte";
|
|
18
19
|
const internalId = useId();
|
|
19
20
|
let {
|
|
20
|
-
as = DEFAULT_OPTION_TAG,
|
|
21
21
|
ref = $bindable(),
|
|
22
22
|
id = `headlessui-listbox-option-${internalId}`,
|
|
23
23
|
disabled = false,
|
|
24
24
|
value,
|
|
25
|
-
children,
|
|
26
25
|
...theirProps
|
|
27
26
|
} = $props();
|
|
28
27
|
const usedInSelectedOption = getContext("SelectedOptionContext") === true;
|
|
@@ -45,10 +44,13 @@ const bag = $derived({
|
|
|
45
44
|
});
|
|
46
45
|
$effect(() => {
|
|
47
46
|
if (!ref) {
|
|
48
|
-
data.
|
|
47
|
+
data.listElements.delete(id);
|
|
49
48
|
} else {
|
|
50
|
-
data.
|
|
49
|
+
data.listElements.set(id, ref);
|
|
51
50
|
}
|
|
51
|
+
return () => {
|
|
52
|
+
if (ref) data.listElements.delete(id);
|
|
53
|
+
};
|
|
52
54
|
});
|
|
53
55
|
$effect(() => {
|
|
54
56
|
if (data.__demoMode) return;
|
|
@@ -73,7 +75,7 @@ const handleClick = (event) => {
|
|
|
73
75
|
actions.onChange(value);
|
|
74
76
|
if (data.mode === ValueMode.Single) {
|
|
75
77
|
actions.closeListbox();
|
|
76
|
-
data.
|
|
78
|
+
data.buttonElement?.focus({ preventScroll: true });
|
|
77
79
|
}
|
|
78
80
|
};
|
|
79
81
|
const handleFocus = () => {
|
|
@@ -132,7 +134,5 @@ const ourProps = $derived(
|
|
|
132
134
|
</script>
|
|
133
135
|
|
|
134
136
|
{#if selected || !usedInSelectedOption}
|
|
135
|
-
<
|
|
136
|
-
{#if children}{@render children(slot)}{/if}
|
|
137
|
-
</svelte:element>
|
|
137
|
+
<ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_OPTION_TAG} name="Listbox" bind:ref />
|
|
138
138
|
{/if}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ElementType,
|
|
1
|
+
import type { ElementType, Props } from "../utils/types.js";
|
|
2
2
|
declare const DEFAULT_OPTION_TAG: "div";
|
|
3
3
|
type OptionRenderPropArg = {
|
|
4
4
|
/** @deprecated use `focus` instead */
|
|
@@ -10,14 +10,25 @@ type OptionRenderPropArg = {
|
|
|
10
10
|
};
|
|
11
11
|
type OptionPropsWeControl = "aria-disabled" | "aria-selected" | "role" | "tabIndex";
|
|
12
12
|
export type ListboxOptionProps<TTag extends ElementType = typeof DEFAULT_OPTION_TAG, TType = string> = Props<TTag, OptionRenderPropArg, OptionPropsWeControl, {
|
|
13
|
+
id?: string;
|
|
13
14
|
disabled?: boolean;
|
|
14
15
|
value: TType;
|
|
15
|
-
ref?: HTMLElementType<TTag> | null;
|
|
16
16
|
}>;
|
|
17
17
|
export type ListboxOptionChildren = Snippet<[OptionRenderPropArg]>;
|
|
18
18
|
import { type Snippet } from "svelte";
|
|
19
|
-
declare class __sveltets_Render<TTag extends ElementType
|
|
20
|
-
props():
|
|
19
|
+
declare class __sveltets_Render<TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG> {
|
|
20
|
+
props(): {
|
|
21
|
+
as?: TTag | undefined;
|
|
22
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "disabled" | "value" | "id" | OptionPropsWeControl> 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<OptionRenderPropArg> | 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: OptionRenderPropArg) => string) | undefined;
|
|
27
|
+
} : {}) & {
|
|
28
|
+
id?: string;
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
value: TType;
|
|
31
|
+
};
|
|
21
32
|
events(): {} & {
|
|
22
33
|
[evt: string]: CustomEvent<any>;
|
|
23
34
|
};
|
|
@@ -26,14 +37,14 @@ declare class __sveltets_Render<TTag extends ElementType, TType> {
|
|
|
26
37
|
exports(): {};
|
|
27
38
|
}
|
|
28
39
|
interface $$IsomorphicComponent {
|
|
29
|
-
new <TTag extends ElementType
|
|
30
|
-
$$bindings?: ReturnType<__sveltets_Render<
|
|
31
|
-
} & ReturnType<__sveltets_Render<
|
|
32
|
-
<TTag extends ElementType
|
|
33
|
-
$$events?: ReturnType<__sveltets_Render<
|
|
34
|
-
}): ReturnType<__sveltets_Render<
|
|
40
|
+
new <TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TType, TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TType, TTag>['props']>, ReturnType<__sveltets_Render<TType, TTag>['events']>, ReturnType<__sveltets_Render<TType, TTag>['slots']>> & {
|
|
41
|
+
$$bindings?: ReturnType<__sveltets_Render<TType, TTag>['bindings']>;
|
|
42
|
+
} & ReturnType<__sveltets_Render<TType, TTag>['exports']>;
|
|
43
|
+
<TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TType, TTag>['props']> & {
|
|
44
|
+
$$events?: ReturnType<__sveltets_Render<TType, TTag>['events']>;
|
|
45
|
+
}): ReturnType<__sveltets_Render<TType, TTag>['exports']>;
|
|
35
46
|
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
36
47
|
}
|
|
37
48
|
declare const ListboxOption: $$IsomorphicComponent;
|
|
38
|
-
type ListboxOption<TTag extends ElementType
|
|
49
|
+
type ListboxOption<TType, TTag extends ElementType = typeof DEFAULT_OPTION_TAG> = InstanceType<typeof ListboxOption<TType, TTag>>;
|
|
39
50
|
export default ListboxOption;
|