@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
|
@@ -16,7 +16,7 @@ export function useTransitionContext() {
|
|
|
16
16
|
return context;
|
|
17
17
|
}
|
|
18
18
|
export function useParentNesting() {
|
|
19
|
-
|
|
19
|
+
const context = getContext("NestingContext");
|
|
20
20
|
if (!context) {
|
|
21
21
|
throw new Error("A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.");
|
|
22
22
|
}
|
|
@@ -29,7 +29,7 @@ export function hasChildren(bag) {
|
|
|
29
29
|
}
|
|
30
30
|
export function useNesting(options) {
|
|
31
31
|
const { done, parent } = $derived(options);
|
|
32
|
-
|
|
32
|
+
const transitionableChildren = $state([]);
|
|
33
33
|
const mounted = useIsMounted();
|
|
34
34
|
const d = useDisposables();
|
|
35
35
|
const unregister = (container, strategy = RenderStrategy.Hidden) => {
|
|
@@ -60,13 +60,13 @@ export function useNesting(options) {
|
|
|
60
60
|
}
|
|
61
61
|
return () => unregister(container, RenderStrategy.Unmount);
|
|
62
62
|
};
|
|
63
|
-
|
|
63
|
+
const todos = $state([]);
|
|
64
64
|
let wait = $state(Promise.resolve());
|
|
65
|
-
|
|
65
|
+
const chains = $state({
|
|
66
66
|
enter: [],
|
|
67
67
|
leave: [],
|
|
68
68
|
});
|
|
69
|
-
|
|
69
|
+
const onStart = (container, direction, cb) => {
|
|
70
70
|
// Clear out all existing todos
|
|
71
71
|
todos.splice(0);
|
|
72
72
|
// Remove all existing promises for the current container from the parent because we can
|
|
@@ -85,7 +85,7 @@ export function useNesting(options) {
|
|
|
85
85
|
parent?.chains[direction].push([
|
|
86
86
|
container,
|
|
87
87
|
new Promise((resolve) => {
|
|
88
|
-
Promise.all(chains[direction].map(([
|
|
88
|
+
Promise.all(chains[direction].map(([, promise]) => promise)).then(() => resolve());
|
|
89
89
|
}),
|
|
90
90
|
]);
|
|
91
91
|
if (direction === "enter") {
|
|
@@ -96,7 +96,7 @@ export function useNesting(options) {
|
|
|
96
96
|
}
|
|
97
97
|
};
|
|
98
98
|
const onStop = (_container, direction, cb) => {
|
|
99
|
-
Promise.all(chains[direction].splice(0).map(([
|
|
99
|
+
Promise.all(chains[direction].splice(0).map(([, promise]) => promise)) // Wait for my children
|
|
100
100
|
.then(() => {
|
|
101
101
|
todos.shift()?.(); // I'm ready
|
|
102
102
|
})
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
<script
|
|
2
|
-
|
|
3
|
-
generics="TFeature extends RenderFeatures, TTag extends ElementType, TSlot extends Record<string, any>, TValue"
|
|
4
|
-
>
|
|
5
|
-
import type { ElementType, Props } from "./types.js"
|
|
1
|
+
<script lang="ts" generics="TFeature extends RenderFeatures, TSlot extends Record<string, any>, TValue">
|
|
2
|
+
import type { Props } from "./types.js"
|
|
6
3
|
import { mergePropsAdvanced, RenderFeatures, type PropsForFeatures } from "./render.js"
|
|
7
|
-
import
|
|
4
|
+
import { stateFromSlot } from "./state.js"
|
|
8
5
|
|
|
9
6
|
let {
|
|
10
7
|
ourProps,
|
|
@@ -15,35 +12,79 @@
|
|
|
15
12
|
features,
|
|
16
13
|
visible = true,
|
|
17
14
|
name,
|
|
18
|
-
|
|
15
|
+
element = $bindable(),
|
|
19
16
|
value = $bindable(),
|
|
20
17
|
checked = $bindable(),
|
|
21
18
|
}: {
|
|
22
19
|
ourProps?: Expand<Props<any, TSlot> & PropsForFeatures<TFeature>>
|
|
23
|
-
theirProps: Expand<
|
|
20
|
+
theirProps: Expand<Props<any, TSlot, any>>
|
|
24
21
|
slot?: TSlot
|
|
25
22
|
slots?: TSlot
|
|
26
|
-
defaultTag
|
|
23
|
+
defaultTag?: string
|
|
27
24
|
features?: TFeature
|
|
28
25
|
visible?: boolean
|
|
29
26
|
name: string
|
|
30
27
|
ref?: HTMLElement
|
|
28
|
+
element?: HTMLElement
|
|
31
29
|
value?: TValue
|
|
32
30
|
checked?: boolean
|
|
33
31
|
} = $props()
|
|
34
32
|
|
|
35
33
|
const featureFlags = $derived(features ?? RenderFeatures.None)
|
|
36
|
-
|
|
34
|
+
let {
|
|
35
|
+
as,
|
|
36
|
+
static: isStatic = false,
|
|
37
|
+
unmount = true,
|
|
38
|
+
children,
|
|
39
|
+
asChild,
|
|
40
|
+
class: className,
|
|
41
|
+
...rest
|
|
42
|
+
} = $derived(mergePropsAdvanced(theirProps, ourProps ?? {}))
|
|
37
43
|
const render = $derived(
|
|
38
44
|
visible ||
|
|
39
45
|
(featureFlags & RenderFeatures.Static && isStatic) ||
|
|
40
46
|
(featureFlags & RenderFeatures.RenderStrategy && !unmount)
|
|
41
47
|
)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
: {}
|
|
48
|
+
|
|
49
|
+
const resolvedClass: string | undefined = $derived(
|
|
50
|
+
typeof className === "function" ? className(slot) : (className ?? undefined)
|
|
46
51
|
)
|
|
52
|
+
|
|
53
|
+
const _props = $derived.by(() => {
|
|
54
|
+
// Allow for className to be a function with the slot as the contents
|
|
55
|
+
if ("class" in rest && rest.class && typeof rest.class === "function") {
|
|
56
|
+
rest.class = rest.className(slot)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Drop `aria-labelledby` if it only references the current element. If the `aria-labelledby`
|
|
60
|
+
// references itself but also another element then we can keep it.
|
|
61
|
+
if (rest["aria-labelledby"] && rest["aria-labelledby"] === rest.id) {
|
|
62
|
+
rest["aria-labelledby"] = undefined
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const hiddenProps =
|
|
66
|
+
!visible && !(featureFlags & RenderFeatures.Static) && featureFlags & RenderFeatures.RenderStrategy && !unmount
|
|
67
|
+
? { hidden: true, style: "display: none;" }
|
|
68
|
+
: {}
|
|
69
|
+
|
|
70
|
+
return { ...rest, ...(resolvedClass ? { class: resolvedClass } : {}), ...hiddenProps, ...stateFromSlot(slot) }
|
|
71
|
+
})
|
|
47
72
|
</script>
|
|
48
73
|
|
|
49
|
-
{#if render}
|
|
74
|
+
{#if render}
|
|
75
|
+
{#if asChild || !defaultTag}
|
|
76
|
+
{@render children?.({ ...slot, props: _props })}
|
|
77
|
+
{:else if defaultTag === "select"}
|
|
78
|
+
<select {..._props} bind:this={element} bind:value>{@render children?.(slot)}</select>
|
|
79
|
+
{:else if defaultTag === "input" && (_props as Record<string, any>).type === "checkbox"}
|
|
80
|
+
<input type="checkbox" {..._props} bind:this={element} bind:checked />
|
|
81
|
+
{:else if defaultTag === "input"}
|
|
82
|
+
<input {..._props} bind:this={element} bind:value />
|
|
83
|
+
{:else if defaultTag === "textarea"}
|
|
84
|
+
<textarea {..._props} bind:this={element} bind:value></textarea>
|
|
85
|
+
{:else if children}
|
|
86
|
+
<svelte:element this={defaultTag} {..._props} bind:this={element}>{@render children(slot)}</svelte:element>
|
|
87
|
+
{:else}
|
|
88
|
+
<svelte:element this={defaultTag} {..._props} bind:this={element} />
|
|
89
|
+
{/if}
|
|
90
|
+
{/if}
|
|
@@ -1,16 +1,29 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "./types.js";
|
|
2
2
|
import { RenderFeatures } from "./render.js";
|
|
3
|
-
declare class __sveltets_Render<TFeature extends RenderFeatures,
|
|
3
|
+
declare class __sveltets_Render<TFeature extends RenderFeatures, TSlot extends Record<string, any>, TValue> {
|
|
4
4
|
props(): {
|
|
5
|
-
ourProps?: Expand<{
|
|
6
|
-
[
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
ourProps?: Expand<Omit<{
|
|
6
|
+
[name: string]: any;
|
|
7
|
+
}, "asChild" | "children" | "class"> & {
|
|
8
|
+
asChild: true;
|
|
9
9
|
children?: import("svelte").Snippet<[TSlot & {
|
|
10
10
|
props?: Record<string, any>;
|
|
11
11
|
}]> | undefined;
|
|
12
|
+
class?: never;
|
|
13
|
+
} & Expand<((TFeature extends RenderFeatures.Static ? {
|
|
14
|
+
static?: boolean;
|
|
15
|
+
} : {}) extends infer T ? T extends (TFeature extends RenderFeatures.Static ? {
|
|
16
|
+
static?: boolean;
|
|
17
|
+
} : {}) ? T extends any ? (x: T) => any : never : never : never) | ((TFeature extends RenderFeatures.RenderStrategy ? {
|
|
18
|
+
unmount?: boolean;
|
|
19
|
+
} : {}) extends infer T_1 ? T_1 extends (TFeature extends RenderFeatures.RenderStrategy ? {
|
|
20
|
+
unmount?: boolean;
|
|
21
|
+
} : {}) ? T_1 extends any ? (x: T_1) => any : never : never : never) extends (x: infer R) => any ? R : never>> | Expand<Omit<{
|
|
22
|
+
[name: string]: any;
|
|
23
|
+
}, "asChild" | "children" | "class"> & {
|
|
24
|
+
asChild?: never;
|
|
25
|
+
children?: import("svelte").Snippet<[TSlot]> | undefined;
|
|
12
26
|
class?: string | ((bag: TSlot) => string) | null | undefined;
|
|
13
|
-
ref?: HTMLElement;
|
|
14
27
|
} & Expand<((TFeature extends RenderFeatures.Static ? {
|
|
15
28
|
static?: boolean;
|
|
16
29
|
} : {}) extends infer T ? T extends (TFeature extends RenderFeatures.Static ? {
|
|
@@ -20,36 +33,30 @@ declare class __sveltets_Render<TFeature extends RenderFeatures, TTag extends El
|
|
|
20
33
|
} : {}) extends infer T_1 ? T_1 extends (TFeature extends RenderFeatures.RenderStrategy ? {
|
|
21
34
|
unmount?: boolean;
|
|
22
35
|
} : {}) ? T_1 extends any ? (x: T_1) => any : never : never : never) extends (x: infer R) => any ? R : never>> | undefined;
|
|
23
|
-
theirProps:
|
|
24
|
-
as?: TTag | undefined;
|
|
25
|
-
children?: import("svelte").Snippet<[TSlot & {
|
|
26
|
-
props?: Record<string, any>;
|
|
27
|
-
}]> | undefined;
|
|
28
|
-
class?: string | ((bag: TSlot) => string) | null | undefined;
|
|
29
|
-
ref?: HTMLElement | undefined;
|
|
30
|
-
};
|
|
36
|
+
theirProps: Expand<Props<any, TSlot_1, any>>;
|
|
31
37
|
slot?: TSlot | undefined;
|
|
32
38
|
slots?: TSlot | undefined;
|
|
33
|
-
defaultTag
|
|
39
|
+
defaultTag?: string;
|
|
34
40
|
features?: TFeature | undefined;
|
|
35
41
|
visible?: boolean;
|
|
36
42
|
name: string;
|
|
37
43
|
ref?: HTMLElement;
|
|
44
|
+
element?: HTMLElement;
|
|
38
45
|
value?: TValue | undefined;
|
|
39
46
|
checked?: boolean;
|
|
40
47
|
};
|
|
41
48
|
events(): {};
|
|
42
49
|
slots(): {};
|
|
43
|
-
bindings(): "
|
|
50
|
+
bindings(): "element" | "value" | "checked";
|
|
44
51
|
exports(): {};
|
|
45
52
|
}
|
|
46
53
|
interface $$IsomorphicComponent {
|
|
47
|
-
new <TFeature extends RenderFeatures,
|
|
48
|
-
$$bindings?: ReturnType<__sveltets_Render<TFeature,
|
|
49
|
-
} & ReturnType<__sveltets_Render<TFeature,
|
|
50
|
-
<TFeature extends RenderFeatures,
|
|
51
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any
|
|
54
|
+
new <TFeature extends RenderFeatures, TSlot extends Record<string, any>, TValue>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TFeature, TSlot, TValue>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TFeature, TSlot, TValue>['props']>, ReturnType<__sveltets_Render<TFeature, TSlot, TValue>['events']>, ReturnType<__sveltets_Render<TFeature, TSlot, TValue>['slots']>> & {
|
|
55
|
+
$$bindings?: ReturnType<__sveltets_Render<TFeature, TSlot, TValue>['bindings']>;
|
|
56
|
+
} & ReturnType<__sveltets_Render<TFeature, TSlot, TValue>['exports']>;
|
|
57
|
+
<TFeature extends RenderFeatures, TSlot extends Record<string, any>, TValue>(internal: unknown, props: ReturnType<__sveltets_Render<TFeature, TSlot, TValue>['props']> & {}): ReturnType<__sveltets_Render<TFeature, TSlot, TValue>['exports']>;
|
|
58
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
|
|
52
59
|
}
|
|
53
60
|
declare const ElementOrComponent: $$IsomorphicComponent;
|
|
54
|
-
type ElementOrComponent<TFeature extends RenderFeatures,
|
|
61
|
+
type ElementOrComponent<TFeature extends RenderFeatures, TSlot extends Record<string, any>, TValue> = InstanceType<typeof ElementOrComponent<TFeature, TSlot, TValue>>;
|
|
55
62
|
export default ElementOrComponent;
|
package/dist/utils/state.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export const stateFromSlot = (slot = {}) => {
|
|
2
2
|
if (typeof slot !== "object")
|
|
3
3
|
return {};
|
|
4
|
-
|
|
4
|
+
const dataAttributes = {};
|
|
5
5
|
let exposeState = false;
|
|
6
|
-
|
|
7
|
-
for (
|
|
6
|
+
const states = [];
|
|
7
|
+
for (const [k, v] of Object.entries(slot)) {
|
|
8
8
|
if (typeof v === "boolean") {
|
|
9
9
|
exposeState = true;
|
|
10
10
|
}
|
|
@@ -14,7 +14,7 @@ export const stateFromSlot = (slot = {}) => {
|
|
|
14
14
|
}
|
|
15
15
|
if (!exposeState)
|
|
16
16
|
return {};
|
|
17
|
-
for (
|
|
17
|
+
for (const s of states) {
|
|
18
18
|
dataAttributes[`data-${s}`] = "";
|
|
19
19
|
}
|
|
20
20
|
return {
|
package/dist/utils/types.d.ts
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import type { Snippet } from "svelte";
|
|
2
2
|
import type { SvelteHTMLElements } from "svelte/elements";
|
|
3
|
-
export type ElementType = keyof SvelteHTMLElements;
|
|
4
3
|
export type Expand<T> = T extends infer O ? {
|
|
5
4
|
[K in keyof O]: O[K];
|
|
6
5
|
} : never;
|
|
7
|
-
export type
|
|
8
|
-
|
|
9
|
-
type CleanProps<TTag extends ElementType, TOmittableProps extends PropertyKey = never> = Omit<PropsOf<TTag>, TOmittableProps | PropsWeControl>;
|
|
10
|
-
type OurProps<TSlot extends Record<string, any>> = {
|
|
6
|
+
export type Props<TTag extends string, TSlot extends Record<string, any> = {}, Overrides = {}> = Omit<SvelteHTMLElements[TTag], "asChild" | "children" | "class" | keyof Overrides> & ({
|
|
7
|
+
asChild: true;
|
|
11
8
|
children?: Snippet<[TSlot & {
|
|
12
9
|
props?: Record<string, any>;
|
|
13
10
|
}]>;
|
|
11
|
+
class?: never;
|
|
12
|
+
} | {
|
|
13
|
+
asChild?: never;
|
|
14
|
+
children?: Snippet<[TSlot]>;
|
|
14
15
|
class?: string | null | ((bag: TSlot) => string);
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
16
|
+
}) & Overrides;
|
|
17
|
+
export type PropsAsChild<TSlot extends Record<string, any> = {}, Overrides = {}> = {
|
|
18
|
+
children?: Snippet<[TSlot & {
|
|
19
|
+
props?: Record<string, any>;
|
|
20
|
+
}]>;
|
|
21
|
+
} & Overrides;
|
|
18
22
|
export type EnsureArray<T> = T extends any[] ? T : Expand<T>[];
|
|
19
|
-
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pzerelles/headlessui-svelte",
|
|
3
|
-
"version": "2.1.2-next.
|
|
3
|
+
"version": "2.1.2-next.33",
|
|
4
4
|
"exports": {
|
|
5
5
|
".": {
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -16,38 +16,38 @@
|
|
|
16
16
|
"svelte": "^5.0.0-next.244"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@changesets/cli": "^2.27.
|
|
19
|
+
"@changesets/cli": "^2.27.9",
|
|
20
20
|
"@changesets/types": "^6.0.0",
|
|
21
|
-
"@playwright/test": "^1.
|
|
21
|
+
"@playwright/test": "^1.48.0",
|
|
22
22
|
"@pzerelles/heroicons-svelte": "^2.1.5",
|
|
23
23
|
"@sveltejs/adapter-auto": "^3.2.5",
|
|
24
|
-
"@sveltejs/kit": "^2.6.
|
|
24
|
+
"@sveltejs/kit": "^2.6.3",
|
|
25
25
|
"@sveltejs/package": "^2.3.5",
|
|
26
26
|
"@sveltejs/vite-plugin-svelte": "4.0.0-next.7",
|
|
27
27
|
"@testing-library/jest-dom": "^6.5.0",
|
|
28
|
-
"@testing-library/svelte": "^5.2.
|
|
28
|
+
"@testing-library/svelte": "^5.2.3",
|
|
29
29
|
"@types/eslint": "^9.6.1",
|
|
30
|
-
"@types/node": "^20.16.
|
|
30
|
+
"@types/node": "^20.16.11",
|
|
31
31
|
"autoprefixer": "^10.4.20",
|
|
32
|
-
"eslint": "^9.
|
|
32
|
+
"eslint": "^9.12.0",
|
|
33
33
|
"eslint-config-prettier": "^9.1.0",
|
|
34
34
|
"eslint-plugin-svelte": "^2.44.1",
|
|
35
|
-
"globals": "^15.
|
|
36
|
-
"jsdom": "^
|
|
35
|
+
"globals": "^15.10.0",
|
|
36
|
+
"jsdom": "^25.0.1",
|
|
37
37
|
"outdent": "^0.8.0",
|
|
38
38
|
"postcss": "^8.4.47",
|
|
39
39
|
"prettier": "^3.3.3",
|
|
40
40
|
"prettier-plugin-svelte": "^3.2.7",
|
|
41
41
|
"prettier-plugin-tailwindcss": "^0.6.8",
|
|
42
42
|
"publint": "^0.2.11",
|
|
43
|
-
"svelte": "5.0.0-next.
|
|
43
|
+
"svelte": "5.0.0-next.262",
|
|
44
44
|
"svelte-check": "^4.0.4",
|
|
45
45
|
"tailwindcss": "^3.4.13",
|
|
46
46
|
"tslib": "^2.7.0",
|
|
47
47
|
"typescript": "^5.6.2",
|
|
48
|
-
"typescript-eslint": "^8.
|
|
48
|
+
"typescript-eslint": "^8.8.1",
|
|
49
49
|
"vite": "^5.4.8",
|
|
50
|
-
"vitest": "^2.1.
|
|
50
|
+
"vitest": "^2.1.2"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@floating-ui/core": "^1.6.8",
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
import type { ElementType, EnsureArray, Props } from "../utils/types.js"
|
|
3
|
-
import type { ByComparator } from "../hooks/use-by-comparator.js"
|
|
4
|
-
|
|
5
|
-
const DEFAULT_COMBOBOX_TAG = "svelte:fragment" as const
|
|
6
|
-
type ComboboxRenderPropArg<TValue, TActive = TValue> = {
|
|
7
|
-
open: boolean
|
|
8
|
-
disabled: boolean
|
|
9
|
-
activeIndex: number | null
|
|
10
|
-
activeOption: TActive | null
|
|
11
|
-
value: TValue
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export type CheckboxProps<
|
|
15
|
-
TValue,
|
|
16
|
-
TMultiple extends boolean | undefined,
|
|
17
|
-
TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG,
|
|
18
|
-
> = Props<
|
|
19
|
-
TTag,
|
|
20
|
-
ComboboxRenderPropArg<NoInfer<TValue>>,
|
|
21
|
-
"value" | "defaultValue" | "multiple" | "onChange" | "by",
|
|
22
|
-
{
|
|
23
|
-
value?: TMultiple extends true ? EnsureArray<TValue> : TValue
|
|
24
|
-
defaultValue?: TMultiple extends true ? EnsureArray<NoInfer<TValue>> : NoInfer<TValue>
|
|
25
|
-
|
|
26
|
-
onChange?(value: TMultiple extends true ? EnsureArray<NoInfer<TValue>> : NoInfer<TValue> | null): void
|
|
27
|
-
by?: ByComparator<TMultiple extends true ? EnsureArray<NoInfer<TValue>>[number] : NoInfer<TValue>>
|
|
28
|
-
|
|
29
|
-
/** @deprecated The `<Combobox />` is now nullable default */
|
|
30
|
-
nullable?: boolean
|
|
31
|
-
|
|
32
|
-
multiple?: TMultiple
|
|
33
|
-
disabled?: boolean
|
|
34
|
-
form?: string
|
|
35
|
-
name?: string
|
|
36
|
-
immediate?: boolean
|
|
37
|
-
virtual?: {
|
|
38
|
-
options: NoInfer<TValue>[]
|
|
39
|
-
disabled?: (value: NoInfer<TValue>) => boolean
|
|
40
|
-
} | null
|
|
41
|
-
|
|
42
|
-
onclose?(): void
|
|
43
|
-
|
|
44
|
-
__demoMode?: boolean
|
|
45
|
-
}
|
|
46
|
-
>
|
|
47
|
-
</script>
|
|
48
|
-
|
|
49
|
-
<script lang="ts" generics="TType, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG">
|
|
50
|
-
import { useDisabled } from "../hooks/use-disabled.js"
|
|
51
|
-
|
|
52
|
-
const providedDisabled = useDisabled()
|
|
53
|
-
</script>
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { ElementType, EnsureArray, Props } from "../utils/types.js";
|
|
2
|
-
import type { ByComparator } from "../hooks/use-by-comparator.js";
|
|
3
|
-
declare const DEFAULT_COMBOBOX_TAG: "svelte:fragment";
|
|
4
|
-
type ComboboxRenderPropArg<TValue, TActive = TValue> = {
|
|
5
|
-
open: boolean;
|
|
6
|
-
disabled: boolean;
|
|
7
|
-
activeIndex: number | null;
|
|
8
|
-
activeOption: TActive | null;
|
|
9
|
-
value: TValue;
|
|
10
|
-
};
|
|
11
|
-
export type CheckboxProps<TValue, TMultiple extends boolean | undefined, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG> = Props<TTag, ComboboxRenderPropArg<NoInfer<TValue>>, "value" | "defaultValue" | "multiple" | "onChange" | "by", {
|
|
12
|
-
value?: TMultiple extends true ? EnsureArray<TValue> : TValue;
|
|
13
|
-
defaultValue?: TMultiple extends true ? EnsureArray<NoInfer<TValue>> : NoInfer<TValue>;
|
|
14
|
-
onChange?(value: TMultiple extends true ? EnsureArray<NoInfer<TValue>> : NoInfer<TValue> | null): void;
|
|
15
|
-
by?: ByComparator<TMultiple extends true ? EnsureArray<NoInfer<TValue>>[number] : NoInfer<TValue>>;
|
|
16
|
-
/** @deprecated The `<Combobox />` is now nullable default */
|
|
17
|
-
nullable?: boolean;
|
|
18
|
-
multiple?: TMultiple;
|
|
19
|
-
disabled?: boolean;
|
|
20
|
-
form?: string;
|
|
21
|
-
name?: string;
|
|
22
|
-
immediate?: boolean;
|
|
23
|
-
virtual?: {
|
|
24
|
-
options: NoInfer<TValue>[];
|
|
25
|
-
disabled?: (value: NoInfer<TValue>) => boolean;
|
|
26
|
-
} | null;
|
|
27
|
-
onclose?(): void;
|
|
28
|
-
__demoMode?: boolean;
|
|
29
|
-
}>;
|
|
30
|
-
declare class __sveltets_Render<TType, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG> {
|
|
31
|
-
props(): Record<string, never>;
|
|
32
|
-
events(): {} & {
|
|
33
|
-
[evt: string]: CustomEvent<any>;
|
|
34
|
-
};
|
|
35
|
-
slots(): {};
|
|
36
|
-
bindings(): string;
|
|
37
|
-
exports(): {};
|
|
38
|
-
}
|
|
39
|
-
interface $$IsomorphicComponent {
|
|
40
|
-
new <TType, TTag extends ElementType = typeof DEFAULT_COMBOBOX_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_COMBOBOX_TAG>(internal: unknown, props: {
|
|
44
|
-
$$events?: ReturnType<__sveltets_Render<TType, TTag>['events']>;
|
|
45
|
-
}): ReturnType<__sveltets_Render<TType, TTag>['exports']>;
|
|
46
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
47
|
-
}
|
|
48
|
-
declare const Combobox: $$IsomorphicComponent;
|
|
49
|
-
type Combobox<TType, TTag extends ElementType = typeof DEFAULT_COMBOBOX_TAG> = InstanceType<typeof Combobox<TType, TTag>>;
|
|
50
|
-
export default Combobox;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
<script lang="ts" generics="TTag extends ElementType, TSlot extends Record<string, any>, TValue">
|
|
2
|
-
import { stateFromSlot } from "./state.js"
|
|
3
|
-
import type { ElementType, Props } from "./types.js"
|
|
4
|
-
|
|
5
|
-
let {
|
|
6
|
-
slot = {} as TSlot,
|
|
7
|
-
tag,
|
|
8
|
-
ref = $bindable(),
|
|
9
|
-
value = $bindable(),
|
|
10
|
-
checked = $bindable(),
|
|
11
|
-
children,
|
|
12
|
-
as = tag as TTag,
|
|
13
|
-
unmount,
|
|
14
|
-
static: isStatic,
|
|
15
|
-
...props
|
|
16
|
-
}: {
|
|
17
|
-
as?: TTag
|
|
18
|
-
slot: TSlot
|
|
19
|
-
tag: ElementType
|
|
20
|
-
ref?: HTMLElement
|
|
21
|
-
value?: TValue
|
|
22
|
-
checked?: boolean
|
|
23
|
-
} & Props<TTag, TSlot> = $props()
|
|
24
|
-
|
|
25
|
-
const resolvedClass = $derived(
|
|
26
|
-
typeof props.class === "function" ? props.class(slot) : (props.class as string | undefined)
|
|
27
|
-
)
|
|
28
|
-
</script>
|
|
29
|
-
|
|
30
|
-
{#if as === "svelte:fragment"}
|
|
31
|
-
{#if children}{@render children({
|
|
32
|
-
...slot,
|
|
33
|
-
props: {
|
|
34
|
-
...props,
|
|
35
|
-
...(resolvedClass ? { class: resolvedClass } : {}),
|
|
36
|
-
...stateFromSlot(slot),
|
|
37
|
-
},
|
|
38
|
-
})}{/if}
|
|
39
|
-
{:else if children}
|
|
40
|
-
{#if as === "select"}
|
|
41
|
-
<select bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} bind:value>
|
|
42
|
-
{@render children(slot)}
|
|
43
|
-
</select>
|
|
44
|
-
{:else}
|
|
45
|
-
<svelte:element this={as} bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)}>
|
|
46
|
-
{@render children(slot)}
|
|
47
|
-
</svelte:element>
|
|
48
|
-
{/if}
|
|
49
|
-
{:else if as === "input" && props.type === "checkbox"}
|
|
50
|
-
<input type="checkbox" bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} bind:checked />
|
|
51
|
-
{:else if as === "input"}
|
|
52
|
-
<input bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} bind:value />
|
|
53
|
-
{:else if as === "textarea"}
|
|
54
|
-
<textarea bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} bind:value></textarea>
|
|
55
|
-
{:else}
|
|
56
|
-
<svelte:element this={as} bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} />
|
|
57
|
-
{/if}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { ElementType } from "./types.js";
|
|
2
|
-
declare class __sveltets_Render<TTag extends ElementType, TSlot extends Record<string, any>, TValue> {
|
|
3
|
-
props(): {
|
|
4
|
-
as?: TTag | undefined;
|
|
5
|
-
slot: TSlot;
|
|
6
|
-
tag: ElementType;
|
|
7
|
-
ref?: HTMLElement;
|
|
8
|
-
value?: TValue | undefined;
|
|
9
|
-
checked?: boolean;
|
|
10
|
-
} & (Exclude<keyof import("./types.js").PropsOf<TTag>, "slot" | "as" | "children" | "class" | "ref"> extends infer T extends keyof import("./types.js").PropsOf<TTag> ? { [P in T]: import("./types.js").PropsOf<TTag>[P]; } : never) & {
|
|
11
|
-
children?: import("svelte").Snippet<[TSlot & {
|
|
12
|
-
props?: Record<string, any>;
|
|
13
|
-
}]> | undefined;
|
|
14
|
-
class?: string | ((bag: TSlot) => string) | null | undefined;
|
|
15
|
-
ref?: HTMLElement;
|
|
16
|
-
};
|
|
17
|
-
events(): {};
|
|
18
|
-
slots(): {};
|
|
19
|
-
bindings(): "ref" | "value" | "checked";
|
|
20
|
-
exports(): {};
|
|
21
|
-
}
|
|
22
|
-
interface $$IsomorphicComponent {
|
|
23
|
-
new <TTag extends ElementType, TSlot extends Record<string, any>, TValue>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag, TSlot, TValue>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag, TSlot, TValue>['props']>, ReturnType<__sveltets_Render<TTag, TSlot, TValue>['events']>, ReturnType<__sveltets_Render<TTag, TSlot, TValue>['slots']>> & {
|
|
24
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag, TSlot, TValue>['bindings']>;
|
|
25
|
-
} & ReturnType<__sveltets_Render<TTag, TSlot, TValue>['exports']>;
|
|
26
|
-
<TTag extends ElementType, TSlot extends Record<string, any>, TValue>(internal: unknown, props: ReturnType<__sveltets_Render<TTag, TSlot, TValue>['props']> & {}): ReturnType<__sveltets_Render<TTag, TSlot, TValue>['exports']>;
|
|
27
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
|
|
28
|
-
}
|
|
29
|
-
declare const Generic: $$IsomorphicComponent;
|
|
30
|
-
type Generic<TTag extends ElementType, TSlot extends Record<string, any>, TValue> = InstanceType<typeof Generic<TTag, TSlot, TValue>>;
|
|
31
|
-
export default Generic;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { Snippet } from "svelte";
|
|
2
|
-
import type { SvelteHTMLElements } from "svelte/elements";
|
|
3
|
-
export interface SvelteHTMLProps extends SvelteHTMLElements {
|
|
4
|
-
"svelte:fragment": {};
|
|
5
|
-
}
|
|
6
|
-
export type ElementType = keyof SvelteHTMLProps;
|
|
7
|
-
export type Expand<T> = T extends infer O ? {
|
|
8
|
-
[K in keyof O]: O[K];
|
|
9
|
-
} : never;
|
|
10
|
-
type OurProps<TSlot> = {
|
|
11
|
-
children?: Snippet<[TSlot, Record<string, any>]>;
|
|
12
|
-
ref?: HTMLElement;
|
|
13
|
-
class?: string | null | ((bag: TSlot) => string);
|
|
14
|
-
};
|
|
15
|
-
type MergeProps3<T, U, V> = {
|
|
16
|
-
[K in keyof T | keyof U | keyof V]?: K extends keyof V ? V[K] : K extends keyof U ? U[K] : K extends keyof T ? T[K] : never;
|
|
17
|
-
};
|
|
18
|
-
export type Props<TTag extends ElementType, TSlot = {}, TOmittableProps extends PropertyKey = never, Overrides = {}> = MergeProps3<SvelteHTMLProps[TTag], OurProps<TSlot>, Overrides>;
|
|
19
|
-
export type EnsureArray<T> = T extends any[] ? T : Expand<T>[];
|
|
20
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|