@proyecto-viviana/solidaria 0.2.5 → 0.3.0

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 (555) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -236
  3. package/dist/actiongroup/createActionGroup.d.ts +29 -0
  4. package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
  5. package/dist/actiongroup/index.d.ts +2 -0
  6. package/dist/actiongroup/index.d.ts.map +1 -0
  7. package/dist/autocomplete/createAutocomplete.d.ts +16 -12
  8. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  9. package/dist/autocomplete/index.d.ts +1 -1
  10. package/dist/autocomplete/index.d.ts.map +1 -1
  11. package/dist/breadcrumbs/createBreadcrumbs.d.ts +11 -7
  12. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  13. package/dist/breadcrumbs/index.d.ts +1 -1
  14. package/dist/button/createButton.d.ts +1 -1
  15. package/dist/button/createButton.d.ts.map +1 -1
  16. package/dist/button/createToggleButton.d.ts +3 -3
  17. package/dist/button/createToggleButtonGroup.d.ts +32 -0
  18. package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
  19. package/dist/button/index.d.ts +6 -4
  20. package/dist/button/index.d.ts.map +1 -1
  21. package/dist/button/types.d.ts +18 -12
  22. package/dist/button/types.d.ts.map +1 -1
  23. package/dist/calendar/createCalendar.d.ts +15 -5
  24. package/dist/calendar/createCalendar.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarCell.d.ts +8 -2
  26. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  27. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  28. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  30. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  31. package/dist/calendar/createRangeCalendarCell.d.ts +7 -3
  32. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  33. package/dist/calendar/index.d.ts +5 -5
  34. package/dist/calendar/index.d.ts.map +1 -1
  35. package/dist/calendar/intl/index.d.ts +12 -0
  36. package/dist/calendar/intl/index.d.ts.map +1 -0
  37. package/dist/calendar/utils.d.ts +12 -0
  38. package/dist/calendar/utils.d.ts.map +1 -0
  39. package/dist/checkbox/createCheckbox.d.ts +6 -6
  40. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroup.d.ts +11 -7
  42. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  44. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  45. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  46. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  47. package/dist/checkbox/index.d.ts +8 -8
  48. package/dist/checkbox/index.d.ts.map +1 -1
  49. package/dist/collections/index.d.ts +56 -0
  50. package/dist/collections/index.d.ts.map +1 -0
  51. package/dist/color/createColorArea.d.ts +3 -3
  52. package/dist/color/createColorArea.d.ts.map +1 -1
  53. package/dist/color/createColorField.d.ts +4 -4
  54. package/dist/color/createColorField.d.ts.map +1 -1
  55. package/dist/color/createColorSlider.d.ts +4 -4
  56. package/dist/color/createColorSlider.d.ts.map +1 -1
  57. package/dist/color/createColorSwatch.d.ts +2 -2
  58. package/dist/color/createColorSwatch.d.ts.map +1 -1
  59. package/dist/color/createColorWheel.d.ts +3 -3
  60. package/dist/color/createColorWheel.d.ts.map +1 -1
  61. package/dist/color/index.d.ts +6 -6
  62. package/dist/color/types.d.ts +98 -16
  63. package/dist/color/types.d.ts.map +1 -1
  64. package/dist/combobox/createComboBox.d.ts +16 -7
  65. package/dist/combobox/createComboBox.d.ts.map +1 -1
  66. package/dist/combobox/index.d.ts +1 -1
  67. package/dist/combobox/intl/index.d.ts +1 -1
  68. package/dist/datepicker/createDateField.d.ts +18 -6
  69. package/dist/datepicker/createDateField.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePicker.d.ts +57 -5
  71. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  72. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  73. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  74. package/dist/datepicker/createDateRangePicker.d.ts +42 -0
  75. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
  76. package/dist/datepicker/createDateSegment.d.ts +11 -3
  77. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeField.d.ts +11 -5
  79. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  80. package/dist/datepicker/createTimeSegment.d.ts +29 -0
  81. package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
  82. package/dist/datepicker/index.d.ts +7 -4
  83. package/dist/datepicker/index.d.ts.map +1 -1
  84. package/dist/dialog/createDialog.d.ts +5 -5
  85. package/dist/dialog/createDialog.d.ts.map +1 -1
  86. package/dist/dialog/index.d.ts +2 -2
  87. package/dist/dialog/index.d.ts.map +1 -1
  88. package/dist/dialog/types.d.ts +4 -4
  89. package/dist/disclosure/createDisclosure.d.ts +5 -2
  90. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  91. package/dist/disclosure/createDisclosureGroup.d.ts +4 -3
  92. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  93. package/dist/disclosure/index.d.ts +2 -2
  94. package/dist/dnd/createDrag.d.ts +2 -2
  95. package/dist/dnd/createDrag.d.ts.map +1 -1
  96. package/dist/dnd/createDraggableCollection.d.ts +6 -2
  97. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  98. package/dist/dnd/createDraggableItem.d.ts +3 -3
  99. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  100. package/dist/dnd/createDrop.d.ts +2 -2
  101. package/dist/dnd/createDrop.d.ts.map +1 -1
  102. package/dist/dnd/createDroppableCollection.d.ts +55 -4
  103. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  104. package/dist/dnd/createDroppableItem.d.ts +3 -3
  105. package/dist/dnd/createDroppableItem.d.ts.map +1 -1
  106. package/dist/dnd/index.d.ts +12 -12
  107. package/dist/dnd/index.d.ts.map +1 -1
  108. package/dist/dnd/types.d.ts +2 -2
  109. package/dist/dnd/types.d.ts.map +1 -1
  110. package/dist/dnd/utils.d.ts +1 -1
  111. package/dist/dnd/utils.d.ts.map +1 -1
  112. package/dist/focus/FocusScope.d.ts +1 -1
  113. package/dist/focus/FocusScope.d.ts.map +1 -1
  114. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  115. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  116. package/dist/focus/createVirtualFocus.d.ts +4 -4
  117. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  118. package/dist/focus/index.d.ts +4 -4
  119. package/dist/focus/index.d.ts.map +1 -1
  120. package/dist/form/createFormReset.d.ts +1 -1
  121. package/dist/form/createFormValidation.d.ts +3 -3
  122. package/dist/form/createFormValidation.d.ts.map +1 -1
  123. package/dist/form/index.d.ts +2 -2
  124. package/dist/form/index.d.ts.map +1 -1
  125. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  126. package/dist/grid/createGrid.d.ts +3 -3
  127. package/dist/grid/createGrid.d.ts.map +1 -1
  128. package/dist/grid/createGridCell.d.ts +3 -3
  129. package/dist/grid/createGridRow.d.ts +3 -3
  130. package/dist/grid/index.d.ts +5 -5
  131. package/dist/grid/types.d.ts +8 -8
  132. package/dist/gridlist/createGridList.d.ts +6 -4
  133. package/dist/gridlist/createGridList.d.ts.map +1 -1
  134. package/dist/gridlist/createGridListItem.d.ts +4 -4
  135. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  136. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  137. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  138. package/dist/gridlist/index.d.ts +4 -4
  139. package/dist/gridlist/types.d.ts +11 -7
  140. package/dist/gridlist/types.d.ts.map +1 -1
  141. package/dist/i18n/createCollator.d.ts.map +1 -1
  142. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  143. package/dist/i18n/createFilter.d.ts.map +1 -1
  144. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  145. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  146. package/dist/i18n/createStringFormatter.d.ts +2 -2
  147. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  148. package/dist/i18n/index.d.ts +8 -8
  149. package/dist/i18n/index.d.ts.map +1 -1
  150. package/dist/i18n/locale.d.ts +2 -2
  151. package/dist/i18n/locale.d.ts.map +1 -1
  152. package/dist/i18n/utils.d.ts.map +1 -1
  153. package/dist/index.d.ts +52 -49
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +18089 -15690
  156. package/dist/index.js.map +1 -7
  157. package/dist/index.jsx +18242 -0
  158. package/dist/index.jsx.map +1 -0
  159. package/dist/interactions/FocusableProvider.d.ts +2 -2
  160. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  161. package/dist/interactions/PressEvent.d.ts +2 -2
  162. package/dist/interactions/createFocus.d.ts +1 -1
  163. package/dist/interactions/createFocus.d.ts.map +1 -1
  164. package/dist/interactions/createFocusRing.d.ts +1 -1
  165. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  166. package/dist/interactions/createFocusWithin.d.ts +1 -1
  167. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  168. package/dist/interactions/createFocusable.d.ts +3 -3
  169. package/dist/interactions/createFocusable.d.ts.map +1 -1
  170. package/dist/interactions/createHover.d.ts +5 -5
  171. package/dist/interactions/createHover.d.ts.map +1 -1
  172. package/dist/interactions/createInteractionModality.d.ts +3 -3
  173. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  174. package/dist/interactions/createKeyboard.d.ts +1 -1
  175. package/dist/interactions/createLongPress.d.ts +5 -5
  176. package/dist/interactions/createMove.d.ts +5 -5
  177. package/dist/interactions/createMove.d.ts.map +1 -1
  178. package/dist/interactions/createPress.d.ts +4 -4
  179. package/dist/interactions/createPress.d.ts.map +1 -1
  180. package/dist/interactions/index.d.ts +12 -12
  181. package/dist/interactions/index.d.ts.map +1 -1
  182. package/dist/label/createField.d.ts +4 -4
  183. package/dist/label/createField.d.ts.map +1 -1
  184. package/dist/label/createLabel.d.ts +7 -7
  185. package/dist/label/createLabel.d.ts.map +1 -1
  186. package/dist/label/createLabels.d.ts +1 -1
  187. package/dist/label/createLabels.d.ts.map +1 -1
  188. package/dist/label/index.d.ts +5 -5
  189. package/dist/landmark/createLandmark.d.ts +5 -5
  190. package/dist/landmark/createLandmark.d.ts.map +1 -1
  191. package/dist/landmark/index.d.ts +1 -1
  192. package/dist/link/createLink.d.ts +23 -7
  193. package/dist/link/createLink.d.ts.map +1 -1
  194. package/dist/link/index.d.ts +1 -1
  195. package/dist/listbox/createListBox.d.ts +12 -6
  196. package/dist/listbox/createListBox.d.ts.map +1 -1
  197. package/dist/listbox/createOption.d.ts +21 -4
  198. package/dist/listbox/createOption.d.ts.map +1 -1
  199. package/dist/listbox/index.d.ts +2 -2
  200. package/dist/listbox/index.d.ts.map +1 -1
  201. package/dist/live-announcer/announce.d.ts +2 -2
  202. package/dist/live-announcer/announce.d.ts.map +1 -1
  203. package/dist/live-announcer/index.d.ts +1 -1
  204. package/dist/menu/createMenu.d.ts +8 -7
  205. package/dist/menu/createMenu.d.ts.map +1 -1
  206. package/dist/menu/createMenuItem.d.ts +16 -4
  207. package/dist/menu/createMenuItem.d.ts.map +1 -1
  208. package/dist/menu/createMenuTrigger.d.ts +4 -4
  209. package/dist/menu/index.d.ts +3 -3
  210. package/dist/menu/index.d.ts.map +1 -1
  211. package/dist/meter/createMeter.d.ts +6 -6
  212. package/dist/meter/createMeter.d.ts.map +1 -1
  213. package/dist/meter/index.d.ts +1 -1
  214. package/dist/numberfield/createNumberField.d.ts +27 -8
  215. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  216. package/dist/numberfield/index.d.ts +1 -1
  217. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  218. package/dist/overlays/createModal.d.ts +19 -3
  219. package/dist/overlays/createModal.d.ts.map +1 -1
  220. package/dist/overlays/createOverlay.d.ts +1 -1
  221. package/dist/overlays/createOverlay.d.ts.map +1 -1
  222. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  223. package/dist/overlays/index.d.ts +6 -6
  224. package/dist/overlays/index.d.ts.map +1 -1
  225. package/dist/popover/calculatePosition.d.ts +4 -4
  226. package/dist/popover/calculatePosition.d.ts.map +1 -1
  227. package/dist/popover/createOverlayPosition.d.ts +3 -3
  228. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  229. package/dist/popover/createPopover.d.ts +4 -4
  230. package/dist/popover/createPopover.d.ts.map +1 -1
  231. package/dist/popover/index.d.ts +3 -3
  232. package/dist/progress/createProgressBar.d.ts +7 -5
  233. package/dist/progress/createProgressBar.d.ts.map +1 -1
  234. package/dist/progress/index.d.ts +1 -1
  235. package/dist/radio/createRadio.d.ts +7 -7
  236. package/dist/radio/createRadio.d.ts.map +1 -1
  237. package/dist/radio/createRadioGroup.d.ts +11 -11
  238. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  239. package/dist/radio/createRadioGroupState.d.ts +3 -3
  240. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  241. package/dist/radio/index.d.ts +3 -3
  242. package/dist/radio/index.d.ts.map +1 -1
  243. package/dist/searchfield/createSearchField.d.ts +7 -7
  244. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  245. package/dist/searchfield/index.d.ts +2 -2
  246. package/dist/select/createHiddenSelect.d.ts +4 -4
  247. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  248. package/dist/select/createSelect.d.ts +14 -6
  249. package/dist/select/createSelect.d.ts.map +1 -1
  250. package/dist/select/index.d.ts +2 -2
  251. package/dist/select/index.d.ts.map +1 -1
  252. package/dist/selection/createTypeSelect.d.ts +2 -2
  253. package/dist/selection/index.d.ts +1 -1
  254. package/dist/separator/createSeparator.d.ts +9 -5
  255. package/dist/separator/createSeparator.d.ts.map +1 -1
  256. package/dist/separator/index.d.ts +1 -1
  257. package/dist/slider/createSlider.d.ts +11 -7
  258. package/dist/slider/createSlider.d.ts.map +1 -1
  259. package/dist/slider/index.d.ts +2 -2
  260. package/dist/ssr/index.d.ts +1 -1
  261. package/dist/ssr/index.d.ts.map +1 -1
  262. package/dist/steplist/createStepList.d.ts +36 -0
  263. package/dist/steplist/createStepList.d.ts.map +1 -0
  264. package/dist/steplist/index.d.ts +2 -0
  265. package/dist/steplist/index.d.ts.map +1 -0
  266. package/dist/switch/createSwitch.d.ts +6 -4
  267. package/dist/switch/createSwitch.d.ts.map +1 -1
  268. package/dist/switch/index.d.ts +1 -1
  269. package/dist/table/createTable.d.ts +3 -3
  270. package/dist/table/createTable.d.ts.map +1 -1
  271. package/dist/table/createTableCell.d.ts +3 -3
  272. package/dist/table/createTableCell.d.ts.map +1 -1
  273. package/dist/table/createTableColumnHeader.d.ts +3 -3
  274. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  275. package/dist/table/createTableColumnResize.d.ts +41 -0
  276. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  277. package/dist/table/createTableHeaderRow.d.ts +3 -3
  278. package/dist/table/createTableRow.d.ts +3 -3
  279. package/dist/table/createTableRow.d.ts.map +1 -1
  280. package/dist/table/createTableRowGroup.d.ts +2 -2
  281. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  282. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  283. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  284. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  285. package/dist/table/index.d.ts +11 -9
  286. package/dist/table/index.d.ts.map +1 -1
  287. package/dist/table/types.d.ts +15 -7
  288. package/dist/table/types.d.ts.map +1 -1
  289. package/dist/tabs/createTabs.d.ts +28 -25
  290. package/dist/tabs/createTabs.d.ts.map +1 -1
  291. package/dist/tabs/index.d.ts +1 -1
  292. package/dist/tag/createTag.d.ts +2 -2
  293. package/dist/tag/createTag.d.ts.map +1 -1
  294. package/dist/tag/createTagGroup.d.ts +5 -5
  295. package/dist/tag/createTagGroup.d.ts.map +1 -1
  296. package/dist/tag/index.d.ts +2 -2
  297. package/dist/tag/index.d.ts.map +1 -1
  298. package/dist/textfield/createTextField.d.ts +17 -11
  299. package/dist/textfield/createTextField.d.ts.map +1 -1
  300. package/dist/textfield/index.d.ts +1 -1
  301. package/dist/textfield/index.d.ts.map +1 -1
  302. package/dist/toast/createToast.d.ts +6 -2
  303. package/dist/toast/createToast.d.ts.map +1 -1
  304. package/dist/toast/createToastRegion.d.ts +5 -3
  305. package/dist/toast/createToastRegion.d.ts.map +1 -1
  306. package/dist/toast/index.d.ts +2 -2
  307. package/dist/toast/index.d.ts.map +1 -1
  308. package/dist/toggle/createToggle.d.ts +9 -9
  309. package/dist/toggle/createToggle.d.ts.map +1 -1
  310. package/dist/toggle/createToggleState.d.ts +2 -2
  311. package/dist/toggle/createToggleState.d.ts.map +1 -1
  312. package/dist/toggle/index.d.ts +4 -4
  313. package/dist/toggle/index.d.ts.map +1 -1
  314. package/dist/toolbar/createToolbar.d.ts +9 -9
  315. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  316. package/dist/toolbar/index.d.ts +1 -1
  317. package/dist/toolbar/index.d.ts.map +1 -1
  318. package/dist/tooltip/createTooltip.d.ts +5 -5
  319. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  320. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  321. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  322. package/dist/tooltip/index.d.ts +2 -2
  323. package/dist/tree/createTree.d.ts +3 -3
  324. package/dist/tree/createTree.d.ts.map +1 -1
  325. package/dist/tree/createTreeItem.d.ts +4 -4
  326. package/dist/tree/createTreeItem.d.ts.map +1 -1
  327. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  328. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  329. package/dist/tree/index.d.ts +4 -4
  330. package/dist/tree/types.d.ts +13 -5
  331. package/dist/tree/types.d.ts.map +1 -1
  332. package/dist/utils/createDescription.d.ts +2 -2
  333. package/dist/utils/createDescription.d.ts.map +1 -1
  334. package/dist/utils/dom.d.ts.map +1 -1
  335. package/dist/utils/env.d.ts +1 -1
  336. package/dist/utils/env.d.ts.map +1 -1
  337. package/dist/utils/focus.d.ts +1 -1
  338. package/dist/utils/focus.d.ts.map +1 -1
  339. package/dist/utils/geometry.d.ts.map +1 -1
  340. package/dist/utils/index.d.ts +12 -12
  341. package/dist/utils/index.d.ts.map +1 -1
  342. package/dist/utils/mergeProps.d.ts.map +1 -1
  343. package/dist/utils/platform.d.ts.map +1 -1
  344. package/dist/utils/reactivity.d.ts +1 -1
  345. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  346. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  347. package/dist/visually-hidden/index.d.ts +1 -1
  348. package/package.json +34 -32
  349. package/src/actiongroup/createActionGroup.ts +334 -0
  350. package/src/actiongroup/index.ts +8 -0
  351. package/src/autocomplete/createAutocomplete.ts +137 -131
  352. package/src/autocomplete/index.ts +1 -1
  353. package/src/breadcrumbs/createBreadcrumbs.ts +37 -51
  354. package/src/breadcrumbs/index.ts +1 -1
  355. package/src/button/createButton.ts +102 -73
  356. package/src/button/createToggleButton.ts +10 -10
  357. package/src/button/createToggleButtonGroup.ts +121 -0
  358. package/src/button/index.ts +10 -4
  359. package/src/button/types.ts +18 -12
  360. package/src/calendar/createCalendar.ts +62 -29
  361. package/src/calendar/createCalendarCell.ts +102 -48
  362. package/src/calendar/createCalendarGrid.ts +78 -47
  363. package/src/calendar/createRangeCalendar.ts +66 -31
  364. package/src/calendar/createRangeCalendarCell.ts +115 -37
  365. package/src/calendar/index.ts +5 -9
  366. package/src/calendar/intl/index.ts +210 -0
  367. package/src/calendar/utils.ts +227 -0
  368. package/src/checkbox/createCheckbox.ts +13 -21
  369. package/src/checkbox/createCheckboxGroup.ts +86 -45
  370. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  371. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  372. package/src/checkbox/index.ts +8 -10
  373. package/src/collections/index.ts +246 -0
  374. package/src/color/createColorArea.ts +458 -314
  375. package/src/color/createColorField.ts +186 -137
  376. package/src/color/createColorSlider.ts +444 -197
  377. package/src/color/createColorSwatch.ts +65 -40
  378. package/src/color/createColorWheel.ts +343 -208
  379. package/src/color/index.ts +24 -24
  380. package/src/color/types.ts +198 -116
  381. package/src/combobox/createComboBox.ts +727 -647
  382. package/src/combobox/index.ts +6 -6
  383. package/src/combobox/intl/index.ts +5 -5
  384. package/src/datepicker/createDateField.ts +192 -39
  385. package/src/datepicker/createDatePicker.ts +294 -63
  386. package/src/datepicker/createDatePickerGroup.ts +149 -0
  387. package/src/datepicker/createDateRangePicker.ts +294 -0
  388. package/src/datepicker/createDateSegment.ts +316 -75
  389. package/src/datepicker/createTimeField.ts +38 -34
  390. package/src/datepicker/createTimeSegment.ts +352 -0
  391. package/src/datepicker/index.ts +24 -11
  392. package/src/dialog/createDialog.ts +127 -120
  393. package/src/dialog/index.ts +2 -2
  394. package/src/dialog/types.ts +19 -19
  395. package/src/disclosure/createDisclosure.ts +138 -33
  396. package/src/disclosure/createDisclosureGroup.ts +8 -18
  397. package/src/disclosure/index.ts +2 -2
  398. package/src/dnd/createDrag.ts +218 -209
  399. package/src/dnd/createDraggableCollection.ts +96 -63
  400. package/src/dnd/createDraggableItem.ts +260 -243
  401. package/src/dnd/createDrop.ts +313 -321
  402. package/src/dnd/createDroppableCollection.ts +799 -293
  403. package/src/dnd/createDroppableItem.ts +215 -213
  404. package/src/dnd/index.ts +66 -47
  405. package/src/dnd/types.ts +86 -89
  406. package/src/dnd/utils.ts +281 -294
  407. package/src/focus/FocusScope.tsx +155 -164
  408. package/src/focus/createAutoFocus.ts +305 -321
  409. package/src/focus/createFocusRestore.ts +300 -313
  410. package/src/focus/createVirtualFocus.ts +380 -396
  411. package/src/focus/index.ts +4 -8
  412. package/src/form/createFormReset.ts +4 -4
  413. package/src/form/createFormValidation.ts +201 -224
  414. package/src/form/index.ts +8 -11
  415. package/src/grid/GridKeyboardDelegate.ts +30 -30
  416. package/src/grid/createGrid.ts +38 -36
  417. package/src/grid/createGridCell.ts +18 -18
  418. package/src/grid/createGridRow.ts +14 -14
  419. package/src/grid/index.ts +5 -5
  420. package/src/grid/types.ts +8 -8
  421. package/src/gridlist/createGridList.ts +45 -24
  422. package/src/gridlist/createGridListItem.ts +68 -23
  423. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  424. package/src/gridlist/index.ts +4 -4
  425. package/src/gridlist/types.ts +11 -7
  426. package/src/i18n/createCollator.ts +66 -79
  427. package/src/i18n/createDateFormatter.ts +75 -83
  428. package/src/i18n/createFilter.ts +118 -131
  429. package/src/i18n/createNumberFormatter.ts +50 -52
  430. package/src/i18n/createStringFormatter.ts +19 -15
  431. package/src/i18n/index.ts +37 -40
  432. package/src/i18n/locale.tsx +163 -188
  433. package/src/i18n/utils.ts +95 -99
  434. package/src/index.ts +114 -164
  435. package/src/interactions/FocusableProvider.tsx +3 -7
  436. package/src/interactions/PressEvent.ts +4 -4
  437. package/src/interactions/createFocus.ts +16 -11
  438. package/src/interactions/createFocusRing.ts +21 -19
  439. package/src/interactions/createFocusWithin.ts +24 -16
  440. package/src/interactions/createFocusable.ts +15 -16
  441. package/src/interactions/createHover.ts +70 -55
  442. package/src/interactions/createInteractionModality.ts +75 -82
  443. package/src/interactions/createKeyboard.ts +2 -2
  444. package/src/interactions/createLongPress.ts +174 -174
  445. package/src/interactions/createMove.ts +299 -289
  446. package/src/interactions/createPress.ts +168 -91
  447. package/src/interactions/index.ts +24 -16
  448. package/src/label/createField.ts +18 -19
  449. package/src/label/createLabel.ts +18 -30
  450. package/src/label/createLabels.ts +8 -12
  451. package/src/label/index.ts +5 -5
  452. package/src/landmark/createLandmark.ts +356 -377
  453. package/src/landmark/index.ts +8 -8
  454. package/src/link/createLink.ts +96 -54
  455. package/src/link/index.ts +1 -1
  456. package/src/listbox/createListBox.ts +319 -269
  457. package/src/listbox/createOption.ts +208 -151
  458. package/src/listbox/index.ts +8 -12
  459. package/src/live-announcer/announce.ts +295 -322
  460. package/src/live-announcer/index.ts +9 -9
  461. package/src/menu/createMenu.ts +434 -396
  462. package/src/menu/createMenuItem.ts +201 -149
  463. package/src/menu/createMenuTrigger.ts +88 -88
  464. package/src/menu/index.ts +9 -18
  465. package/src/meter/createMeter.ts +7 -20
  466. package/src/meter/index.ts +1 -1
  467. package/src/numberfield/createNumberField.ts +368 -268
  468. package/src/numberfield/index.ts +5 -5
  469. package/src/overlays/ariaHideOutside.ts +223 -219
  470. package/src/overlays/createInteractOutside.ts +152 -149
  471. package/src/overlays/createModal.tsx +238 -202
  472. package/src/overlays/createOverlay.ts +195 -155
  473. package/src/overlays/createOverlayTrigger.ts +85 -85
  474. package/src/overlays/createPreventScroll.ts +288 -266
  475. package/src/overlays/index.ts +37 -44
  476. package/src/popover/calculatePosition.ts +117 -119
  477. package/src/popover/createOverlayPosition.ts +52 -43
  478. package/src/popover/createPopover.ts +63 -24
  479. package/src/popover/index.ts +3 -3
  480. package/src/progress/createProgressBar.ts +36 -32
  481. package/src/progress/index.ts +1 -1
  482. package/src/radio/createRadio.ts +95 -73
  483. package/src/radio/createRadioGroup.ts +142 -62
  484. package/src/radio/createRadioGroupState.ts +7 -31
  485. package/src/radio/index.ts +3 -8
  486. package/src/searchfield/createSearchField.ts +269 -186
  487. package/src/searchfield/index.ts +2 -2
  488. package/src/select/createHiddenSelect.tsx +276 -236
  489. package/src/select/createSelect.ts +430 -395
  490. package/src/select/index.ts +9 -14
  491. package/src/selection/createTypeSelect.ts +11 -11
  492. package/src/selection/index.ts +1 -1
  493. package/src/separator/createSeparator.ts +20 -25
  494. package/src/separator/index.ts +1 -1
  495. package/src/slider/createSlider.ts +333 -349
  496. package/src/slider/index.ts +2 -2
  497. package/src/ssr/index.tsx +331 -370
  498. package/src/steplist/createStepList.ts +106 -0
  499. package/src/steplist/index.ts +8 -0
  500. package/src/switch/createSwitch.ts +9 -14
  501. package/src/switch/index.ts +1 -1
  502. package/src/table/createTable.ts +155 -86
  503. package/src/table/createTableCell.ts +17 -16
  504. package/src/table/createTableColumnHeader.ts +67 -20
  505. package/src/table/createTableColumnResize.ts +256 -0
  506. package/src/table/createTableHeaderRow.ts +7 -7
  507. package/src/table/createTableRow.ts +149 -29
  508. package/src/table/createTableRowGroup.ts +5 -7
  509. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  510. package/src/table/createTableSelectionCheckbox.ts +8 -8
  511. package/src/table/index.ts +14 -9
  512. package/src/table/types.ts +15 -7
  513. package/src/tabs/createTabs.ts +138 -127
  514. package/src/tabs/index.ts +1 -1
  515. package/src/tag/createTag.ts +171 -40
  516. package/src/tag/createTagGroup.ts +50 -39
  517. package/src/tag/index.ts +2 -6
  518. package/src/textfield/createTextField.ts +67 -35
  519. package/src/textfield/index.ts +1 -5
  520. package/src/toast/createToast.ts +34 -26
  521. package/src/toast/createToastRegion.ts +169 -27
  522. package/src/toast/index.ts +2 -6
  523. package/src/toggle/createToggle.ts +95 -53
  524. package/src/toggle/createToggleState.ts +2 -10
  525. package/src/toggle/index.ts +4 -5
  526. package/src/toolbar/createToolbar.ts +226 -169
  527. package/src/toolbar/index.ts +1 -1
  528. package/src/tooltip/createTooltip.ts +66 -79
  529. package/src/tooltip/createTooltipTrigger.ts +238 -222
  530. package/src/tooltip/index.ts +6 -6
  531. package/src/tree/createTree.ts +259 -246
  532. package/src/tree/createTreeItem.ts +282 -233
  533. package/src/tree/createTreeSelectionCheckbox.ts +71 -68
  534. package/src/tree/index.ts +16 -16
  535. package/src/tree/types.ts +95 -87
  536. package/src/utils/createDescription.ts +6 -23
  537. package/src/utils/dom.ts +61 -54
  538. package/src/utils/env.ts +53 -54
  539. package/src/utils/events.ts +7 -7
  540. package/src/utils/filterDOMProps.ts +49 -49
  541. package/src/utils/focus.ts +60 -68
  542. package/src/utils/geometry.ts +1 -4
  543. package/src/utils/globalListeners.ts +9 -9
  544. package/src/utils/index.ts +12 -22
  545. package/src/utils/mergeProps.ts +42 -15
  546. package/src/utils/platform.ts +16 -6
  547. package/src/utils/reactivity.ts +3 -3
  548. package/src/utils/textSelection.ts +16 -16
  549. package/src/visually-hidden/createVisuallyHidden.ts +127 -124
  550. package/src/visually-hidden/index.ts +6 -6
  551. package/dist/i18n/NumberFormatter.d.ts +0 -43
  552. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  553. package/dist/index.ssr.js +0 -15875
  554. package/dist/index.ssr.js.map +0 -7
  555. package/src/i18n/NumberFormatter.ts +0 -266
@@ -13,64 +13,56 @@ import {
13
13
  type ParentComponent,
14
14
  createSignal,
15
15
  onMount,
16
- } from 'solid-js'
17
- import { isServer } from 'solid-js/web'
18
- import { getOwnerDocument, isFocusable } from '../utils'
19
- import { focusSafely } from '../utils/focus'
20
-
21
- // ============================================
22
- // TYPES
23
- // ============================================
16
+ } from "solid-js";
17
+ import { isServer } from "solid-js/web";
18
+ import { getOwnerDocument, isFocusable } from "../utils";
19
+ import { focusSafely } from "../utils/focus";
24
20
 
25
21
  export interface FocusScopeProps {
26
22
  /** The contents of the focus scope. */
27
- children: JSX.Element
23
+ children: JSX.Element;
28
24
  /**
29
25
  * Whether to contain focus inside the scope, so users cannot
30
26
  * move focus outside, for example in a modal dialog.
31
27
  */
32
- contain?: boolean
28
+ contain?: boolean;
33
29
  /**
34
30
  * Whether to restore focus back to the element that was focused
35
31
  * when the focus scope mounted, after the focus scope unmounts.
36
32
  */
37
- restoreFocus?: boolean
33
+ restoreFocus?: boolean;
38
34
  /** Whether to auto focus the first focusable element in the focus scope on mount. */
39
- autoFocus?: boolean
35
+ autoFocus?: boolean;
40
36
  }
41
37
 
42
38
  export interface FocusManagerOptions {
43
39
  /** The element to start searching from. The currently focused element by default. */
44
- from?: Element
40
+ from?: Element;
45
41
  /** Whether to only include tabbable elements, or all focusable elements. */
46
- tabbable?: boolean
42
+ tabbable?: boolean;
47
43
  /** Whether focus should wrap around when it reaches the end of the scope. */
48
- wrap?: boolean
44
+ wrap?: boolean;
49
45
  /** A callback that determines whether the given element is focused. */
50
- accept?: (node: Element) => boolean
46
+ accept?: (node: Element) => boolean;
51
47
  }
52
48
 
53
49
  export interface FocusManager {
54
50
  /** Moves focus to the next focusable or tabbable element in the focus scope. */
55
- focusNext(opts?: FocusManagerOptions): HTMLElement | null
51
+ focusNext(opts?: FocusManagerOptions): HTMLElement | null;
56
52
  /** Moves focus to the previous focusable or tabbable element in the focus scope. */
57
- focusPrevious(opts?: FocusManagerOptions): HTMLElement | null
53
+ focusPrevious(opts?: FocusManagerOptions): HTMLElement | null;
58
54
  /** Moves focus to the first focusable or tabbable element in the focus scope. */
59
- focusFirst(opts?: FocusManagerOptions): HTMLElement | null
55
+ focusFirst(opts?: FocusManagerOptions): HTMLElement | null;
60
56
  /** Moves focus to the last focusable or tabbable element in the focus scope. */
61
- focusLast(opts?: FocusManagerOptions): HTMLElement | null
57
+ focusLast(opts?: FocusManagerOptions): HTMLElement | null;
62
58
  }
63
59
 
64
- // ============================================
65
- // CONTEXT
66
- // ============================================
67
-
68
60
  interface FocusScopeContextValue {
69
- focusManager: FocusManager
70
- scopeRef: Accessor<Element[]>
61
+ focusManager: FocusManager;
62
+ scopeRef: Accessor<Element[]>;
71
63
  }
72
64
 
73
- const FocusScopeContext = createContext<FocusScopeContextValue | null>(null)
65
+ const FocusScopeContext = createContext<FocusScopeContextValue | null>(null);
74
66
 
75
67
  /**
76
68
  * Returns a FocusManager interface for the parent FocusScope.
@@ -78,79 +70,71 @@ const FocusScopeContext = createContext<FocusScopeContextValue | null>(null)
78
70
  * a FocusScope, e.g. in response to user events like keyboard navigation.
79
71
  */
80
72
  export function useFocusManager(): FocusManager | undefined {
81
- return useContext(FocusScopeContext)?.focusManager
73
+ return useContext(FocusScopeContext)?.focusManager;
82
74
  }
83
75
 
84
- // ============================================
85
- // UTILITIES
86
- // ============================================
87
-
88
76
  /**
89
77
  * Checks if an element is tabbable (focusable via Tab key).
90
78
  */
91
79
  function isTabbable(element: Element): boolean {
92
80
  if (!isFocusable(element)) {
93
- return false
81
+ return false;
94
82
  }
95
83
 
96
84
  // Check tabIndex
97
- const tabIndex = element.getAttribute('tabindex')
85
+ const tabIndex = element.getAttribute("tabindex");
98
86
  if (tabIndex != null) {
99
- return parseInt(tabIndex, 10) >= 0
87
+ return parseInt(tabIndex, 10) >= 0;
100
88
  }
101
89
 
102
- return true
90
+ return true;
103
91
  }
104
92
 
105
93
  /**
106
94
  * Gets all focusable elements within a scope.
107
95
  */
108
96
  function getFocusableElements(scope: Element[], tabbable = false): HTMLElement[] {
109
- const elements: HTMLElement[] = []
110
- const filter = tabbable ? isTabbable : isFocusable
97
+ const elements: HTMLElement[] = [];
98
+ const filter = tabbable ? isTabbable : isFocusable;
111
99
 
112
100
  for (const scopeElement of scope) {
113
101
  // Check the element itself
114
102
  if (filter(scopeElement)) {
115
- elements.push(scopeElement as HTMLElement)
103
+ elements.push(scopeElement as HTMLElement);
116
104
  }
117
105
 
118
106
  // Check all descendants
119
- const descendants = scopeElement.querySelectorAll('*')
107
+ const descendants = scopeElement.querySelectorAll("*");
120
108
  for (let i = 0; i < descendants.length; i++) {
121
- const el = descendants[i]
109
+ const el = descendants[i];
122
110
  if (filter(el)) {
123
- elements.push(el as HTMLElement)
111
+ elements.push(el as HTMLElement);
124
112
  }
125
113
  }
126
114
  }
127
115
 
128
- return elements
116
+ return elements;
129
117
  }
130
118
 
131
119
  /**
132
120
  * Checks if an element is within a scope.
133
121
  */
134
122
  function isElementInScope(element: Element | null, scope: Element[]): boolean {
135
- if (!element) return false
136
- return scope.some(node => node.contains(element))
123
+ if (!element) return false;
124
+ return scope.some((node) => node.contains(element));
137
125
  }
138
126
 
139
127
  /**
140
128
  * Gets the active element, accounting for shadow DOM.
141
129
  */
142
130
  function getActiveElement(doc: Document): Element | null {
143
- let activeElement = doc.activeElement
131
+ let activeElement = doc.activeElement;
144
132
  while (activeElement?.shadowRoot?.activeElement) {
145
- activeElement = activeElement.shadowRoot.activeElement
133
+ activeElement = activeElement.shadowRoot.activeElement;
146
134
  }
147
- return activeElement
135
+ return activeElement;
148
136
  }
149
137
 
150
- // ============================================
151
- // FOCUS SCOPE COMPONENT
152
- // ============================================
153
-
154
138
  /**
155
139
  * A FocusScope manages focus for its descendants. It supports containing focus inside
156
140
  * the scope, restoring focus to the previously focused element on unmount, and auto
@@ -160,135 +144,142 @@ function getActiveElement(doc: Document): Element | null {
160
144
  */
161
145
  export const FocusScope: ParentComponent<FocusScopeProps> = (props) => {
162
146
  if (isServer) {
163
- return <>{props.children}</>
147
+ return <>{props.children}</>;
164
148
  }
165
149
 
166
- let startRef: HTMLSpanElement | undefined
167
- let endRef: HTMLSpanElement | undefined
168
- const [scopeElements, setScopeElements] = createSignal<Element[]>([])
150
+ let startRef: HTMLSpanElement | undefined;
151
+ let endRef: HTMLSpanElement | undefined;
152
+ const [scopeElements, setScopeElements] = createSignal<Element[]>([]);
169
153
 
170
154
  // Store the element that was focused when the scope mounted
171
- let nodeToRestore: Element | null = null
155
+ let nodeToRestore: Element | null = null;
156
+
157
+ const getRestorableElement = (element: Element | null, doc: Document): Element | null => {
158
+ if (!element || element === doc.body || element === doc.documentElement) {
159
+ return null;
160
+ }
161
+ return element;
162
+ };
172
163
 
173
164
  // Create focus manager
174
165
  const focusManager: FocusManager = {
175
166
  focusNext(opts = {}) {
176
- const scope = scopeElements()
177
- if (scope.length === 0) return null
167
+ const scope = scopeElements();
168
+ if (scope.length === 0) return null;
178
169
 
179
- const { from, tabbable = true, wrap = false, accept } = opts
180
- const elements = getFocusableElements(scope, tabbable).filter(el => !accept || accept(el))
181
- const doc = getOwnerDocument(scope[0])
182
- const current = from || getActiveElement(doc)
170
+ const { from, tabbable = true, wrap = false, accept } = opts;
171
+ const elements = getFocusableElements(scope, tabbable).filter((el) => !accept || accept(el));
172
+ const doc = getOwnerDocument(scope[0]);
173
+ const current = from || getActiveElement(doc);
183
174
 
184
- if (!current || elements.length === 0) return null
175
+ if (!current || elements.length === 0) return null;
185
176
 
186
- const currentIndex = elements.indexOf(current as HTMLElement)
187
- let nextIndex = currentIndex + 1
177
+ const currentIndex = elements.indexOf(current as HTMLElement);
178
+ let nextIndex = currentIndex + 1;
188
179
 
189
180
  if (nextIndex >= elements.length) {
190
181
  if (wrap) {
191
- nextIndex = 0
182
+ nextIndex = 0;
192
183
  } else {
193
- return null
184
+ return null;
194
185
  }
195
186
  }
196
187
 
197
- const nextElement = elements[nextIndex]
188
+ const nextElement = elements[nextIndex];
198
189
  if (nextElement) {
199
- focusSafely(nextElement)
200
- return nextElement
190
+ focusSafely(nextElement);
191
+ return nextElement;
201
192
  }
202
193
 
203
- return null
194
+ return null;
204
195
  },
205
196
 
206
197
  focusPrevious(opts = {}) {
207
- const scope = scopeElements()
208
- if (scope.length === 0) return null
198
+ const scope = scopeElements();
199
+ if (scope.length === 0) return null;
209
200
 
210
- const { from, tabbable = true, wrap = false, accept } = opts
211
- const elements = getFocusableElements(scope, tabbable).filter(el => !accept || accept(el))
212
- const doc = getOwnerDocument(scope[0])
213
- const current = from || getActiveElement(doc)
201
+ const { from, tabbable = true, wrap = false, accept } = opts;
202
+ const elements = getFocusableElements(scope, tabbable).filter((el) => !accept || accept(el));
203
+ const doc = getOwnerDocument(scope[0]);
204
+ const current = from || getActiveElement(doc);
214
205
 
215
- if (!current || elements.length === 0) return null
206
+ if (!current || elements.length === 0) return null;
216
207
 
217
- const currentIndex = elements.indexOf(current as HTMLElement)
218
- let prevIndex = currentIndex - 1
208
+ const currentIndex = elements.indexOf(current as HTMLElement);
209
+ let prevIndex = currentIndex - 1;
219
210
 
220
211
  if (prevIndex < 0) {
221
212
  if (wrap) {
222
- prevIndex = elements.length - 1
213
+ prevIndex = elements.length - 1;
223
214
  } else {
224
- return null
215
+ return null;
225
216
  }
226
217
  }
227
218
 
228
- const prevElement = elements[prevIndex]
219
+ const prevElement = elements[prevIndex];
229
220
  if (prevElement) {
230
- focusSafely(prevElement)
231
- return prevElement
221
+ focusSafely(prevElement);
222
+ return prevElement;
232
223
  }
233
224
 
234
- return null
225
+ return null;
235
226
  },
236
227
 
237
228
  focusFirst(opts = {}) {
238
- const scope = scopeElements()
239
- if (scope.length === 0) return null
229
+ const scope = scopeElements();
230
+ if (scope.length === 0) return null;
240
231
 
241
- const { tabbable = true, accept } = opts
242
- const elements = getFocusableElements(scope, tabbable).filter(el => !accept || accept(el))
232
+ const { tabbable = true, accept } = opts;
233
+ const elements = getFocusableElements(scope, tabbable).filter((el) => !accept || accept(el));
243
234
 
244
235
  if (elements.length > 0) {
245
- focusSafely(elements[0])
246
- return elements[0]
236
+ focusSafely(elements[0]);
237
+ return elements[0];
247
238
  }
248
239
 
249
- return null
240
+ return null;
250
241
  },
251
242
 
252
243
  focusLast(opts = {}) {
253
- const scope = scopeElements()
254
- if (scope.length === 0) return null
244
+ const scope = scopeElements();
245
+ if (scope.length === 0) return null;
255
246
 
256
- const { tabbable = true, accept } = opts
257
- const elements = getFocusableElements(scope, tabbable).filter(el => !accept || accept(el))
247
+ const { tabbable = true, accept } = opts;
248
+ const elements = getFocusableElements(scope, tabbable).filter((el) => !accept || accept(el));
258
249
 
259
250
  if (elements.length > 0) {
260
- const lastElement = elements[elements.length - 1]
261
- focusSafely(lastElement)
262
- return lastElement
251
+ const lastElement = elements[elements.length - 1];
252
+ focusSafely(lastElement);
253
+ return lastElement;
263
254
  }
264
255
 
265
- return null
256
+ return null;
266
257
  },
267
- }
258
+ };
268
259
 
269
260
  // Collect scope elements after render
270
261
  onMount(() => {
271
- if (!startRef || !endRef) return
262
+ if (!startRef || !endRef) return;
272
263
 
273
- const nodes: Element[] = []
274
- let node = startRef.nextSibling
264
+ const nodes: Element[] = [];
265
+ let node = startRef.nextSibling;
275
266
  while (node && node !== endRef) {
276
267
  if (node.nodeType === Node.ELEMENT_NODE) {
277
- nodes.push(node as Element)
268
+ nodes.push(node as Element);
278
269
  }
279
- node = node.nextSibling
270
+ node = node.nextSibling;
280
271
  }
281
- setScopeElements(nodes)
282
- })
272
+ setScopeElements(nodes);
273
+ });
283
274
 
284
275
  // Save the currently focused element for restoration (must happen before autoFocus/contain effects run).
285
276
  onMount(() => {
286
- if (!props.restoreFocus) return
277
+ if (!props.restoreFocus) return;
287
278
 
288
279
  // Focus can be in the main document, or inside this iframe's document.
289
- const scopeDoc = startRef ? getOwnerDocument(startRef) : document
290
- const scopeActive = getActiveElement(scopeDoc)
291
- const topActive = getActiveElement(document)
280
+ const scopeDoc = startRef ? getOwnerDocument(startRef) : document;
281
+ const scopeActive = getActiveElement(scopeDoc);
282
+ const topActive = getActiveElement(document);
292
283
 
293
284
  // If the scope is in an iframe and that iframe is currently focused, prefer the iframe document's active element.
294
285
  if (
@@ -298,103 +289,103 @@ export const FocusScope: ParentComponent<FocusScopeProps> = (props) => {
298
289
  scopeActive &&
299
290
  scopeActive !== scopeDoc.body
300
291
  ) {
301
- nodeToRestore = scopeActive
302
- return
292
+ nodeToRestore = getRestorableElement(scopeActive, scopeDoc);
293
+ return;
303
294
  }
304
295
 
305
- nodeToRestore = topActive
306
- })
296
+ nodeToRestore = getRestorableElement(topActive, document);
297
+ });
307
298
 
308
299
  // Auto-focus first element
309
300
  createEffect(() => {
310
- if (!props.autoFocus) return
301
+ if (!props.autoFocus) return;
311
302
 
312
- const scope = scopeElements()
313
- if (scope.length === 0) return
303
+ const scope = scopeElements();
304
+ if (scope.length === 0) return;
314
305
 
315
- const doc = getOwnerDocument(scope[0])
316
- const activeElement = getActiveElement(doc)
306
+ const doc = getOwnerDocument(scope[0]);
307
+ const activeElement = getActiveElement(doc);
317
308
 
318
309
  // Only auto-focus if focus is not already inside the scope
319
310
  if (!isElementInScope(activeElement, scope)) {
320
- focusManager.focusFirst()
311
+ focusManager.focusFirst();
321
312
  }
322
- })
313
+ });
323
314
 
324
315
  // Focus containment
325
316
  createEffect(() => {
326
- if (!props.contain) return
317
+ if (!props.contain) return;
327
318
 
328
- const scope = scopeElements()
329
- if (scope.length === 0) return
319
+ const scope = scopeElements();
320
+ if (scope.length === 0) return;
330
321
 
331
- const doc = getOwnerDocument(scope[0])
332
- let focusedNode: Element | null = null
322
+ const doc = getOwnerDocument(scope[0]);
323
+ let focusedNode: Element | null = null;
333
324
 
334
325
  const onKeyDown = (e: KeyboardEvent) => {
335
- if (e.key !== 'Tab' || e.altKey || e.ctrlKey || e.metaKey) {
336
- return
326
+ if (e.key !== "Tab" || e.altKey || e.ctrlKey || e.metaKey) {
327
+ return;
337
328
  }
338
329
 
339
- const scope = scopeElements()
340
- const activeElement = getActiveElement(doc)
330
+ const scope = scopeElements();
331
+ const activeElement = getActiveElement(doc);
341
332
  if (!isElementInScope(activeElement, scope)) {
342
- return
333
+ return;
343
334
  }
344
335
 
345
- const elements = getFocusableElements(scope, true)
346
- if (elements.length === 0) return
336
+ const elements = getFocusableElements(scope, true);
337
+ if (elements.length === 0) return;
347
338
 
348
- const firstElement = elements[0]
349
- const lastElement = elements[elements.length - 1]
339
+ const firstElement = elements[0];
340
+ const lastElement = elements[elements.length - 1];
350
341
 
351
342
  if (e.shiftKey && activeElement === firstElement) {
352
- e.preventDefault()
353
- focusSafely(lastElement)
343
+ e.preventDefault();
344
+ focusSafely(lastElement);
354
345
  } else if (!e.shiftKey && activeElement === lastElement) {
355
- e.preventDefault()
356
- focusSafely(firstElement)
346
+ e.preventDefault();
347
+ focusSafely(firstElement);
357
348
  }
358
- }
349
+ };
359
350
 
360
351
  const onFocusIn = (e: FocusEvent) => {
361
- const scope = scopeElements()
362
- const target = e.target as Element
352
+ const scope = scopeElements();
353
+ const target = e.target as Element;
363
354
 
364
355
  if (isElementInScope(target, scope)) {
365
- focusedNode = target
356
+ focusedNode = target;
366
357
  } else if (focusedNode) {
367
358
  // Focus escaped the scope, bring it back
368
- focusSafely(focusedNode as HTMLElement)
359
+ focusSafely(focusedNode as HTMLElement);
369
360
  } else {
370
361
  // No previous focus, focus first element
371
- focusManager.focusFirst()
362
+ focusManager.focusFirst();
372
363
  }
373
- }
364
+ };
374
365
 
375
- doc.addEventListener('keydown', onKeyDown, true)
376
- doc.addEventListener('focusin', onFocusIn, true)
366
+ doc.addEventListener("keydown", onKeyDown, true);
367
+ doc.addEventListener("focusin", onFocusIn, true);
377
368
 
378
369
  onCleanup(() => {
379
- doc.removeEventListener('keydown', onKeyDown, true)
380
- doc.removeEventListener('focusin', onFocusIn, true)
381
- })
382
- })
370
+ doc.removeEventListener("keydown", onKeyDown, true);
371
+ doc.removeEventListener("focusin", onFocusIn, true);
372
+ });
373
+ });
383
374
 
384
375
  // Restore focus on unmount
385
376
  onCleanup(() => {
386
377
  if (props.restoreFocus && nodeToRestore && (nodeToRestore as HTMLElement).focus) {
387
- const doc = getOwnerDocument(nodeToRestore as Element)
388
- const win = doc.defaultView ?? window
378
+ const doc = getOwnerDocument(nodeToRestore as Element);
379
+ const win = doc.defaultView ?? window;
389
380
 
390
381
  // Use requestAnimationFrame to ensure the element is still in the DOM
391
382
  win.requestAnimationFrame(() => {
392
383
  if (nodeToRestore && doc.body.contains(nodeToRestore as Node)) {
393
- ;(nodeToRestore as HTMLElement).focus()
384
+ (nodeToRestore as HTMLElement).focus();
394
385
  }
395
- })
386
+ });
396
387
  }
397
- })
388
+ });
398
389
 
399
390
  return (
400
391
  <FocusScopeContext.Provider value={{ focusManager, scopeRef: scopeElements }}>
@@ -402,7 +393,7 @@ export const FocusScope: ParentComponent<FocusScopeProps> = (props) => {
402
393
  {props.children}
403
394
  <span data-focus-scope-end hidden ref={endRef} />
404
395
  </FocusScopeContext.Provider>
405
- )
406
- }
396
+ );
397
+ };
407
398
 
408
- export default FocusScope
399
+ export default FocusScope;