@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
@@ -1,13 +1,11 @@
1
- // FocusScope
2
1
  export {
3
2
  FocusScope,
4
3
  useFocusManager,
5
4
  type FocusScopeProps,
6
5
  type FocusManager,
7
6
  type FocusManagerOptions,
8
- } from './FocusScope';
7
+ } from "./FocusScope";
9
8
 
10
- // Focus Restoration
11
9
  export {
12
10
  createFocusRestore,
13
11
  pushFocusStack,
@@ -16,20 +14,18 @@ export {
16
14
  clearFocusStack,
17
15
  type FocusRestoreOptions,
18
16
  type FocusRestoreResult,
19
- } from './createFocusRestore';
17
+ } from "./createFocusRestore";
20
18
 
21
- // Virtual Focus
22
19
  export {
23
20
  createVirtualFocus,
24
21
  type VirtualFocusOptions,
25
22
  type VirtualFocusResult,
26
- } from './createVirtualFocus';
23
+ } from "./createVirtualFocus";
27
24
 
28
- // Auto Focus
29
25
  export {
30
26
  createAutoFocus,
31
27
  clearAutoFocusQueue,
32
28
  getAutoFocusQueueLength,
33
29
  type AutoFocusOptions,
34
30
  type AutoFocusResult,
35
- } from './createAutoFocus';
31
+ } from "./createAutoFocus";
@@ -5,7 +5,7 @@
5
5
  * Port of @react-aria/utils useFormReset.
6
6
  */
7
7
 
8
- import { type Accessor, createEffect, onCleanup } from 'solid-js';
8
+ import { type Accessor, createEffect, onCleanup } from "solid-js";
9
9
 
10
10
  export interface FormResetOptions<T> {
11
11
  /** The default value to reset to. */
@@ -29,7 +29,7 @@ export interface FormResetOptions<T> {
29
29
  export function createFormReset<T>(
30
30
  ref: Accessor<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement | undefined>,
31
31
  defaultValue: T,
32
- onReset: (value: T) => void
32
+ onReset: (value: T) => void,
33
33
  ): void {
34
34
  createEffect(() => {
35
35
  const element = ref();
@@ -42,10 +42,10 @@ export function createFormReset<T>(
42
42
  onReset(defaultValue);
43
43
  };
44
44
 
45
- form.addEventListener('reset', handleReset);
45
+ form.addEventListener("reset", handleReset);
46
46
 
47
47
  onCleanup(() => {
48
- form.removeEventListener('reset', handleReset);
48
+ form.removeEventListener("reset", handleReset);
49
49
  });
50
50
  });
51
51
  }
@@ -1,224 +1,201 @@
1
- /**
2
- * createFormValidation hook for solidaria
3
- *
4
- * Connects form validation state to native HTML form validation.
5
- * Handles the invalid event, form reset, and focus management.
6
- *
7
- * Port of react-aria's useFormValidation.
8
- */
9
-
10
- import { type Accessor, createEffect, onCleanup } from 'solid-js';
11
- import {
12
- type FormValidationState,
13
- type ValidationResult,
14
- } from '@proyecto-viviana/solid-stately';
15
- import { setInteractionModality } from '../interactions/createInteractionModality';
16
-
17
- // ============================================
18
- // TYPES
19
- // ============================================
20
-
21
- export type ValidatableElement =
22
- | HTMLInputElement
23
- | HTMLTextAreaElement
24
- | HTMLSelectElement;
25
-
26
- export type ValidationBehavior = 'aria' | 'native';
27
-
28
- export interface FormValidationProps {
29
- /** Validation behavior: 'aria' for realtime, 'native' for on submit. */
30
- validationBehavior?: ValidationBehavior;
31
- /** Custom focus function to call on validation error. */
32
- focus?: () => void;
33
- }
34
-
35
- // ============================================
36
- // HELPERS
37
- // ============================================
38
-
39
- function getValidity(input: ValidatableElement): ValidityState {
40
- // Create a snapshot of the validity state (the native object is live)
41
- const validity = input.validity;
42
- return {
43
- badInput: validity.badInput,
44
- customError: validity.customError,
45
- patternMismatch: validity.patternMismatch,
46
- rangeOverflow: validity.rangeOverflow,
47
- rangeUnderflow: validity.rangeUnderflow,
48
- stepMismatch: validity.stepMismatch,
49
- tooLong: validity.tooLong,
50
- tooShort: validity.tooShort,
51
- typeMismatch: validity.typeMismatch,
52
- valueMissing: validity.valueMissing,
53
- valid: validity.valid,
54
- };
55
- }
56
-
57
- function getNativeValidity(input: ValidatableElement): ValidationResult {
58
- return {
59
- isInvalid: !input.validity.valid,
60
- validationDetails: getValidity(input),
61
- validationErrors: input.validationMessage ? [input.validationMessage] : [],
62
- };
63
- }
64
-
65
- function getFirstInvalidInput(form: HTMLFormElement): ValidatableElement | null {
66
- for (let i = 0; i < form.elements.length; i++) {
67
- const element = form.elements[i] as ValidatableElement;
68
- if (!element.validity.valid) {
69
- return element;
70
- }
71
- }
72
- return null;
73
- }
74
-
75
- // ============================================
76
- // HOOK
77
- // ============================================
78
-
79
- /**
80
- * Connects form validation state to a native HTML form input.
81
- *
82
- * This hook:
83
- * - Sets custom validity on the native input based on validation state
84
- * - Handles the 'invalid' event to commit validation and focus the first invalid input
85
- * - Handles form reset to clear validation state
86
- * - Handles input change to commit validation
87
- *
88
- * @example
89
- * ```tsx
90
- * function MyTextField(props) {
91
- * let inputRef: HTMLInputElement | undefined;
92
- *
93
- * const validationState = createFormValidationState({
94
- * value: props.value,
95
- * validate: props.validate,
96
- * validationBehavior: 'native',
97
- * });
98
- *
99
- * createFormValidation(
100
- * { validationBehavior: 'native' },
101
- * validationState,
102
- * () => inputRef
103
- * );
104
- *
105
- * return (
106
- * <input
107
- * ref={inputRef}
108
- * value={props.value}
109
- * aria-invalid={validationState.displayValidation().isInvalid || undefined}
110
- * />
111
- * );
112
- * }
113
- * ```
114
- */
115
- export function createFormValidation(
116
- props: FormValidationProps,
117
- state: FormValidationState,
118
- ref: Accessor<ValidatableElement | undefined>
119
- ): void {
120
- const validationBehavior = () => props.validationBehavior ?? 'aria';
121
- const focus = () => props.focus;
122
-
123
- // Track whether we should ignore form reset (for React-like programmatic resets)
124
- let isIgnoredReset = false;
125
-
126
- // Set custom validity on the native input
127
- createEffect(() => {
128
- const input = ref();
129
- if (
130
- validationBehavior() === 'native' &&
131
- input &&
132
- !input.disabled
133
- ) {
134
- const realtimeValidation = state.realtimeValidation();
135
- const errorMessage = realtimeValidation.isInvalid
136
- ? realtimeValidation.validationErrors.join(' ') || 'Invalid value.'
137
- : '';
138
- input.setCustomValidity(errorMessage);
139
-
140
- // Prevent default tooltip for validation message
141
- if (!input.hasAttribute('title')) {
142
- input.title = '';
143
- }
144
-
145
- // Update validation with native validity if not already invalid
146
- if (!realtimeValidation.isInvalid) {
147
- state.updateValidation(getNativeValidity(input));
148
- }
149
- }
150
- });
151
-
152
- // Set up event listeners
153
- createEffect(() => {
154
- const input = ref();
155
- if (!input) {
156
- return;
157
- }
158
-
159
- const form = input.form;
160
-
161
- // Handle invalid event
162
- const onInvalid = (e: Event) => {
163
- // Only commit validation if we are not already displaying one
164
- if (!state.displayValidation().isInvalid) {
165
- state.commitValidation();
166
- }
167
-
168
- // Auto focus the first invalid input in a form
169
- if (!e.defaultPrevented && form && getFirstInvalidInput(form) === input) {
170
- const focusFn = focus();
171
- if (focusFn) {
172
- focusFn();
173
- } else {
174
- input.focus();
175
- }
176
- // Always show focus ring
177
- setInteractionModality('keyboard');
178
- }
179
-
180
- // Prevent default browser error UI
181
- e.preventDefault();
182
- };
183
-
184
- // Handle change event
185
- const onChange = () => {
186
- state.commitValidation();
187
- };
188
-
189
- // Handle form reset
190
- const onReset = () => {
191
- if (!isIgnoredReset) {
192
- state.resetValidation();
193
- }
194
- };
195
-
196
- // Patch form.reset to detect programmatic resets
197
- let originalReset: (() => void) | undefined;
198
- if (form) {
199
- originalReset = form.reset.bind(form);
200
- form.reset = () => {
201
- // Ignore programmatic resets outside user events
202
- isIgnoredReset =
203
- !window.event ||
204
- (window.event.type === 'message' &&
205
- window.event.target instanceof MessagePort);
206
- originalReset?.();
207
- isIgnoredReset = false;
208
- };
209
- }
210
-
211
- input.addEventListener('invalid', onInvalid);
212
- input.addEventListener('change', onChange);
213
- form?.addEventListener('reset', onReset);
214
-
215
- onCleanup(() => {
216
- input.removeEventListener('invalid', onInvalid);
217
- input.removeEventListener('change', onChange);
218
- form?.removeEventListener('reset', onReset);
219
- if (form && originalReset) {
220
- form.reset = originalReset;
221
- }
222
- });
223
- });
224
- }
1
+ /**
2
+ * createFormValidation hook for solidaria
3
+ *
4
+ * Connects form validation state to native HTML form validation.
5
+ * Handles the invalid event, form reset, and focus management.
6
+ *
7
+ * Port of react-aria's useFormValidation.
8
+ */
9
+
10
+ import { type Accessor, createEffect, onCleanup } from "solid-js";
11
+ import { type FormValidationState, type ValidationResult } from "@proyecto-viviana/solid-stately";
12
+ import { setInteractionModality } from "../interactions/createInteractionModality";
13
+
14
+ export type ValidatableElement = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;
15
+
16
+ export type ValidationBehavior = "aria" | "native";
17
+
18
+ export interface FormValidationProps {
19
+ /** Validation behavior: 'aria' for realtime, 'native' for on submit. */
20
+ validationBehavior?: ValidationBehavior;
21
+ /** Custom focus function to call on validation error. */
22
+ focus?: () => void;
23
+ }
24
+
25
+ function getValidity(input: ValidatableElement): ValidityState {
26
+ // Create a snapshot of the validity state (the native object is live)
27
+ const validity = input.validity;
28
+ return {
29
+ badInput: validity.badInput,
30
+ customError: validity.customError,
31
+ patternMismatch: validity.patternMismatch,
32
+ rangeOverflow: validity.rangeOverflow,
33
+ rangeUnderflow: validity.rangeUnderflow,
34
+ stepMismatch: validity.stepMismatch,
35
+ tooLong: validity.tooLong,
36
+ tooShort: validity.tooShort,
37
+ typeMismatch: validity.typeMismatch,
38
+ valueMissing: validity.valueMissing,
39
+ valid: validity.valid,
40
+ };
41
+ }
42
+
43
+ function getNativeValidity(input: ValidatableElement): ValidationResult {
44
+ return {
45
+ isInvalid: !input.validity.valid,
46
+ validationDetails: getValidity(input),
47
+ validationErrors: input.validationMessage ? [input.validationMessage] : [],
48
+ };
49
+ }
50
+
51
+ function getFirstInvalidInput(form: HTMLFormElement): ValidatableElement | null {
52
+ for (let i = 0; i < form.elements.length; i++) {
53
+ const element = form.elements[i] as ValidatableElement;
54
+ if (!element.validity.valid) {
55
+ return element;
56
+ }
57
+ }
58
+ return null;
59
+ }
60
+
61
+ /**
62
+ * Connects form validation state to a native HTML form input.
63
+ *
64
+ * This hook:
65
+ * - Sets custom validity on the native input based on validation state
66
+ * - Handles the 'invalid' event to commit validation and focus the first invalid input
67
+ * - Handles form reset to clear validation state
68
+ * - Handles input change to commit validation
69
+ *
70
+ * @example
71
+ * ```tsx
72
+ * function MyTextField(props) {
73
+ * let inputRef: HTMLInputElement | undefined;
74
+ *
75
+ * const validationState = createFormValidationState({
76
+ * value: props.value,
77
+ * validate: props.validate,
78
+ * validationBehavior: 'native',
79
+ * });
80
+ *
81
+ * createFormValidation(
82
+ * { validationBehavior: 'native' },
83
+ * validationState,
84
+ * () => inputRef
85
+ * );
86
+ *
87
+ * return (
88
+ * <input
89
+ * ref={inputRef}
90
+ * value={props.value}
91
+ * aria-invalid={validationState.displayValidation().isInvalid || undefined}
92
+ * />
93
+ * );
94
+ * }
95
+ * ```
96
+ */
97
+ export function createFormValidation(
98
+ props: FormValidationProps,
99
+ state: FormValidationState,
100
+ ref: Accessor<ValidatableElement | undefined>,
101
+ ): void {
102
+ const validationBehavior = () => props.validationBehavior ?? "aria";
103
+ const focus = () => props.focus;
104
+
105
+ // Track whether we should ignore form reset (for React-like programmatic resets)
106
+ let isIgnoredReset = false;
107
+
108
+ // Set custom validity on the native input
109
+ createEffect(() => {
110
+ const input = ref();
111
+ if (validationBehavior() === "native" && input && !input.disabled) {
112
+ const realtimeValidation = state.realtimeValidation();
113
+ const errorMessage = realtimeValidation.isInvalid
114
+ ? realtimeValidation.validationErrors.join(" ") || "Invalid value."
115
+ : "";
116
+ input.setCustomValidity(errorMessage);
117
+
118
+ // Prevent default tooltip for validation message
119
+ if (!input.hasAttribute("title")) {
120
+ input.title = "";
121
+ }
122
+
123
+ // Update validation with native validity if not already invalid
124
+ if (!realtimeValidation.isInvalid) {
125
+ state.updateValidation(getNativeValidity(input));
126
+ }
127
+ }
128
+ });
129
+
130
+ // Set up event listeners
131
+ createEffect(() => {
132
+ const input = ref();
133
+ if (!input) {
134
+ return;
135
+ }
136
+
137
+ const form = input.form;
138
+
139
+ // Handle invalid event
140
+ const onInvalid = (e: Event) => {
141
+ // Only commit validation if we are not already displaying one
142
+ if (!state.displayValidation().isInvalid) {
143
+ state.commitValidation();
144
+ }
145
+
146
+ // Auto focus the first invalid input in a form
147
+ if (!e.defaultPrevented && form && getFirstInvalidInput(form) === input) {
148
+ const focusFn = focus();
149
+ if (focusFn) {
150
+ focusFn();
151
+ } else {
152
+ input.focus();
153
+ }
154
+ // Always show focus ring
155
+ setInteractionModality("keyboard");
156
+ }
157
+
158
+ // Prevent default browser error UI
159
+ e.preventDefault();
160
+ };
161
+
162
+ // Handle change event
163
+ const onChange = () => {
164
+ state.commitValidation();
165
+ };
166
+
167
+ // Handle form reset
168
+ const onReset = () => {
169
+ if (!isIgnoredReset) {
170
+ state.resetValidation();
171
+ }
172
+ };
173
+
174
+ // Patch form.reset to detect programmatic resets
175
+ let originalReset: (() => void) | undefined;
176
+ if (form) {
177
+ originalReset = form.reset.bind(form);
178
+ form.reset = () => {
179
+ // Ignore programmatic resets outside user events
180
+ isIgnoredReset =
181
+ !window.event ||
182
+ (window.event.type === "message" && window.event.target instanceof MessagePort);
183
+ originalReset?.();
184
+ isIgnoredReset = false;
185
+ };
186
+ }
187
+
188
+ input.addEventListener("invalid", onInvalid);
189
+ input.addEventListener("change", onChange);
190
+ form?.addEventListener("reset", onReset);
191
+
192
+ onCleanup(() => {
193
+ input.removeEventListener("invalid", onInvalid);
194
+ input.removeEventListener("change", onChange);
195
+ form?.removeEventListener("reset", onReset);
196
+ if (form && originalReset) {
197
+ form.reset = originalReset;
198
+ }
199
+ });
200
+ });
201
+ }
package/src/form/index.ts CHANGED
@@ -1,11 +1,8 @@
1
- export {
2
- createFormValidation,
3
- type FormValidationProps,
4
- type ValidatableElement,
5
- type ValidationBehavior,
6
- } from './createFormValidation';
7
-
8
- export {
9
- createFormReset,
10
- type FormResetOptions,
11
- } from './createFormReset';
1
+ export {
2
+ createFormValidation,
3
+ type FormValidationProps,
4
+ type ValidatableElement,
5
+ type ValidationBehavior,
6
+ } from "./createFormValidation";
7
+
8
+ export { createFormReset, type FormResetOptions } from "./createFormReset";