@pzerelles/headlessui-svelte 2.1.2-next.30 → 2.1.2-next.32
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 +84 -54
- package/dist/button/Button.svelte.d.ts +2 -3
- package/dist/checkbox/Checkbox.svelte +173 -120
- package/dist/checkbox/Checkbox.svelte.d.ts +2 -3
- package/dist/close-button/CloseButton.svelte +12 -6
- package/dist/close-button/CloseButton.svelte.d.ts +7 -8
- package/dist/combobox/Combobox.svelte +50 -3
- package/dist/data-interactive/DataInteractive.svelte +55 -29
- package/dist/data-interactive/DataInteractive.svelte.d.ts +2 -3
- package/dist/description/Description.svelte +31 -21
- package/dist/description/Description.svelte.d.ts +1 -2
- package/dist/dialog/Dialog.svelte +320 -228
- package/dist/dialog/Dialog.svelte.d.ts +2 -3
- package/dist/dialog/DialogBackdrop.svelte +30 -13
- package/dist/dialog/DialogBackdrop.svelte.d.ts +2 -3
- package/dist/dialog/DialogPanel.svelte +49 -26
- package/dist/dialog/DialogPanel.svelte.d.ts +2 -3
- package/dist/dialog/DialogTitle.svelte +38 -23
- package/dist/dialog/DialogTitle.svelte.d.ts +2 -3
- package/dist/field/Field.svelte +47 -25
- package/dist/field/Field.svelte.d.ts +1 -2
- package/dist/fieldset/Fieldset.svelte +50 -29
- package/dist/fieldset/Fieldset.svelte.d.ts +1 -2
- package/dist/focus-trap/FocusTrap.svelte +419 -283
- package/dist/focus-trap/FocusTrap.svelte.d.ts +1 -2
- package/dist/input/Input.svelte +84 -53
- package/dist/input/Input.svelte.d.ts +2 -3
- package/dist/internal/FloatingProvider.svelte +14 -9
- package/dist/internal/FocusSentinel.svelte +16 -8
- package/dist/internal/ForcePortalRoot.svelte +7 -3
- package/dist/internal/FormFields.svelte +47 -34
- package/dist/internal/FormFieldsProvider.svelte +9 -5
- package/dist/internal/FormResolver.svelte +20 -15
- package/dist/internal/Hidden.svelte +50 -29
- package/dist/internal/Hidden.svelte.d.ts +1 -2
- package/dist/internal/MainTreeProvider.svelte +89 -36
- package/dist/internal/Portal.svelte +18 -14
- package/dist/internal/floating.svelte.d.ts +2 -3
- package/dist/internal/floating.svelte.js +0 -1
- package/dist/label/Label.svelte +93 -58
- package/dist/label/Label.svelte.d.ts +1 -2
- package/dist/legend/Legend.svelte +12 -3
- package/dist/listbox/Listbox.svelte +525 -387
- package/dist/listbox/Listbox.svelte.d.ts +2 -3
- package/dist/listbox/ListboxButton.svelte +173 -127
- package/dist/listbox/ListboxButton.svelte.d.ts +2 -3
- package/dist/listbox/ListboxOption.svelte +170 -129
- package/dist/listbox/ListboxOption.svelte.d.ts +2 -3
- package/dist/listbox/ListboxOptions.svelte +400 -304
- package/dist/listbox/ListboxOptions.svelte.d.ts +2 -3
- package/dist/listbox/ListboxSelectedOption.svelte +38 -15
- package/dist/listbox/ListboxSelectedOption.svelte.d.ts +1 -2
- package/dist/menu/Menu.svelte +77 -51
- package/dist/menu/Menu.svelte.d.ts +2 -4
- package/dist/menu/MenuButton.svelte +157 -117
- package/dist/menu/MenuButton.svelte.d.ts +2 -3
- package/dist/menu/MenuHeading.svelte +32 -14
- package/dist/menu/MenuHeading.svelte.d.ts +1 -2
- package/dist/menu/MenuItem.svelte +142 -107
- package/dist/menu/MenuItem.svelte.d.ts +2 -3
- package/dist/menu/MenuItems.svelte +301 -229
- package/dist/menu/MenuItems.svelte.d.ts +2 -3
- package/dist/menu/MenuSection.svelte +24 -9
- package/dist/menu/MenuSection.svelte.d.ts +1 -2
- package/dist/menu/MenuSeparator.svelte +17 -4
- package/dist/menu/MenuSeparator.svelte.d.ts +1 -2
- package/dist/popover/Popover.svelte +216 -150
- package/dist/popover/Popover.svelte.d.ts +2 -3
- package/dist/popover/PopoverBackdrop.svelte +67 -41
- package/dist/popover/PopoverBackdrop.svelte.d.ts +2 -3
- package/dist/popover/PopoverButton.svelte +292 -212
- package/dist/popover/PopoverButton.svelte.d.ts +2 -3
- package/dist/popover/PopoverGroup.svelte +62 -35
- package/dist/popover/PopoverGroup.svelte.d.ts +1 -2
- package/dist/popover/PopoverPanel.svelte +311 -229
- package/dist/popover/PopoverPanel.svelte.d.ts +2 -3
- package/dist/portal/InternalPortal.svelte +141 -85
- package/dist/portal/InternalPortal.svelte.d.ts +1 -2
- package/dist/portal/Portal.svelte +5 -2
- package/dist/portal/PortalGroup.svelte +30 -9
- package/dist/portal/PortalGroup.svelte.d.ts +1 -2
- package/dist/select/Select.svelte +98 -68
- package/dist/select/Select.svelte.d.ts +2 -3
- package/dist/switch/Switch.svelte +179 -132
- package/dist/switch/Switch.svelte.d.ts +2 -3
- package/dist/switch/SwitchGroup.svelte +44 -31
- package/dist/switch/SwitchGroup.svelte.d.ts +1 -2
- package/dist/tabs/Tab.svelte +194 -142
- package/dist/tabs/Tab.svelte.d.ts +2 -3
- package/dist/tabs/TabGroup.svelte +86 -56
- package/dist/tabs/TabGroup.svelte.d.ts +2 -3
- package/dist/tabs/TabList.svelte +31 -11
- package/dist/tabs/TabList.svelte.d.ts +2 -3
- package/dist/tabs/TabPanel.svelte +67 -42
- package/dist/tabs/TabPanel.svelte.d.ts +2 -3
- package/dist/tabs/TabPanels.svelte +18 -7
- package/dist/tabs/TabPanels.svelte.d.ts +2 -3
- package/dist/textarea/Textarea.svelte +84 -53
- package/dist/textarea/Textarea.svelte.d.ts +2 -3
- package/dist/transition/InternalTransitionChild.svelte +259 -170
- package/dist/transition/InternalTransitionChild.svelte.d.ts +2 -3
- package/dist/transition/Transition.svelte +96 -66
- package/dist/transition/Transition.svelte.d.ts +2 -3
- package/dist/transition/TransitionChild.svelte +31 -11
- package/dist/transition/TransitionChild.svelte.d.ts +2 -3
- package/dist/utils/DisabledProvider.svelte +7 -3
- package/dist/utils/ElementOrComponent.svelte +46 -23
- package/dist/utils/ElementOrComponent.svelte.d.ts +8 -10
- package/dist/utils/Generic.svelte +30 -19
- package/dist/utils/Generic.svelte.d.ts +6 -7
- package/dist/utils/StableCollection.svelte +54 -36
- package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +27 -12
- package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +88 -44
- package/dist/utils/types.d.ts +4 -5
- package/package.json +1 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { useInteractions, type InnerProps, type UseFloatingReturn } from "../utils/floating-ui/svelte/index.js";
|
|
2
|
-
export { useFloatingProvider } from "./floating-provider.svelte.js";
|
|
3
2
|
export type Align = "start" | "end";
|
|
4
3
|
export type Placement = "top" | "right" | "bottom" | "left";
|
|
5
4
|
export type BaseAnchorProps = {
|
|
@@ -61,7 +60,7 @@ export declare function useFloatingReferenceProps(): {
|
|
|
61
60
|
readonly getReferenceProps: (userProps?: import("svelte/elements.js").HTMLAttributes<Element>) => Record<string, unknown>;
|
|
62
61
|
};
|
|
63
62
|
export declare function useFloatingPanelProps(): (userProps?: import("svelte/elements.js").HTMLAttributes<HTMLElement> | undefined) => Record<string, unknown> & {
|
|
64
|
-
"data-anchor": Placement | "
|
|
63
|
+
"data-anchor": Placement | "top end" | "top start" | "right end" | "right start" | "bottom end" | "bottom start" | "left end" | "left start" | "selection" | "selection end" | "selection start" | undefined;
|
|
65
64
|
};
|
|
66
65
|
export declare function useFloatingPanel(options?: {
|
|
67
66
|
placement: (AnchorPropsWithSelection & InternalFloatingPanelProps) | null;
|
|
@@ -76,7 +75,7 @@ export declare function useResolvedConfig(options: {
|
|
|
76
75
|
config: (Exclude<AnchorPropsWithSelection, boolean | string> & InternalFloatingPanelProps) | null;
|
|
77
76
|
element?: HTMLElement | null;
|
|
78
77
|
}): {
|
|
79
|
-
readonly to: Placement | "
|
|
78
|
+
readonly to: Placement | "top end" | "top start" | "right end" | "right start" | "bottom end" | "bottom start" | "left end" | "left start" | "selection" | "selection end" | "selection start" | undefined;
|
|
80
79
|
readonly gap: number | undefined;
|
|
81
80
|
readonly offset: number | undefined;
|
|
82
81
|
readonly padding: number | undefined;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { useInteractions } from "../utils/floating-ui/svelte/index.js";
|
|
2
2
|
import { useDisposables } from "../utils/disposables.js";
|
|
3
3
|
import { getContext, untrack } from "svelte";
|
|
4
|
-
export { useFloatingProvider } from "./floating-provider.svelte.js";
|
|
5
4
|
export function useResolvedAnchor(options) {
|
|
6
5
|
const { anchor } = $derived(options);
|
|
7
6
|
return {
|
package/dist/label/Label.svelte
CHANGED
|
@@ -1,66 +1,101 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { ElementType, Props, PropsOf } from "../utils/types.js"
|
|
3
|
+
|
|
4
|
+
let DEFAULT_LABEL_TAG = "label" as const
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import { stateFromSlot } from "../utils/state.js";
|
|
8
|
-
import ElementOrComponent from "../utils/ElementOrComponent.svelte";
|
|
9
|
-
import { useLabelContext } from "./context.svelte.js";
|
|
10
|
-
const internalId = htmlid();
|
|
11
|
-
const context = useLabelContext();
|
|
12
|
-
const providedHtmlFor = useProvidedId();
|
|
13
|
-
const providedDisabled = useDisabled();
|
|
14
|
-
let {
|
|
15
|
-
ref = $bindable(),
|
|
16
|
-
id = `headlessui-label-${internalId}`,
|
|
17
|
-
htmlFor = providedHtmlFor,
|
|
18
|
-
passive = false,
|
|
19
|
-
...theirOriginalProps
|
|
20
|
-
} = $props();
|
|
21
|
-
onMount(() => {
|
|
22
|
-
context.register(id);
|
|
23
|
-
});
|
|
24
|
-
let handleClick = (e) => {
|
|
25
|
-
let current = e.currentTarget;
|
|
26
|
-
if (current instanceof HTMLLabelElement) {
|
|
27
|
-
e.preventDefault();
|
|
6
|
+
export type LabelProps<TTag extends ElementType = typeof DEFAULT_LABEL_TAG> = Props<TTag> & {
|
|
7
|
+
passive?: boolean
|
|
8
|
+
htmlFor?: string
|
|
28
9
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_LABEL_TAG">
|
|
13
|
+
import { onMount } from "svelte"
|
|
14
|
+
import { useProvidedId, htmlid } from "../utils/id.js"
|
|
15
|
+
import { useDisabled } from "../hooks/use-disabled.js"
|
|
16
|
+
import { stateFromSlot } from "../utils/state.js"
|
|
17
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
18
|
+
import { useLabelContext } from "./context.svelte.js"
|
|
19
|
+
|
|
20
|
+
const internalId = htmlid()
|
|
21
|
+
const context = useLabelContext()
|
|
22
|
+
const providedHtmlFor = useProvidedId()
|
|
23
|
+
const providedDisabled = useDisabled()
|
|
24
|
+
|
|
25
|
+
let {
|
|
26
|
+
ref = $bindable(),
|
|
27
|
+
id = `headlessui-label-${internalId}` as PropsOf<TTag>["id"],
|
|
28
|
+
htmlFor = providedHtmlFor,
|
|
29
|
+
passive = false,
|
|
30
|
+
...theirOriginalProps
|
|
31
|
+
}: { as?: TTag } & LabelProps<TTag> = $props()
|
|
32
|
+
|
|
33
|
+
onMount(() => {
|
|
34
|
+
context.register(id)
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
let handleClick = (e: MouseEvent) => {
|
|
38
|
+
let current = e.currentTarget
|
|
39
|
+
|
|
40
|
+
// Labels connected to 'real' controls will already click the element. But we don't know that
|
|
41
|
+
// ahead of time. This will prevent the default click, such that only a single click happens
|
|
42
|
+
// instead of two. Otherwise this results in a visual no-op.
|
|
43
|
+
if (current instanceof HTMLLabelElement) {
|
|
44
|
+
e.preventDefault()
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
console.log("click", providedHtmlFor)
|
|
48
|
+
|
|
49
|
+
if (current instanceof HTMLLabelElement) {
|
|
50
|
+
let target = document.getElementById(current.getAttribute("for") ?? "")
|
|
51
|
+
if (target) {
|
|
52
|
+
// Bail if the target element is disabled
|
|
53
|
+
let actuallyDisabled = target.getAttribute("disabled")
|
|
54
|
+
if (actuallyDisabled === "true" || actuallyDisabled === "") {
|
|
55
|
+
return
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
let ariaDisabled = target.getAttribute("aria-disabled")
|
|
59
|
+
if (ariaDisabled === "true" || ariaDisabled === "") {
|
|
60
|
+
return
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Ensure we click the element this label is bound to. This is necessary for elements that
|
|
64
|
+
// immediately require state changes, e.g.: Radio & Checkbox inputs need to be checked (or
|
|
65
|
+
// unchecked).
|
|
66
|
+
if (
|
|
67
|
+
(target instanceof HTMLInputElement && (target.type === "radio" || target.type === "checkbox")) ||
|
|
68
|
+
target.role === "radio" ||
|
|
69
|
+
target.role === "checkbox" ||
|
|
70
|
+
target.role === "switch"
|
|
71
|
+
) {
|
|
72
|
+
target.click()
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Move focus to the element, this allows you to start using keyboard shortcuts since the
|
|
76
|
+
// bound element is now focused.
|
|
77
|
+
target.focus({ preventScroll: true })
|
|
43
78
|
}
|
|
44
|
-
target.focus({ preventScroll: true });
|
|
45
79
|
}
|
|
46
80
|
}
|
|
47
|
-
|
|
48
|
-
const disabled = $derived(providedDisabled.current ?? false)
|
|
49
|
-
const slot = $derived({ disabled })
|
|
50
|
-
const ourProps = $derived({
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
81
|
+
|
|
82
|
+
const disabled = $derived(providedDisabled.current ?? false)
|
|
83
|
+
const slot = $derived({ disabled })
|
|
84
|
+
const ourProps = $derived({
|
|
85
|
+
id,
|
|
86
|
+
for: passive ? undefined : htmlFor,
|
|
87
|
+
onclick: passive ? undefined : handleClick,
|
|
88
|
+
...stateFromSlot(slot),
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
const theirProps = $derived.by(() => {
|
|
92
|
+
if (passive) {
|
|
93
|
+
const { onclick: _, ...props } = theirOriginalProps
|
|
94
|
+
return props
|
|
95
|
+
} else {
|
|
96
|
+
return theirOriginalProps
|
|
97
|
+
}
|
|
98
|
+
})
|
|
64
99
|
</script>
|
|
65
100
|
|
|
66
101
|
<ElementOrComponent
|
|
@@ -9,8 +9,7 @@ declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_LABEL_
|
|
|
9
9
|
as?: TTag | undefined;
|
|
10
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
11
|
children?: import("svelte").Snippet<[{
|
|
12
|
-
|
|
13
|
-
props: Record<string, any>;
|
|
12
|
+
props?: Record<string, any>;
|
|
14
13
|
}]> | undefined;
|
|
15
14
|
class?: string | ((bag: {}) => string) | null | undefined;
|
|
16
15
|
ref?: HTMLElement;
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import { Label } from "../index.js"
|
|
3
|
+
import type { Props } from "../utils/types.js"
|
|
4
|
+
|
|
5
|
+
const DEFAULT_LEGEND_TAG = "div" as const
|
|
6
|
+
|
|
7
|
+
type LegendRenderPropArg = {}
|
|
8
|
+
type LegendPropsWeControl = never
|
|
9
|
+
|
|
10
|
+
export type LegendProps = Props<typeof DEFAULT_LEGEND_TAG, LegendRenderPropArg, LegendPropsWeControl, {}>
|
|
3
11
|
</script>
|
|
4
12
|
|
|
5
|
-
<script lang="ts">
|
|
13
|
+
<script lang="ts">
|
|
14
|
+
let { ...props }: LegendProps = $props()
|
|
6
15
|
</script>
|
|
7
16
|
|
|
8
17
|
<Label as="div" {...props} />
|