@pzerelles/headlessui-svelte 2.1.2-next.32 → 2.1.2-next.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/button/Button.svelte +8 -9
- package/dist/button/Button.svelte.d.ts +4 -31
- package/dist/checkbox/Checkbox.svelte +14 -11
- package/dist/checkbox/Checkbox.svelte.d.ts +14 -31
- package/dist/close-button/CloseButton.svelte +4 -7
- package/dist/close-button/CloseButton.svelte.d.ts +2 -43
- package/dist/data-interactive/DataInteractive.svelte +5 -19
- package/dist/data-interactive/DataInteractive.svelte.d.ts +7 -29
- package/dist/description/Description.svelte +15 -12
- package/dist/description/Description.svelte.d.ts +7 -27
- package/dist/dialog/Dialog.svelte +34 -32
- package/dist/dialog/Dialog.svelte.d.ts +4 -41
- package/dist/dialog/DialogBackdrop.svelte +10 -10
- package/dist/dialog/DialogBackdrop.svelte.d.ts +4 -28
- package/dist/dialog/DialogPanel.svelte +18 -10
- package/dist/dialog/DialogPanel.svelte.d.ts +4 -29
- package/dist/dialog/DialogTitle.svelte +19 -7
- package/dist/dialog/DialogTitle.svelte.d.ts +6 -26
- package/dist/field/Field.svelte +9 -15
- package/dist/field/Field.svelte.d.ts +4 -29
- package/dist/fieldset/Fieldset.svelte +10 -13
- package/dist/fieldset/Fieldset.svelte.d.ts +5 -30
- package/dist/focus-trap/FocusTrap.svelte +20 -24
- package/dist/focus-trap/FocusTrap.svelte.d.ts +5 -33
- package/dist/hooks/use-inert-others.svelte.js +10 -10
- package/dist/hooks/use-resolve-button-type.svelte.js +0 -1
- package/dist/input/Input.svelte +19 -9
- package/dist/input/Input.svelte.d.ts +13 -26
- package/dist/internal/FocusSentinel.svelte +33 -32
- package/dist/internal/FormResolver.svelte +5 -1
- package/dist/internal/Hidden.svelte +9 -23
- package/dist/internal/Hidden.svelte.d.ts +4 -29
- package/dist/internal/MainTreeProvider.svelte +1 -1
- package/dist/label/Label.svelte +19 -13
- package/dist/label/Label.svelte.d.ts +7 -31
- package/dist/legend/Legend.svelte +20 -6
- package/dist/legend/Legend.svelte.d.ts +4 -3
- package/dist/listbox/Listbox.svelte +6 -17
- package/dist/listbox/Listbox.svelte.d.ts +11 -34
- package/dist/listbox/ListboxButton.svelte +14 -13
- package/dist/listbox/ListboxButton.svelte.d.ts +5 -31
- package/dist/listbox/ListboxOption.svelte +15 -15
- package/dist/listbox/ListboxOption.svelte.d.ts +12 -25
- package/dist/listbox/ListboxOptions.svelte +13 -11
- package/dist/listbox/ListboxOptions.svelte.d.ts +4 -37
- package/dist/listbox/ListboxSelectedOption.svelte +15 -17
- package/dist/listbox/ListboxSelectedOption.svelte.d.ts +8 -32
- package/dist/menu/Menu.svelte +5 -7
- package/dist/menu/Menu.svelte.d.ts +3 -30
- package/dist/menu/MenuButton.svelte +12 -12
- package/dist/menu/MenuButton.svelte.d.ts +4 -33
- package/dist/menu/MenuHeading.svelte +10 -9
- package/dist/menu/MenuHeading.svelte.d.ts +4 -30
- package/dist/menu/MenuItem.svelte +12 -12
- package/dist/menu/MenuItem.svelte.d.ts +5 -31
- package/dist/menu/MenuItems.svelte +12 -13
- package/dist/menu/MenuItems.svelte.d.ts +4 -37
- package/dist/menu/MenuSection.svelte +9 -8
- package/dist/menu/MenuSection.svelte.d.ts +5 -28
- package/dist/menu/MenuSeparator.svelte +9 -7
- package/dist/menu/MenuSeparator.svelte.d.ts +5 -27
- package/dist/popover/Popover.svelte +8 -8
- package/dist/popover/Popover.svelte.d.ts +4 -29
- package/dist/popover/PopoverBackdrop.svelte +15 -12
- package/dist/popover/PopoverBackdrop.svelte.d.ts +6 -33
- package/dist/popover/PopoverButton.svelte +34 -34
- package/dist/popover/PopoverButton.svelte.d.ts +6 -28
- package/dist/popover/PopoverGroup.svelte +14 -13
- package/dist/popover/PopoverGroup.svelte.d.ts +5 -27
- package/dist/popover/PopoverPanel.svelte +46 -41
- package/dist/popover/PopoverPanel.svelte.d.ts +5 -35
- package/dist/popover/index.d.ts +1 -1
- package/dist/portal/InternalPortal.svelte +17 -16
- package/dist/portal/InternalPortal.svelte.d.ts +4 -29
- package/dist/portal/Portal.svelte +7 -6
- package/dist/portal/Portal.svelte.d.ts +2 -18
- package/dist/portal/PortalGroup.svelte +5 -13
- package/dist/portal/PortalGroup.svelte.d.ts +3 -30
- package/dist/select/Select.svelte +10 -9
- package/dist/select/Select.svelte.d.ts +5 -31
- package/dist/switch/Switch.svelte +13 -12
- package/dist/switch/Switch.svelte.d.ts +5 -37
- package/dist/switch/SwitchGroup.svelte +5 -5
- package/dist/switch/SwitchGroup.svelte.d.ts +7 -27
- package/dist/tabs/Tab.svelte +12 -12
- package/dist/tabs/Tab.svelte.d.ts +4 -31
- package/dist/tabs/TabGroup.svelte +8 -8
- package/dist/tabs/TabGroup.svelte.d.ts +4 -33
- package/dist/tabs/TabList.svelte +7 -8
- package/dist/tabs/TabList.svelte.d.ts +5 -27
- package/dist/tabs/TabPanel.svelte +11 -11
- package/dist/tabs/TabPanel.svelte.d.ts +4 -33
- package/dist/tabs/TabPanels.svelte +5 -5
- package/dist/tabs/TabPanels.svelte.d.ts +5 -26
- package/dist/textarea/Textarea.svelte +12 -10
- package/dist/textarea/Textarea.svelte.d.ts +13 -26
- package/dist/transition/InternalTransitionChild.svelte +19 -12
- package/dist/transition/InternalTransitionChild.svelte.d.ts +3 -32
- package/dist/transition/Transition.svelte +12 -21
- package/dist/transition/Transition.svelte.d.ts +3 -35
- package/dist/transition/TransitionChild.svelte +9 -10
- package/dist/transition/TransitionChild.svelte.d.ts +8 -34
- package/dist/transition/context.svelte.js +7 -7
- package/dist/utils/ElementOrComponent.svelte +56 -15
- package/dist/utils/ElementOrComponent.svelte.d.ts +30 -23
- package/dist/utils/state.js +4 -4
- package/dist/utils/types.d.ts +12 -9
- package/package.json +12 -12
- package/dist/combobox/Combobox.svelte +0 -53
- package/dist/combobox/Combobox.svelte.d.ts +0 -50
- package/dist/utils/Generic.svelte +0 -57
- package/dist/utils/Generic.svelte.d.ts +0 -31
- package/dist/utils/alternative-types.d.ts +0 -20
- package/dist/utils/alternative-types.js +0 -1
package/dist/label/Label.svelte
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export type LabelProps
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
|
+
|
|
4
|
+
const DEFAULT_LABEL_TAG = "label" as const
|
|
5
|
+
|
|
6
|
+
export type LabelProps = Props<
|
|
7
|
+
typeof DEFAULT_LABEL_TAG,
|
|
8
|
+
{},
|
|
9
|
+
{
|
|
10
|
+
element?: HTMLElement
|
|
11
|
+
id?: string
|
|
12
|
+
passive?: boolean
|
|
13
|
+
htmlFor?: string
|
|
14
|
+
}
|
|
15
|
+
>
|
|
10
16
|
</script>
|
|
11
17
|
|
|
12
|
-
<script lang="ts"
|
|
18
|
+
<script lang="ts">
|
|
13
19
|
import { onMount } from "svelte"
|
|
14
20
|
import { useProvidedId, htmlid } from "../utils/id.js"
|
|
15
21
|
import { useDisabled } from "../hooks/use-disabled.js"
|
|
@@ -23,12 +29,12 @@
|
|
|
23
29
|
const providedDisabled = useDisabled()
|
|
24
30
|
|
|
25
31
|
let {
|
|
26
|
-
|
|
27
|
-
id = `headlessui-label-${internalId}
|
|
32
|
+
element = $bindable(),
|
|
33
|
+
id = `headlessui-label-${internalId}`,
|
|
28
34
|
htmlFor = providedHtmlFor,
|
|
29
35
|
passive = false,
|
|
30
36
|
...theirOriginalProps
|
|
31
|
-
}:
|
|
37
|
+
}: LabelProps = $props()
|
|
32
38
|
|
|
33
39
|
onMount(() => {
|
|
34
40
|
context.register(id)
|
|
@@ -103,5 +109,5 @@
|
|
|
103
109
|
{theirProps}
|
|
104
110
|
defaultTag={htmlFor ? DEFAULT_LABEL_TAG : "div"}
|
|
105
111
|
name={context.name || "Label"}
|
|
106
|
-
bind:
|
|
112
|
+
bind:element
|
|
107
113
|
/>
|
|
@@ -1,34 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare
|
|
3
|
-
export type LabelProps
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
|
+
declare const DEFAULT_LABEL_TAG: "label";
|
|
3
|
+
export type LabelProps = Props<typeof DEFAULT_LABEL_TAG, {}, {
|
|
4
|
+
element?: HTMLElement;
|
|
5
|
+
id?: string;
|
|
4
6
|
passive?: boolean;
|
|
5
7
|
htmlFor?: string;
|
|
6
|
-
}
|
|
7
|
-
declare
|
|
8
|
-
props(): {
|
|
9
|
-
as?: TTag | undefined;
|
|
10
|
-
} & (Exclude<keyof PropsOf<TTag>, "slot" | "as" | "children" | "class" | "ref"> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
|
|
11
|
-
children?: import("svelte").Snippet<[{
|
|
12
|
-
props?: Record<string, any>;
|
|
13
|
-
}]> | undefined;
|
|
14
|
-
class?: string | ((bag: {}) => string) | null | undefined;
|
|
15
|
-
ref?: HTMLElement;
|
|
16
|
-
} & {
|
|
17
|
-
passive?: boolean;
|
|
18
|
-
htmlFor?: string;
|
|
19
|
-
};
|
|
20
|
-
events(): {};
|
|
21
|
-
slots(): {};
|
|
22
|
-
bindings(): "ref";
|
|
23
|
-
exports(): {};
|
|
24
|
-
}
|
|
25
|
-
interface $$IsomorphicComponent {
|
|
26
|
-
new <TTag extends ElementType = typeof DEFAULT_LABEL_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']>> & {
|
|
27
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
28
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
29
|
-
<TTag extends ElementType = typeof DEFAULT_LABEL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
30
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
31
|
-
}
|
|
32
|
-
declare const Label: $$IsomorphicComponent;
|
|
33
|
-
type Label<TTag extends ElementType = typeof DEFAULT_LABEL_TAG> = InstanceType<typeof Label<TTag>>;
|
|
8
|
+
}>;
|
|
9
|
+
declare const Label: import("svelte").Component<LabelProps, {}, "element">;
|
|
34
10
|
export default Label;
|
|
@@ -4,14 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
const DEFAULT_LEGEND_TAG = "div" as const
|
|
6
6
|
|
|
7
|
-
type
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
export type LegendProps = Props<
|
|
8
|
+
typeof DEFAULT_LEGEND_TAG,
|
|
9
|
+
{},
|
|
10
|
+
{
|
|
11
|
+
element?: HTMLElement
|
|
12
|
+
class?: string
|
|
13
|
+
}
|
|
14
|
+
>
|
|
11
15
|
</script>
|
|
12
16
|
|
|
13
17
|
<script lang="ts">
|
|
14
|
-
let { ...props }: LegendProps = $props()
|
|
18
|
+
let { asChild, children: theirChildren, ...props }: LegendProps = $props()
|
|
15
19
|
</script>
|
|
16
20
|
|
|
17
|
-
<Label
|
|
21
|
+
<Label asChild>
|
|
22
|
+
{#snippet children({ props: childProps })}
|
|
23
|
+
{#if asChild}
|
|
24
|
+
{@render theirChildren?.({ props: { ...props, ...childProps } })}
|
|
25
|
+
{:else}
|
|
26
|
+
<div {...props} {...childProps}>
|
|
27
|
+
{@render theirChildren?.({ props: {} })}
|
|
28
|
+
</div>
|
|
29
|
+
{/if}
|
|
30
|
+
{/snippet}
|
|
31
|
+
</Label>
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare const DEFAULT_LEGEND_TAG: "div";
|
|
3
|
-
type
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
export type LegendProps = Props<typeof DEFAULT_LEGEND_TAG, {}, {
|
|
4
|
+
element?: HTMLElement;
|
|
5
|
+
class?: string;
|
|
6
|
+
}>;
|
|
6
7
|
declare const Legend: import("svelte").Component<LegendProps, {}, "">;
|
|
7
8
|
export default Legend;
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
import { calculateActiveIndex, Focus } from "../utils/calculate-active-index.js"
|
|
6
6
|
import { FocusableMode, isFocusableElement, sortByDomNode } from "../utils/focus-management.js"
|
|
7
7
|
import { match } from "../utils/match.js"
|
|
8
|
-
import type {
|
|
9
|
-
import { setContext
|
|
8
|
+
import type { EnsureArray, PropsAsChild } from "../utils/types.js"
|
|
9
|
+
import { setContext } from "svelte"
|
|
10
10
|
import { ActivationTrigger, ListboxStates, ValueMode } from "./context.svelte.js"
|
|
11
11
|
|
|
12
12
|
let DEFAULT_LISTBOX_TAG = "svelte:fragment"
|
|
@@ -17,14 +17,8 @@
|
|
|
17
17
|
value: T
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export type ListboxProps<
|
|
21
|
-
TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG,
|
|
22
|
-
TType = string,
|
|
23
|
-
TActualType = TType extends (infer U)[] ? U : TType,
|
|
24
|
-
> = Props<
|
|
25
|
-
TTag,
|
|
20
|
+
export type ListboxProps<TType = string, TActualType = TType extends (infer U)[] ? U : TType> = PropsAsChild<
|
|
26
21
|
ListboxRenderPropArg<TType>,
|
|
27
|
-
"value" | "defaultValue" | "onchange" | "by" | "disabled" | "horizontal" | "name" | "multiple",
|
|
28
22
|
{
|
|
29
23
|
value?: TType
|
|
30
24
|
defaultValue?: TType
|
|
@@ -37,7 +31,6 @@
|
|
|
37
31
|
name?: string
|
|
38
32
|
multiple?: boolean
|
|
39
33
|
closeOnSelect?: boolean
|
|
40
|
-
|
|
41
34
|
__demoMode?: boolean
|
|
42
35
|
}
|
|
43
36
|
>
|
|
@@ -45,10 +38,7 @@
|
|
|
45
38
|
export * from "./context.svelte.js"
|
|
46
39
|
</script>
|
|
47
40
|
|
|
48
|
-
<script
|
|
49
|
-
lang="ts"
|
|
50
|
-
generics="TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG, TType = string, TActualType = TType extends (infer U)[] ? U : TType"
|
|
51
|
-
>
|
|
41
|
+
<script lang="ts" generics="TType = string, TActualType = TType extends (infer U)[] ? U : TType">
|
|
52
42
|
import { disposables } from "../utils/disposables.js"
|
|
53
43
|
import FormFields from "../internal/FormFields.svelte"
|
|
54
44
|
import { useFloatingProvider } from "../internal/floating-provider.svelte.js"
|
|
@@ -304,7 +294,6 @@
|
|
|
304
294
|
}
|
|
305
295
|
|
|
306
296
|
let {
|
|
307
|
-
ref = $bindable(),
|
|
308
297
|
value: controlledValue = $bindable(),
|
|
309
298
|
defaultValue,
|
|
310
299
|
form,
|
|
@@ -318,7 +307,7 @@
|
|
|
318
307
|
closeOnSelect,
|
|
319
308
|
__demoMode = false,
|
|
320
309
|
...theirProps
|
|
321
|
-
}:
|
|
310
|
+
}: ListboxProps<TType, TActualType> = $props()
|
|
322
311
|
|
|
323
312
|
const providedDisabled = useDisabled()
|
|
324
313
|
const disabled = $derived(providedDisabled.current || ownDisabled)
|
|
@@ -562,4 +551,4 @@
|
|
|
562
551
|
{#if name && value}
|
|
563
552
|
<FormFields {disabled} data={{ [name]: value }} {form} onReset={reset} />
|
|
564
553
|
{/if}
|
|
565
|
-
<ElementOrComponent {theirProps} slots={slot}
|
|
554
|
+
<ElementOrComponent {theirProps} slots={slot} name="Listbox" />
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { type ByComparator } from "../hooks/use-by-comparator.js";
|
|
2
|
-
import type {
|
|
3
|
-
import { type Snippet } from "svelte";
|
|
4
|
-
declare let DEFAULT_LISTBOX_TAG: string;
|
|
2
|
+
import type { PropsAsChild } from "../utils/types.js";
|
|
5
3
|
type ListboxRenderPropArg<T> = {
|
|
6
4
|
open: boolean;
|
|
7
5
|
disabled: boolean;
|
|
8
6
|
invalid: boolean;
|
|
9
7
|
value: T;
|
|
10
8
|
};
|
|
11
|
-
export type ListboxProps<
|
|
9
|
+
export type ListboxProps<TType = string, TActualType = TType extends (infer U)[] ? U : TType> = PropsAsChild<ListboxRenderPropArg<TType>, {
|
|
12
10
|
value?: TType;
|
|
13
11
|
defaultValue?: TType;
|
|
14
12
|
onchange?: (value: TType) => void;
|
|
@@ -23,41 +21,20 @@ export type ListboxProps<TTag extends ElementType = typeof DEFAULT_LISTBOX_TAG,
|
|
|
23
21
|
__demoMode?: boolean;
|
|
24
22
|
}>;
|
|
25
23
|
export * from "./context.svelte.js";
|
|
26
|
-
declare class __sveltets_Render<
|
|
27
|
-
props():
|
|
28
|
-
as?: TTag | undefined;
|
|
29
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "form" | ("slot" | "as" | "children" | "class" | "ref") | "invalid" | "disabled" | "value" | "name" | "onchange" | "multiple" | "__demoMode" | "horizontal" | "defaultValue" | "by" | "closeOnSelect"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
30
|
-
children?: Snippet<[ListboxRenderPropArg<TType> & {
|
|
31
|
-
props?: Record<string, any>;
|
|
32
|
-
}]> | undefined;
|
|
33
|
-
class?: string | ((bag: ListboxRenderPropArg<TType>) => string) | null | undefined;
|
|
34
|
-
ref?: HTMLElement;
|
|
35
|
-
} & {
|
|
36
|
-
value?: TType | undefined;
|
|
37
|
-
defaultValue?: TType | undefined;
|
|
38
|
-
onchange?: ((value: TType) => void) | undefined;
|
|
39
|
-
by?: ByComparator<TActualType> | undefined;
|
|
40
|
-
disabled?: boolean;
|
|
41
|
-
invalid?: boolean;
|
|
42
|
-
horizontal?: boolean;
|
|
43
|
-
form?: string;
|
|
44
|
-
name?: string;
|
|
45
|
-
multiple?: boolean;
|
|
46
|
-
closeOnSelect?: boolean;
|
|
47
|
-
__demoMode?: boolean;
|
|
48
|
-
};
|
|
24
|
+
declare class __sveltets_Render<TType = string, TActualType = TType extends (infer U)[] ? U : TType> {
|
|
25
|
+
props(): ListboxProps<TType, TActualType>;
|
|
49
26
|
events(): {};
|
|
50
27
|
slots(): {};
|
|
51
|
-
bindings(): "
|
|
28
|
+
bindings(): "value";
|
|
52
29
|
exports(): {};
|
|
53
30
|
}
|
|
54
31
|
interface $$IsomorphicComponent {
|
|
55
|
-
new <
|
|
56
|
-
$$bindings?: ReturnType<__sveltets_Render<
|
|
57
|
-
} & ReturnType<__sveltets_Render<
|
|
58
|
-
<
|
|
59
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any, any
|
|
32
|
+
new <TType = string, TActualType = TType extends (infer U)[] ? U : TType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TType, TActualType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TType, TActualType>['props']>, ReturnType<__sveltets_Render<TType, TActualType>['events']>, ReturnType<__sveltets_Render<TType, TActualType>['slots']>> & {
|
|
33
|
+
$$bindings?: ReturnType<__sveltets_Render<TType, TActualType>['bindings']>;
|
|
34
|
+
} & ReturnType<__sveltets_Render<TType, TActualType>['exports']>;
|
|
35
|
+
<TType = string, TActualType = TType extends (infer U)[] ? U : TType>(internal: unknown, props: ReturnType<__sveltets_Render<TType, TActualType>['props']> & {}): ReturnType<__sveltets_Render<TType, TActualType>['exports']>;
|
|
36
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
60
37
|
}
|
|
61
38
|
declare const Listbox: $$IsomorphicComponent;
|
|
62
|
-
type Listbox<
|
|
39
|
+
type Listbox<TType = string, TActualType = TType extends (infer U)[] ? U : TType> = InstanceType<typeof Listbox<TType, TActualType>>;
|
|
63
40
|
export default Listbox;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
2
|
import { useId } from "../hooks/use-id.js"
|
|
3
3
|
import { useProvidedId } from "../utils/id.js"
|
|
4
|
-
import type {
|
|
4
|
+
import type { Props } from "../utils/types.js"
|
|
5
5
|
import { ListboxStates, useActions, useData } from "./Listbox.svelte"
|
|
6
6
|
import { attemptSubmit } from "../utils/form.js"
|
|
7
7
|
import { Focus } from "../utils/calculate-active-index.js"
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import { useResolveButtonType } from "../hooks/use-resolve-button-type.svelte.js"
|
|
11
11
|
import { useFloatingReference, useFloatingReferenceProps } from "../internal/floating.svelte.js"
|
|
12
12
|
import { stateFromSlot } from "../utils/state.js"
|
|
13
|
-
import type {
|
|
13
|
+
import type { SvelteHTMLElements } from "svelte/elements"
|
|
14
14
|
import { useLabelledBy } from "../label/context.svelte.js"
|
|
15
15
|
import { useDescribedBy } from "../description/context.svelte.js"
|
|
16
16
|
import { useHover } from "../hooks/use-hover.svelte.js"
|
|
@@ -30,35 +30,36 @@
|
|
|
30
30
|
}
|
|
31
31
|
type ButtonPropsWeControl = "aria-controls" | "aria-expanded" | "aria-haspopup" | "aria-labelledby" | "disabled"
|
|
32
32
|
|
|
33
|
-
export type ListboxButtonProps
|
|
34
|
-
|
|
33
|
+
export type ListboxButtonProps = Props<
|
|
34
|
+
typeof DEFAULT_BUTTON_TAG,
|
|
35
35
|
ButtonRenderPropArg,
|
|
36
|
-
ButtonPropsWeControl,
|
|
37
36
|
{
|
|
37
|
+
element?: HTMLElement
|
|
38
|
+
id?: string
|
|
38
39
|
autofocus?: boolean
|
|
39
40
|
disabled?: boolean
|
|
40
41
|
}
|
|
41
42
|
>
|
|
42
43
|
</script>
|
|
43
44
|
|
|
44
|
-
<script lang="ts"
|
|
45
|
+
<script lang="ts">
|
|
45
46
|
const data = useData("ListboxButton")
|
|
46
47
|
const actions = useActions("ListboxButton")
|
|
47
48
|
|
|
48
49
|
const internalId = useId()
|
|
49
50
|
const providedId = useProvidedId()
|
|
50
51
|
let {
|
|
51
|
-
|
|
52
|
-
id =
|
|
52
|
+
element = $bindable(),
|
|
53
|
+
id = providedId || `headlessui-listbox-button-${internalId}`,
|
|
53
54
|
disabled: ownDisabled = false,
|
|
54
55
|
autofocus = false,
|
|
55
56
|
...theirProps
|
|
56
|
-
}:
|
|
57
|
+
}: ListboxButtonProps = $props()
|
|
57
58
|
const { setReference } = useFloatingReference()
|
|
58
59
|
const { getReferenceProps: getFloatingReferenceProps } = useFloatingReferenceProps()
|
|
59
60
|
$effect(() => {
|
|
60
|
-
data.buttonElement =
|
|
61
|
-
setReference(
|
|
61
|
+
data.buttonElement = element || null
|
|
62
|
+
setReference(element)
|
|
62
63
|
})
|
|
63
64
|
|
|
64
65
|
const disabled = $derived(data.disabled || ownDisabled)
|
|
@@ -149,7 +150,7 @@
|
|
|
149
150
|
|
|
150
151
|
const buttonType = useResolveButtonType({
|
|
151
152
|
get props() {
|
|
152
|
-
return { type: theirProps.type, as:
|
|
153
|
+
return { type: theirProps.type ?? undefined, as: DEFAULT_BUTTON_TAG }
|
|
153
154
|
},
|
|
154
155
|
get ref() {
|
|
155
156
|
return { current: data.buttonElement }
|
|
@@ -182,4 +183,4 @@
|
|
|
182
183
|
)
|
|
183
184
|
</script>
|
|
184
185
|
|
|
185
|
-
<ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_BUTTON_TAG} name="ListboxButton" bind:
|
|
186
|
+
<ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_BUTTON_TAG} name="ListboxButton" bind:element />
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Snippet } from "svelte";
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
3
2
|
declare const DEFAULT_BUTTON_TAG: "button";
|
|
4
3
|
type ButtonRenderPropArg = {
|
|
5
4
|
disabled: boolean;
|
|
@@ -11,36 +10,11 @@ type ButtonRenderPropArg = {
|
|
|
11
10
|
active: boolean;
|
|
12
11
|
value: any;
|
|
13
12
|
};
|
|
14
|
-
type
|
|
15
|
-
|
|
13
|
+
export type ListboxButtonProps = Props<typeof DEFAULT_BUTTON_TAG, ButtonRenderPropArg, {
|
|
14
|
+
element?: HTMLElement;
|
|
15
|
+
id?: string;
|
|
16
16
|
autofocus?: boolean;
|
|
17
17
|
disabled?: boolean;
|
|
18
18
|
}>;
|
|
19
|
-
declare
|
|
20
|
-
props(): {
|
|
21
|
-
as?: TTag | undefined;
|
|
22
|
-
} & (Exclude<keyof PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "autofocus" | ButtonPropsWeControl> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
|
|
23
|
-
children?: Snippet<[ButtonRenderPropArg & {
|
|
24
|
-
props?: Record<string, any>;
|
|
25
|
-
}]> | undefined;
|
|
26
|
-
class?: string | ((bag: ButtonRenderPropArg) => string) | null | undefined;
|
|
27
|
-
ref?: HTMLElement;
|
|
28
|
-
} & {
|
|
29
|
-
autofocus?: boolean;
|
|
30
|
-
disabled?: boolean;
|
|
31
|
-
};
|
|
32
|
-
events(): {};
|
|
33
|
-
slots(): {};
|
|
34
|
-
bindings(): "ref";
|
|
35
|
-
exports(): {};
|
|
36
|
-
}
|
|
37
|
-
interface $$IsomorphicComponent {
|
|
38
|
-
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']>> & {
|
|
39
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
40
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
41
|
-
<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
42
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
43
|
-
}
|
|
44
|
-
declare const ListboxButton: $$IsomorphicComponent;
|
|
45
|
-
type ListboxButton<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = InstanceType<typeof ListboxButton<TTag>>;
|
|
19
|
+
declare const ListboxButton: import("svelte").Component<ListboxButtonProps, {}, "element">;
|
|
46
20
|
export default ListboxButton;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
3
|
|
|
4
4
|
const DEFAULT_OPTION_TAG = "div" as const
|
|
5
5
|
type OptionRenderPropArg = {
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
}
|
|
14
14
|
type OptionPropsWeControl = "aria-disabled" | "aria-selected" | "role" | "tabIndex"
|
|
15
15
|
|
|
16
|
-
export type ListboxOptionProps<
|
|
17
|
-
|
|
16
|
+
export type ListboxOptionProps<TType = string> = Props<
|
|
17
|
+
typeof DEFAULT_OPTION_TAG,
|
|
18
18
|
OptionRenderPropArg,
|
|
19
|
-
OptionPropsWeControl,
|
|
20
19
|
{
|
|
20
|
+
element?: HTMLElement
|
|
21
21
|
id?: string
|
|
22
22
|
disabled?: boolean
|
|
23
23
|
value: TType
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
>
|
|
26
26
|
</script>
|
|
27
27
|
|
|
28
|
-
<script lang="ts" generics="TType
|
|
28
|
+
<script lang="ts" generics="TType">
|
|
29
29
|
import { useId } from "../hooks/use-id.js"
|
|
30
30
|
import {
|
|
31
31
|
ActivationTrigger,
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
} from "./Listbox.svelte"
|
|
38
38
|
import { disposables } from "../utils/disposables.js"
|
|
39
39
|
import { Focus } from "../utils/calculate-active-index.js"
|
|
40
|
-
import { getContext, onMount
|
|
40
|
+
import { getContext, onMount } from "svelte"
|
|
41
41
|
import { useTextValue } from "../hooks/use-text-value.svelte.js"
|
|
42
42
|
import { useTrackedPointer } from "../hooks/use-tracked-pointer.js"
|
|
43
43
|
import { stateFromSlot } from "../utils/state.js"
|
|
@@ -45,12 +45,12 @@
|
|
|
45
45
|
|
|
46
46
|
const internalId = useId()
|
|
47
47
|
let {
|
|
48
|
-
|
|
48
|
+
element = $bindable(),
|
|
49
49
|
id = `headlessui-listbox-option-${internalId}`,
|
|
50
50
|
disabled = false,
|
|
51
51
|
value,
|
|
52
52
|
...theirProps
|
|
53
|
-
}:
|
|
53
|
+
}: ListboxOptionProps<TType> = $props()
|
|
54
54
|
const usedInSelectedOption = getContext<boolean>("SelectedOptionContext") === true
|
|
55
55
|
const data = useData("ListboxOption")
|
|
56
56
|
const actions = useActions("ListboxOption")
|
|
@@ -62,13 +62,13 @@
|
|
|
62
62
|
const selected = $derived(data.isSelected(value))
|
|
63
63
|
const getTextValue = useTextValue({
|
|
64
64
|
get element() {
|
|
65
|
-
return
|
|
65
|
+
return element as HTMLElement
|
|
66
66
|
},
|
|
67
67
|
})
|
|
68
68
|
const bag: ListboxOptionDataRef<TType>["current"] = $derived({
|
|
69
69
|
disabled,
|
|
70
70
|
value,
|
|
71
|
-
domRef: { current:
|
|
71
|
+
domRef: { current: element || null },
|
|
72
72
|
get textValue() {
|
|
73
73
|
return getTextValue()
|
|
74
74
|
},
|
|
@@ -76,14 +76,14 @@
|
|
|
76
76
|
|
|
77
77
|
$effect(() => {
|
|
78
78
|
if (usedInSelectedOption) return
|
|
79
|
-
if (!
|
|
79
|
+
if (!element) {
|
|
80
80
|
data.listElements.delete(id)
|
|
81
81
|
} else {
|
|
82
|
-
data.listElements.set(id,
|
|
82
|
+
data.listElements.set(id, element)
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
return () => {
|
|
86
|
-
if (
|
|
86
|
+
if (element) data.listElements.delete(id)
|
|
87
87
|
}
|
|
88
88
|
})
|
|
89
89
|
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
if (!active) return
|
|
94
94
|
if (data.activationTrigger === ActivationTrigger.Pointer) return
|
|
95
95
|
return disposables().requestAnimationFrame(() => {
|
|
96
|
-
;(
|
|
96
|
+
;(element as HTMLElement)?.scrollIntoView?.({ block: "nearest" })
|
|
97
97
|
})
|
|
98
98
|
})
|
|
99
99
|
|
|
@@ -177,5 +177,5 @@
|
|
|
177
177
|
</script>
|
|
178
178
|
|
|
179
179
|
{#if selected || !usedInSelectedOption}
|
|
180
|
-
<ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_OPTION_TAG} name="Listbox" bind:
|
|
180
|
+
<ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_OPTION_TAG} name="Listbox" bind:element />
|
|
181
181
|
{/if}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare const DEFAULT_OPTION_TAG: "div";
|
|
3
3
|
type OptionRenderPropArg = {
|
|
4
4
|
/** @deprecated use `focus` instead */
|
|
@@ -8,39 +8,26 @@ type OptionRenderPropArg = {
|
|
|
8
8
|
disabled: boolean;
|
|
9
9
|
selectedOption: boolean;
|
|
10
10
|
};
|
|
11
|
-
type
|
|
12
|
-
|
|
11
|
+
export type ListboxOptionProps<TType = string> = Props<typeof DEFAULT_OPTION_TAG, OptionRenderPropArg, {
|
|
12
|
+
element?: HTMLElement;
|
|
13
13
|
id?: string;
|
|
14
14
|
disabled?: boolean;
|
|
15
15
|
value: TType;
|
|
16
16
|
}>;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
props(): {
|
|
20
|
-
as?: TTag | undefined;
|
|
21
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "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) & {
|
|
22
|
-
children?: Snippet<[OptionRenderPropArg & {
|
|
23
|
-
props?: Record<string, any>;
|
|
24
|
-
}]> | undefined;
|
|
25
|
-
class?: string | ((bag: OptionRenderPropArg) => string) | null | undefined;
|
|
26
|
-
ref?: HTMLElement;
|
|
27
|
-
} & {
|
|
28
|
-
id?: string;
|
|
29
|
-
disabled?: boolean;
|
|
30
|
-
value: TType;
|
|
31
|
-
};
|
|
17
|
+
declare class __sveltets_Render<TType> {
|
|
18
|
+
props(): ListboxOptionProps<TType>;
|
|
32
19
|
events(): {};
|
|
33
20
|
slots(): {};
|
|
34
|
-
bindings(): "
|
|
21
|
+
bindings(): "element";
|
|
35
22
|
exports(): {};
|
|
36
23
|
}
|
|
37
24
|
interface $$IsomorphicComponent {
|
|
38
|
-
new <TType
|
|
39
|
-
$$bindings?: ReturnType<__sveltets_Render<TType
|
|
40
|
-
} & ReturnType<__sveltets_Render<TType
|
|
41
|
-
<TType
|
|
42
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any
|
|
25
|
+
new <TType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TType>['props']>, ReturnType<__sveltets_Render<TType>['events']>, ReturnType<__sveltets_Render<TType>['slots']>> & {
|
|
26
|
+
$$bindings?: ReturnType<__sveltets_Render<TType>['bindings']>;
|
|
27
|
+
} & ReturnType<__sveltets_Render<TType>['exports']>;
|
|
28
|
+
<TType>(internal: unknown, props: ReturnType<__sveltets_Render<TType>['props']> & {}): ReturnType<__sveltets_Render<TType>['exports']>;
|
|
29
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
43
30
|
}
|
|
44
31
|
declare const ListboxOption: $$IsomorphicComponent;
|
|
45
|
-
type ListboxOption<TType
|
|
32
|
+
type ListboxOption<TType> = InstanceType<typeof ListboxOption<TType>>;
|
|
46
33
|
export default ListboxOption;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
3
|
import { mergeProps, RenderFeatures, type PropsForFeatures } from "../utils/render.js"
|
|
4
4
|
import {
|
|
5
5
|
useFloatingPanel,
|
|
@@ -7,8 +7,10 @@
|
|
|
7
7
|
useResolvedAnchor,
|
|
8
8
|
type AnchorPropsWithSelection,
|
|
9
9
|
} from "../internal/floating.svelte.js"
|
|
10
|
+
import type { SvelteHTMLElements } from "svelte/elements"
|
|
10
11
|
|
|
11
12
|
const DEFAULT_OPTIONS_TAG = "div" as const
|
|
13
|
+
|
|
12
14
|
type OptionsRenderPropArg = {
|
|
13
15
|
open: boolean
|
|
14
16
|
}
|
|
@@ -22,11 +24,11 @@
|
|
|
22
24
|
|
|
23
25
|
let OptionsRenderFeatures = RenderFeatures.RenderStrategy | RenderFeatures.Static
|
|
24
26
|
|
|
25
|
-
export type ListboxOptionsProps
|
|
26
|
-
|
|
27
|
+
export type ListboxOptionsProps = Props<
|
|
28
|
+
typeof DEFAULT_OPTIONS_TAG,
|
|
27
29
|
OptionsRenderPropArg,
|
|
28
|
-
OptionsPropsWeControl,
|
|
29
30
|
{
|
|
31
|
+
element?: HTMLElement
|
|
30
32
|
id?: string
|
|
31
33
|
anchor?: AnchorPropsWithSelection
|
|
32
34
|
portal?: boolean
|
|
@@ -36,7 +38,7 @@
|
|
|
36
38
|
>
|
|
37
39
|
</script>
|
|
38
40
|
|
|
39
|
-
<script lang="ts"
|
|
41
|
+
<script lang="ts">
|
|
40
42
|
import { useId } from "../hooks/use-id.js"
|
|
41
43
|
import { ListboxStates, useActions, useData, ValueMode, type ListboxDataContext } from "./Listbox.svelte"
|
|
42
44
|
import { getOwnerDocument } from "../utils/owner.js"
|
|
@@ -58,14 +60,14 @@
|
|
|
58
60
|
|
|
59
61
|
const internalId = useId()
|
|
60
62
|
let {
|
|
61
|
-
|
|
63
|
+
element = $bindable(),
|
|
62
64
|
id = `headlessui-listbox-options-${internalId}`,
|
|
63
65
|
anchor: rawAnchor,
|
|
64
66
|
portal = false,
|
|
65
67
|
modal = true,
|
|
66
68
|
transition = false,
|
|
67
69
|
...theirProps
|
|
68
|
-
}:
|
|
70
|
+
}: ListboxOptionsProps = $props()
|
|
69
71
|
const resolvedAnchor = useResolvedAnchor({
|
|
70
72
|
get anchor() {
|
|
71
73
|
return rawAnchor
|
|
@@ -219,9 +221,9 @@
|
|
|
219
221
|
const getFloatingPanelProps = useFloatingPanelProps()
|
|
220
222
|
|
|
221
223
|
$effect(() => {
|
|
222
|
-
localOptionsElement =
|
|
223
|
-
data.optionsElement =
|
|
224
|
-
if (anchor) setFloating(
|
|
224
|
+
localOptionsElement = element
|
|
225
|
+
data.optionsElement = element ?? null
|
|
226
|
+
if (anchor) setFloating(element ?? null)
|
|
225
227
|
})
|
|
226
228
|
|
|
227
229
|
const searchDisposables = useDisposables()
|
|
@@ -414,6 +416,6 @@
|
|
|
414
416
|
features={OptionsRenderFeatures}
|
|
415
417
|
visible={panelEnabled}
|
|
416
418
|
name="ListboxOptions"
|
|
417
|
-
bind:
|
|
419
|
+
bind:element
|
|
418
420
|
/>
|
|
419
421
|
</Portal>
|