@proyecto-viviana/solidaria 0.3.0 → 0.4.1

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 (743) hide show
  1. package/dist/_chunk/DragManager.js +627 -0
  2. package/dist/_chunk/DragManager.js.map +1 -0
  3. package/dist/_chunk/DragManager.jsx +627 -0
  4. package/dist/_chunk/DragManager.jsx.map +1 -0
  5. package/dist/_chunk/FocusScope.js +400 -0
  6. package/dist/_chunk/FocusScope.js.map +1 -0
  7. package/dist/_chunk/FocusScope.jsx +375 -0
  8. package/dist/_chunk/FocusScope.jsx.map +1 -0
  9. package/dist/_chunk/actiongroup.js +141 -0
  10. package/dist/_chunk/actiongroup.js.map +1 -0
  11. package/dist/_chunk/actiongroup.jsx +141 -0
  12. package/dist/_chunk/actiongroup.jsx.map +1 -0
  13. package/dist/_chunk/announce.js +207 -0
  14. package/dist/_chunk/announce.js.map +1 -0
  15. package/dist/_chunk/announce.jsx +207 -0
  16. package/dist/_chunk/announce.jsx.map +1 -0
  17. package/dist/_chunk/ariaHideOutside.js +122 -0
  18. package/dist/_chunk/ariaHideOutside.js.map +1 -0
  19. package/dist/_chunk/ariaHideOutside.jsx +122 -0
  20. package/dist/_chunk/ariaHideOutside.jsx.map +1 -0
  21. package/dist/_chunk/autocomplete.js +244 -0
  22. package/dist/_chunk/autocomplete.js.map +1 -0
  23. package/dist/_chunk/autocomplete.jsx +244 -0
  24. package/dist/_chunk/autocomplete.jsx.map +1 -0
  25. package/dist/_chunk/breadcrumbs.js +121 -0
  26. package/dist/_chunk/breadcrumbs.js.map +1 -0
  27. package/dist/_chunk/breadcrumbs.jsx +121 -0
  28. package/dist/_chunk/breadcrumbs.jsx.map +1 -0
  29. package/dist/_chunk/button.js +275 -0
  30. package/dist/_chunk/button.js.map +1 -0
  31. package/dist/_chunk/button.jsx +275 -0
  32. package/dist/_chunk/button.jsx.map +1 -0
  33. package/dist/_chunk/calendar.js +1037 -0
  34. package/dist/_chunk/calendar.js.map +1 -0
  35. package/dist/_chunk/calendar.jsx +1037 -0
  36. package/dist/_chunk/calendar.jsx.map +1 -0
  37. package/dist/_chunk/checkbox.js +235 -0
  38. package/dist/_chunk/checkbox.js.map +1 -0
  39. package/dist/_chunk/checkbox.jsx +235 -0
  40. package/dist/_chunk/checkbox.jsx.map +1 -0
  41. package/dist/_chunk/color.js +1458 -0
  42. package/dist/_chunk/color.js.map +1 -0
  43. package/dist/_chunk/color.jsx +1458 -0
  44. package/dist/_chunk/color.jsx.map +1 -0
  45. package/dist/_chunk/combobox.js +1062 -0
  46. package/dist/_chunk/combobox.js.map +1 -0
  47. package/dist/_chunk/combobox.jsx +1062 -0
  48. package/dist/_chunk/combobox.jsx.map +1 -0
  49. package/dist/_chunk/constants.js +19 -0
  50. package/dist/_chunk/constants.js.map +1 -0
  51. package/dist/_chunk/constants.jsx +19 -0
  52. package/dist/_chunk/constants.jsx.map +1 -0
  53. package/dist/_chunk/createCollator.js +61 -0
  54. package/dist/_chunk/createCollator.js.map +1 -0
  55. package/dist/_chunk/createCollator.jsx +61 -0
  56. package/dist/_chunk/createCollator.jsx.map +1 -0
  57. package/dist/_chunk/createCollectionRowInteraction.js +133 -0
  58. package/dist/_chunk/createCollectionRowInteraction.js.map +1 -0
  59. package/dist/_chunk/createCollectionRowInteraction.jsx +133 -0
  60. package/dist/_chunk/createCollectionRowInteraction.jsx.map +1 -0
  61. package/dist/_chunk/createField.js +55 -0
  62. package/dist/_chunk/createField.js.map +1 -0
  63. package/dist/_chunk/createField.jsx +55 -0
  64. package/dist/_chunk/createField.jsx.map +1 -0
  65. package/dist/_chunk/createFocus.js +105 -0
  66. package/dist/_chunk/createFocus.js.map +1 -0
  67. package/dist/_chunk/createFocus.jsx +105 -0
  68. package/dist/_chunk/createFocus.jsx.map +1 -0
  69. package/dist/_chunk/createFocusRing.js +54 -0
  70. package/dist/_chunk/createFocusRing.js.map +1 -0
  71. package/dist/_chunk/createFocusRing.jsx +54 -0
  72. package/dist/_chunk/createFocusRing.jsx.map +1 -0
  73. package/dist/_chunk/createFocusWithin.js +120 -0
  74. package/dist/_chunk/createFocusWithin.js.map +1 -0
  75. package/dist/_chunk/createFocusWithin.jsx +120 -0
  76. package/dist/_chunk/createFocusWithin.jsx.map +1 -0
  77. package/dist/_chunk/createFocusable.js +131 -0
  78. package/dist/_chunk/createFocusable.js.map +1 -0
  79. package/dist/_chunk/createFocusable.jsx +131 -0
  80. package/dist/_chunk/createFocusable.jsx.map +1 -0
  81. package/dist/_chunk/createFormReset.js +39 -0
  82. package/dist/_chunk/createFormReset.js.map +1 -0
  83. package/dist/_chunk/createFormReset.jsx +39 -0
  84. package/dist/_chunk/createFormReset.jsx.map +1 -0
  85. package/dist/_chunk/createFormValidation.js +135 -0
  86. package/dist/_chunk/createFormValidation.js.map +1 -0
  87. package/dist/_chunk/createFormValidation.jsx +135 -0
  88. package/dist/_chunk/createFormValidation.jsx.map +1 -0
  89. package/dist/_chunk/createHover.js +131 -0
  90. package/dist/_chunk/createHover.js.map +1 -0
  91. package/dist/_chunk/createHover.jsx +131 -0
  92. package/dist/_chunk/createHover.jsx.map +1 -0
  93. package/dist/_chunk/createInteractionModality.js +268 -0
  94. package/dist/_chunk/createInteractionModality.js.map +1 -0
  95. package/dist/_chunk/createInteractionModality.jsx +268 -0
  96. package/dist/_chunk/createInteractionModality.jsx.map +1 -0
  97. package/dist/_chunk/createLabel.js +47 -0
  98. package/dist/_chunk/createLabel.js.map +1 -0
  99. package/dist/_chunk/createLabel.jsx +47 -0
  100. package/dist/_chunk/createLabel.jsx.map +1 -0
  101. package/dist/_chunk/createLabels.js +32 -0
  102. package/dist/_chunk/createLabels.js.map +1 -0
  103. package/dist/_chunk/createLabels.jsx +32 -0
  104. package/dist/_chunk/createLabels.jsx.map +1 -0
  105. package/dist/_chunk/createLandmark.js +198 -0
  106. package/dist/_chunk/createLandmark.js.map +1 -0
  107. package/dist/_chunk/createLandmark.jsx +198 -0
  108. package/dist/_chunk/createLandmark.jsx.map +1 -0
  109. package/dist/_chunk/createOverlay.js +327 -0
  110. package/dist/_chunk/createOverlay.js.map +1 -0
  111. package/dist/_chunk/createOverlay.jsx +327 -0
  112. package/dist/_chunk/createOverlay.jsx.map +1 -0
  113. package/dist/_chunk/createPress.js +526 -0
  114. package/dist/_chunk/createPress.js.map +1 -0
  115. package/dist/_chunk/createPress.jsx +526 -0
  116. package/dist/_chunk/createPress.jsx.map +1 -0
  117. package/dist/_chunk/createProgressBar.js +82 -0
  118. package/dist/_chunk/createProgressBar.js.map +1 -0
  119. package/dist/_chunk/createProgressBar.jsx +82 -0
  120. package/dist/_chunk/createProgressBar.jsx.map +1 -0
  121. package/dist/_chunk/createSelectableItem.js +302 -0
  122. package/dist/_chunk/createSelectableItem.js.map +1 -0
  123. package/dist/_chunk/createSelectableItem.jsx +302 -0
  124. package/dist/_chunk/createSelectableItem.jsx.map +1 -0
  125. package/dist/_chunk/createStringFormatter.js +61 -0
  126. package/dist/_chunk/createStringFormatter.js.map +1 -0
  127. package/dist/_chunk/createStringFormatter.jsx +61 -0
  128. package/dist/_chunk/createStringFormatter.jsx.map +1 -0
  129. package/dist/_chunk/createToggle.js +159 -0
  130. package/dist/_chunk/createToggle.js.map +1 -0
  131. package/dist/_chunk/createToggle.jsx +159 -0
  132. package/dist/_chunk/createToggle.jsx.map +1 -0
  133. package/dist/_chunk/createTypeSelect.js +125 -0
  134. package/dist/_chunk/createTypeSelect.js.map +1 -0
  135. package/dist/_chunk/createTypeSelect.jsx +125 -0
  136. package/dist/_chunk/createTypeSelect.jsx.map +1 -0
  137. package/dist/_chunk/datepicker.js +1706 -0
  138. package/dist/_chunk/datepicker.js.map +1 -0
  139. package/dist/_chunk/datepicker.jsx +1706 -0
  140. package/dist/_chunk/datepicker.jsx.map +1 -0
  141. package/dist/_chunk/dialog.js +62 -0
  142. package/dist/_chunk/dialog.js.map +1 -0
  143. package/dist/_chunk/dialog.jsx +62 -0
  144. package/dist/_chunk/dialog.jsx.map +1 -0
  145. package/dist/_chunk/disclosure.js +185 -0
  146. package/dist/_chunk/disclosure.js.map +1 -0
  147. package/dist/_chunk/disclosure.jsx +185 -0
  148. package/dist/_chunk/disclosure.jsx.map +1 -0
  149. package/dist/_chunk/dnd.js +2395 -0
  150. package/dist/_chunk/dnd.js.map +1 -0
  151. package/dist/_chunk/dnd.jsx +2395 -0
  152. package/dist/_chunk/dnd.jsx.map +1 -0
  153. package/dist/_chunk/env.js +87 -0
  154. package/dist/_chunk/env.js.map +1 -0
  155. package/dist/_chunk/env.jsx +87 -0
  156. package/dist/_chunk/env.jsx.map +1 -0
  157. package/dist/_chunk/filterDOMProps.js +82 -0
  158. package/dist/_chunk/filterDOMProps.js.map +1 -0
  159. package/dist/_chunk/filterDOMProps.jsx +82 -0
  160. package/dist/_chunk/filterDOMProps.jsx.map +1 -0
  161. package/dist/_chunk/focus.js +399 -0
  162. package/dist/_chunk/focus.js.map +1 -0
  163. package/dist/_chunk/focus.jsx +399 -0
  164. package/dist/_chunk/focus.jsx.map +1 -0
  165. package/dist/_chunk/focus2.js +631 -0
  166. package/dist/_chunk/focus2.js.map +1 -0
  167. package/dist/_chunk/focus2.jsx +631 -0
  168. package/dist/_chunk/focus2.jsx.map +1 -0
  169. package/dist/_chunk/grid.js +623 -0
  170. package/dist/_chunk/grid.js.map +1 -0
  171. package/dist/_chunk/grid.jsx +623 -0
  172. package/dist/_chunk/grid.jsx.map +1 -0
  173. package/dist/_chunk/gridlist.js +369 -0
  174. package/dist/_chunk/gridlist.js.map +1 -0
  175. package/dist/_chunk/gridlist.jsx +369 -0
  176. package/dist/_chunk/gridlist.jsx.map +1 -0
  177. package/dist/_chunk/i18n.js +199 -0
  178. package/dist/_chunk/i18n.js.map +1 -0
  179. package/dist/_chunk/i18n.jsx +199 -0
  180. package/dist/_chunk/i18n.jsx.map +1 -0
  181. package/dist/_chunk/interactions.js +331 -0
  182. package/dist/_chunk/interactions.js.map +1 -0
  183. package/dist/_chunk/interactions.jsx +325 -0
  184. package/dist/_chunk/interactions.jsx.map +1 -0
  185. package/dist/_chunk/link.js +97 -0
  186. package/dist/_chunk/link.js.map +1 -0
  187. package/dist/_chunk/link.jsx +97 -0
  188. package/dist/_chunk/link.jsx.map +1 -0
  189. package/dist/_chunk/listbox.js +356 -0
  190. package/dist/_chunk/listbox.js.map +1 -0
  191. package/dist/_chunk/listbox.jsx +356 -0
  192. package/dist/_chunk/listbox.jsx.map +1 -0
  193. package/dist/_chunk/locale.js +173 -0
  194. package/dist/_chunk/locale.js.map +1 -0
  195. package/dist/_chunk/locale.jsx +167 -0
  196. package/dist/_chunk/locale.jsx.map +1 -0
  197. package/dist/_chunk/menu.js +519 -0
  198. package/dist/_chunk/menu.js.map +1 -0
  199. package/dist/_chunk/menu.jsx +519 -0
  200. package/dist/_chunk/menu.jsx.map +1 -0
  201. package/dist/_chunk/meter.js +33 -0
  202. package/dist/_chunk/meter.js.map +1 -0
  203. package/dist/_chunk/meter.jsx +33 -0
  204. package/dist/_chunk/meter.jsx.map +1 -0
  205. package/dist/_chunk/numberfield.js +259 -0
  206. package/dist/_chunk/numberfield.js.map +1 -0
  207. package/dist/_chunk/numberfield.jsx +259 -0
  208. package/dist/_chunk/numberfield.jsx.map +1 -0
  209. package/dist/_chunk/overlays.js +186 -0
  210. package/dist/_chunk/overlays.js.map +1 -0
  211. package/dist/_chunk/overlays.jsx +162 -0
  212. package/dist/_chunk/overlays.jsx.map +1 -0
  213. package/dist/_chunk/popover.js +574 -0
  214. package/dist/_chunk/popover.js.map +1 -0
  215. package/dist/_chunk/popover.jsx +574 -0
  216. package/dist/_chunk/popover.jsx.map +1 -0
  217. package/dist/_chunk/radio.js +320 -0
  218. package/dist/_chunk/radio.js.map +1 -0
  219. package/dist/_chunk/radio.jsx +320 -0
  220. package/dist/_chunk/radio.jsx.map +1 -0
  221. package/dist/_chunk/reactivity.js +21 -0
  222. package/dist/_chunk/reactivity.js.map +1 -0
  223. package/dist/_chunk/reactivity.jsx +21 -0
  224. package/dist/_chunk/reactivity.jsx.map +1 -0
  225. package/dist/_chunk/searchfield.js +210 -0
  226. package/dist/_chunk/searchfield.js.map +1 -0
  227. package/dist/_chunk/searchfield.jsx +210 -0
  228. package/dist/_chunk/searchfield.jsx.map +1 -0
  229. package/dist/_chunk/select.js +406 -0
  230. package/dist/_chunk/select.js.map +1 -0
  231. package/dist/_chunk/select.jsx +397 -0
  232. package/dist/_chunk/select.jsx.map +1 -0
  233. package/dist/_chunk/selection.js +666 -0
  234. package/dist/_chunk/selection.js.map +1 -0
  235. package/dist/_chunk/selection.jsx +666 -0
  236. package/dist/_chunk/selection.jsx.map +1 -0
  237. package/dist/_chunk/separator.js +29 -0
  238. package/dist/_chunk/separator.js.map +1 -0
  239. package/dist/_chunk/separator.jsx +29 -0
  240. package/dist/_chunk/separator.jsx.map +1 -0
  241. package/dist/_chunk/slider.js +256 -0
  242. package/dist/_chunk/slider.js.map +1 -0
  243. package/dist/_chunk/slider.jsx +256 -0
  244. package/dist/_chunk/slider.jsx.map +1 -0
  245. package/dist/_chunk/spinbutton.js +153 -0
  246. package/dist/_chunk/spinbutton.js.map +1 -0
  247. package/dist/_chunk/spinbutton.jsx +153 -0
  248. package/dist/_chunk/spinbutton.jsx.map +1 -0
  249. package/dist/_chunk/steplist.js +66 -0
  250. package/dist/_chunk/steplist.js.map +1 -0
  251. package/dist/_chunk/steplist.jsx +66 -0
  252. package/dist/_chunk/steplist.jsx.map +1 -0
  253. package/dist/_chunk/switch.js +34 -0
  254. package/dist/_chunk/switch.js.map +1 -0
  255. package/dist/_chunk/switch.jsx +34 -0
  256. package/dist/_chunk/switch.jsx.map +1 -0
  257. package/dist/_chunk/table.js +1088 -0
  258. package/dist/_chunk/table.js.map +1 -0
  259. package/dist/_chunk/table.jsx +1088 -0
  260. package/dist/_chunk/table.jsx.map +1 -0
  261. package/dist/_chunk/tabs.js +263 -0
  262. package/dist/_chunk/tabs.js.map +1 -0
  263. package/dist/_chunk/tabs.jsx +263 -0
  264. package/dist/_chunk/tabs.jsx.map +1 -0
  265. package/dist/_chunk/tag.js +322 -0
  266. package/dist/_chunk/tag.js.map +1 -0
  267. package/dist/_chunk/tag.jsx +322 -0
  268. package/dist/_chunk/tag.jsx.map +1 -0
  269. package/dist/_chunk/textfield.js +110 -0
  270. package/dist/_chunk/textfield.js.map +1 -0
  271. package/dist/_chunk/textfield.jsx +110 -0
  272. package/dist/_chunk/textfield.jsx.map +1 -0
  273. package/dist/_chunk/toast.js +250 -0
  274. package/dist/_chunk/toast.js.map +1 -0
  275. package/dist/_chunk/toast.jsx +250 -0
  276. package/dist/_chunk/toast.jsx.map +1 -0
  277. package/dist/_chunk/toolbar.js +226 -0
  278. package/dist/_chunk/toolbar.js.map +1 -0
  279. package/dist/_chunk/toolbar.jsx +226 -0
  280. package/dist/_chunk/toolbar.jsx.map +1 -0
  281. package/dist/_chunk/tooltip.js +185 -0
  282. package/dist/_chunk/tooltip.js.map +1 -0
  283. package/dist/_chunk/tooltip.jsx +185 -0
  284. package/dist/_chunk/tooltip.jsx.map +1 -0
  285. package/dist/_chunk/tree.js +452 -0
  286. package/dist/_chunk/tree.js.map +1 -0
  287. package/dist/_chunk/tree.jsx +452 -0
  288. package/dist/_chunk/tree.jsx.map +1 -0
  289. package/dist/_chunk/utils.js +705 -0
  290. package/dist/_chunk/utils.js.map +1 -0
  291. package/dist/_chunk/utils.jsx +705 -0
  292. package/dist/_chunk/utils.jsx.map +1 -0
  293. package/dist/_chunk/visually-hidden.js +93 -0
  294. package/dist/_chunk/visually-hidden.js.map +1 -0
  295. package/dist/_chunk/visually-hidden.jsx +93 -0
  296. package/dist/_chunk/visually-hidden.jsx.map +1 -0
  297. package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
  298. package/dist/actiongroup/index.js +2 -0
  299. package/dist/actiongroup/index.jsx +2 -0
  300. package/dist/autocomplete/createAutocomplete.d.ts +12 -7
  301. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  302. package/dist/autocomplete/index.js +2 -0
  303. package/dist/autocomplete/index.jsx +2 -0
  304. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  305. package/dist/breadcrumbs/index.js +2 -0
  306. package/dist/breadcrumbs/index.jsx +2 -0
  307. package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
  308. package/dist/button/index.js +2 -0
  309. package/dist/button/index.jsx +2 -0
  310. package/dist/calendar/createCalendar.d.ts.map +1 -1
  311. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  312. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  313. package/dist/calendar/createCalendarMonthPicker.d.ts +41 -0
  314. package/dist/calendar/createCalendarMonthPicker.d.ts.map +1 -0
  315. package/dist/calendar/createCalendarYearPicker.d.ts +49 -0
  316. package/dist/calendar/createCalendarYearPicker.d.ts.map +1 -0
  317. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  318. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  319. package/dist/calendar/index.d.ts +2 -0
  320. package/dist/calendar/index.d.ts.map +1 -1
  321. package/dist/calendar/index.js +2 -0
  322. package/dist/calendar/index.jsx +2 -0
  323. package/dist/calendar/intl/index.d.ts +1 -1
  324. package/dist/calendar/intl/index.d.ts.map +1 -1
  325. package/dist/calendar/utils.d.ts +4 -0
  326. package/dist/calendar/utils.d.ts.map +1 -1
  327. package/dist/checkbox/createCheckbox.d.ts +4 -0
  328. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  329. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  330. package/dist/checkbox/index.js +2 -0
  331. package/dist/checkbox/index.jsx +2 -0
  332. package/dist/collections/index.js +160 -0
  333. package/dist/collections/index.js.map +1 -0
  334. package/dist/collections/index.jsx +160 -0
  335. package/dist/collections/index.jsx.map +1 -0
  336. package/dist/color/createColorArea.d.ts.map +1 -1
  337. package/dist/color/createColorField.d.ts.map +1 -1
  338. package/dist/color/createColorSlider.d.ts.map +1 -1
  339. package/dist/color/createColorSwatch.d.ts.map +1 -1
  340. package/dist/color/createColorWheel.d.ts.map +1 -1
  341. package/dist/color/index.js +2 -0
  342. package/dist/color/index.jsx +2 -0
  343. package/dist/color/intl/index.d.ts +30 -0
  344. package/dist/color/intl/index.d.ts.map +1 -0
  345. package/dist/combobox/createComboBox.d.ts.map +1 -1
  346. package/dist/combobox/index.js +2 -0
  347. package/dist/combobox/index.jsx +2 -0
  348. package/dist/combobox/intl/generated-locales.d.ts +16 -0
  349. package/dist/combobox/intl/generated-locales.d.ts.map +1 -0
  350. package/dist/combobox/intl/index.d.ts +2 -2
  351. package/dist/combobox/intl/index.d.ts.map +1 -1
  352. package/dist/datepicker/createDateField.d.ts +45 -23
  353. package/dist/datepicker/createDateField.d.ts.map +1 -1
  354. package/dist/datepicker/createDatePicker.d.ts +34 -6
  355. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  356. package/dist/datepicker/createDatePickerGroup.d.ts +13 -13
  357. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -1
  358. package/dist/datepicker/createDateRangePicker.d.ts +55 -7
  359. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
  360. package/dist/datepicker/createDateSegment.d.ts +6 -15
  361. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  362. package/dist/datepicker/createDisplayNames.d.ts +17 -0
  363. package/dist/datepicker/createDisplayNames.d.ts.map +1 -0
  364. package/dist/datepicker/createTimeField.d.ts +12 -49
  365. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  366. package/dist/datepicker/index.d.ts +3 -3
  367. package/dist/datepicker/index.d.ts.map +1 -1
  368. package/dist/datepicker/index.js +2 -0
  369. package/dist/datepicker/index.jsx +2 -0
  370. package/dist/datepicker/intl.d.ts +12 -0
  371. package/dist/datepicker/intl.d.ts.map +1 -0
  372. package/dist/dialog/index.js +2 -0
  373. package/dist/dialog/index.jsx +2 -0
  374. package/dist/disclosure/index.js +2 -0
  375. package/dist/disclosure/index.jsx +2 -0
  376. package/dist/dnd/DragManager.d.ts +86 -0
  377. package/dist/dnd/DragManager.d.ts.map +1 -0
  378. package/dist/dnd/DropTargetKeyboardNavigation.d.ts +42 -0
  379. package/dist/dnd/DropTargetKeyboardNavigation.d.ts.map +1 -0
  380. package/dist/dnd/createDrag.d.ts.map +1 -1
  381. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  382. package/dist/dnd/createDraggableItem.d.ts +12 -7
  383. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  384. package/dist/dnd/createDroppableCollection.d.ts +7 -15
  385. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  386. package/dist/dnd/index.d.ts +5 -1
  387. package/dist/dnd/index.d.ts.map +1 -1
  388. package/dist/dnd/index.js +3 -0
  389. package/dist/dnd/index.jsx +3 -0
  390. package/dist/dnd/intl/index.d.ts +39 -0
  391. package/dist/dnd/intl/index.d.ts.map +1 -0
  392. package/dist/dnd/utils.d.ts +7 -2
  393. package/dist/dnd/utils.d.ts.map +1 -1
  394. package/dist/focus/FocusScope.d.ts +7 -0
  395. package/dist/focus/FocusScope.d.ts.map +1 -1
  396. package/dist/focus/index.d.ts +2 -1
  397. package/dist/focus/index.d.ts.map +1 -1
  398. package/dist/focus/index.js +3 -0
  399. package/dist/focus/index.jsx +3 -0
  400. package/dist/focus/virtualFocus.d.ts +26 -0
  401. package/dist/focus/virtualFocus.d.ts.map +1 -0
  402. package/dist/form/createFormValidation.d.ts.map +1 -1
  403. package/dist/form/index.js +3 -0
  404. package/dist/form/index.jsx +3 -0
  405. package/dist/grid/index.js +2 -0
  406. package/dist/grid/index.jsx +2 -0
  407. package/dist/gridlist/createGridList.d.ts +7 -1
  408. package/dist/gridlist/createGridList.d.ts.map +1 -1
  409. package/dist/gridlist/createGridListItem.d.ts +1 -1
  410. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  411. package/dist/gridlist/createGridListSection.d.ts +15 -0
  412. package/dist/gridlist/createGridListSection.d.ts.map +1 -0
  413. package/dist/gridlist/index.d.ts +2 -1
  414. package/dist/gridlist/index.d.ts.map +1 -1
  415. package/dist/gridlist/index.js +2 -0
  416. package/dist/gridlist/index.jsx +2 -0
  417. package/dist/gridlist/types.d.ts +50 -0
  418. package/dist/gridlist/types.d.ts.map +1 -1
  419. package/dist/i18n/index.js +5 -0
  420. package/dist/i18n/index.jsx +5 -0
  421. package/dist/index.d.ts +10 -6
  422. package/dist/index.d.ts.map +1 -1
  423. package/dist/index.js +77 -18311
  424. package/dist/index.jsx +77 -18242
  425. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  426. package/dist/interactions/PressEvent.d.ts +11 -0
  427. package/dist/interactions/PressEvent.d.ts.map +1 -1
  428. package/dist/interactions/createFocus.d.ts.map +1 -1
  429. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  430. package/dist/interactions/createInteractionModality.d.ts +0 -1
  431. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  432. package/dist/interactions/createKeyboard.d.ts.map +1 -1
  433. package/dist/interactions/createPress.d.ts.map +1 -1
  434. package/dist/interactions/index.js +9 -0
  435. package/dist/interactions/index.jsx +9 -0
  436. package/dist/label/createLabels.d.ts.map +1 -1
  437. package/dist/label/index.js +4 -0
  438. package/dist/label/index.jsx +4 -0
  439. package/dist/landmark/index.js +2 -0
  440. package/dist/landmark/index.jsx +2 -0
  441. package/dist/link/index.js +2 -0
  442. package/dist/link/index.jsx +2 -0
  443. package/dist/listbox/createListBox.d.ts +37 -0
  444. package/dist/listbox/createListBox.d.ts.map +1 -1
  445. package/dist/listbox/createOption.d.ts +7 -1
  446. package/dist/listbox/createOption.d.ts.map +1 -1
  447. package/dist/listbox/index.js +2 -0
  448. package/dist/listbox/index.jsx +2 -0
  449. package/dist/live-announcer/index.js +2 -0
  450. package/dist/live-announcer/index.jsx +2 -0
  451. package/dist/menu/createMenu.d.ts +7 -4
  452. package/dist/menu/createMenu.d.ts.map +1 -1
  453. package/dist/menu/createMenuItem.d.ts +9 -1
  454. package/dist/menu/createMenuItem.d.ts.map +1 -1
  455. package/dist/menu/index.js +2 -0
  456. package/dist/menu/index.jsx +2 -0
  457. package/dist/meter/index.js +2 -0
  458. package/dist/meter/index.jsx +2 -0
  459. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  460. package/dist/numberfield/index.js +2 -0
  461. package/dist/numberfield/index.jsx +2 -0
  462. package/dist/overlays/index.js +4 -0
  463. package/dist/overlays/index.jsx +4 -0
  464. package/dist/popover/calculatePosition.d.ts +2 -0
  465. package/dist/popover/calculatePosition.d.ts.map +1 -1
  466. package/dist/popover/createOverlayPosition.d.ts +8 -0
  467. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  468. package/dist/popover/index.js +2 -0
  469. package/dist/popover/index.jsx +2 -0
  470. package/dist/progress/index.js +2 -0
  471. package/dist/progress/index.jsx +2 -0
  472. package/dist/radio/createRadio.d.ts +2 -0
  473. package/dist/radio/createRadio.d.ts.map +1 -1
  474. package/dist/radio/index.js +2 -0
  475. package/dist/radio/index.jsx +2 -0
  476. package/dist/searchfield/index.js +2 -0
  477. package/dist/searchfield/index.jsx +2 -0
  478. package/dist/select/createSelect.d.ts +2 -0
  479. package/dist/select/createSelect.d.ts.map +1 -1
  480. package/dist/select/index.js +2 -0
  481. package/dist/select/index.jsx +2 -0
  482. package/dist/selection/DOMLayoutDelegate.d.ts +58 -0
  483. package/dist/selection/DOMLayoutDelegate.d.ts.map +1 -0
  484. package/dist/selection/ListKeyboardDelegate.d.ts +95 -0
  485. package/dist/selection/ListKeyboardDelegate.d.ts.map +1 -0
  486. package/dist/selection/constants.d.ts +15 -0
  487. package/dist/selection/constants.d.ts.map +1 -0
  488. package/dist/selection/createCollectionRowInteraction.d.ts +13 -0
  489. package/dist/selection/createCollectionRowInteraction.d.ts.map +1 -0
  490. package/dist/selection/createScrollIntoViewOnFocus.d.ts +31 -0
  491. package/dist/selection/createScrollIntoViewOnFocus.d.ts.map +1 -0
  492. package/dist/selection/createSelectableCollection.d.ts +69 -0
  493. package/dist/selection/createSelectableCollection.d.ts.map +1 -0
  494. package/dist/selection/createSelectableItem.d.ts +154 -0
  495. package/dist/selection/createSelectableItem.d.ts.map +1 -0
  496. package/dist/selection/createSelectableList.d.ts +43 -0
  497. package/dist/selection/createSelectableList.d.ts.map +1 -0
  498. package/dist/selection/createTypeSelect.d.ts.map +1 -1
  499. package/dist/selection/index.d.ts +9 -0
  500. package/dist/selection/index.d.ts.map +1 -1
  501. package/dist/selection/index.js +5 -0
  502. package/dist/selection/index.jsx +5 -0
  503. package/dist/selection/selectItem.d.ts +29 -0
  504. package/dist/selection/selectItem.d.ts.map +1 -0
  505. package/dist/selection/utils.d.ts +40 -0
  506. package/dist/selection/utils.d.ts.map +1 -0
  507. package/dist/separator/index.js +2 -0
  508. package/dist/separator/index.jsx +2 -0
  509. package/dist/slider/createSlider.d.ts.map +1 -1
  510. package/dist/slider/index.js +2 -0
  511. package/dist/slider/index.jsx +2 -0
  512. package/dist/spinbutton/createSpinButton.d.ts +41 -0
  513. package/dist/spinbutton/createSpinButton.d.ts.map +1 -0
  514. package/dist/spinbutton/index.d.ts +3 -0
  515. package/dist/spinbutton/index.d.ts.map +1 -0
  516. package/dist/spinbutton/index.js +2 -0
  517. package/dist/spinbutton/index.jsx +2 -0
  518. package/dist/spinbutton/intl.d.ts +5 -0
  519. package/dist/spinbutton/intl.d.ts.map +1 -0
  520. package/dist/ssr/index.d.ts +17 -0
  521. package/dist/ssr/index.d.ts.map +1 -1
  522. package/dist/ssr/index.js +299 -0
  523. package/dist/ssr/index.js.map +1 -0
  524. package/dist/ssr/index.jsx +292 -0
  525. package/dist/ssr/index.jsx.map +1 -0
  526. package/dist/steplist/index.js +2 -0
  527. package/dist/steplist/index.jsx +2 -0
  528. package/dist/switch/createSwitch.d.ts +4 -0
  529. package/dist/switch/createSwitch.d.ts.map +1 -1
  530. package/dist/switch/index.js +2 -0
  531. package/dist/switch/index.jsx +2 -0
  532. package/dist/table/createTable.d.ts.map +1 -1
  533. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  534. package/dist/table/createTableRow.d.ts +1 -1
  535. package/dist/table/createTableRow.d.ts.map +1 -1
  536. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  537. package/dist/table/createTableSelectionCheckbox.d.ts.map +1 -1
  538. package/dist/table/index.js +2 -0
  539. package/dist/table/index.jsx +2 -0
  540. package/dist/table/types.d.ts +35 -1
  541. package/dist/table/types.d.ts.map +1 -1
  542. package/dist/table/utils.d.ts +15 -0
  543. package/dist/table/utils.d.ts.map +1 -0
  544. package/dist/tabs/createTabs.d.ts +5 -3
  545. package/dist/tabs/createTabs.d.ts.map +1 -1
  546. package/dist/tabs/index.js +2 -0
  547. package/dist/tabs/index.jsx +2 -0
  548. package/dist/tag/createTag.d.ts +2 -0
  549. package/dist/tag/createTag.d.ts.map +1 -1
  550. package/dist/tag/createTagGroup.d.ts +7 -0
  551. package/dist/tag/createTagGroup.d.ts.map +1 -1
  552. package/dist/tag/index.js +2 -0
  553. package/dist/tag/index.jsx +2 -0
  554. package/dist/textfield/index.js +2 -0
  555. package/dist/textfield/index.jsx +2 -0
  556. package/dist/toast/createToast.d.ts.map +1 -1
  557. package/dist/toast/index.js +2 -0
  558. package/dist/toast/index.jsx +2 -0
  559. package/dist/toggle/createToggle.d.ts +4 -0
  560. package/dist/toggle/createToggle.d.ts.map +1 -1
  561. package/dist/toggle/index.js +3 -0
  562. package/dist/toggle/index.jsx +3 -0
  563. package/dist/toolbar/createToolbar.d.ts +1 -1
  564. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  565. package/dist/toolbar/index.js +2 -0
  566. package/dist/toolbar/index.jsx +2 -0
  567. package/dist/tooltip/index.js +2 -0
  568. package/dist/tooltip/index.jsx +2 -0
  569. package/dist/tree/createTree.d.ts +5 -1
  570. package/dist/tree/createTree.d.ts.map +1 -1
  571. package/dist/tree/createTreeItem.d.ts +1 -1
  572. package/dist/tree/createTreeItem.d.ts.map +1 -1
  573. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  574. package/dist/tree/index.js +2 -0
  575. package/dist/tree/index.jsx +2 -0
  576. package/dist/tree/types.d.ts +10 -0
  577. package/dist/tree/types.d.ts.map +1 -1
  578. package/dist/utils/animation.d.ts +60 -0
  579. package/dist/utils/animation.d.ts.map +1 -0
  580. package/dist/utils/dom.d.ts +49 -2
  581. package/dist/utils/dom.d.ts.map +1 -1
  582. package/dist/utils/index.d.ts +4 -1
  583. package/dist/utils/index.d.ts.map +1 -1
  584. package/dist/utils/index.js +6 -0
  585. package/dist/utils/index.jsx +6 -0
  586. package/dist/utils/keyboard.d.ts +17 -0
  587. package/dist/utils/keyboard.d.ts.map +1 -0
  588. package/dist/utils/mergeProps.d.ts.map +1 -1
  589. package/dist/utils/scrollIntoView.d.ts +30 -0
  590. package/dist/utils/scrollIntoView.d.ts.map +1 -0
  591. package/dist/visually-hidden/index.js +2 -0
  592. package/dist/visually-hidden/index.jsx +2 -0
  593. package/package.json +304 -3
  594. package/src/actiongroup/createActionGroup.ts +26 -109
  595. package/src/autocomplete/createAutocomplete.ts +202 -35
  596. package/src/breadcrumbs/createBreadcrumbs.ts +12 -4
  597. package/src/button/createToggleButtonGroup.ts +19 -14
  598. package/src/calendar/createCalendar.ts +5 -4
  599. package/src/calendar/createCalendarCell.ts +36 -5
  600. package/src/calendar/createCalendarGrid.ts +47 -12
  601. package/src/calendar/createCalendarMonthPicker.ts +105 -0
  602. package/src/calendar/createCalendarYearPicker.ts +144 -0
  603. package/src/calendar/createRangeCalendar.ts +27 -15
  604. package/src/calendar/createRangeCalendarCell.ts +17 -3
  605. package/src/calendar/index.ts +17 -0
  606. package/src/calendar/intl/index.ts +8 -0
  607. package/src/calendar/utils.ts +4 -0
  608. package/src/checkbox/createCheckbox.ts +10 -0
  609. package/src/checkbox/createCheckboxGroupItem.ts +12 -16
  610. package/src/color/createColorArea.ts +17 -10
  611. package/src/color/createColorField.ts +8 -1
  612. package/src/color/createColorSlider.ts +1 -2
  613. package/src/color/createColorSwatch.ts +4 -2
  614. package/src/color/createColorWheel.ts +0 -6
  615. package/src/color/intl/index.ts +316 -0
  616. package/src/combobox/createComboBox.ts +35 -4
  617. package/src/combobox/intl/generated-locales.ts +635 -0
  618. package/src/combobox/intl/index.ts +8 -2
  619. package/src/datepicker/createDateField.ts +228 -213
  620. package/src/datepicker/createDatePicker.ts +157 -146
  621. package/src/datepicker/createDatePickerGroup.ts +88 -82
  622. package/src/datepicker/createDateRangePicker.ts +230 -179
  623. package/src/datepicker/createDateSegment.ts +386 -384
  624. package/src/datepicker/createDisplayNames.ts +45 -0
  625. package/src/datepicker/createTimeField.ts +36 -129
  626. package/src/datepicker/index.ts +13 -14
  627. package/src/datepicker/intl.ts +633 -0
  628. package/src/dnd/DragManager.ts +693 -0
  629. package/src/dnd/DropTargetKeyboardNavigation.ts +337 -0
  630. package/src/dnd/createDrag.ts +31 -5
  631. package/src/dnd/createDraggableCollection.ts +33 -15
  632. package/src/dnd/createDraggableItem.ts +92 -5
  633. package/src/dnd/createDroppableCollection.ts +488 -371
  634. package/src/dnd/index.ts +11 -0
  635. package/src/dnd/intl/ar-AE.json +29 -0
  636. package/src/dnd/intl/bg-BG.json +29 -0
  637. package/src/dnd/intl/cs-CZ.json +29 -0
  638. package/src/dnd/intl/da-DK.json +29 -0
  639. package/src/dnd/intl/de-DE.json +29 -0
  640. package/src/dnd/intl/el-GR.json +29 -0
  641. package/src/dnd/intl/en-US.json +29 -0
  642. package/src/dnd/intl/es-ES.json +29 -0
  643. package/src/dnd/intl/et-EE.json +29 -0
  644. package/src/dnd/intl/fi-FI.json +29 -0
  645. package/src/dnd/intl/fr-FR.json +29 -0
  646. package/src/dnd/intl/he-IL.json +29 -0
  647. package/src/dnd/intl/hr-HR.json +29 -0
  648. package/src/dnd/intl/hu-HU.json +29 -0
  649. package/src/dnd/intl/index.ts +139 -0
  650. package/src/dnd/intl/it-IT.json +29 -0
  651. package/src/dnd/intl/ja-JP.json +29 -0
  652. package/src/dnd/intl/ko-KR.json +29 -0
  653. package/src/dnd/intl/lt-LT.json +29 -0
  654. package/src/dnd/intl/lv-LV.json +29 -0
  655. package/src/dnd/intl/nb-NO.json +29 -0
  656. package/src/dnd/intl/nl-NL.json +29 -0
  657. package/src/dnd/intl/pl-PL.json +29 -0
  658. package/src/dnd/intl/pt-BR.json +29 -0
  659. package/src/dnd/intl/pt-PT.json +29 -0
  660. package/src/dnd/intl/ro-RO.json +29 -0
  661. package/src/dnd/intl/ru-RU.json +29 -0
  662. package/src/dnd/intl/sk-SK.json +29 -0
  663. package/src/dnd/intl/sl-SI.json +29 -0
  664. package/src/dnd/intl/sr-SP.json +29 -0
  665. package/src/dnd/intl/sv-SE.json +29 -0
  666. package/src/dnd/intl/tr-TR.json +29 -0
  667. package/src/dnd/intl/uk-UA.json +29 -0
  668. package/src/dnd/intl/zh-CN.json +29 -0
  669. package/src/dnd/intl/zh-TW.json +29 -0
  670. package/src/dnd/utils.ts +63 -3
  671. package/src/focus/FocusScope.tsx +266 -24
  672. package/src/focus/index.ts +8 -0
  673. package/src/focus/virtualFocus.ts +55 -0
  674. package/src/form/createFormValidation.ts +8 -1
  675. package/src/gridlist/createGridList.ts +187 -48
  676. package/src/gridlist/createGridListItem.ts +87 -155
  677. package/src/gridlist/createGridListSection.ts +54 -0
  678. package/src/gridlist/index.ts +3 -0
  679. package/src/gridlist/types.ts +47 -0
  680. package/src/index.ts +51 -3
  681. package/src/interactions/FocusableProvider.tsx +11 -6
  682. package/src/interactions/PressEvent.ts +14 -0
  683. package/src/interactions/createFocus.ts +26 -21
  684. package/src/interactions/createFocusWithin.ts +23 -24
  685. package/src/interactions/createInteractionModality.ts +26 -15
  686. package/src/interactions/createKeyboard.ts +10 -0
  687. package/src/interactions/createPress.ts +29 -6
  688. package/src/label/createLabels.ts +7 -4
  689. package/src/listbox/createListBox.ts +203 -10
  690. package/src/listbox/createOption.ts +84 -74
  691. package/src/menu/createMenu.ts +93 -16
  692. package/src/menu/createMenuItem.ts +253 -41
  693. package/src/numberfield/createNumberField.ts +82 -14
  694. package/src/popover/calculatePosition.ts +19 -7
  695. package/src/popover/createOverlayPosition.ts +9 -0
  696. package/src/radio/createRadio.ts +19 -2
  697. package/src/select/createSelect.ts +41 -4
  698. package/src/selection/DOMLayoutDelegate.ts +102 -0
  699. package/src/selection/ListKeyboardDelegate.ts +398 -0
  700. package/src/selection/constants.ts +16 -0
  701. package/src/selection/createCollectionRowInteraction.ts +209 -0
  702. package/src/selection/createScrollIntoViewOnFocus.ts +65 -0
  703. package/src/selection/createSelectableCollection.ts +645 -0
  704. package/src/selection/createSelectableItem.ts +512 -0
  705. package/src/selection/createSelectableList.ts +93 -0
  706. package/src/selection/createTypeSelect.ts +112 -51
  707. package/src/selection/index.ts +31 -0
  708. package/src/selection/selectItem.ts +80 -0
  709. package/src/selection/utils.ts +82 -0
  710. package/src/slider/createSlider.ts +48 -1
  711. package/src/spinbutton/createSpinButton.ts +163 -0
  712. package/src/spinbutton/index.ts +10 -0
  713. package/src/spinbutton/intl.ts +115 -0
  714. package/src/ssr/index.tsx +31 -0
  715. package/src/switch/createSwitch.ts +10 -0
  716. package/src/table/createTable.ts +82 -27
  717. package/src/table/createTableColumnHeader.ts +10 -0
  718. package/src/table/createTableRow.ts +208 -203
  719. package/src/table/createTableSelectAllCheckbox.ts +3 -4
  720. package/src/table/createTableSelectionCheckbox.ts +24 -1
  721. package/src/table/types.ts +37 -1
  722. package/src/table/utils.ts +41 -0
  723. package/src/tabs/createTabs.ts +95 -24
  724. package/src/tag/createTag.ts +30 -36
  725. package/src/tag/createTagGroup.ts +92 -0
  726. package/src/toast/createToast.ts +1 -0
  727. package/src/toggle/createToggle.ts +20 -0
  728. package/src/toolbar/createToolbar.ts +43 -94
  729. package/src/tree/createTree.ts +165 -52
  730. package/src/tree/createTreeItem.ts +105 -120
  731. package/src/tree/createTreeSelectionCheckbox.ts +14 -1
  732. package/src/tree/types.ts +10 -0
  733. package/src/utils/animation.ts +243 -0
  734. package/src/utils/dom.ts +216 -25
  735. package/src/utils/index.ts +10 -0
  736. package/src/utils/keyboard.ts +25 -0
  737. package/src/utils/mergeProps.ts +8 -1
  738. package/src/utils/scrollIntoView.ts +181 -0
  739. package/dist/datepicker/createTimeSegment.d.ts +0 -29
  740. package/dist/datepicker/createTimeSegment.d.ts.map +0 -1
  741. package/dist/index.js.map +0 -1
  742. package/dist/index.jsx.map +0 -1
  743. package/src/datepicker/createTimeSegment.ts +0 -352
@@ -0,0 +1,259 @@
1
+ import { i as mergeProps$1 } from "./env.jsx";
2
+ import { t as filterDOMProps } from "./filterDOMProps.jsx";
3
+ import { t as access } from "./reactivity.jsx";
4
+ import { createId } from "../ssr/index.jsx";
5
+ import { t as createLabel } from "./createLabel.jsx";
6
+ import { createMemo } from "solid-js";
7
+ //#region src/numberfield/createNumberField.ts
8
+ /**
9
+ * Provides the behavior and accessibility implementation for a number field.
10
+ * Based on @react-aria/numberfield useNumberField.
11
+ */
12
+ /**
13
+ * Provides the behavior and accessibility implementation for a number field.
14
+ */
15
+ function createNumberField(props, state, inputRef) {
16
+ const getProps = () => access(props);
17
+ const id = createId(getProps().id);
18
+ const inputId = `${id}-input`;
19
+ const incrementId = `${id}-increment`;
20
+ const decrementId = `${id}-decrement`;
21
+ const descriptionId = `${id}-description`;
22
+ const errorMessageId = `${id}-error`;
23
+ const { labelProps, fieldProps } = createLabel({
24
+ get id() {
25
+ return inputId;
26
+ },
27
+ get label() {
28
+ return getProps().label;
29
+ },
30
+ get "aria-label"() {
31
+ return getProps()["aria-label"];
32
+ },
33
+ get "aria-labelledby"() {
34
+ return getProps()["aria-labelledby"];
35
+ },
36
+ labelElementType: "label"
37
+ });
38
+ const fieldLabel = () => getProps()["aria-label"] ?? "";
39
+ const buttonLabelledBy = () => {
40
+ if (fieldLabel()) return void 0;
41
+ return getProps().label != null ? labelProps.id : getProps()["aria-labelledby"];
42
+ };
43
+ const domProps = createMemo(() => filterDOMProps(getProps(), { labelable: true }));
44
+ const onInputChange = (e) => {
45
+ const value = e.currentTarget.value;
46
+ if (state.validate(value)) state.setInputValue(value);
47
+ };
48
+ const onInputBlur = (e) => {
49
+ state.commit();
50
+ const p = getProps();
51
+ p.onBlur?.(e);
52
+ p.onFocusChange?.(false);
53
+ };
54
+ const onInputFocus = (e) => {
55
+ const p = getProps();
56
+ p.onFocus?.(e);
57
+ p.onFocusChange?.(true);
58
+ };
59
+ const onKeyDown = (e) => {
60
+ const p = getProps();
61
+ if (p.isDisabled || p.isReadOnly) {
62
+ p.onKeyDown?.(e);
63
+ return;
64
+ }
65
+ switch (e.key) {
66
+ case "ArrowUp":
67
+ e.preventDefault();
68
+ state.increment();
69
+ break;
70
+ case "ArrowDown":
71
+ e.preventDefault();
72
+ state.decrement();
73
+ break;
74
+ case "PageUp":
75
+ e.preventDefault();
76
+ state.incrementToMax();
77
+ break;
78
+ case "PageDown":
79
+ e.preventDefault();
80
+ state.decrementToMin();
81
+ break;
82
+ case "Home":
83
+ e.preventDefault();
84
+ state.decrementToMin();
85
+ break;
86
+ case "End":
87
+ e.preventDefault();
88
+ state.incrementToMax();
89
+ break;
90
+ case "Enter":
91
+ state.commit();
92
+ break;
93
+ }
94
+ p.onKeyDown?.(e);
95
+ };
96
+ const onKeyUp = (e) => {
97
+ getProps().onKeyUp?.(e);
98
+ };
99
+ const onButtonPressStart = (e) => {
100
+ const input = inputRef?.();
101
+ if (input && input.ownerDocument.activeElement === input) return;
102
+ if (e.pointerType === "mouse") input?.focus();
103
+ else if (e.target instanceof HTMLElement) e.target.focus();
104
+ };
105
+ let incrementTouchPressUp = false;
106
+ let decrementTouchPressUp = false;
107
+ const onIncrementPressStart = (e) => {
108
+ if (e.pointerType !== "touch") state.increment();
109
+ else incrementTouchPressUp = false;
110
+ onButtonPressStart(e);
111
+ };
112
+ const onIncrementPressUp = (e) => {
113
+ if (e.pointerType === "touch") incrementTouchPressUp = true;
114
+ };
115
+ const onIncrementPressEnd = (e) => {
116
+ if (e.pointerType === "touch" && incrementTouchPressUp) state.increment();
117
+ incrementTouchPressUp = false;
118
+ };
119
+ const onIncrementClick = (e) => {
120
+ if (!state.canIncrement()) {
121
+ e.preventDefault();
122
+ return;
123
+ }
124
+ state.increment();
125
+ inputRef?.()?.focus();
126
+ };
127
+ const onDecrementPressStart = (e) => {
128
+ if (e.pointerType !== "touch") state.decrement();
129
+ else decrementTouchPressUp = false;
130
+ onButtonPressStart(e);
131
+ };
132
+ const onDecrementPressUp = (e) => {
133
+ if (e.pointerType === "touch") decrementTouchPressUp = true;
134
+ };
135
+ const onDecrementPressEnd = (e) => {
136
+ if (e.pointerType === "touch" && decrementTouchPressUp) state.decrement();
137
+ decrementTouchPressUp = false;
138
+ };
139
+ const onDecrementClick = (e) => {
140
+ if (!state.canDecrement()) {
141
+ e.preventDefault();
142
+ return;
143
+ }
144
+ state.decrement();
145
+ inputRef?.()?.focus();
146
+ };
147
+ const getAriaDescribedBy = () => {
148
+ const p = getProps();
149
+ const parts = [];
150
+ if (p["aria-describedby"]) parts.push(p["aria-describedby"]);
151
+ if (p.description) parts.push(descriptionId);
152
+ if (p.isInvalid && p.errorMessage) parts.push(errorMessageId);
153
+ return parts.length > 0 ? parts.join(" ") : void 0;
154
+ };
155
+ return {
156
+ get labelProps() {
157
+ return labelProps;
158
+ },
159
+ get groupProps() {
160
+ return {
161
+ role: "group",
162
+ "aria-disabled": getProps().isDisabled || void 0,
163
+ "aria-invalid": getProps().isInvalid || void 0
164
+ };
165
+ },
166
+ get inputProps() {
167
+ const p = getProps();
168
+ const isDisabled = p.isDisabled ?? state.isDisabled();
169
+ const isReadOnly = p.isReadOnly ?? state.isReadOnly();
170
+ return mergeProps$1(domProps(), fieldProps, {
171
+ id: inputId,
172
+ type: "text",
173
+ inputMode: "decimal",
174
+ autoComplete: "off",
175
+ autoCorrect: "off",
176
+ spellcheck: false,
177
+ tabIndex: isDisabled ? void 0 : 0,
178
+ "aria-roledescription": "Number field",
179
+ "aria-invalid": p.isInvalid || void 0,
180
+ "aria-required": p.isRequired || void 0,
181
+ "aria-describedby": getAriaDescribedBy(),
182
+ disabled: isDisabled || void 0,
183
+ readOnly: isReadOnly || void 0,
184
+ required: p.isRequired || void 0,
185
+ value: state.inputValue(),
186
+ onInput: onInputChange,
187
+ onChange: onInputChange,
188
+ onFocus: onInputFocus,
189
+ onBlur: onInputBlur,
190
+ onKeyDown,
191
+ onKeyUp,
192
+ onPaste: p.onPaste,
193
+ onCopy: p.onCopy,
194
+ onCut: p.onCut,
195
+ name: p.name,
196
+ form: p.form,
197
+ autoFocus: p.autoFocus
198
+ });
199
+ },
200
+ get incrementButtonProps() {
201
+ const labelledBy = buttonLabelledBy();
202
+ return {
203
+ id: incrementId,
204
+ type: "button",
205
+ "aria-label": `Increase ${fieldLabel()}`.trim(),
206
+ "aria-labelledby": labelledBy ? `${incrementId} ${labelledBy}` : void 0,
207
+ "aria-controls": inputId,
208
+ excludeFromTabOrder: true,
209
+ preventFocusOnPress: true,
210
+ allowFocusWhenDisabled: true,
211
+ get disabled() {
212
+ return !state.canIncrement();
213
+ },
214
+ tabIndex: -1,
215
+ get isDisabled() {
216
+ return !state.canIncrement();
217
+ },
218
+ onClick: onIncrementClick,
219
+ onPressStart: onIncrementPressStart,
220
+ onPressUp: onIncrementPressUp,
221
+ onPressEnd: onIncrementPressEnd
222
+ };
223
+ },
224
+ get decrementButtonProps() {
225
+ const labelledBy = buttonLabelledBy();
226
+ return {
227
+ id: decrementId,
228
+ type: "button",
229
+ "aria-label": `Decrease ${fieldLabel()}`.trim(),
230
+ "aria-labelledby": labelledBy ? `${decrementId} ${labelledBy}` : void 0,
231
+ "aria-controls": inputId,
232
+ excludeFromTabOrder: true,
233
+ preventFocusOnPress: true,
234
+ allowFocusWhenDisabled: true,
235
+ get disabled() {
236
+ return !state.canDecrement();
237
+ },
238
+ tabIndex: -1,
239
+ get isDisabled() {
240
+ return !state.canDecrement();
241
+ },
242
+ onClick: onDecrementClick,
243
+ onPressStart: onDecrementPressStart,
244
+ onPressUp: onDecrementPressUp,
245
+ onPressEnd: onDecrementPressEnd
246
+ };
247
+ },
248
+ get descriptionProps() {
249
+ return { id: descriptionId };
250
+ },
251
+ get errorMessageProps() {
252
+ return { id: errorMessageId };
253
+ }
254
+ };
255
+ }
256
+ //#endregion
257
+ export { createNumberField as t };
258
+
259
+ //# sourceMappingURL=numberfield.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numberfield.jsx","names":["mergeProps"],"sources":["../../src/numberfield/createNumberField.ts"],"sourcesContent":["/**\n * Provides the behavior and accessibility implementation for a number field.\n * Based on @react-aria/numberfield useNumberField.\n */\n\nimport { type JSX, createMemo } from \"solid-js\";\nimport { createLabel } from \"../label/createLabel\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { createId } from \"../ssr\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport type { NumberFieldState } from \"@proyecto-viviana/solid-stately\";\nimport type { AriaButtonProps } from \"../button/types\";\nimport type { PressEvent } from \"../interactions\";\n\nexport interface AriaNumberFieldProps {\n /** A label for the number field. */\n label?: JSX.Element;\n /** An accessible label for the number field. */\n \"aria-label\"?: string;\n /** The element ID that labels the number field. */\n \"aria-labelledby\"?: string;\n /** The element ID that describes the number field. */\n \"aria-describedby\"?: string;\n /** Whether the number field is disabled. */\n isDisabled?: boolean;\n /** Whether the number field is read-only. */\n isReadOnly?: boolean;\n /** Whether the number field is required. */\n isRequired?: boolean;\n /** Whether the number field is invalid. */\n isInvalid?: boolean;\n /** A description for the number field. */\n description?: JSX.Element;\n /** An error message for the number field. */\n errorMessage?: JSX.Element;\n /** The ID of the number field. */\n id?: string;\n /** Whether to auto-focus the input. */\n autoFocus?: boolean;\n /** The name for the form input. */\n name?: string;\n /** The form element this input belongs to. */\n form?: string;\n /** Handler for focus events. */\n onFocus?: JSX.EventHandler<HTMLInputElement, FocusEvent>;\n /** Handler for blur events. */\n onBlur?: JSX.EventHandler<HTMLInputElement, FocusEvent>;\n /** Handler called when focus state changes. */\n onFocusChange?: (isFocused: boolean) => void;\n /** Handler for key down events. */\n onKeyDown?: JSX.EventHandler<HTMLInputElement, KeyboardEvent>;\n /** Handler for key up events. */\n onKeyUp?: JSX.EventHandler<HTMLInputElement, KeyboardEvent>;\n /** Handler for paste events. */\n onPaste?: JSX.EventHandler<HTMLInputElement, ClipboardEvent>;\n /** Handler for copy events. */\n onCopy?: JSX.EventHandler<HTMLInputElement, ClipboardEvent>;\n /** Handler for cut events. */\n onCut?: JSX.EventHandler<HTMLInputElement, ClipboardEvent>;\n}\n\nexport interface NumberFieldAria {\n /** Props for the label element. */\n labelProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the input element group. */\n groupProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the input element. */\n inputProps: JSX.InputHTMLAttributes<HTMLInputElement>;\n /** Props for the increment button. */\n incrementButtonProps: AriaButtonProps;\n /** Props for the decrement button. */\n decrementButtonProps: AriaButtonProps;\n /** Props for the description element. */\n descriptionProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the error message element. */\n errorMessageProps: JSX.HTMLAttributes<HTMLElement>;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a number field.\n */\nexport function createNumberField(\n props: MaybeAccessor<AriaNumberFieldProps>,\n state: NumberFieldState,\n inputRef?: () => HTMLInputElement | null,\n): NumberFieldAria {\n const getProps = () => access(props);\n const id = createId(getProps().id);\n\n // Generate IDs for associated elements\n const inputId = `${id}-input`;\n const incrementId = `${id}-increment`;\n const decrementId = `${id}-decrement`;\n const descriptionId = `${id}-description`;\n const errorMessageId = `${id}-error`;\n\n // Label handling\n const { labelProps, fieldProps } = createLabel({\n get id() {\n return inputId;\n },\n get label() {\n return getProps().label;\n },\n get \"aria-label\"() {\n return getProps()[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return getProps()[\"aria-labelledby\"];\n },\n // Upstream react-aria `useNumberField` → `useField` → `useLabel` with the DEFAULT\n // `labelElementType: 'label'`: the S2 NumberField label is a native `<label htmlFor>`\n // (verified against the shipped React DOM: `<label id for=inputId>`). This hardcoded\n // `\"span\"` was a self-inflicted divergence — it dropped the `for` association and made\n // `NumberFieldLabel` render a `<span>`. Reverted to `\"label\"` so `createLabel` emits\n // `for: inputId` (the input still also carries `aria-labelledby`, exactly as upstream).\n labelElementType: \"label\",\n });\n\n // Increment/decrement button labels — a 1:1 port of upstream `useNumberField`'s\n // four-case logic. Upstream RAC's `NumberField` component feeds `useNumberField` a\n // BOOLEAN slot for `label` (from `useSlot`), never the label string, so a visible\n // label is NEVER concatenated into the button `aria-label`. Instead: with a visible\n // label the button reads `aria-label: \"Increase\"` PLUS `aria-labelledby: \"<selfId>\n // <labelId>\"`; only an explicit `aria-label` (and no visible label) changes the text\n // (`\"Increase <aria-label>\"`). The prior `Increase ${getLabelText()}` was a\n // self-inflicted divergence that produced \"Increase Quantity\" where S2 ships\n // \"Increase\". `fieldLabel` mirrors upstream: `props['aria-label'] || ''` — the visible\n // label string is intentionally excluded (it arrives as a boolean slot in RAC).\n const fieldLabel = (): string => getProps()[\"aria-label\"] ?? \"\";\n const buttonLabelledBy = (): string | undefined => {\n if (fieldLabel()) return undefined;\n return getProps().label != null\n ? (labelProps.id as string | undefined)\n : getProps()[\"aria-labelledby\"];\n };\n\n // Filter DOM props\n const domProps = createMemo(() =>\n filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true }),\n );\n\n // Handle input change\n const onInputChange: JSX.EventHandler<HTMLInputElement, Event> = (e) => {\n const value = e.currentTarget.value;\n if (state.validate(value)) {\n state.setInputValue(value);\n }\n };\n\n // Handle input blur - commit value\n const onInputBlur: JSX.EventHandler<HTMLInputElement, FocusEvent> = (e) => {\n state.commit();\n const p = getProps();\n p.onBlur?.(e);\n p.onFocusChange?.(false);\n };\n\n const onInputFocus: JSX.EventHandler<HTMLInputElement, FocusEvent> = (e) => {\n const p = getProps();\n p.onFocus?.(e);\n p.onFocusChange?.(true);\n };\n\n // Handle keyboard events\n const onKeyDown: JSX.EventHandler<HTMLInputElement, KeyboardEvent> = (e) => {\n const p = getProps();\n if (p.isDisabled || p.isReadOnly) {\n p.onKeyDown?.(e);\n return;\n }\n\n switch (e.key) {\n case \"ArrowUp\":\n e.preventDefault();\n state.increment();\n break;\n case \"ArrowDown\":\n e.preventDefault();\n state.decrement();\n break;\n case \"PageUp\":\n e.preventDefault();\n state.incrementToMax();\n break;\n case \"PageDown\":\n e.preventDefault();\n state.decrementToMin();\n break;\n case \"Home\":\n e.preventDefault();\n state.decrementToMin();\n break;\n case \"End\":\n e.preventDefault();\n state.incrementToMax();\n break;\n case \"Enter\":\n state.commit();\n break;\n }\n\n p.onKeyDown?.(e);\n };\n\n const onKeyUp: JSX.EventHandler<HTMLInputElement, KeyboardEvent> = (e) => {\n getProps().onKeyUp?.(e);\n };\n\n const onButtonPressStart = (e: PressEvent) => {\n const input = inputRef?.();\n\n // Keep existing input focus in place. This avoids hiding software keyboards\n // and prevents a blur/refocus flicker when mouse pressing the steppers.\n if (input && input.ownerDocument.activeElement === input) {\n return;\n }\n\n if (e.pointerType === \"mouse\") {\n input?.focus();\n } else if (e.target instanceof HTMLElement) {\n e.target.focus();\n }\n };\n\n let incrementTouchPressUp = false;\n let decrementTouchPressUp = false;\n\n const onIncrementPressStart = (e: PressEvent) => {\n if (e.pointerType !== \"touch\") {\n state.increment();\n } else {\n incrementTouchPressUp = false;\n }\n\n onButtonPressStart(e);\n };\n\n const onIncrementPressUp = (e: PressEvent) => {\n if (e.pointerType === \"touch\") {\n incrementTouchPressUp = true;\n }\n };\n\n const onIncrementPressEnd = (e: PressEvent) => {\n if (e.pointerType === \"touch\" && incrementTouchPressUp) {\n state.increment();\n }\n\n incrementTouchPressUp = false;\n };\n const onIncrementClick = (e: MouseEvent) => {\n if (!state.canIncrement()) {\n e.preventDefault();\n return;\n }\n\n state.increment();\n inputRef?.()?.focus();\n };\n\n const onDecrementPressStart = (e: PressEvent) => {\n if (e.pointerType !== \"touch\") {\n state.decrement();\n } else {\n decrementTouchPressUp = false;\n }\n\n onButtonPressStart(e);\n };\n\n const onDecrementPressUp = (e: PressEvent) => {\n if (e.pointerType === \"touch\") {\n decrementTouchPressUp = true;\n }\n };\n\n const onDecrementPressEnd = (e: PressEvent) => {\n if (e.pointerType === \"touch\" && decrementTouchPressUp) {\n state.decrement();\n }\n\n decrementTouchPressUp = false;\n };\n const onDecrementClick = (e: MouseEvent) => {\n if (!state.canDecrement()) {\n e.preventDefault();\n return;\n }\n\n state.decrement();\n inputRef?.()?.focus();\n };\n\n // Build aria-describedby\n const getAriaDescribedBy = () => {\n const p = getProps();\n const parts: string[] = [];\n if (p[\"aria-describedby\"]) parts.push(p[\"aria-describedby\"]);\n if (p.description) parts.push(descriptionId);\n if (p.isInvalid && p.errorMessage) parts.push(errorMessageId);\n return parts.length > 0 ? parts.join(\" \") : undefined;\n };\n\n return {\n get labelProps() {\n return labelProps as JSX.HTMLAttributes<HTMLElement>;\n },\n get groupProps() {\n return {\n role: \"group\",\n \"aria-disabled\": getProps().isDisabled || undefined,\n \"aria-invalid\": getProps().isInvalid || undefined,\n } as JSX.HTMLAttributes<HTMLElement>;\n },\n get inputProps() {\n const p = getProps();\n const isDisabled = p.isDisabled ?? state.isDisabled();\n const isReadOnly = p.isReadOnly ?? state.isReadOnly();\n\n return mergeProps(\n domProps(),\n fieldProps as Record<string, unknown>,\n {\n id: inputId,\n type: \"text\",\n inputMode: \"decimal\" as const,\n autoComplete: \"off\",\n autoCorrect: \"off\",\n spellcheck: false,\n // Upstream routes the input through useFormattedTextField → useTextField →\n // useFocusable, which \"always set[s] a tabIndex so that Safari allows\n // focusing native buttons and inputs\": `excludeFromTabOrder ? -1 : 0`, then\n // `undefined` when disabled. The input is never excluded, so the rendered\n // DOM carries `tabindex=\"0\"` (absent only when disabled). We hand-roll\n // inputProps (see the spinbutton-override note below) so we must replay that\n // one focusable prop here to stay byte-identical to React's tab order.\n tabIndex: isDisabled ? undefined : 0,\n // Upstream useNumberField wraps useSpinButton but deliberately\n // overrides its output: role=spinbutton can't be focused with\n // VoiceOver, so the input is a plain textbox (inside the role=group\n // wrapper above) and every aria-value* is dropped in favour of\n // aria-roledescription. The formatted value is still announced via the\n // input's own value. Mirror that contract instead of leaking the raw\n // spinbutton semantics.\n //\n // The string MUST match upstream's `stringFormatter.format('numberField')`,\n // whose en-US value is `Number field` (capitalised) — not a lowercase\n // hand-roll. Full locale routing via `createStringFormatter` (as\n // `createDateField` does) is tracked as `intl-roledescription-hardcodes`\n // (also covers the ColorArea/ColorSwatch English hardcodes); this keeps the\n // en-US roledescription byte-identical to React Spectrum in the meantime.\n \"aria-roledescription\": \"Number field\",\n \"aria-invalid\": p.isInvalid || undefined,\n \"aria-required\": p.isRequired || undefined,\n \"aria-describedby\": getAriaDescribedBy(),\n disabled: isDisabled || undefined,\n readOnly: isReadOnly || undefined,\n required: p.isRequired || undefined,\n value: state.inputValue(),\n onInput: onInputChange,\n onChange: onInputChange,\n onFocus: onInputFocus,\n onBlur: onInputBlur,\n onKeyDown,\n onKeyUp,\n onPaste: p.onPaste,\n onCopy: p.onCopy,\n onCut: p.onCut,\n name: p.name,\n form: p.form,\n autoFocus: p.autoFocus,\n } as Record<string, unknown>,\n ) as JSX.InputHTMLAttributes<HTMLInputElement>;\n },\n get incrementButtonProps() {\n const labelledBy = buttonLabelledBy();\n return {\n id: incrementId,\n type: \"button\",\n \"aria-label\": `Increase ${fieldLabel()}`.trim(),\n \"aria-labelledby\": labelledBy ? `${incrementId} ${labelledBy}` : undefined,\n \"aria-controls\": inputId,\n excludeFromTabOrder: true,\n preventFocusOnPress: true,\n allowFocusWhenDisabled: true,\n get disabled() {\n return !state.canIncrement();\n },\n tabIndex: -1,\n get isDisabled() {\n return !state.canIncrement();\n },\n onClick: onIncrementClick,\n onPressStart: onIncrementPressStart,\n onPressUp: onIncrementPressUp,\n onPressEnd: onIncrementPressEnd,\n } as AriaButtonProps;\n },\n get decrementButtonProps() {\n const labelledBy = buttonLabelledBy();\n return {\n id: decrementId,\n type: \"button\",\n \"aria-label\": `Decrease ${fieldLabel()}`.trim(),\n \"aria-labelledby\": labelledBy ? `${decrementId} ${labelledBy}` : undefined,\n \"aria-controls\": inputId,\n excludeFromTabOrder: true,\n preventFocusOnPress: true,\n allowFocusWhenDisabled: true,\n get disabled() {\n return !state.canDecrement();\n },\n tabIndex: -1,\n get isDisabled() {\n return !state.canDecrement();\n },\n onClick: onDecrementClick,\n onPressStart: onDecrementPressStart,\n onPressUp: onDecrementPressUp,\n onPressEnd: onDecrementPressEnd,\n } as AriaButtonProps;\n },\n get descriptionProps() {\n return {\n id: descriptionId,\n } as JSX.HTMLAttributes<HTMLElement>;\n },\n get errorMessageProps() {\n return {\n id: errorMessageId,\n } as JSX.HTMLAttributes<HTMLElement>;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;AAkFA,SAAgB,kBACd,OACA,OACA,UACiB;CACjB,MAAM,iBAAiB,OAAO,KAAK;CACnC,MAAM,KAAK,SAAS,SAAS,CAAC,CAAC,EAAE;CAGjC,MAAM,UAAU,GAAG,GAAG;CACtB,MAAM,cAAc,GAAG,GAAG;CAC1B,MAAM,cAAc,GAAG,GAAG;CAC1B,MAAM,gBAAgB,GAAG,GAAG;CAC5B,MAAM,iBAAiB,GAAG,GAAG;CAG7B,MAAM,EAAE,YAAY,eAAe,YAAY;EAC7C,IAAI,KAAK;GACP,OAAO;EACT;EACA,IAAI,QAAQ;GACV,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,IAAI,eAAe;GACjB,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,IAAI,oBAAoB;GACtB,OAAO,SAAS,CAAC,CAAC;EACpB;EAOA,kBAAkB;CACpB,CAAC;CAYD,MAAM,mBAA2B,SAAS,CAAC,CAAC,iBAAiB;CAC7D,MAAM,yBAA6C;EACjD,IAAI,WAAW,GAAG,OAAO,KAAA;EACzB,OAAO,SAAS,CAAC,CAAC,SAAS,OACtB,WAAW,KACZ,SAAS,CAAC,CAAC;CACjB;CAGA,MAAM,WAAW,iBACf,eAAe,SAAS,GAAyC,EAAE,WAAW,KAAK,CAAC,CACtF;CAGA,MAAM,iBAA4D,MAAM;EACtE,MAAM,QAAQ,EAAE,cAAc;EAC9B,IAAI,MAAM,SAAS,KAAK,GACtB,MAAM,cAAc,KAAK;CAE7B;CAGA,MAAM,eAA+D,MAAM;EACzE,MAAM,OAAO;EACb,MAAM,IAAI,SAAS;EACnB,EAAE,SAAS,CAAC;EACZ,EAAE,gBAAgB,KAAK;CACzB;CAEA,MAAM,gBAAgE,MAAM;EAC1E,MAAM,IAAI,SAAS;EACnB,EAAE,UAAU,CAAC;EACb,EAAE,gBAAgB,IAAI;CACxB;CAGA,MAAM,aAAgE,MAAM;EAC1E,MAAM,IAAI,SAAS;EACnB,IAAI,EAAE,cAAc,EAAE,YAAY;GAChC,EAAE,YAAY,CAAC;GACf;EACF;EAEA,QAAQ,EAAE,KAAV;GACE,KAAK;IACH,EAAE,eAAe;IACjB,MAAM,UAAU;IAChB;GACF,KAAK;IACH,EAAE,eAAe;IACjB,MAAM,UAAU;IAChB;GACF,KAAK;IACH,EAAE,eAAe;IACjB,MAAM,eAAe;IACrB;GACF,KAAK;IACH,EAAE,eAAe;IACjB,MAAM,eAAe;IACrB;GACF,KAAK;IACH,EAAE,eAAe;IACjB,MAAM,eAAe;IACrB;GACF,KAAK;IACH,EAAE,eAAe;IACjB,MAAM,eAAe;IACrB;GACF,KAAK;IACH,MAAM,OAAO;IACb;EACJ;EAEA,EAAE,YAAY,CAAC;CACjB;CAEA,MAAM,WAA8D,MAAM;EACxE,SAAS,CAAC,CAAC,UAAU,CAAC;CACxB;CAEA,MAAM,sBAAsB,MAAkB;EAC5C,MAAM,QAAQ,WAAW;EAIzB,IAAI,SAAS,MAAM,cAAc,kBAAkB,OACjD;EAGF,IAAI,EAAE,gBAAgB,SACpB,OAAO,MAAM;OACR,IAAI,EAAE,kBAAkB,aAC7B,EAAE,OAAO,MAAM;CAEnB;CAEA,IAAI,wBAAwB;CAC5B,IAAI,wBAAwB;CAE5B,MAAM,yBAAyB,MAAkB;EAC/C,IAAI,EAAE,gBAAgB,SACpB,MAAM,UAAU;OAEhB,wBAAwB;EAG1B,mBAAmB,CAAC;CACtB;CAEA,MAAM,sBAAsB,MAAkB;EAC5C,IAAI,EAAE,gBAAgB,SACpB,wBAAwB;CAE5B;CAEA,MAAM,uBAAuB,MAAkB;EAC7C,IAAI,EAAE,gBAAgB,WAAW,uBAC/B,MAAM,UAAU;EAGlB,wBAAwB;CAC1B;CACA,MAAM,oBAAoB,MAAkB;EAC1C,IAAI,CAAC,MAAM,aAAa,GAAG;GACzB,EAAE,eAAe;GACjB;EACF;EAEA,MAAM,UAAU;EAChB,WAAW,CAAC,EAAE,MAAM;CACtB;CAEA,MAAM,yBAAyB,MAAkB;EAC/C,IAAI,EAAE,gBAAgB,SACpB,MAAM,UAAU;OAEhB,wBAAwB;EAG1B,mBAAmB,CAAC;CACtB;CAEA,MAAM,sBAAsB,MAAkB;EAC5C,IAAI,EAAE,gBAAgB,SACpB,wBAAwB;CAE5B;CAEA,MAAM,uBAAuB,MAAkB;EAC7C,IAAI,EAAE,gBAAgB,WAAW,uBAC/B,MAAM,UAAU;EAGlB,wBAAwB;CAC1B;CACA,MAAM,oBAAoB,MAAkB;EAC1C,IAAI,CAAC,MAAM,aAAa,GAAG;GACzB,EAAE,eAAe;GACjB;EACF;EAEA,MAAM,UAAU;EAChB,WAAW,CAAC,EAAE,MAAM;CACtB;CAGA,MAAM,2BAA2B;EAC/B,MAAM,IAAI,SAAS;EACnB,MAAM,QAAkB,CAAC;EACzB,IAAI,EAAE,qBAAqB,MAAM,KAAK,EAAE,mBAAmB;EAC3D,IAAI,EAAE,aAAa,MAAM,KAAK,aAAa;EAC3C,IAAI,EAAE,aAAa,EAAE,cAAc,MAAM,KAAK,cAAc;EAC5D,OAAO,MAAM,SAAS,IAAI,MAAM,KAAK,GAAG,IAAI,KAAA;CAC9C;CAEA,OAAO;EACL,IAAI,aAAa;GACf,OAAO;EACT;EACA,IAAI,aAAa;GACf,OAAO;IACL,MAAM;IACN,iBAAiB,SAAS,CAAC,CAAC,cAAc,KAAA;IAC1C,gBAAgB,SAAS,CAAC,CAAC,aAAa,KAAA;GAC1C;EACF;EACA,IAAI,aAAa;GACf,MAAM,IAAI,SAAS;GACnB,MAAM,aAAa,EAAE,cAAc,MAAM,WAAW;GACpD,MAAM,aAAa,EAAE,cAAc,MAAM,WAAW;GAEpD,OAAOA,aACL,SAAS,GACT,YACA;IACE,IAAI;IACJ,MAAM;IACN,WAAW;IACX,cAAc;IACd,aAAa;IACb,YAAY;IAQZ,UAAU,aAAa,KAAA,IAAY;IAenC,wBAAwB;IACxB,gBAAgB,EAAE,aAAa,KAAA;IAC/B,iBAAiB,EAAE,cAAc,KAAA;IACjC,oBAAoB,mBAAmB;IACvC,UAAU,cAAc,KAAA;IACxB,UAAU,cAAc,KAAA;IACxB,UAAU,EAAE,cAAc,KAAA;IAC1B,OAAO,MAAM,WAAW;IACxB,SAAS;IACT,UAAU;IACV,SAAS;IACT,QAAQ;IACR;IACA;IACA,SAAS,EAAE;IACX,QAAQ,EAAE;IACV,OAAO,EAAE;IACT,MAAM,EAAE;IACR,MAAM,EAAE;IACR,WAAW,EAAE;GACf,CACF;EACF;EACA,IAAI,uBAAuB;GACzB,MAAM,aAAa,iBAAiB;GACpC,OAAO;IACL,IAAI;IACJ,MAAM;IACN,cAAc,YAAY,WAAW,IAAI,KAAK;IAC9C,mBAAmB,aAAa,GAAG,YAAY,GAAG,eAAe,KAAA;IACjE,iBAAiB;IACjB,qBAAqB;IACrB,qBAAqB;IACrB,wBAAwB;IACxB,IAAI,WAAW;KACb,OAAO,CAAC,MAAM,aAAa;IAC7B;IACA,UAAU;IACV,IAAI,aAAa;KACf,OAAO,CAAC,MAAM,aAAa;IAC7B;IACA,SAAS;IACT,cAAc;IACd,WAAW;IACX,YAAY;GACd;EACF;EACA,IAAI,uBAAuB;GACzB,MAAM,aAAa,iBAAiB;GACpC,OAAO;IACL,IAAI;IACJ,MAAM;IACN,cAAc,YAAY,WAAW,IAAI,KAAK;IAC9C,mBAAmB,aAAa,GAAG,YAAY,GAAG,eAAe,KAAA;IACjE,iBAAiB;IACjB,qBAAqB;IACrB,qBAAqB;IACrB,wBAAwB;IACxB,IAAI,WAAW;KACb,OAAO,CAAC,MAAM,aAAa;IAC7B;IACA,UAAU;IACV,IAAI,aAAa;KACf,OAAO,CAAC,MAAM,aAAa;IAC7B;IACA,SAAS;IACT,cAAc;IACd,WAAW;IACX,YAAY;GACd;EACF;EACA,IAAI,mBAAmB;GACrB,OAAO,EACL,IAAI,cACN;EACF;EACA,IAAI,oBAAoB;GACtB,OAAO,EACL,IAAI,eACN;EACF;CACF;AACF"}
@@ -0,0 +1,186 @@
1
+ import { t as access } from "./reactivity.js";
2
+ import { createId } from "../ssr/index.js";
3
+ import { createContext, createEffect, createSignal, onCleanup, useContext } from "solid-js";
4
+ import { Portal, createComponent, getNextElement, insert, isServer, runHydrationEvents, spread, template } from "solid-js/web";
5
+ //#region src/overlays/createOverlayTrigger.ts
6
+ /**
7
+ * Handles the behavior and accessibility for an overlay trigger.
8
+ * Based on @react-aria/overlays useOverlayTrigger.
9
+ */
10
+ const onCloseMap = /* @__PURE__ */ new WeakMap();
11
+ /**
12
+ * Handles the behavior and accessibility for an overlay trigger, e.g. a button
13
+ * that opens a popover, menu, or other overlay that is positioned relative to the trigger.
14
+ */
15
+ function createOverlayTrigger(props, state, ref) {
16
+ const propsAccessor = () => access(props);
17
+ const overlayId = createId();
18
+ createEffect(() => {
19
+ const element = ref?.();
20
+ if (element) onCloseMap.set(element, state.close);
21
+ });
22
+ const getAriaHasPopup = () => {
23
+ const type = propsAccessor().type;
24
+ if (type === "menu") return true;
25
+ else if (type === "listbox") return "listbox";
26
+ };
27
+ return {
28
+ triggerProps: {
29
+ get "aria-haspopup"() {
30
+ return getAriaHasPopup();
31
+ },
32
+ get "aria-expanded"() {
33
+ return state.isOpen();
34
+ },
35
+ get "aria-controls"() {
36
+ return state.isOpen() ? overlayId : void 0;
37
+ },
38
+ onPress: state.toggle
39
+ },
40
+ overlayProps: { id: overlayId }
41
+ };
42
+ }
43
+ //#endregion
44
+ //#region src/overlays/createModal.tsx
45
+ /**
46
+ * Modal context and hooks for managing modal accessibility.
47
+ * Based on @react-aria/overlays useModal.
48
+ */
49
+ var _tmpl$ = /*#__PURE__*/ template(`<div data-overlay-container>`);
50
+ const ModalContext = createContext(null);
51
+ const PortalContext = createContext({});
52
+ /**
53
+ * Each ModalProvider tracks how many modals are open in its subtree. On mount, the modals
54
+ * trigger `addModal` to increment the count, and trigger `removeModal` on unmount to decrement it.
55
+ * This is done recursively so that all parent providers are incremented and decremented.
56
+ * If the modal count is greater than zero, we add `aria-hidden` to this provider to hide its
57
+ * subtree from screen readers. This is done using SolidJS context in order to account for things
58
+ * like portals, which can cause the component tree and the DOM tree to differ significantly in structure.
59
+ */
60
+ const ModalProvider = (props) => {
61
+ const parent = useContext(ModalContext);
62
+ const [modalCount, setModalCount] = createSignal(0);
63
+ const context = {
64
+ parent,
65
+ modalCount,
66
+ addModal() {
67
+ setModalCount((count) => count + 1);
68
+ if (parent) parent.addModal();
69
+ },
70
+ removeModal() {
71
+ setModalCount((count) => count - 1);
72
+ if (parent) parent.removeModal();
73
+ }
74
+ };
75
+ return createComponent(ModalContext.Provider, {
76
+ value: context,
77
+ get children() {
78
+ return props.children;
79
+ }
80
+ });
81
+ };
82
+ /**
83
+ * Sets the portal container for overlays rendered by descendants.
84
+ */
85
+ const UNSAFE_PortalProvider = (props) => {
86
+ const parent = useUNSAFE_PortalContext();
87
+ return createComponent(PortalContext.Provider, {
88
+ get value() {
89
+ return { getContainer: props.getContainer === null ? void 0 : props.getContainer ?? parent.getContainer };
90
+ },
91
+ get children() {
92
+ return props.children;
93
+ }
94
+ });
95
+ };
96
+ /**
97
+ * Returns the portal container configuration inherited from the nearest provider.
98
+ */
99
+ function useUNSAFE_PortalContext() {
100
+ return useContext(PortalContext) ?? {};
101
+ }
102
+ /**
103
+ * Used to determine if the tree should be aria-hidden based on how many
104
+ * modals are open.
105
+ */
106
+ function useModalProvider() {
107
+ const context = useContext(ModalContext);
108
+ return { modalProviderProps: { get "aria-hidden"() {
109
+ return context && context.modalCount() > 0 ? true : void 0;
110
+ } } };
111
+ }
112
+ /**
113
+ * Creates a root node that will be aria-hidden if there are other modals open.
114
+ */
115
+ const OverlayContainerDOM = (props) => {
116
+ const { modalProviderProps } = useModalProvider();
117
+ return (() => {
118
+ var _el$ = getNextElement(_tmpl$);
119
+ spread(_el$, modalProviderProps, false, true);
120
+ insert(_el$, () => props.children);
121
+ runHydrationEvents();
122
+ return _el$;
123
+ })();
124
+ };
125
+ /**
126
+ * An OverlayProvider acts as a container for the top-level application.
127
+ * Any application that uses modal dialogs or other overlays should
128
+ * be wrapped in a `<OverlayProvider>`. This is used to ensure that
129
+ * the main content of the application is hidden from screen readers
130
+ * if a modal or other overlay is opened. Only the top-most modal or
131
+ * overlay should be accessible at once.
132
+ */
133
+ const OverlayProvider = (props) => {
134
+ return createComponent(ModalProvider, { get children() {
135
+ return createComponent(OverlayContainerDOM, { get children() {
136
+ return props.children;
137
+ } });
138
+ } });
139
+ };
140
+ /**
141
+ * A container for overlays like modals and popovers. Renders the overlay
142
+ * into a Portal which is placed at the end of the document body.
143
+ * Also ensures that the overlay is hidden from screen readers if a
144
+ * nested modal is opened. Only the top-most modal or overlay should
145
+ * be accessible at once.
146
+ */
147
+ const OverlayContainer = (props) => {
148
+ if (isServer) return null;
149
+ const portalContext = useUNSAFE_PortalContext();
150
+ const portalContainer = () => props.portalContainer ?? portalContext.getContainer?.() ?? document.body;
151
+ createEffect(() => {
152
+ if (portalContainer()?.closest("[data-overlay-container]")) throw new Error("An OverlayContainer must not be inside another container. Please change the portalContainer prop.");
153
+ });
154
+ return createComponent(Portal, {
155
+ get mount() {
156
+ return portalContainer();
157
+ },
158
+ get children() {
159
+ return createComponent(OverlayProvider, { get children() {
160
+ return props.children;
161
+ } });
162
+ }
163
+ });
164
+ };
165
+ /**
166
+ * Hides content outside the current `<OverlayContainer>` from screen readers
167
+ * on mount and restores it on unmount. Typically used by modal dialogs and
168
+ * other types of overlays to ensure that only the top-most modal is
169
+ * accessible at once.
170
+ */
171
+ function createModal(options) {
172
+ const context = useContext(ModalContext);
173
+ if (!context) throw new Error("Modal is not contained within a provider");
174
+ createEffect(() => {
175
+ if (options?.isDisabled || !context.parent) return;
176
+ context.parent.addModal();
177
+ onCleanup(() => {
178
+ if (context.parent) context.parent.removeModal();
179
+ });
180
+ });
181
+ return { modalProps: { "data-ismodal": !options?.isDisabled } };
182
+ }
183
+ //#endregion
184
+ export { createModal as a, createOverlayTrigger as c, UNSAFE_PortalProvider as i, onCloseMap as l, OverlayContainer as n, useModalProvider as o, OverlayProvider as r, useUNSAFE_PortalContext as s, ModalProvider as t };
185
+
186
+ //# sourceMappingURL=overlays.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlays.js","names":["createContext","createSignal","useContext","createEffect","onCleanup","JSX","Accessor","ParentComponent","Portal","isServer","ModalProviderProps","children","Element","PortalProviderProps","getContainer","PortalProviderContextValue","ModalContext","parent","modalCount","addModal","removeModal","PortalContext","ModalProvider","props","setModalCount","context","count","_$createComponent","Provider","value","UNSAFE_PortalProvider","useUNSAFE_PortalContext","undefined","ModalProviderAria","modalProviderProps","useModalProvider","aria-hidden","OverlayContainerDOM","_el$","_$getNextElement","_tmpl$","_$spread","_$insert","_$runHydrationEvents","OverlayProvider","OverlayContainerProps","portalContainer","OverlayContainer","portalContext","document","body","container","closest","Error","mount","AriaModalOptions","isDisabled","ModalAria","modalProps","createModal","options"],"sources":["../../src/overlays/createOverlayTrigger.ts","../../src/overlays/createModal.tsx"],"sourcesContent":["/**\n * Handles the behavior and accessibility for an overlay trigger.\n * Based on @react-aria/overlays useOverlayTrigger.\n */\n\nimport { createEffect } from \"solid-js\";\nimport type { OverlayTriggerState } from \"@proyecto-viviana/solid-stately\";\nimport { createId } from \"../ssr\";\nimport { access, type MaybeAccessor } from \"../utils\";\n\nexport interface OverlayTriggerProps {\n /** Type of overlay that is opened by the trigger. */\n type: \"dialog\" | \"menu\" | \"listbox\" | \"tree\" | \"grid\";\n}\n\nexport interface OverlayTriggerAria {\n /** Props for the trigger element. */\n triggerProps: {\n \"aria-haspopup\"?: boolean | \"listbox\";\n \"aria-expanded\": boolean;\n \"aria-controls\"?: string;\n onPress: () => void;\n };\n /** Props for the overlay container element. */\n overlayProps: {\n id: string;\n };\n}\n\n// Map for storing close functions, used by useCloseOnScroll\nexport const onCloseMap = new WeakMap<Element, () => void>();\n\n/**\n * Handles the behavior and accessibility for an overlay trigger, e.g. a button\n * that opens a popover, menu, or other overlay that is positioned relative to the trigger.\n */\nexport function createOverlayTrigger(\n props: MaybeAccessor<OverlayTriggerProps>,\n state: OverlayTriggerState,\n ref?: () => Element | null,\n): OverlayTriggerAria {\n const propsAccessor = () => access(props);\n const overlayId = createId();\n\n // Backward compatibility. Share state close function with useOverlayPosition so it can close on scroll\n // without forcing users to pass onClose.\n createEffect(() => {\n const element = ref?.();\n if (element) {\n onCloseMap.set(element, state.close);\n }\n });\n\n // Aria 1.1 supports multiple values for aria-haspopup other than just menus.\n // https://www.w3.org/TR/wai-aria-1.1/#aria-haspopup\n // However, we only add it for menus for now because screen readers often\n // announce it as a menu even for other values.\n const getAriaHasPopup = (): boolean | \"listbox\" | undefined => {\n const type = propsAccessor().type;\n if (type === \"menu\") {\n return true;\n } else if (type === \"listbox\") {\n return \"listbox\";\n }\n return undefined;\n };\n\n return {\n triggerProps: {\n get \"aria-haspopup\"() {\n return getAriaHasPopup();\n },\n get \"aria-expanded\"() {\n return state.isOpen();\n },\n get \"aria-controls\"() {\n return state.isOpen() ? overlayId : undefined;\n },\n onPress: state.toggle,\n },\n overlayProps: {\n id: overlayId,\n },\n };\n}\n","/**\n * Modal context and hooks for managing modal accessibility.\n * Based on @react-aria/overlays useModal.\n */\n\nimport {\n createContext,\n createSignal,\n useContext,\n createEffect,\n onCleanup,\n type JSX,\n type Accessor,\n type ParentComponent,\n} from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport { isServer } from \"solid-js/web\";\n\nexport interface ModalProviderProps {\n children: JSX.Element;\n}\n\nexport interface PortalProviderProps {\n /** Returns the element where overlays should portal. Pass null to clear inherited context. */\n getContainer?: (() => Element | null) | null;\n children: JSX.Element;\n}\n\nexport interface PortalProviderContextValue {\n getContainer?: () => Element | null;\n}\n\ninterface ModalContext {\n parent: ModalContext | null;\n modalCount: Accessor<number>;\n addModal: () => void;\n removeModal: () => void;\n}\n\nconst ModalContext = createContext<ModalContext | null>(null);\nconst PortalContext = createContext<PortalProviderContextValue>({});\n\n/**\n * Each ModalProvider tracks how many modals are open in its subtree. On mount, the modals\n * trigger `addModal` to increment the count, and trigger `removeModal` on unmount to decrement it.\n * This is done recursively so that all parent providers are incremented and decremented.\n * If the modal count is greater than zero, we add `aria-hidden` to this provider to hide its\n * subtree from screen readers. This is done using SolidJS context in order to account for things\n * like portals, which can cause the component tree and the DOM tree to differ significantly in structure.\n */\nexport const ModalProvider: ParentComponent<ModalProviderProps> = (props) => {\n const parent = useContext(ModalContext);\n const [modalCount, setModalCount] = createSignal(0);\n\n const context: ModalContext = {\n parent,\n modalCount,\n addModal() {\n setModalCount((count) => count + 1);\n if (parent) {\n parent.addModal();\n }\n },\n removeModal() {\n setModalCount((count) => count - 1);\n if (parent) {\n parent.removeModal();\n }\n },\n };\n\n return <ModalContext.Provider value={context}>{props.children}</ModalContext.Provider>;\n};\n\n/**\n * Sets the portal container for overlays rendered by descendants.\n */\nexport const UNSAFE_PortalProvider: ParentComponent<PortalProviderProps> = (props) => {\n const parent = useUNSAFE_PortalContext();\n\n return (\n <PortalContext.Provider\n value={{\n getContainer:\n props.getContainer === null ? undefined : (props.getContainer ?? parent.getContainer),\n }}\n >\n {props.children}\n </PortalContext.Provider>\n );\n};\n\n/**\n * Returns the portal container configuration inherited from the nearest provider.\n */\nexport function useUNSAFE_PortalContext(): PortalProviderContextValue {\n return useContext(PortalContext) ?? {};\n}\n\nexport interface ModalProviderAria {\n /** Props to be spread on the container element. */\n modalProviderProps: {\n \"aria-hidden\"?: true;\n };\n}\n\n/**\n * Used to determine if the tree should be aria-hidden based on how many\n * modals are open.\n */\nexport function useModalProvider(): ModalProviderAria {\n const context = useContext(ModalContext);\n return {\n modalProviderProps: {\n get \"aria-hidden\"() {\n return context && context.modalCount() > 0 ? true : undefined;\n },\n },\n };\n}\n\n/**\n * Creates a root node that will be aria-hidden if there are other modals open.\n */\nconst OverlayContainerDOM: ParentComponent<ModalProviderProps> = (props) => {\n const { modalProviderProps } = useModalProvider();\n return (\n <div data-overlay-container {...modalProviderProps}>\n {props.children}\n </div>\n );\n};\n\n/**\n * An OverlayProvider acts as a container for the top-level application.\n * Any application that uses modal dialogs or other overlays should\n * be wrapped in a `<OverlayProvider>`. This is used to ensure that\n * the main content of the application is hidden from screen readers\n * if a modal or other overlay is opened. Only the top-most modal or\n * overlay should be accessible at once.\n */\nexport const OverlayProvider: ParentComponent<ModalProviderProps> = (props) => {\n return (\n <ModalProvider>\n <OverlayContainerDOM>{props.children}</OverlayContainerDOM>\n </ModalProvider>\n );\n};\n\nexport interface OverlayContainerProps extends ModalProviderProps {\n /**\n * The container element in which the overlay portal will be placed.\n * @default document.body\n */\n portalContainer?: Element;\n}\n\n/**\n * A container for overlays like modals and popovers. Renders the overlay\n * into a Portal which is placed at the end of the document body.\n * Also ensures that the overlay is hidden from screen readers if a\n * nested modal is opened. Only the top-most modal or overlay should\n * be accessible at once.\n */\nexport const OverlayContainer: ParentComponent<OverlayContainerProps> = (props) => {\n // Don't render portal on server\n if (isServer) {\n return null;\n }\n\n const portalContext = useUNSAFE_PortalContext();\n const portalContainer = () =>\n props.portalContainer ?? portalContext.getContainer?.() ?? document.body;\n\n createEffect(() => {\n const container = portalContainer();\n if (container?.closest(\"[data-overlay-container]\")) {\n throw new Error(\n \"An OverlayContainer must not be inside another container. Please change the portalContainer prop.\",\n );\n }\n });\n\n return (\n <Portal mount={portalContainer()}>\n <OverlayProvider>{props.children}</OverlayProvider>\n </Portal>\n );\n};\n\nexport interface AriaModalOptions {\n /** Whether the modal is disabled. */\n isDisabled?: boolean;\n}\n\nexport interface ModalAria {\n /** Props for the modal content element. */\n modalProps: {\n \"data-ismodal\": boolean;\n };\n}\n\n/**\n * Hides content outside the current `<OverlayContainer>` from screen readers\n * on mount and restores it on unmount. Typically used by modal dialogs and\n * other types of overlays to ensure that only the top-most modal is\n * accessible at once.\n */\nexport function createModal(options?: AriaModalOptions): ModalAria {\n // Add aria-hidden to all parent providers on mount, and restore on unmount.\n const context = useContext(ModalContext);\n\n if (!context) {\n throw new Error(\"Modal is not contained within a provider\");\n }\n\n createEffect(() => {\n if (options?.isDisabled || !context.parent) {\n return;\n }\n\n // The immediate context is from the provider containing this modal, so we only\n // want to trigger aria-hidden on its parents not on the modal provider itself.\n context.parent.addModal();\n\n onCleanup(() => {\n if (context.parent) {\n context.parent.removeModal();\n }\n });\n });\n\n return {\n modalProps: {\n \"data-ismodal\": !options?.isDisabled,\n },\n };\n}\n"],"mappings":"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"}