@pzerelles/headlessui-svelte 2.1.2-next.6 → 2.1.2-next.8

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.
Files changed (57) hide show
  1. package/dist/button/Button.svelte +54 -84
  2. package/dist/checkbox/Checkbox.svelte +120 -174
  3. package/dist/close-button/CloseButton.svelte +6 -12
  4. package/dist/combobox/Combobox.svelte +3 -50
  5. package/dist/data-interactive/DataInteractive.svelte +29 -57
  6. package/dist/description/Description.svelte +21 -32
  7. package/dist/dialog/Dialog.svelte +34 -69
  8. package/dist/dialog/DialogBackdrop.svelte +12 -29
  9. package/dist/dialog/DialogPanel.svelte +26 -49
  10. package/dist/dialog/DialogTitle.svelte +23 -38
  11. package/dist/dialog/InternalDialog.svelte +202 -263
  12. package/dist/field/Field.svelte +26 -49
  13. package/dist/fieldset/Fieldset.svelte +29 -50
  14. package/dist/focus-trap/FocusTrap.svelte +283 -419
  15. package/dist/input/Input.svelte +53 -85
  16. package/dist/input/Input.svelte.d.ts +4 -6
  17. package/dist/internal/FocusSentinel.svelte +8 -16
  18. package/dist/internal/ForcePortalRoot.svelte +3 -7
  19. package/dist/internal/FormFields.svelte +20 -31
  20. package/dist/internal/FormResolver.svelte +15 -20
  21. package/dist/internal/Hidden.svelte +23 -44
  22. package/dist/internal/HoistFormFields.svelte +4 -7
  23. package/dist/internal/MainTreeProvider.svelte +36 -89
  24. package/dist/internal/Portal.svelte +14 -18
  25. package/dist/label/Label.svelte +57 -91
  26. package/dist/legend/Legend.svelte +3 -18
  27. package/dist/listbox/Listbox.svelte +396 -588
  28. package/dist/listbox/ListboxButton.svelte +127 -176
  29. package/dist/listbox/ListboxOption.svelte +125 -166
  30. package/dist/listbox/ListboxOptions.svelte +244 -340
  31. package/dist/listbox/ListboxSelectedOption.svelte +15 -38
  32. package/dist/menu/Menu.svelte +218 -307
  33. package/dist/menu/MenuButton.svelte +115 -157
  34. package/dist/menu/MenuHeading.svelte +14 -34
  35. package/dist/menu/MenuItem.svelte +107 -145
  36. package/dist/menu/MenuItems.svelte +224 -298
  37. package/dist/menu/MenuSection.svelte +9 -26
  38. package/dist/menu/MenuSeparator.svelte +4 -20
  39. package/dist/portal/InternalPortal.svelte +85 -141
  40. package/dist/portal/Portal.svelte +2 -5
  41. package/dist/portal/PortalGroup.svelte +9 -30
  42. package/dist/switch/Switch.svelte +132 -179
  43. package/dist/switch/SwitchGroup.svelte +31 -44
  44. package/dist/tabs/Tab.svelte +143 -195
  45. package/dist/tabs/TabGroup.svelte +205 -292
  46. package/dist/tabs/TabList.svelte +11 -31
  47. package/dist/tabs/TabPanel.svelte +43 -68
  48. package/dist/tabs/TabPanels.svelte +7 -18
  49. package/dist/textarea/Textarea.svelte +53 -83
  50. package/dist/textarea/Textarea.svelte.d.ts +14 -11
  51. package/dist/transition/InternalTransitionChild.svelte +170 -259
  52. package/dist/transition/Transition.svelte +66 -96
  53. package/dist/transition/TransitionChild.svelte +11 -31
  54. package/dist/utils/ElementOrComponent.svelte +23 -44
  55. package/dist/utils/Generic.svelte +17 -29
  56. package/dist/utils/StableCollection.svelte +36 -54
  57. package/package.json +1 -1
@@ -1,99 +1,65 @@
1
- <script lang="ts" module>
2
- import type { ElementType, Props, PropsOf } from "../utils/types.js"
3
-
4
- let DEFAULT_LABEL_TAG = "label" as const
5
-
6
- export type LabelProps<TTag extends ElementType = typeof DEFAULT_LABEL_TAG> = Props<TTag> & {
7
- passive?: boolean
8
- htmlFor?: string
9
- }
1
+ <script lang="ts" module>let DEFAULT_LABEL_TAG = "label";
10
2
  </script>
11
3
 
12
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_LABEL_TAG">
13
- import { onMount } from "svelte"
14
- import { getIdContext, 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 = getIdContext()
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
- if (current instanceof HTMLLabelElement) {
48
- let target = document.getElementById(current.getAttribute("for") ?? "")
49
- if (target) {
50
- // Bail if the target element is disabled
51
- let actuallyDisabled = target.getAttribute("disabled")
52
- if (actuallyDisabled === "true" || actuallyDisabled === "") {
53
- return
54
- }
55
-
56
- let ariaDisabled = target.getAttribute("aria-disabled")
57
- if (ariaDisabled === "true" || ariaDisabled === "") {
58
- return
59
- }
60
-
61
- // Ensure we click the element this label is bound to. This is necessary for elements that
62
- // immediately require state changes, e.g.: Radio & Checkbox inputs need to be checked (or
63
- // unchecked).
64
- if (
65
- (target instanceof HTMLInputElement && (target.type === "radio" || target.type === "checkbox")) ||
66
- target.role === "radio" ||
67
- target.role === "checkbox" ||
68
- target.role === "switch"
69
- ) {
70
- target.click()
71
- }
72
-
73
- // Move focus to the element, this allows you to start using keyboard shortcuts since the
74
- // bound element is now focused.
75
- target.focus({ preventScroll: true })
4
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_LABEL_TAG">import { onMount } from "svelte";
5
+ import { getIdContext, htmlid } from "../utils/id.js";
6
+ import { useDisabled } from "../hooks/use-disabled.js";
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 = getIdContext();
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();
28
+ }
29
+ if (current instanceof HTMLLabelElement) {
30
+ let target = document.getElementById(current.getAttribute("for") ?? "");
31
+ if (target) {
32
+ let actuallyDisabled = target.getAttribute("disabled");
33
+ if (actuallyDisabled === "true" || actuallyDisabled === "") {
34
+ return;
35
+ }
36
+ let ariaDisabled = target.getAttribute("aria-disabled");
37
+ if (ariaDisabled === "true" || ariaDisabled === "") {
38
+ return;
76
39
  }
40
+ if (target instanceof HTMLInputElement && (target.type === "radio" || target.type === "checkbox") || target.role === "radio" || target.role === "checkbox" || target.role === "switch") {
41
+ target.click();
42
+ }
43
+ target.focus({ preventScroll: true });
77
44
  }
78
45
  }
79
-
80
- const disabled = $derived(providedDisabled.value ?? false)
81
- const slot = $derived({ disabled })
82
- const ourProps = $derived({
83
- id,
84
- for: passive ? undefined : htmlFor,
85
- onclick: passive ? undefined : handleClick,
86
- ...stateFromSlot(slot),
87
- })
88
-
89
- const theirProps = $derived.by(() => {
90
- if (passive) {
91
- const { onclick: _, ...props } = theirOriginalProps
92
- return props
93
- } else {
94
- return theirOriginalProps
95
- }
96
- })
46
+ };
47
+ const disabled = $derived(providedDisabled.value ?? false);
48
+ const slot = $derived({ disabled });
49
+ const ourProps = $derived({
50
+ id,
51
+ for: passive ? void 0 : htmlFor,
52
+ onclick: passive ? void 0 : handleClick,
53
+ ...stateFromSlot(slot)
54
+ });
55
+ const theirProps = $derived.by(() => {
56
+ if (passive) {
57
+ const { onclick: _, ...props } = theirOriginalProps;
58
+ return props;
59
+ } else {
60
+ return theirOriginalProps;
61
+ }
62
+ });
97
63
  </script>
98
64
 
99
65
  <ElementOrComponent
@@ -1,23 +1,8 @@
1
- <script lang="ts" module>
2
- import { Label, type LabelProps } from "../index.js"
3
- import type { ElementType, Props } from "../utils/types.js"
4
- import type { Component } from "svelte"
5
-
6
- const DEFAULT_LEGEND_TAG = Label as Component<LabelProps, any>
7
-
8
- type LegendRenderPropArg = {}
9
- type LegendPropsWeControl = never
10
-
11
- export type LegendProps<TTag extends ElementType = typeof DEFAULT_LEGEND_TAG> = Props<
12
- TTag,
13
- LegendRenderPropArg,
14
- LegendPropsWeControl,
15
- {}
16
- >
1
+ <script lang="ts" module>import { Label } from "../index.js";
2
+ const DEFAULT_LEGEND_TAG = Label;
17
3
  </script>
18
4
 
19
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_LEGEND_TAG">
20
- let { ...props }: { as?: TTag } & LegendProps<TTag> = $props()
5
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_LEGEND_TAG">let { ...props } = $props();
21
6
  </script>
22
7
 
23
8
  <Label as="div" {...props} />