@pzerelles/headlessui-svelte 2.1.2-next.4 → 2.1.2-next.41

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 (252) hide show
  1. package/dist/button/Button.svelte +15 -18
  2. package/dist/button/Button.svelte.d.ts +8 -36
  3. package/dist/button/index.d.ts +1 -1
  4. package/dist/button/index.js +1 -1
  5. package/dist/checkbox/Checkbox.svelte +30 -26
  6. package/dist/checkbox/Checkbox.svelte.d.ts +17 -38
  7. package/dist/checkbox/index.d.ts +1 -1
  8. package/dist/checkbox/index.js +1 -1
  9. package/dist/close-button/CloseButton.svelte +4 -7
  10. package/dist/close-button/CloseButton.svelte.d.ts +3 -46
  11. package/dist/close-button/index.d.ts +1 -0
  12. package/dist/close-button/index.js +1 -0
  13. package/dist/data-interactive/DataInteractive.svelte +6 -22
  14. package/dist/data-interactive/DataInteractive.svelte.d.ts +9 -34
  15. package/dist/data-interactive/index.d.ts +1 -1
  16. package/dist/data-interactive/index.js +1 -1
  17. package/dist/description/Description.svelte +28 -23
  18. package/dist/description/Description.svelte.d.ts +9 -30
  19. package/dist/description/context.svelte.js +14 -16
  20. package/dist/description/index.d.ts +1 -1
  21. package/dist/dialog/Dialog.svelte +315 -31
  22. package/dist/dialog/Dialog.svelte.d.ts +7 -45
  23. package/dist/dialog/DialogBackdrop.svelte +11 -14
  24. package/dist/dialog/DialogBackdrop.svelte.d.ts +8 -33
  25. package/dist/dialog/DialogPanel.svelte +23 -19
  26. package/dist/dialog/DialogPanel.svelte.d.ts +8 -34
  27. package/dist/dialog/DialogTitle.svelte +17 -8
  28. package/dist/dialog/DialogTitle.svelte.d.ts +9 -30
  29. package/dist/dialog/context.svelte.js +2 -2
  30. package/dist/dialog/index.d.ts +4 -4
  31. package/dist/dialog/index.js +4 -4
  32. package/dist/field/Field.svelte +27 -26
  33. package/dist/field/Field.svelte.d.ts +7 -34
  34. package/dist/field/index.d.ts +1 -1
  35. package/dist/fieldset/Fieldset.svelte +14 -20
  36. package/dist/fieldset/Fieldset.svelte.d.ts +8 -35
  37. package/dist/fieldset/index.d.ts +1 -1
  38. package/dist/focus-trap/FocusTrap.svelte +30 -54
  39. package/dist/focus-trap/FocusTrap.svelte.d.ts +10 -52
  40. package/dist/focus-trap/FocusTrapFeatures.d.ts +14 -0
  41. package/dist/focus-trap/FocusTrapFeatures.js +15 -0
  42. package/dist/hooks/use-controllable.svelte.js +2 -1
  43. package/dist/hooks/use-did-element-move.svelte.js +5 -10
  44. package/dist/hooks/use-disabled.d.ts +6 -1
  45. package/dist/hooks/use-disabled.js +10 -5
  46. package/dist/hooks/use-event-listener.svelte.d.ts +1 -1
  47. package/dist/hooks/use-event-listener.svelte.js +3 -1
  48. package/dist/hooks/use-inert-others.svelte.js +10 -10
  49. package/dist/hooks/use-resolve-button-type.svelte.js +0 -1
  50. package/dist/hooks/use-root-containers.svelte.d.ts +2 -2
  51. package/dist/hooks/use-root-containers.svelte.js +5 -5
  52. package/dist/hooks/use-tab-direction.svelte.js +1 -1
  53. package/dist/index.d.ts +5 -2
  54. package/dist/index.js +5 -2
  55. package/dist/input/Input.svelte +28 -21
  56. package/dist/input/Input.svelte.d.ts +16 -33
  57. package/dist/input/index.d.ts +1 -1
  58. package/dist/input/index.js +1 -1
  59. package/dist/internal/FloatingProvider.svelte +17 -0
  60. package/dist/internal/FloatingProvider.svelte.d.ts +8 -0
  61. package/dist/internal/FocusSentinel.svelte +33 -32
  62. package/dist/internal/FocusSentinel.svelte.d.ts +4 -18
  63. package/dist/internal/ForcePortalRoot.svelte.d.ts +4 -18
  64. package/dist/internal/FormFields.svelte +18 -13
  65. package/dist/internal/FormFields.svelte.d.ts +4 -18
  66. package/dist/internal/FormFieldsProvider.svelte +17 -0
  67. package/dist/internal/FormFieldsProvider.svelte.d.ts +7 -0
  68. package/dist/internal/FormResolver.svelte +6 -2
  69. package/dist/internal/FormResolver.svelte.d.ts +4 -18
  70. package/dist/internal/Hidden.svelte +10 -10
  71. package/dist/internal/Hidden.svelte.d.ts +6 -33
  72. package/dist/internal/MainTreeProvider.svelte +1 -1
  73. package/dist/internal/MainTreeProvider.svelte.d.ts +4 -18
  74. package/dist/internal/Portal.svelte.d.ts +4 -18
  75. package/dist/internal/floating-provider.svelte.d.ts +3 -0
  76. package/dist/internal/floating-provider.svelte.js +206 -0
  77. package/dist/internal/floating.svelte.d.ts +46 -22
  78. package/dist/internal/floating.svelte.js +90 -272
  79. package/dist/internal/form-fields.svelte.d.ts +10 -0
  80. package/dist/internal/form-fields.svelte.js +23 -0
  81. package/dist/label/Label.svelte +17 -13
  82. package/dist/label/Label.svelte.d.ts +8 -33
  83. package/dist/label/context.svelte.js +1 -1
  84. package/dist/label/index.d.ts +1 -1
  85. package/dist/legend/Legend.svelte +21 -15
  86. package/dist/legend/Legend.svelte.d.ts +9 -34
  87. package/dist/listbox/Listbox.svelte +79 -163
  88. package/dist/listbox/Listbox.svelte.d.ts +16 -101
  89. package/dist/listbox/ListboxButton.svelte +24 -29
  90. package/dist/listbox/ListboxButton.svelte.d.ts +8 -38
  91. package/dist/listbox/ListboxOption.svelte +33 -27
  92. package/dist/listbox/ListboxOption.svelte.d.ts +16 -32
  93. package/dist/listbox/ListboxOptions.svelte +126 -73
  94. package/dist/listbox/ListboxOptions.svelte.d.ts +8 -43
  95. package/dist/listbox/ListboxSelectedOption.svelte +24 -26
  96. package/dist/listbox/ListboxSelectedOption.svelte.d.ts +14 -39
  97. package/dist/listbox/context.svelte.d.ts +76 -0
  98. package/dist/listbox/context.svelte.js +36 -0
  99. package/dist/listbox/index.d.ts +5 -5
  100. package/dist/listbox/index.js +4 -4
  101. package/dist/menu/Menu.svelte +22 -266
  102. package/dist/menu/Menu.svelte.d.ts +7 -37
  103. package/dist/menu/MenuButton.svelte +22 -24
  104. package/dist/menu/MenuButton.svelte.d.ts +8 -39
  105. package/dist/menu/MenuHeading.svelte +12 -16
  106. package/dist/menu/MenuHeading.svelte.d.ts +7 -36
  107. package/dist/menu/MenuItem.svelte +18 -23
  108. package/dist/menu/MenuItem.svelte.d.ts +9 -39
  109. package/dist/menu/MenuItems.svelte +33 -34
  110. package/dist/menu/MenuItems.svelte.d.ts +8 -43
  111. package/dist/menu/MenuSection.svelte +9 -12
  112. package/dist/menu/MenuSection.svelte.d.ts +7 -33
  113. package/dist/menu/MenuSeparator.svelte +9 -12
  114. package/dist/menu/MenuSeparator.svelte.d.ts +7 -33
  115. package/dist/menu/context.svelte.d.ts +2 -1
  116. package/dist/menu/context.svelte.js +212 -2
  117. package/dist/menu/index.d.ts +7 -7
  118. package/dist/menu/index.js +3 -3
  119. package/dist/popover/Popover.svelte +225 -0
  120. package/dist/popover/Popover.svelte.d.ts +15 -0
  121. package/dist/popover/PopoverBackdrop.svelte +83 -0
  122. package/dist/popover/PopoverBackdrop.svelte.d.ts +17 -0
  123. package/dist/popover/PopoverButton.svelte +324 -0
  124. package/dist/popover/PopoverButton.svelte.d.ts +21 -0
  125. package/dist/popover/PopoverGroup.svelte +66 -0
  126. package/dist/popover/PopoverGroup.svelte.d.ts +9 -0
  127. package/dist/popover/PopoverPanel.svelte +359 -0
  128. package/dist/popover/PopoverPanel.svelte.d.ts +22 -0
  129. package/dist/popover/context.svelte.d.ts +51 -0
  130. package/dist/popover/context.svelte.js +108 -0
  131. package/dist/popover/index.d.ts +5 -0
  132. package/dist/popover/index.js +5 -0
  133. package/dist/portal/InternalPortal.svelte +17 -17
  134. package/dist/portal/InternalPortal.svelte.d.ts +6 -33
  135. package/dist/portal/Portal.svelte +7 -6
  136. package/dist/portal/Portal.svelte.d.ts +3 -22
  137. package/dist/portal/PortalGroup.svelte +6 -14
  138. package/dist/portal/PortalGroup.svelte.d.ts +5 -34
  139. package/dist/radio-group/Radio.svelte +135 -0
  140. package/dist/radio-group/Radio.svelte.d.ts +35 -0
  141. package/dist/radio-group/RadioGroup.svelte +223 -0
  142. package/dist/radio-group/RadioGroup.svelte.d.ts +34 -0
  143. package/dist/radio-group/RadioOption.svelte +138 -0
  144. package/dist/radio-group/RadioOption.svelte.d.ts +37 -0
  145. package/dist/radio-group/contest.svelte.d.ts +30 -0
  146. package/dist/radio-group/contest.svelte.js +40 -0
  147. package/dist/radio-group/index.d.ts +3 -0
  148. package/dist/radio-group/index.js +3 -0
  149. package/dist/select/Select.svelte +112 -0
  150. package/dist/select/Select.svelte.d.ts +21 -0
  151. package/dist/select/index.d.ts +1 -0
  152. package/dist/select/index.js +1 -0
  153. package/dist/switch/Switch.svelte +27 -28
  154. package/dist/switch/Switch.svelte.d.ts +9 -42
  155. package/dist/switch/SwitchGroup.svelte +5 -5
  156. package/dist/switch/SwitchGroup.svelte.d.ts +8 -30
  157. package/dist/switch/index.d.ts +1 -1
  158. package/dist/switch/index.js +1 -1
  159. package/dist/tabs/Tab.svelte +26 -29
  160. package/dist/tabs/Tab.svelte.d.ts +8 -36
  161. package/dist/tabs/TabGroup.svelte +42 -264
  162. package/dist/tabs/TabGroup.svelte.d.ts +7 -57
  163. package/dist/tabs/TabList.svelte +13 -16
  164. package/dist/tabs/TabList.svelte.d.ts +8 -31
  165. package/dist/tabs/TabPanel.svelte +19 -19
  166. package/dist/tabs/TabPanel.svelte.d.ts +8 -38
  167. package/dist/tabs/TabPanels.svelte +11 -9
  168. package/dist/tabs/TabPanels.svelte.d.ts +8 -30
  169. package/dist/tabs/context.svelte.d.ts +31 -0
  170. package/dist/tabs/context.svelte.js +134 -0
  171. package/dist/tabs/index.d.ts +5 -5
  172. package/dist/tabs/index.js +4 -4
  173. package/dist/textarea/Textarea.svelte +23 -19
  174. package/dist/textarea/Textarea.svelte.d.ts +18 -30
  175. package/dist/textarea/index.d.ts +1 -1
  176. package/dist/textarea/index.js +1 -1
  177. package/dist/transition/InternalTransitionChild.svelte +19 -12
  178. package/dist/transition/InternalTransitionChild.svelte.d.ts +4 -35
  179. package/dist/transition/Transition.svelte +16 -17
  180. package/dist/transition/Transition.svelte.d.ts +8 -38
  181. package/dist/transition/TransitionChild.svelte +13 -12
  182. package/dist/transition/TransitionChild.svelte.d.ts +11 -38
  183. package/dist/transition/context.svelte.js +9 -9
  184. package/dist/transition/index.d.ts +2 -2
  185. package/dist/transition/index.js +2 -2
  186. package/dist/utils/DisabledProvider.svelte +10 -0
  187. package/dist/utils/DisabledProvider.svelte.d.ts +8 -0
  188. package/dist/utils/ElementOrComponent.svelte +57 -14
  189. package/dist/utils/ElementOrComponent.svelte.d.ts +19 -29
  190. package/dist/utils/StableCollection.svelte.d.ts +4 -18
  191. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +32 -0
  192. package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte.d.ts +8 -0
  193. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +94 -0
  194. package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte.d.ts +26 -0
  195. package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.d.ts +6 -0
  196. package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.js +158 -0
  197. package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.d.ts +11 -0
  198. package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.js +53 -0
  199. package/dist/utils/floating-ui/svelte/hooks/useId.svelte.d.ts +9 -0
  200. package/dist/utils/floating-ui/svelte/hooks/useId.svelte.js +28 -0
  201. package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.d.ts +23 -0
  202. package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.js +72 -0
  203. package/dist/utils/floating-ui/svelte/index.d.ts +5 -0
  204. package/dist/utils/floating-ui/svelte/index.js +5 -0
  205. package/dist/utils/floating-ui/svelte/inner.svelte.d.ts +83 -0
  206. package/dist/utils/floating-ui/svelte/inner.svelte.js +178 -0
  207. package/dist/utils/floating-ui/svelte/types.d.ts +114 -0
  208. package/dist/utils/floating-ui/svelte/utils/createPubSub.d.ts +5 -0
  209. package/dist/utils/floating-ui/svelte/utils/createPubSub.js +14 -0
  210. package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.d.ts +2 -0
  211. package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.js +13 -0
  212. package/dist/utils/floating-ui/svelte/utils/log.d.ts +2 -0
  213. package/dist/utils/floating-ui/svelte/utils/log.js +19 -0
  214. package/dist/utils/floating-ui/svelte/utils.d.ts +19 -0
  215. package/dist/utils/floating-ui/svelte/utils.js +136 -0
  216. package/dist/utils/floating-ui/svelte-dom/arrow.d.ts +22 -0
  217. package/dist/utils/floating-ui/svelte-dom/arrow.js +29 -0
  218. package/dist/utils/floating-ui/svelte-dom/index.d.ts +2 -0
  219. package/dist/utils/floating-ui/svelte-dom/index.js +2 -0
  220. package/dist/utils/floating-ui/svelte-dom/types.d.ts +80 -0
  221. package/dist/utils/floating-ui/svelte-dom/types.js +3 -0
  222. package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.d.ts +6 -0
  223. package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.js +182 -0
  224. package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.d.ts +1 -0
  225. package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.js +50 -0
  226. package/dist/utils/floating-ui/svelte-dom/utils/getDPR.d.ts +1 -0
  227. package/dist/utils/floating-ui/svelte-dom/utils/getDPR.js +7 -0
  228. package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.d.ts +1 -0
  229. package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.js +5 -0
  230. package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.d.ts +4 -0
  231. package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.js +7 -0
  232. package/dist/utils/id.d.ts +1 -1
  233. package/dist/utils/id.js +1 -1
  234. package/dist/utils/index.d.ts +3 -0
  235. package/dist/utils/index.js +3 -0
  236. package/dist/utils/state.js +4 -4
  237. package/dist/utils/style.d.ts +2 -0
  238. package/dist/utils/style.js +6 -0
  239. package/dist/utils/types.d.ts +12 -18
  240. package/package.json +33 -32
  241. package/dist/combobox/Combobox.svelte +0 -53
  242. package/dist/combobox/Combobox.svelte.d.ts +0 -50
  243. package/dist/dialog/InternalDialog.svelte +0 -294
  244. package/dist/dialog/InternalDialog.svelte.d.ts +0 -42
  245. package/dist/internal/HoistFormFields.svelte +0 -14
  246. package/dist/internal/HoistFormFields.svelte.d.ts +0 -21
  247. package/dist/internal/id.d.ts +0 -8
  248. package/dist/internal/id.js +0 -11
  249. package/dist/utils/Generic.svelte +0 -56
  250. package/dist/utils/Generic.svelte.d.ts +0 -35
  251. package/dist/utils/alternative-types.d.ts +0 -21
  252. /package/dist/utils/{alternative-types.js → floating-ui/svelte/types.js} +0 -0
@@ -1,294 +0,0 @@
1
- <script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_DIALOG_TAG">
2
- import { useId } from "../hooks/use-id.js"
3
- import { useMainTreeNode, useRootContainers } from "../hooks/use-root-containers.svelte.js"
4
- import { clearOpenClosedContext, State, useOpenClosed } from "../internal/open-closed.js"
5
- import { useNestedPortals } from "../portal/InternalPortal.svelte"
6
- import { getOwnerDocument } from "../utils/owner.js"
7
- import { DEFAULT_DIALOG_TAG, DialogRenderFeatures, type DialogProps, type DialogRenderPropArg } from "./Dialog.svelte"
8
- import { useInertOthers } from "../hooks/use-inert-others.svelte.js"
9
- import { useOutsideClick } from "../hooks/use-outside-click.svelte.js"
10
- import { useEscape } from "../hooks/use-escape.svelte.js"
11
- import { useScrollLock } from "../hooks/use-scroll-lock.svelte.js"
12
- import { useOnDisappear } from "../hooks/use-on-disappear.svelte.js"
13
- import { setContext } from "svelte"
14
- import { useIsTouchDevice } from "../hooks/use-is-touch-device.svelte.js"
15
- import FocusTrap, { FocusTrapFeatures } from "../focus-trap/FocusTrap.svelte"
16
- import Portal from "../portal/Portal.svelte"
17
- import PortalGroup from "../portal/PortalGroup.svelte"
18
- import ForcePortalRoot from "../internal/ForcePortalRoot.svelte"
19
- import { createCloseContext } from "../internal/close-provider.js"
20
- import ElementOrComponent from "../utils/ElementOrComponent.svelte"
21
- import type { ElementType } from "../utils/types.js"
22
- import { DialogStates, type DialogContext, type StateDefinition } from "./context.svelte.js"
23
- import { useDescriptions } from "../description/context.svelte.js"
24
-
25
- const internalId = useId()
26
- let {
27
- ref = $bindable(),
28
- id = `headlessui-dialog-${internalId}`,
29
- open: theirOpen,
30
- onclose,
31
- initialFocus,
32
- role: theirRole = "dialog",
33
- autofocus = true,
34
- __demoMode = false,
35
- unmount = false,
36
- ...theirProps
37
- }: { as?: TTag } & DialogProps<TTag> = $props()
38
-
39
- let didWarnOnRole = $state(false)
40
-
41
- const role = $derived.by(() => {
42
- if (theirRole === "dialog" || theirRole === "alertdialog") {
43
- return theirRole
44
- }
45
-
46
- if (!didWarnOnRole) {
47
- didWarnOnRole = true
48
- console.warn(
49
- `Invalid role [${theirRole}] passed to <Dialog />. Only \`dialog\` and and \`alertdialog\` are supported. Using \`dialog\` instead.`
50
- )
51
- }
52
-
53
- return "dialog"
54
- })
55
-
56
- const usesOpenClosedState = useOpenClosed()
57
- // Update the `open` prop based on the open closed state
58
- const open = $derived(
59
- theirOpen === undefined && usesOpenClosedState !== null
60
- ? (usesOpenClosedState.value & State.Open) === State.Open
61
- : theirOpen
62
- )
63
-
64
- const ownerDocument = $derived(getOwnerDocument(ref))
65
-
66
- const dialogState = $derived(open ? DialogStates.Open : DialogStates.Closed)
67
-
68
- let _state = $state({
69
- titleId: null,
70
- panelRef: null,
71
- } as StateDefinition)
72
-
73
- const close = $derived(() => onclose(false))
74
-
75
- const setTitleId = (id: string | null) => (_state.titleId = id)
76
-
77
- const enabled = $derived(dialogState === DialogStates.Open)
78
- const nestedPortals = useNestedPortals()
79
- const { portals } = $derived(nestedPortals)
80
-
81
- // We use this because reading these values during initial render(s)
82
- // can result in `null` rather then the actual elements
83
- // This doesn't happen when using certain components like a
84
- // `<Dialog.Title>` because they cause the parent to re-render
85
- const defaultContainer: { readonly current: HTMLElement | undefined } = {
86
- get current() {
87
- return _state.panelRef ?? ref
88
- },
89
- }
90
-
91
- const mainTreeNode = useMainTreeNode()
92
- let { resolvedContainers: resolvedRootContainers } = $derived(
93
- useRootContainers({
94
- get mainTreeNode() {
95
- return mainTreeNode.node
96
- },
97
- get portals() {
98
- return portals
99
- },
100
- get defaultContainers() {
101
- return defaultContainer.current ? [defaultContainer.current] : []
102
- },
103
- })
104
- )
105
-
106
- // When the `Dialog` is wrapped in a `Transition` (or another Headless UI component that exposes
107
- // the OpenClosed state) then we get some information via context about its state. When the
108
- // `Transition` is about to close, then the `State.Closing` state will be exposed. This allows us
109
- // to enable/disable certain functionality in the `Dialog` upfront instead of waiting until the
110
- // `Transition` is done transitioning.
111
- const isClosing = $derived(
112
- usesOpenClosedState !== null ? (usesOpenClosedState.value & State.Closing) === State.Closing : false
113
- )
114
-
115
- // Ensure other elements can't be interacted with
116
- const inertOthersEnabled = $derived(__demoMode ? false : isClosing ? false : enabled)
117
- useInertOthers({
118
- get enabled() {
119
- return inertOthersEnabled
120
- },
121
- elements: {
122
- get allowed() {
123
- return [
124
- // Allow the headlessui-portal of the Dialog to be interactive. This
125
- // contains the current dialog and the necessary focus guard elements.
126
- ref?.closest<HTMLElement>("[data-headlessui-portal]") ?? null,
127
- ]
128
- },
129
- get disallowed() {
130
- return [
131
- // Disallow the "main" tree root node
132
- mainTreeNode.node?.closest<HTMLElement>("body > *:not(#headlessui-portal-root)") ?? null,
133
- ]
134
- },
135
- },
136
- })
137
-
138
- // Close Dialog on outside click
139
- useOutsideClick({
140
- get enabled() {
141
- return enabled
142
- },
143
- get containers() {
144
- return resolvedRootContainers
145
- },
146
- cb(event) {
147
- event.preventDefault()
148
- close()
149
- },
150
- })
151
-
152
- // Handle `Escape` to close
153
- useEscape({
154
- get enabled() {
155
- return enabled
156
- },
157
- get view() {
158
- return ownerDocument?.defaultView ?? null
159
- },
160
- cb(event) {
161
- event.preventDefault()
162
- event.stopPropagation()
163
-
164
- // Ensure that we blur the current activeElement to prevent maintaining
165
- // focus and potentially scrolling the page to the end (because the Dialog
166
- // is rendered in a Portal at the end of the document.body and the browser
167
- // tries to keep the focused element in view)
168
- //
169
- // Typically only happens in Safari.
170
- if (
171
- document.activeElement &&
172
- "blur" in document.activeElement &&
173
- typeof document.activeElement.blur === "function"
174
- ) {
175
- document.activeElement.blur()
176
- }
177
-
178
- close()
179
- },
180
- })
181
-
182
- // Scroll lock
183
- const scrollLockEnabled = $derived(__demoMode ? false : isClosing ? false : enabled)
184
- useScrollLock({
185
- get enabled() {
186
- return scrollLockEnabled
187
- },
188
- get ownerDocument() {
189
- return ownerDocument
190
- },
191
- resolveAllowedContainers() {
192
- return resolvedRootContainers
193
- },
194
- })
195
-
196
- // Ensure we close the dialog as soon as the dialog itself becomes hidden
197
- useOnDisappear({
198
- get enabled() {
199
- return enabled
200
- },
201
- get ref() {
202
- return ref
203
- },
204
- get ondisappear() {
205
- return close
206
- },
207
- })
208
-
209
- const describedby = useDescriptions()
210
-
211
- setContext<DialogContext>("DialogContext", {
212
- get titleId() {
213
- return _state.titleId
214
- },
215
- get panelRef() {
216
- return _state.panelRef
217
- },
218
- get dialogState() {
219
- return dialogState
220
- },
221
- get close() {
222
- return close
223
- },
224
- get unmount() {
225
- return unmount
226
- },
227
- setTitleId,
228
- })
229
-
230
- const slot = $derived({ open: dialogState === DialogStates.Open } satisfies DialogRenderPropArg)
231
-
232
- const ourProps = $derived({
233
- id,
234
- role,
235
- tabIndex: -1,
236
- "aria-modal": __demoMode ? undefined : dialogState === DialogStates.Open ? true : undefined,
237
- "aria-labelledby": _state.titleId,
238
- "aria-describedby": describedby.value,
239
- unmount,
240
- })
241
-
242
- const shouldMoveFocusInside = !useIsTouchDevice().value
243
- const focusTrapFeatures = $derived.by(() => {
244
- let focusTrapFeatures = FocusTrapFeatures.None
245
-
246
- if (enabled && !__demoMode) {
247
- focusTrapFeatures |= FocusTrapFeatures.RestoreFocus
248
- focusTrapFeatures |= FocusTrapFeatures.TabLock
249
-
250
- if (autofocus) {
251
- focusTrapFeatures |= FocusTrapFeatures.AutoFocus
252
- }
253
-
254
- if (shouldMoveFocusInside) {
255
- focusTrapFeatures |= FocusTrapFeatures.InitialFocus
256
- }
257
- }
258
-
259
- return focusTrapFeatures
260
- })
261
-
262
- clearOpenClosedContext()
263
- createCloseContext({
264
- get close() {
265
- return close
266
- },
267
- })
268
- </script>
269
-
270
- <ForcePortalRoot force={true}>
271
- <Portal>
272
- <PortalGroup target={ref ?? null}>
273
- <ForcePortalRoot force={false}>
274
- <FocusTrap
275
- {initialFocus}
276
- initialFocusFallback={ref}
277
- containers={resolvedRootContainers}
278
- features={focusTrapFeatures}
279
- >
280
- <ElementOrComponent
281
- {ourProps}
282
- {theirProps}
283
- slots={slot}
284
- defaultTag={DEFAULT_DIALOG_TAG}
285
- features={DialogRenderFeatures}
286
- visible={dialogState === DialogStates.Open}
287
- name="Dialog"
288
- bind:ref
289
- />
290
- </FocusTrap>
291
- </ForcePortalRoot>
292
- </PortalGroup>
293
- </Portal>
294
- </ForcePortalRoot>
@@ -1,42 +0,0 @@
1
- import { DEFAULT_DIALOG_TAG, type DialogRenderPropArg } from "./Dialog.svelte";
2
- import type { ElementType } from "../utils/types.js";
3
- declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_DIALOG_TAG> {
4
- props(): {
5
- as?: TTag | undefined;
6
- } & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "autofocus" | "unmount" | "static" | "id" | "role" | "onclose" | "initialFocus" | ("aria-describedby" | "aria-labelledby" | "aria-modal") | "open" | "transition" | "__demoMode"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
7
- children?: import("../utils/types.js").Children<DialogRenderPropArg> | undefined;
8
- ref?: HTMLElement;
9
- } & (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) ? {
10
- class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: DialogRenderPropArg) => string) | undefined;
11
- } : {}) & {
12
- static?: boolean | undefined;
13
- unmount?: boolean | undefined;
14
- } & {
15
- id?: string;
16
- open?: boolean;
17
- onclose(value: boolean): void;
18
- initialFocus?: HTMLElement;
19
- role?: "dialog" | "alertdialog";
20
- autofocus?: boolean;
21
- transition?: boolean;
22
- __demoMode?: boolean;
23
- };
24
- events(): {} & {
25
- [evt: string]: CustomEvent<any>;
26
- };
27
- slots(): {};
28
- bindings(): "ref";
29
- exports(): {};
30
- }
31
- interface $$IsomorphicComponent {
32
- new <TTag extends ElementType = typeof DEFAULT_DIALOG_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']>> & {
33
- $$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
34
- } & ReturnType<__sveltets_Render<TTag>['exports']>;
35
- <TTag extends ElementType = typeof DEFAULT_DIALOG_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
36
- $$events?: ReturnType<__sveltets_Render<TTag>['events']>;
37
- }): ReturnType<__sveltets_Render<TTag>['exports']>;
38
- z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
39
- }
40
- declare const InternalDialog: $$IsomorphicComponent;
41
- type InternalDialog<TTag extends ElementType = typeof DEFAULT_DIALOG_TAG> = InstanceType<typeof InternalDialog<TTag>>;
42
- export default InternalDialog;
@@ -1,14 +0,0 @@
1
- <script lang="ts">
2
- import { getContext, type Snippet } from "svelte"
3
- import Portal from "./Portal.svelte"
4
-
5
- let { children }: { children: Snippet } = $props()
6
-
7
- const formFieldsContext = getContext<{ target?: HTMLElement }>("FormFieldsContext")
8
- </script>
9
-
10
- {#if !formFieldsContext}
11
- {@render children()}
12
- {:else if formFieldsContext.target}
13
- <Portal target={formFieldsContext.target}>{@render children()}</Portal>
14
- {/if}
@@ -1,21 +0,0 @@
1
- import { type Snippet } from "svelte";
2
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
- $$bindings?: Bindings;
5
- } & Exports;
6
- (internal: unknown, props: Props & {
7
- $$events?: Events;
8
- $$slots?: Slots;
9
- }): Exports & {
10
- $set?: any;
11
- $on?: any;
12
- };
13
- z_$$bindings?: Bindings;
14
- }
15
- declare const HoistFormFields: $$__sveltets_2_IsomorphicComponent<{
16
- children: Snippet;
17
- }, {
18
- [evt: string]: CustomEvent<any>;
19
- }, {}, {}, "">;
20
- type HoistFormFields = InstanceType<typeof HoistFormFields>;
21
- export default HoistFormFields;
@@ -1,8 +0,0 @@
1
- type IdContext = {
2
- value?: string;
3
- };
4
- export declare function useProvidedId(): IdContext | undefined;
5
- export declare function useIdContext(options: {
6
- id?: string;
7
- }): void;
8
- export {};
@@ -1,11 +0,0 @@
1
- import { getContext, setContext } from "svelte";
2
- export function useProvidedId() {
3
- return getContext("IdContext");
4
- }
5
- export function useIdContext(options) {
6
- setContext("IdContext", {
7
- get value() {
8
- return options.id;
9
- },
10
- });
11
- }
@@ -1,56 +0,0 @@
1
- <script lang="ts" generics="TTag extends keyof SvelteHTMLProps, TSlot, TValue">
2
- import { stateFromSlot } from "./state.js"
3
- import type { ElementType, Props, SvelteHTMLProps } from "./types.js"
4
-
5
- let {
6
- slot = {} as TSlot,
7
- tag,
8
- name,
9
- ref = $bindable(),
10
- value = $bindable(),
11
- checked = $bindable(),
12
- children,
13
- as = tag as TTag,
14
- unmount,
15
- static: isStatic,
16
- ...props
17
- }: {
18
- as?: TTag
19
- slot: TSlot
20
- tag: ElementType
21
- name: string
22
- ref?: HTMLElement
23
- value?: TValue
24
- checked?: boolean
25
- } & Props<TTag, TSlot> = $props()
26
-
27
- const resolvedClass = $derived(
28
- typeof props.class === "function" ? props.class(slot) : (props.class as string | undefined)
29
- )
30
- </script>
31
-
32
- {#if as === "svelte:fragment"}
33
- {#if children}{@render children(slot, {
34
- ...props,
35
- ...(resolvedClass ? { class: resolvedClass } : {}),
36
- ...stateFromSlot(slot),
37
- })}{/if}
38
- {:else if children}
39
- {#if as === "select"}
40
- <select bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} bind:value>
41
- {@render children(slot, {})}
42
- </select>
43
- {:else}
44
- <svelte:element this={as} bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)}>
45
- {@render children(slot, {})}
46
- </svelte:element>
47
- {/if}
48
- {:else if as === "input" && props.type === "checkbox"}
49
- <input type="checkbox" bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} bind:checked />
50
- {:else if as === "input"}
51
- <input bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} bind:value />
52
- {:else if as === "textarea"}
53
- <textarea bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} bind:value></textarea>
54
- {:else}
55
- <svelte:element this={as} bind:this={ref} {...props} class={resolvedClass} {...stateFromSlot(slot)} />
56
- {/if}
@@ -1,35 +0,0 @@
1
- import type { ElementType, SvelteHTMLProps } from "./types.js";
2
- declare class __sveltets_Render<TTag extends keyof SvelteHTMLProps, TSlot, TValue> {
3
- props(): {
4
- as?: TTag | undefined;
5
- slot: TSlot;
6
- tag: ElementType;
7
- name: string;
8
- ref?: HTMLElement;
9
- value?: TValue | undefined;
10
- checked?: boolean;
11
- } & (Exclude<keyof import("./types.js").PropsOf<TTag>, "as" | "children" | "refName" | "class"> extends infer T extends keyof import("./types.js").PropsOf<TTag> ? { [P in T]: import("./types.js").PropsOf<TTag>[P]; } : never) & {
12
- children?: import("./types.js").Children<TSlot> | undefined;
13
- ref?: HTMLElement;
14
- } & (true extends (import("./types.js").PropsOf<TTag> extends infer T_1 ? T_1 extends import("./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) ? {
15
- class?: import("./types.js").PropsOf<TTag>["class"] | ((bag: TSlot) => string) | undefined;
16
- } : {});
17
- events(): {} & {
18
- [evt: string]: CustomEvent<any>;
19
- };
20
- slots(): {};
21
- bindings(): "ref" | "value" | "checked";
22
- exports(): {};
23
- }
24
- interface $$IsomorphicComponent {
25
- new <TTag extends keyof SvelteHTMLProps, TSlot, 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']>> & {
26
- $$bindings?: ReturnType<__sveltets_Render<TTag, TSlot, TValue>['bindings']>;
27
- } & ReturnType<__sveltets_Render<TTag, TSlot, TValue>['exports']>;
28
- <TTag extends keyof SvelteHTMLProps, TSlot, TValue>(internal: unknown, props: ReturnType<__sveltets_Render<TTag, TSlot, TValue>['props']> & {
29
- $$events?: ReturnType<__sveltets_Render<TTag, TSlot, TValue>['events']>;
30
- }): ReturnType<__sveltets_Render<TTag, TSlot, TValue>['exports']>;
31
- z_$$bindings?: ReturnType<__sveltets_Render<any, any, any>['bindings']>;
32
- }
33
- declare const Generic: $$IsomorphicComponent;
34
- type Generic<TTag extends keyof SvelteHTMLProps, TSlot, TValue> = InstanceType<typeof Generic<TTag, TSlot, TValue>>;
35
- export default Generic;
@@ -1,21 +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
- export type Children<TSlot> = Snippet | Snippet<[TSlot, Record<string, any>]>;
11
- type OurProps<TSlot> = {
12
- children?: Children<TSlot>;
13
- ref?: HTMLElement;
14
- class?: string | null | ((bag: TSlot) => string);
15
- };
16
- type MergeProps3<T, U, V> = {
17
- [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;
18
- };
19
- export type Props<TTag extends ElementType, TSlot = {}, TOmittableProps extends PropertyKey = never, Overrides = {}> = MergeProps3<SvelteHTMLProps[TTag], OurProps<TSlot>, Overrides>;
20
- export type EnsureArray<T> = T extends any[] ? T : Expand<T>[];
21
- export {};