@pzerelles/headlessui-svelte 2.1.2-next.22 → 2.1.2-next.24

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 (132) hide show
  1. package/dist/button/Button.svelte +84 -54
  2. package/dist/button/Button.svelte.d.ts +7 -4
  3. package/dist/checkbox/Checkbox.svelte +173 -120
  4. package/dist/checkbox/Checkbox.svelte.d.ts +7 -4
  5. package/dist/close-button/CloseButton.svelte +12 -6
  6. package/dist/close-button/CloseButton.svelte.d.ts +13 -10
  7. package/dist/combobox/Combobox.svelte +50 -3
  8. package/dist/data-interactive/DataInteractive.svelte +55 -29
  9. package/dist/data-interactive/DataInteractive.svelte.d.ts +7 -5
  10. package/dist/description/Description.svelte +39 -24
  11. package/dist/description/Description.svelte.d.ts +8 -5
  12. package/dist/description/context.svelte.js +13 -15
  13. package/dist/dialog/Dialog.svelte +358 -38
  14. package/dist/dialog/Dialog.svelte.d.ts +10 -7
  15. package/dist/dialog/DialogBackdrop.svelte +30 -13
  16. package/dist/dialog/DialogBackdrop.svelte.d.ts +7 -4
  17. package/dist/dialog/DialogPanel.svelte +49 -26
  18. package/dist/dialog/DialogPanel.svelte.d.ts +7 -4
  19. package/dist/dialog/DialogTitle.svelte +38 -23
  20. package/dist/dialog/DialogTitle.svelte.d.ts +7 -4
  21. package/dist/field/Field.svelte +50 -34
  22. package/dist/field/Field.svelte.d.ts +7 -4
  23. package/dist/fieldset/Fieldset.svelte +50 -29
  24. package/dist/fieldset/Fieldset.svelte.d.ts +7 -4
  25. package/dist/focus-trap/FocusTrap.svelte +419 -283
  26. package/dist/focus-trap/FocusTrap.svelte.d.ts +7 -4
  27. package/dist/hooks/use-disabled.d.ts +4 -1
  28. package/dist/hooks/use-disabled.js +10 -5
  29. package/dist/input/Input.svelte +84 -53
  30. package/dist/input/Input.svelte.d.ts +7 -4
  31. package/dist/internal/FloatingProvider.svelte +14 -9
  32. package/dist/internal/FocusSentinel.svelte +16 -8
  33. package/dist/internal/ForcePortalRoot.svelte +7 -3
  34. package/dist/internal/FormFields.svelte +47 -34
  35. package/dist/internal/FormFieldsProvider.svelte +9 -5
  36. package/dist/internal/FormResolver.svelte +20 -15
  37. package/dist/internal/Hidden.svelte +50 -29
  38. package/dist/internal/Hidden.svelte.d.ts +7 -4
  39. package/dist/internal/MainTreeProvider.svelte +89 -36
  40. package/dist/internal/Portal.svelte +18 -14
  41. package/dist/internal/floating-provider.svelte.js +1 -1
  42. package/dist/internal/floating.svelte.d.ts +5 -5
  43. package/dist/internal/floating.svelte.js +17 -17
  44. package/dist/label/Label.svelte +93 -58
  45. package/dist/label/Label.svelte.d.ts +7 -4
  46. package/dist/legend/Legend.svelte +12 -3
  47. package/dist/listbox/Listbox.svelte +525 -387
  48. package/dist/listbox/Listbox.svelte.d.ts +7 -5
  49. package/dist/listbox/ListboxButton.svelte +173 -127
  50. package/dist/listbox/ListboxButton.svelte.d.ts +7 -5
  51. package/dist/listbox/ListboxOption.svelte +170 -129
  52. package/dist/listbox/ListboxOption.svelte.d.ts +7 -5
  53. package/dist/listbox/ListboxOptions.svelte +400 -304
  54. package/dist/listbox/ListboxOptions.svelte.d.ts +7 -5
  55. package/dist/listbox/ListboxSelectedOption.svelte +38 -15
  56. package/dist/listbox/ListboxSelectedOption.svelte.d.ts +7 -4
  57. package/dist/listbox/index.d.ts +4 -4
  58. package/dist/listbox/index.js +1 -1
  59. package/dist/menu/Menu.svelte +78 -57
  60. package/dist/menu/Menu.svelte.d.ts +7 -5
  61. package/dist/menu/MenuButton.svelte +157 -117
  62. package/dist/menu/MenuButton.svelte.d.ts +7 -5
  63. package/dist/menu/MenuHeading.svelte +32 -14
  64. package/dist/menu/MenuHeading.svelte.d.ts +7 -5
  65. package/dist/menu/MenuItem.svelte +142 -107
  66. package/dist/menu/MenuItem.svelte.d.ts +8 -8
  67. package/dist/menu/MenuItems.svelte +301 -229
  68. package/dist/menu/MenuItems.svelte.d.ts +7 -5
  69. package/dist/menu/MenuSection.svelte +24 -9
  70. package/dist/menu/MenuSection.svelte.d.ts +7 -5
  71. package/dist/menu/MenuSeparator.svelte +17 -4
  72. package/dist/menu/MenuSeparator.svelte.d.ts +7 -6
  73. package/dist/menu/context.svelte.d.ts +1 -29
  74. package/dist/menu/context.svelte.js +29 -27
  75. package/dist/menu/index.d.ts +7 -7
  76. package/dist/popover/Popover.svelte +216 -150
  77. package/dist/popover/Popover.svelte.d.ts +7 -4
  78. package/dist/popover/PopoverBackdrop.svelte +67 -41
  79. package/dist/popover/PopoverBackdrop.svelte.d.ts +7 -4
  80. package/dist/popover/PopoverButton.svelte +292 -212
  81. package/dist/popover/PopoverButton.svelte.d.ts +7 -4
  82. package/dist/popover/PopoverGroup.svelte +62 -35
  83. package/dist/popover/PopoverGroup.svelte.d.ts +7 -4
  84. package/dist/popover/PopoverPanel.svelte +311 -229
  85. package/dist/popover/PopoverPanel.svelte.d.ts +7 -4
  86. package/dist/portal/InternalPortal.svelte +141 -85
  87. package/dist/portal/InternalPortal.svelte.d.ts +7 -4
  88. package/dist/portal/Portal.svelte +5 -2
  89. package/dist/portal/PortalGroup.svelte +30 -9
  90. package/dist/portal/PortalGroup.svelte.d.ts +7 -4
  91. package/dist/select/Select.svelte +98 -68
  92. package/dist/select/Select.svelte.d.ts +7 -4
  93. package/dist/switch/Switch.svelte +179 -132
  94. package/dist/switch/Switch.svelte.d.ts +7 -4
  95. package/dist/switch/SwitchGroup.svelte +44 -31
  96. package/dist/switch/SwitchGroup.svelte.d.ts +7 -4
  97. package/dist/tabs/Tab.svelte +194 -143
  98. package/dist/tabs/Tab.svelte.d.ts +7 -4
  99. package/dist/tabs/TabGroup.svelte +81 -214
  100. package/dist/tabs/TabGroup.svelte.d.ts +7 -24
  101. package/dist/tabs/TabList.svelte +31 -11
  102. package/dist/tabs/TabList.svelte.d.ts +7 -4
  103. package/dist/tabs/TabPanel.svelte +67 -43
  104. package/dist/tabs/TabPanel.svelte.d.ts +7 -4
  105. package/dist/tabs/TabPanels.svelte +18 -7
  106. package/dist/tabs/TabPanels.svelte.d.ts +7 -4
  107. package/dist/tabs/context.svelte.d.ts +31 -0
  108. package/dist/tabs/context.svelte.js +134 -0
  109. package/dist/textarea/Textarea.svelte +84 -53
  110. package/dist/textarea/Textarea.svelte.d.ts +7 -4
  111. package/dist/transition/InternalTransitionChild.svelte +259 -170
  112. package/dist/transition/InternalTransitionChild.svelte.d.ts +7 -4
  113. package/dist/transition/Transition.svelte +96 -66
  114. package/dist/transition/Transition.svelte.d.ts +7 -4
  115. package/dist/transition/TransitionChild.svelte +31 -11
  116. package/dist/transition/TransitionChild.svelte.d.ts +7 -4
  117. package/dist/utils/ElementOrComponent.svelte +43 -23
  118. package/dist/utils/ElementOrComponent.svelte.d.ts +10 -4
  119. package/dist/utils/Generic.svelte +36 -22
  120. package/dist/utils/Generic.svelte.d.ts +7 -4
  121. package/dist/utils/StableCollection.svelte +54 -36
  122. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +27 -12
  123. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +88 -44
  124. package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.js +7 -7
  125. package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.js +1 -1
  126. package/dist/utils/floating-ui/svelte/types.d.ts +4 -4
  127. package/dist/utils/floating-ui/svelte-dom/types.d.ts +2 -2
  128. package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.js +6 -6
  129. package/dist/utils/types.d.ts +11 -4
  130. package/package.json +2 -2
  131. package/dist/dialog/InternalDialog.svelte +0 -233
  132. package/dist/dialog/InternalDialog.svelte.d.ts +0 -42
@@ -17,11 +17,14 @@ export type PopoverButtonProps<TTag extends ElementType = typeof DEFAULT_BUTTON_
17
17
  declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> {
18
18
  props(): {
19
19
  as?: TTag | undefined;
20
- } & (Exclude<keyof PropsOf<TTag>, ("as" | "children" | "refName" | "class") | PopoverButtonPropsWeControl | keyof PopoverButtonComponentProps> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
21
- children?: import("svelte").Snippet<[PopoverButtonSlot, Record<string, any>]> | undefined;
20
+ } & (Exclude<keyof PropsOf<TTag>, ("as" | "children" | "class") | PopoverButtonPropsWeControl | keyof PopoverButtonComponentProps> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
21
+ children?: import("svelte").Snippet<[{
22
+ slot: PopoverButtonSlot;
23
+ props: Record<string, any>;
24
+ }]> | undefined;
22
25
  ref?: HTMLElement;
23
- } & (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) ? {
24
- class?: PropsOf<TTag>["class"] | ((bag: PopoverButtonSlot) => string) | undefined;
26
+ } & (true extends (import("svelte/elements.js").SvelteHTMLElements[TTag] extends infer T_1 ? T_1 extends import("svelte/elements.js").SvelteHTMLElements[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?: string | ((bag: PopoverButtonSlot) => string) | null | undefined;
25
28
  } : {}) & PopoverButtonComponentProps;
26
29
  events(): {} & {
27
30
  [evt: string]: CustomEvent<any>;
@@ -1,41 +1,68 @@
1
- <script lang="ts" module>import { setContext } from "svelte";
2
- const DEFAULT_GROUP_TAG = "div";
1
+ <script lang="ts" module>
2
+ import type { ElementType, Props } from "../utils/types.js"
3
+ import { setContext } from "svelte"
4
+
5
+ const DEFAULT_GROUP_TAG = "div" as const
6
+ type GroupRenderPropArg = {}
7
+ type GroupPropsWeControl = never
8
+
9
+ export type PopoverGroupProps<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> = Props<
10
+ TTag,
11
+ GroupRenderPropArg,
12
+ GroupPropsWeControl
13
+ >
3
14
  </script>
4
15
 
5
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_GROUP_TAG">import MainTreeProvider from "../internal/MainTreeProvider.svelte";
6
- import ElementOrComponent from "../utils/ElementOrComponent.svelte";
7
- import { getOwnerDocument } from "../utils/owner.js";
8
- let { ref = $bindable(), ...theirProps } = $props();
9
- const popovers = $state([]);
10
- const unregisterPopover = (registerBag) => {
11
- const idx = popovers.indexOf(registerBag);
12
- if (idx !== -1) popovers.splice(idx, 1);
13
- };
14
- const registerPopover = (registerBag) => {
15
- popovers.push(registerBag);
16
- return () => unregisterPopover(registerBag);
17
- };
18
- const isFocusWithinPopoverGroup = () => {
19
- const ownerDocument = getOwnerDocument(ref);
20
- if (!ownerDocument) return false;
21
- let element = ownerDocument.activeElement;
22
- if (ref?.contains(element)) return true;
23
- return popovers.some((bag) => {
24
- return ownerDocument.getElementById(bag.buttonId)?.contains(element) || ownerDocument.getElementById(bag.panelId)?.contains(element);
25
- });
26
- };
27
- const closeOthers = (buttonId) => {
28
- for (const popover of popovers) {
29
- if (popover.buttonId !== buttonId) popover.close();
16
+ <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_GROUP_TAG">
17
+ import type { PopoverGroupContext, PopoverRegisterBag } from "./context.svelte"
18
+ import MainTreeProvider from "../internal/MainTreeProvider.svelte"
19
+ import ElementOrComponent from "../utils/ElementOrComponent.svelte"
20
+ import { getOwnerDocument } from "../utils/owner.js"
21
+
22
+ let { ref = $bindable(), ...theirProps }: { as?: TTag } & PopoverGroupProps<TTag> = $props()
23
+
24
+ const popovers = $state<PopoverRegisterBag[]>([])
25
+
26
+ const unregisterPopover = (registerBag: PopoverRegisterBag) => {
27
+ const idx = popovers.indexOf(registerBag)
28
+ if (idx !== -1) popovers.splice(idx, 1)
29
+ }
30
+
31
+ const registerPopover = (registerBag: PopoverRegisterBag) => {
32
+ popovers.push(registerBag)
33
+ return () => unregisterPopover(registerBag)
30
34
  }
31
- };
32
- setContext("PopoverGroupContext", {
33
- registerPopover,
34
- unregisterPopover,
35
- isFocusWithinPopoverGroup,
36
- closeOthers
37
- });
38
- const slot = {};
35
+
36
+ const isFocusWithinPopoverGroup = () => {
37
+ const ownerDocument = getOwnerDocument(ref)
38
+ if (!ownerDocument) return false
39
+ let element = ownerDocument.activeElement
40
+
41
+ if (ref?.contains(element)) return true
42
+
43
+ // Check if the focus is in one of the button or panel elements. This is important in case you are rendering inside a Portal.
44
+ return popovers.some((bag) => {
45
+ return (
46
+ ownerDocument!.getElementById(bag.buttonId!)?.contains(element) ||
47
+ ownerDocument!.getElementById(bag.panelId!)?.contains(element)
48
+ )
49
+ })
50
+ }
51
+
52
+ const closeOthers = (buttonId: string) => {
53
+ for (const popover of popovers) {
54
+ if (popover.buttonId !== buttonId) popover.close()
55
+ }
56
+ }
57
+
58
+ setContext<PopoverGroupContext>("PopoverGroupContext", {
59
+ registerPopover,
60
+ unregisterPopover,
61
+ isFocusWithinPopoverGroup,
62
+ closeOthers,
63
+ })
64
+
65
+ const slot = {} satisfies GroupRenderPropArg
39
66
  </script>
40
67
 
41
68
  <MainTreeProvider>
@@ -6,11 +6,14 @@ export type PopoverGroupProps<TTag extends ElementType = typeof DEFAULT_GROUP_TA
6
6
  declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> {
7
7
  props(): {
8
8
  as?: TTag | undefined;
9
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "as" | "children" | "refName" | "class"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
10
- children?: import("svelte").Snippet<[GroupRenderPropArg, Record<string, any>]> | undefined;
9
+ } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "as" | "children" | "class"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
10
+ children?: import("svelte").Snippet<[{
11
+ slot: GroupRenderPropArg;
12
+ props: Record<string, any>;
13
+ }]> | undefined;
11
14
  ref?: HTMLElement;
12
- } & (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) ? {
13
- class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: GroupRenderPropArg) => string) | undefined;
15
+ } & (true extends (import("svelte/elements").SvelteHTMLElements[TTag] extends infer T_1 ? T_1 extends import("svelte/elements").SvelteHTMLElements[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) ? {
16
+ class?: string | ((bag: GroupRenderPropArg) => string) | null | undefined;
14
17
  } : {});
15
18
  events(): {} & {
16
19
  [evt: string]: CustomEvent<any>;