@proyecto-viviana/solid-stately 0.5.1 → 0.6.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/LICENSE-APACHE-2.0 +201 -0
  2. package/NOTICE +91 -0
  3. package/README.md +59 -29
  4. package/dist/autocomplete/createAutocompleteState.d.ts +2 -1
  5. package/dist/autocomplete/createAutocompleteState.d.ts.map +1 -0
  6. package/dist/autocomplete/index.d.ts +1 -0
  7. package/dist/autocomplete/index.d.ts.map +1 -0
  8. package/dist/calendar/IncompleteDate.d.ts +2 -1
  9. package/dist/calendar/IncompleteDate.d.ts.map +1 -0
  10. package/dist/calendar/createCalendarState.d.ts +10 -9
  11. package/dist/calendar/createCalendarState.d.ts.map +1 -0
  12. package/dist/calendar/createDateFieldState.d.ts +4 -20
  13. package/dist/calendar/createDateFieldState.d.ts.map +1 -0
  14. package/dist/calendar/createDatePickerState.d.ts +4 -7
  15. package/dist/calendar/createDatePickerState.d.ts.map +1 -0
  16. package/dist/calendar/createRangeCalendarState.d.ts +9 -7
  17. package/dist/calendar/createRangeCalendarState.d.ts.map +1 -0
  18. package/dist/calendar/createTimeFieldState.d.ts +5 -24
  19. package/dist/calendar/createTimeFieldState.d.ts.map +1 -0
  20. package/dist/calendar/index.d.ts +1 -0
  21. package/dist/calendar/index.d.ts.map +1 -0
  22. package/dist/calendar/intl/index.d.ts +1 -0
  23. package/dist/calendar/intl/index.d.ts.map +1 -0
  24. package/dist/checkbox/createCheckboxGroupState.d.ts +3 -0
  25. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -0
  26. package/dist/checkbox/index.d.ts +1 -0
  27. package/dist/checkbox/index.d.ts.map +1 -0
  28. package/dist/collections/ListCollection.d.ts +5 -0
  29. package/dist/collections/ListCollection.d.ts.map +1 -0
  30. package/dist/collections/createListState.d.ts +2 -6
  31. package/dist/collections/createListState.d.ts.map +1 -0
  32. package/dist/collections/createMenuState.d.ts +74 -13
  33. package/dist/collections/createMenuState.d.ts.map +1 -0
  34. package/dist/collections/createSelectionState.d.ts +2 -5
  35. package/dist/collections/createSelectionState.d.ts.map +1 -0
  36. package/dist/collections/getChildNodes.d.ts +6 -3
  37. package/dist/collections/getChildNodes.d.ts.map +1 -0
  38. package/dist/collections/index.d.ts +2 -1
  39. package/dist/collections/index.d.ts.map +1 -0
  40. package/dist/collections/types.d.ts +36 -2
  41. package/dist/collections/types.d.ts.map +1 -0
  42. package/dist/color/Color.d.ts +7 -1
  43. package/dist/color/Color.d.ts.map +1 -0
  44. package/dist/color/createColorAreaState.d.ts +6 -5
  45. package/dist/color/createColorAreaState.d.ts.map +1 -0
  46. package/dist/color/createColorFieldState.d.ts +4 -5
  47. package/dist/color/createColorFieldState.d.ts.map +1 -0
  48. package/dist/color/createColorSliderState.d.ts +4 -5
  49. package/dist/color/createColorSliderState.d.ts.map +1 -0
  50. package/dist/color/createColorWheelState.d.ts +2 -5
  51. package/dist/color/createColorWheelState.d.ts.map +1 -0
  52. package/dist/color/getColorChannels.d.ts +3 -0
  53. package/dist/color/getColorChannels.d.ts.map +1 -0
  54. package/dist/color/index.d.ts +2 -1
  55. package/dist/color/index.d.ts.map +1 -0
  56. package/dist/color/intl/index.d.ts +1 -0
  57. package/dist/color/intl/index.d.ts.map +1 -0
  58. package/dist/color/types.d.ts +2 -1
  59. package/dist/color/types.d.ts.map +1 -0
  60. package/dist/combobox/createComboBoxState.d.ts +92 -29
  61. package/dist/combobox/createComboBoxState.d.ts.map +1 -0
  62. package/dist/combobox/index.d.ts +2 -1
  63. package/dist/combobox/index.d.ts.map +1 -0
  64. package/dist/data/createAsyncList.d.ts +1 -7
  65. package/dist/data/createAsyncList.d.ts.map +1 -0
  66. package/dist/data/createListData.d.ts +1 -6
  67. package/dist/data/createListData.d.ts.map +1 -0
  68. package/dist/data/createTreeData.d.ts +1 -6
  69. package/dist/data/createTreeData.d.ts.map +1 -0
  70. package/dist/data/index.d.ts +1 -0
  71. package/dist/data/index.d.ts.map +1 -0
  72. package/dist/datepicker/index.d.ts +1 -0
  73. package/dist/datepicker/index.d.ts.map +1 -0
  74. package/dist/disclosure/createDisclosureState.d.ts +2 -5
  75. package/dist/disclosure/createDisclosureState.d.ts.map +1 -0
  76. package/dist/disclosure/index.d.ts +1 -0
  77. package/dist/disclosure/index.d.ts.map +1 -0
  78. package/dist/dnd/createDragState.d.ts +2 -6
  79. package/dist/dnd/createDragState.d.ts.map +1 -0
  80. package/dist/dnd/createDraggableCollectionState.d.ts +44 -11
  81. package/dist/dnd/createDraggableCollectionState.d.ts.map +1 -0
  82. package/dist/dnd/createDropState.d.ts +2 -6
  83. package/dist/dnd/createDropState.d.ts.map +1 -0
  84. package/dist/dnd/createDroppableCollectionState.d.ts +34 -11
  85. package/dist/dnd/createDroppableCollectionState.d.ts.map +1 -0
  86. package/dist/dnd/index.d.ts +3 -2
  87. package/dist/dnd/index.d.ts.map +1 -0
  88. package/dist/dnd/types.d.ts +17 -0
  89. package/dist/dnd/types.d.ts.map +1 -0
  90. package/dist/form/createFormValidationState.d.ts +2 -9
  91. package/{src → dist}/form/createFormValidationState.d.ts.map +1 -1
  92. package/dist/form/index.d.ts +1 -0
  93. package/dist/form/index.d.ts.map +1 -0
  94. package/dist/grid/createGridState.d.ts +4 -3
  95. package/dist/grid/createGridState.d.ts.map +1 -0
  96. package/dist/grid/index.d.ts +1 -0
  97. package/dist/grid/index.d.ts.map +1 -0
  98. package/dist/grid/types.d.ts +23 -1
  99. package/dist/grid/types.d.ts.map +1 -0
  100. package/dist/index.d.ts +7 -5
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +2947 -969
  103. package/dist/index.js.map +1 -1
  104. package/dist/menu/index.d.ts +3 -1
  105. package/dist/menu/index.d.ts.map +1 -0
  106. package/dist/numberfield/createNumberFieldState.d.ts +37 -9
  107. package/dist/numberfield/createNumberFieldState.d.ts.map +1 -0
  108. package/dist/numberfield/index.d.ts +1 -0
  109. package/dist/numberfield/index.d.ts.map +1 -0
  110. package/dist/overlays/createOverlayTriggerState.d.ts +12 -1
  111. package/dist/overlays/createOverlayTriggerState.d.ts.map +1 -0
  112. package/dist/overlays/index.d.ts +1 -0
  113. package/dist/overlays/index.d.ts.map +1 -0
  114. package/dist/private/flags/flags.d.ts +5 -0
  115. package/dist/private/flags/flags.d.ts.map +1 -0
  116. package/dist/private/flags/flags.js +26 -0
  117. package/dist/private/flags/flags.js.map +1 -0
  118. package/dist/radio/createRadioGroupState.d.ts +1 -0
  119. package/dist/radio/createRadioGroupState.d.ts.map +1 -0
  120. package/dist/radio/index.d.ts +1 -0
  121. package/dist/radio/index.d.ts.map +1 -0
  122. package/dist/searchfield/createSearchFieldState.d.ts +2 -5
  123. package/dist/searchfield/createSearchFieldState.d.ts.map +1 -0
  124. package/dist/searchfield/index.d.ts +1 -0
  125. package/dist/searchfield/index.d.ts.map +1 -0
  126. package/dist/select/createSelectState.d.ts +100 -33
  127. package/dist/select/createSelectState.d.ts.map +1 -0
  128. package/dist/select/index.d.ts +2 -1
  129. package/dist/select/index.d.ts.map +1 -0
  130. package/dist/selection/Selection.d.ts +2 -1
  131. package/dist/selection/Selection.d.ts.map +1 -0
  132. package/dist/selection/SelectionManager.d.ts +1 -19
  133. package/dist/selection/SelectionManager.d.ts.map +1 -0
  134. package/dist/selection/createMultipleSelectionState.d.ts +2 -13
  135. package/dist/selection/createMultipleSelectionState.d.ts.map +1 -0
  136. package/dist/selection/index.d.ts +1 -0
  137. package/dist/selection/index.d.ts.map +1 -0
  138. package/dist/slider/createSliderState.d.ts +37 -14
  139. package/dist/slider/createSliderState.d.ts.map +1 -0
  140. package/dist/slider/index.d.ts +1 -0
  141. package/dist/slider/index.d.ts.map +1 -0
  142. package/dist/ssr/index.d.ts +2 -13
  143. package/dist/ssr/index.d.ts.map +1 -0
  144. package/dist/steplist/createStepListState.d.ts +10 -18
  145. package/dist/steplist/createStepListState.d.ts.map +1 -0
  146. package/dist/steplist/index.d.ts +1 -0
  147. package/dist/steplist/index.d.ts.map +1 -0
  148. package/dist/table/TableCollection.d.ts +1 -0
  149. package/dist/table/TableCollection.d.ts.map +1 -0
  150. package/dist/table/createTableColumnResizeState.d.ts +2 -9
  151. package/dist/table/createTableColumnResizeState.d.ts.map +1 -0
  152. package/dist/table/createTableState.d.ts +3 -6
  153. package/dist/table/createTableState.d.ts.map +1 -0
  154. package/dist/table/createTreeGridState.d.ts +3 -9
  155. package/dist/table/createTreeGridState.d.ts.map +1 -0
  156. package/dist/table/index.d.ts +1 -0
  157. package/dist/table/index.d.ts.map +1 -0
  158. package/dist/table/types.d.ts +37 -3
  159. package/dist/table/types.d.ts.map +1 -0
  160. package/dist/tabs/createTabListState.d.ts +2 -5
  161. package/dist/tabs/createTabListState.d.ts.map +1 -0
  162. package/dist/tabs/index.d.ts +1 -0
  163. package/dist/tabs/index.d.ts.map +1 -0
  164. package/dist/textfield/createTextFieldState.d.ts +1 -0
  165. package/dist/textfield/createTextFieldState.d.ts.map +1 -0
  166. package/dist/textfield/index.d.ts +1 -0
  167. package/dist/textfield/index.d.ts.map +1 -0
  168. package/dist/toast/createToastState.d.ts +2 -5
  169. package/dist/toast/createToastState.d.ts.map +1 -0
  170. package/dist/toast/index.d.ts +1 -0
  171. package/dist/toast/index.d.ts.map +1 -0
  172. package/dist/toggle/createToggleGroupState.d.ts +1 -0
  173. package/dist/toggle/createToggleGroupState.d.ts.map +1 -0
  174. package/dist/toggle/createToggleState.d.ts +1 -0
  175. package/dist/toggle/createToggleState.d.ts.map +1 -0
  176. package/dist/toggle/index.d.ts +1 -0
  177. package/dist/toggle/index.d.ts.map +1 -0
  178. package/dist/tokenfield/TokenFieldValue.d.ts +96 -0
  179. package/dist/tokenfield/TokenFieldValue.d.ts.map +1 -0
  180. package/dist/tokenfield/createTokenFieldState.d.ts +33 -0
  181. package/dist/tokenfield/createTokenFieldState.d.ts.map +1 -0
  182. package/dist/tokenfield/index.d.ts +3 -0
  183. package/dist/tokenfield/index.d.ts.map +1 -0
  184. package/dist/tooltip/createTooltipTriggerState.d.ts +9 -8
  185. package/dist/tooltip/createTooltipTriggerState.d.ts.map +1 -0
  186. package/dist/tooltip/index.d.ts +1 -0
  187. package/dist/tooltip/index.d.ts.map +1 -0
  188. package/dist/tree/TreeCollection.d.ts +1 -0
  189. package/dist/tree/TreeCollection.d.ts.map +1 -0
  190. package/dist/tree/createTreeState.d.ts +3 -8
  191. package/dist/tree/createTreeState.d.ts.map +1 -0
  192. package/dist/tree/index.d.ts +1 -0
  193. package/dist/tree/index.d.ts.map +1 -0
  194. package/dist/tree/types.d.ts +19 -1
  195. package/dist/tree/types.d.ts.map +1 -0
  196. package/dist/utils/index.d.ts +3 -1
  197. package/dist/utils/index.d.ts.map +1 -0
  198. package/dist/utils/owner.d.ts +9 -0
  199. package/dist/utils/owner.d.ts.map +1 -0
  200. package/dist/utils/reactivity.d.ts +24 -0
  201. package/dist/utils/reactivity.d.ts.map +1 -0
  202. package/package.json +21 -9
  203. package/src/autocomplete/createAutocompleteState.ts +18 -4
  204. package/src/calendar/IncompleteDate.ts +15 -1
  205. package/src/calendar/createCalendarState.ts +321 -125
  206. package/src/calendar/createDateFieldState.ts +45 -31
  207. package/src/calendar/createDatePickerState.ts +47 -26
  208. package/src/calendar/createRangeCalendarState.ts +173 -86
  209. package/src/calendar/createTimeFieldState.ts +26 -7
  210. package/src/calendar/intl/index.ts +37 -2
  211. package/src/checkbox/createCheckboxGroupState.ts +45 -13
  212. package/src/collections/ListCollection.ts +31 -0
  213. package/src/collections/createListState.ts +27 -10
  214. package/src/collections/createMenuState.ts +190 -15
  215. package/src/collections/createSelectionState.ts +33 -13
  216. package/src/collections/getChildNodes.ts +20 -3
  217. package/src/collections/index.ts +6 -0
  218. package/src/collections/types.ts +35 -2
  219. package/src/color/Color.ts +61 -22
  220. package/src/color/createColorAreaState.ts +48 -4
  221. package/src/color/createColorFieldState.ts +114 -38
  222. package/src/color/createColorSliderState.ts +61 -9
  223. package/src/color/createColorWheelState.ts +29 -9
  224. package/src/color/getColorChannels.ts +16 -0
  225. package/src/color/index.ts +1 -0
  226. package/src/color/intl/index.ts +38 -3
  227. package/src/color/types.ts +1 -1
  228. package/src/combobox/createComboBoxState.ts +530 -297
  229. package/src/combobox/index.ts +4 -0
  230. package/src/data/createAsyncList.ts +41 -6
  231. package/src/data/createListData.ts +27 -4
  232. package/src/data/createTreeData.ts +30 -6
  233. package/src/disclosure/createDisclosureState.ts +40 -19
  234. package/src/dnd/createDragState.ts +22 -4
  235. package/src/dnd/createDraggableCollectionState.ts +145 -11
  236. package/src/dnd/createDropState.ts +21 -3
  237. package/src/dnd/createDroppableCollectionState.ts +127 -11
  238. package/src/dnd/index.ts +4 -0
  239. package/src/dnd/types.ts +16 -0
  240. package/src/form/createFormValidationState.ts +69 -37
  241. package/src/grid/createGridState.ts +196 -111
  242. package/src/grid/types.ts +22 -1
  243. package/src/index.ts +33 -2
  244. package/src/menu/index.ts +7 -0
  245. package/src/numberfield/createNumberFieldState.ts +247 -98
  246. package/src/overlays/createOverlayTriggerState.ts +31 -4
  247. package/src/private/flags/flags.ts +25 -0
  248. package/src/radio/createRadioGroupState.ts +23 -6
  249. package/src/searchfield/createSearchFieldState.ts +18 -3
  250. package/src/select/createSelectState.ts +317 -130
  251. package/src/select/index.ts +8 -1
  252. package/src/selection/Selection.ts +15 -1
  253. package/src/selection/SelectionManager.ts +17 -1
  254. package/src/selection/createMultipleSelectionState.ts +45 -26
  255. package/src/slider/createSliderState.ts +243 -104
  256. package/src/ssr/index.ts +34 -4
  257. package/src/steplist/createStepListState.ts +184 -130
  258. package/src/table/TableCollection.ts +14 -0
  259. package/src/table/createTableColumnResizeState.ts +71 -14
  260. package/src/table/createTableState.ts +26 -4
  261. package/src/table/createTreeGridState.ts +22 -6
  262. package/src/table/types.ts +38 -5
  263. package/src/tabs/createTabListState.ts +63 -43
  264. package/src/textfield/createTextFieldState.ts +17 -3
  265. package/src/toast/createToastState.ts +28 -3
  266. package/src/toggle/createToggleGroupState.ts +20 -5
  267. package/src/toggle/createToggleState.ts +19 -4
  268. package/src/tokenfield/TokenFieldValue.ts +499 -0
  269. package/src/tokenfield/createTokenFieldState.ts +88 -0
  270. package/src/tokenfield/index.ts +15 -0
  271. package/src/tooltip/createTooltipTriggerState.ts +49 -13
  272. package/src/tree/TreeCollection.ts +14 -0
  273. package/src/tree/createTreeState.ts +70 -36
  274. package/src/tree/types.ts +18 -1
  275. package/src/utils/index.ts +10 -1
  276. package/src/utils/owner.ts +20 -0
  277. package/src/utils/reactivity.ts +53 -1
  278. package/src/autocomplete/createAutocompleteState.d.ts +0 -48
  279. package/src/autocomplete/createAutocompleteState.d.ts.map +0 -1
  280. package/src/autocomplete/index.d.ts +0 -6
  281. package/src/autocomplete/index.d.ts.map +0 -1
  282. package/src/calendar/createCalendarState.d.ts +0 -152
  283. package/src/calendar/createCalendarState.d.ts.map +0 -1
  284. package/src/calendar/createDateFieldState.d.ts +0 -145
  285. package/src/calendar/createDateFieldState.d.ts.map +0 -1
  286. package/src/calendar/createRangeCalendarState.d.ts +0 -171
  287. package/src/calendar/createRangeCalendarState.d.ts.map +0 -1
  288. package/src/calendar/createTimeFieldState.d.ts +0 -97
  289. package/src/calendar/createTimeFieldState.d.ts.map +0 -1
  290. package/src/calendar/index.d.ts +0 -80
  291. package/src/calendar/index.d.ts.map +0 -1
  292. package/src/checkbox/createCheckboxGroupState.d.ts +0 -73
  293. package/src/checkbox/createCheckboxGroupState.d.ts.map +0 -1
  294. package/src/checkbox/index.d.ts +0 -6
  295. package/src/checkbox/index.d.ts.map +0 -1
  296. package/src/collections/ListCollection.d.ts +0 -40
  297. package/src/collections/ListCollection.d.ts.map +0 -1
  298. package/src/collections/createListState.d.ts +0 -94
  299. package/src/collections/createListState.d.ts.map +0 -1
  300. package/src/collections/createMenuState.d.ts +0 -55
  301. package/src/collections/createMenuState.d.ts.map +0 -1
  302. package/src/collections/createSelectionState.d.ts +0 -89
  303. package/src/collections/createSelectionState.d.ts.map +0 -1
  304. package/src/collections/index.d.ts +0 -38
  305. package/src/collections/index.d.ts.map +0 -1
  306. package/src/collections/types.d.ts +0 -147
  307. package/src/collections/types.d.ts.map +0 -1
  308. package/src/color/Color.d.ts +0 -43
  309. package/src/color/Color.d.ts.map +0 -1
  310. package/src/color/createColorAreaState.d.ts +0 -78
  311. package/src/color/createColorAreaState.d.ts.map +0 -1
  312. package/src/color/createColorFieldState.d.ts +0 -57
  313. package/src/color/createColorFieldState.d.ts.map +0 -1
  314. package/src/color/createColorSliderState.d.ts +0 -69
  315. package/src/color/createColorSliderState.d.ts.map +0 -1
  316. package/src/color/createColorWheelState.d.ts +0 -53
  317. package/src/color/createColorWheelState.d.ts.map +0 -1
  318. package/src/color/index.d.ts +0 -39
  319. package/src/color/index.d.ts.map +0 -1
  320. package/src/color/types.d.ts +0 -111
  321. package/src/color/types.d.ts.map +0 -1
  322. package/src/combobox/createComboBoxState.d.ts +0 -127
  323. package/src/combobox/createComboBoxState.d.ts.map +0 -1
  324. package/src/combobox/index.d.ts +0 -13
  325. package/src/combobox/index.d.ts.map +0 -1
  326. package/src/disclosure/createDisclosureState.d.ts +0 -68
  327. package/src/disclosure/createDisclosureState.d.ts.map +0 -1
  328. package/src/disclosure/index.d.ts +0 -10
  329. package/src/disclosure/index.d.ts.map +0 -1
  330. package/src/dnd/createDragState.d.ts +0 -68
  331. package/src/dnd/createDragState.d.ts.map +0 -1
  332. package/src/dnd/createDraggableCollectionState.d.ts +0 -68
  333. package/src/dnd/createDraggableCollectionState.d.ts.map +0 -1
  334. package/src/dnd/createDropState.d.ts +0 -80
  335. package/src/dnd/createDropState.d.ts.map +0 -1
  336. package/src/dnd/createDroppableCollectionState.d.ts +0 -107
  337. package/src/dnd/createDroppableCollectionState.d.ts.map +0 -1
  338. package/src/dnd/index.d.ts +0 -60
  339. package/src/dnd/index.d.ts.map +0 -1
  340. package/src/dnd/types.d.ts +0 -277
  341. package/src/dnd/types.d.ts.map +0 -1
  342. package/src/form/createFormValidationState.d.ts +0 -102
  343. package/src/form/index.d.ts +0 -16
  344. package/src/form/index.d.ts.map +0 -1
  345. package/src/grid/createGridState.d.ts +0 -15
  346. package/src/grid/createGridState.d.ts.map +0 -1
  347. package/src/grid/index.d.ts +0 -7
  348. package/src/grid/index.d.ts.map +0 -1
  349. package/src/grid/types.d.ts +0 -163
  350. package/src/grid/types.d.ts.map +0 -1
  351. package/src/index.d.ts +0 -311
  352. package/src/index.d.ts.map +0 -1
  353. package/src/numberfield/createNumberFieldState.d.ts +0 -67
  354. package/src/numberfield/createNumberFieldState.d.ts.map +0 -1
  355. package/src/numberfield/index.d.ts +0 -6
  356. package/src/numberfield/index.d.ts.map +0 -1
  357. package/src/overlays/createOverlayTriggerState.d.ts +0 -34
  358. package/src/overlays/createOverlayTriggerState.d.ts.map +0 -1
  359. package/src/overlays/index.d.ts +0 -6
  360. package/src/overlays/index.d.ts.map +0 -1
  361. package/src/radio/createRadioGroupState.d.ts +0 -79
  362. package/src/radio/createRadioGroupState.d.ts.map +0 -1
  363. package/src/radio/index.d.ts +0 -7
  364. package/src/radio/index.d.ts.map +0 -1
  365. package/src/searchfield/createSearchFieldState.d.ts +0 -27
  366. package/src/searchfield/createSearchFieldState.d.ts.map +0 -1
  367. package/src/searchfield/index.d.ts +0 -3
  368. package/src/searchfield/index.d.ts.map +0 -1
  369. package/src/select/createSelectState.d.ts +0 -75
  370. package/src/select/createSelectState.d.ts.map +0 -1
  371. package/src/select/index.d.ts +0 -2
  372. package/src/select/index.d.ts.map +0 -1
  373. package/src/slider/createSliderState.d.ts +0 -72
  374. package/src/slider/createSliderState.d.ts.map +0 -1
  375. package/src/slider/index.d.ts +0 -3
  376. package/src/slider/index.d.ts.map +0 -1
  377. package/src/ssr/index.d.ts +0 -28
  378. package/src/ssr/index.d.ts.map +0 -1
  379. package/src/table/TableCollection.d.ts +0 -54
  380. package/src/table/TableCollection.d.ts.map +0 -1
  381. package/src/table/createTableState.d.ts +0 -15
  382. package/src/table/createTableState.d.ts.map +0 -1
  383. package/src/table/index.d.ts +0 -18
  384. package/src/table/index.d.ts.map +0 -1
  385. package/src/table/types.d.ts +0 -145
  386. package/src/table/types.d.ts.map +0 -1
  387. package/src/tabs/createTabListState.d.ts +0 -70
  388. package/src/tabs/createTabListState.d.ts.map +0 -1
  389. package/src/tabs/index.d.ts +0 -8
  390. package/src/tabs/index.d.ts.map +0 -1
  391. package/src/textfield/createTextFieldState.d.ts +0 -32
  392. package/src/textfield/createTextFieldState.d.ts.map +0 -1
  393. package/src/textfield/index.d.ts +0 -6
  394. package/src/textfield/index.d.ts.map +0 -1
  395. package/src/toast/createToastState.d.ts +0 -129
  396. package/src/toast/createToastState.d.ts.map +0 -1
  397. package/src/toast/index.d.ts +0 -12
  398. package/src/toast/index.d.ts.map +0 -1
  399. package/src/toggle/createToggleState.d.ts +0 -34
  400. package/src/toggle/createToggleState.d.ts.map +0 -1
  401. package/src/toggle/index.d.ts +0 -2
  402. package/src/toggle/index.d.ts.map +0 -1
  403. package/src/tooltip/createTooltipTriggerState.d.ts +0 -39
  404. package/src/tooltip/createTooltipTriggerState.d.ts.map +0 -1
  405. package/src/tooltip/index.d.ts +0 -7
  406. package/src/tooltip/index.d.ts.map +0 -1
  407. package/src/tree/TreeCollection.d.ts +0 -43
  408. package/src/tree/TreeCollection.d.ts.map +0 -1
  409. package/src/tree/createTreeState.d.ts +0 -17
  410. package/src/tree/createTreeState.d.ts.map +0 -1
  411. package/src/tree/index.d.ts +0 -13
  412. package/src/tree/index.d.ts.map +0 -1
  413. package/src/tree/types.d.ts +0 -162
  414. package/src/tree/types.d.ts.map +0 -1
  415. package/src/utils/index.d.ts +0 -2
  416. package/src/utils/index.d.ts.map +0 -1
  417. package/src/utils/reactivity.d.ts +0 -28
  418. package/src/utils/reactivity.d.ts.map +0 -1
@@ -1,10 +1,31 @@
1
+ /*
2
+ * Copyright 2020 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/numberfield/useNumberFieldState.ts
14
+
1
15
  /**
2
16
  * State management for NumberField.
3
17
  * Based on @react-stately/numberfield useNumberFieldState.
4
18
  */
5
19
 
6
- import { createSignal, createMemo, type Accessor } from "solid-js";
7
- import { access, type MaybeAccessor } from "../utils";
20
+ import { createMemo } from "solid-js";
21
+ import type { Accessor } from "solid-js";
22
+ import { NumberFormatter, NumberParser } from "@internationalized/number";
23
+ import { access, createInternalSignal, readNow, type MaybeAccessor } from "../utils";
24
+ import {
25
+ createFormValidationState,
26
+ type FormValidationState,
27
+ type ValidationFunction,
28
+ } from "../form";
8
29
 
9
30
  export interface NumberFieldStateProps {
10
31
  /** The current value (controlled). */
@@ -27,12 +48,36 @@ export interface NumberFieldStateProps {
27
48
  locale?: string;
28
49
  /** Number format options. */
29
50
  formatOptions?: Intl.NumberFormatOptions;
51
+ /** Whether the number field is invalid (controlled). */
52
+ isInvalid?: boolean;
53
+ /** @deprecated Use isInvalid instead. */
54
+ validationState?: "valid" | "invalid";
55
+ /** Custom validation function. */
56
+ validate?: ValidationFunction<number>;
57
+ /**
58
+ * Whether to use native HTML form validation or ARIA validation semantics.
59
+ * @default "native"
60
+ */
61
+ validationBehavior?: "aria" | "native";
62
+ /** Field name(s) for server error lookup. */
63
+ name?: string | string[];
64
+ /**
65
+ * Controls the behavior of the number field when the user blurs the field after
66
+ * editing. `'snap'` clamps to min/max and snaps to step. `'validate'` leaves the
67
+ * value and reports native range/step validity.
68
+ *
69
+ * @default "snap"
70
+ */
71
+ commitBehavior?: "snap" | "validate";
30
72
  }
31
73
 
32
- export interface NumberFieldState {
74
+ export interface NumberFieldState extends FormValidationState {
33
75
  /** The current input value as a string. */
34
76
  inputValue: Accessor<string>;
35
- /** The current numeric value. */
77
+ /**
78
+ * The currently parsed number value, or NaN if the input could not be parsed.
79
+ * Updated from the input text as the user types.
80
+ */
36
81
  numberValue: Accessor<number>;
37
82
  /** Whether the value can be incremented. */
38
83
  canIncrement: Accessor<boolean>;
@@ -46,12 +91,18 @@ export interface NumberFieldState {
46
91
  minValue: Accessor<number | undefined>;
47
92
  /** The maximum value. */
48
93
  maxValue: Accessor<number | undefined>;
94
+ /** The configured step, or undefined when the field uses the default step. */
95
+ step: Accessor<number | undefined>;
96
+ /** The default numeric value, used on native form reset. */
97
+ defaultNumberValue: number;
98
+ /** Sets the number value and reformats the input. */
99
+ setNumberValue: (value: number) => void;
49
100
  /** Set the input value. */
50
101
  setInputValue: (value: string) => void;
51
102
  /** Validate a partial input value. */
52
103
  validate: (value: string) => boolean;
53
- /** Commit the current input value. */
54
- commit: () => void;
104
+ /** Commit the current input value, or an override when a paste replaces it. */
105
+ commit: (value?: string) => void;
55
106
  /** Increment the value by step. */
56
107
  increment: () => void;
57
108
  /** Decrement the value by step. */
@@ -94,13 +145,60 @@ function clamp(value: number, min?: number, max?: number): number {
94
145
  }
95
146
 
96
147
  /**
97
- * Snaps a value to the nearest step.
148
+ * Rounds to the decimal precision implied by a step, including exponential steps.
98
149
  */
99
- function snapToStep(value: number, step: number, min?: number): number {
100
- const base = min ?? 0;
101
- const diff = value - base;
102
- const steps = Math.round(diff / step);
103
- return handleDecimalOperation("+", base, steps * step);
150
+ function roundToStepPrecision(value: number, step: number): number {
151
+ let roundedValue = value;
152
+ let precision = 0;
153
+ const stepString = step.toString();
154
+ const eIndex = stepString.toLowerCase().indexOf("e-");
155
+ if (eIndex > 0) {
156
+ precision = Math.abs(Math.floor(Math.log10(Math.abs(step)))) + eIndex;
157
+ } else {
158
+ const pointIndex = stepString.indexOf(".");
159
+ if (pointIndex >= 0) {
160
+ precision = stepString.length - pointIndex;
161
+ }
162
+ }
163
+ if (precision > 0) {
164
+ const pow = Math.pow(10, precision);
165
+ roundedValue = Math.round(roundedValue * pow) / pow;
166
+ }
167
+ return roundedValue;
168
+ }
169
+
170
+ /**
171
+ * Snaps to the nearest step, then to the last in-range step when that exceeds max.
172
+ * A negative halfway rounds away from the step base.
173
+ */
174
+ function snapValueToStep(
175
+ value: number,
176
+ min: number | undefined,
177
+ max: number | undefined,
178
+ step: number,
179
+ ): number {
180
+ const minNumber = Number(min);
181
+ const maxNumber = Number(max);
182
+ const remainder = (value - (isNaN(minNumber) ? 0 : minNumber)) % step;
183
+ let snappedValue = roundToStepPrecision(
184
+ Math.abs(remainder) * 2 >= step
185
+ ? value + Math.sign(remainder) * (step - Math.abs(remainder))
186
+ : value - remainder,
187
+ step,
188
+ );
189
+
190
+ if (!isNaN(minNumber)) {
191
+ if (snappedValue < minNumber) {
192
+ snappedValue = minNumber;
193
+ } else if (!isNaN(maxNumber) && snappedValue > maxNumber) {
194
+ snappedValue =
195
+ minNumber + Math.floor(roundToStepPrecision((maxNumber - minNumber) / step, step)) * step;
196
+ }
197
+ } else if (!isNaN(maxNumber) && snappedValue > maxNumber) {
198
+ snappedValue = Math.floor(roundToStepPrecision(maxNumber / step, step)) * step;
199
+ }
200
+
201
+ return roundToStepPrecision(snappedValue, step);
104
202
  }
105
203
 
106
204
  function isValidStep(step: number | undefined): step is number {
@@ -115,84 +213,86 @@ export function createNumberFieldState(
115
213
  ): NumberFieldState {
116
214
  const getProps = () => access(props);
117
215
 
216
+ // Internal signals
217
+ const [inputValue, setInputValueInternal] = createInternalSignal<string>("");
218
+ const [numberValue, setNumberValue] = createInternalSignal<number>(NaN);
219
+
118
220
  // Get locale and formatter
119
221
  const locale = () => getProps().locale ?? "en-US";
120
222
  const formatOptions = () => getProps().formatOptions ?? {};
121
223
 
122
- // Create number formatter
123
- const formatter = createMemo(() => {
124
- return new Intl.NumberFormat(locale(), formatOptions());
224
+ const numberParser = createMemo(() => {
225
+ return new NumberParser(locale(), formatOptions());
125
226
  });
126
227
 
127
- // Create number parser (simplified - real implementation would be more robust)
128
- const parseNumber = (value: string): number => {
129
- if (!value || value === "" || value === "-") return NaN;
130
-
131
- // Handle locale-specific decimal separators
132
- const opts = formatOptions();
133
- const testNumber = formatter().format(1.1);
134
- const decimalSeparator = testNumber.charAt(1);
135
-
136
- // Normalize the input
137
- let normalized = value;
138
- if (decimalSeparator !== ".") {
139
- normalized = normalized.replace(decimalSeparator, ".");
140
- }
141
-
142
- // Remove grouping separators and currency symbols
143
- normalized = normalized.replace(/[^\d.-]/g, "");
144
-
145
- const parsed = parseFloat(normalized);
146
- if (isNaN(parsed)) return parsed;
228
+ const numberingSystem = createMemo(() => {
229
+ return numberParser().getNumberingSystem(inputValue());
230
+ });
147
231
 
148
- if (opts.style === "percent") {
149
- return parsed / 100;
150
- }
232
+ const formatter = createMemo(() => {
233
+ return new NumberFormatter(locale(), {
234
+ ...formatOptions(),
235
+ numberingSystem: numberingSystem(),
236
+ });
237
+ });
151
238
 
152
- return parsed;
239
+ const parseNumber = (value: string): number => {
240
+ return numberParser().parse(value);
153
241
  };
154
242
 
155
243
  // Format a number to string
156
244
  const formatNumber = (value: number): string => {
157
- if (isNaN(value)) return "";
245
+ if (isNaN(value) || value === null) return "";
158
246
  return formatter().format(value);
159
247
  };
160
248
 
161
249
  // Determine step value
162
250
  const hasCustomStep = createMemo(() => isValidStep(getProps().step));
251
+ const shouldSnap = () => (getProps().commitBehavior ?? "snap") === "snap";
163
252
 
164
253
  const step = createMemo(() => {
165
254
  const p = getProps();
166
255
  if (hasCustomStep()) return p.step as number;
167
- // Default step for percent is 0.01
168
- if (p.formatOptions?.style === "percent") return 0.01;
256
+ const resolved = formatter().resolvedOptions();
257
+ if (resolved.style === "percent") return 0.01;
169
258
  return 1;
170
259
  });
171
260
 
172
- // Internal signals
173
- const [inputValue, setInputValueInternal] = createSignal<string>("");
174
- const [numberValue, setNumberValue] = createSignal<number>(NaN);
175
-
176
261
  const applyConstraints = (value: number): number => {
177
262
  const p = getProps();
178
263
  if (isNaN(value)) return NaN;
179
264
 
180
265
  if (hasCustomStep()) {
181
- return clamp(snapToStep(value, step(), p.minValue), p.minValue, p.maxValue);
266
+ return snapValueToStep(value, p.minValue, p.maxValue, step());
182
267
  }
183
268
 
184
269
  return clamp(value, p.minValue, p.maxValue);
185
270
  };
186
271
 
272
+ let initialNumberValue = NaN;
273
+ let capturedDefaultNumberValue = NaN;
274
+
275
+ const constrainForCommit = (value: number): number => {
276
+ if (!shouldSnap()) return value;
277
+ return applyConstraints(value);
278
+ };
279
+
187
280
  // Initialize from props
188
281
  const initValue = () => {
189
282
  const p = getProps();
190
283
  const initial = p.value ?? p.defaultValue;
191
- if (initial != null) {
192
- const constrained = applyConstraints(initial);
193
- setNumberValue(constrained);
194
- setInputValueInternal(formatNumber(constrained));
284
+ if (initial != null && !isNaN(initial)) {
285
+ const next = constrainForCommit(initial);
286
+ setNumberValue(next);
287
+ setInputValueInternal(formatNumber(next));
288
+ initialNumberValue = next;
289
+ } else {
290
+ initialNumberValue = NaN;
195
291
  }
292
+ const defaultValue = p.defaultValue ?? NaN;
293
+ capturedDefaultNumberValue = isNaN(defaultValue)
294
+ ? initialNumberValue
295
+ : constrainForCommit(defaultValue);
196
296
  };
197
297
 
198
298
  // Call init on first access
@@ -209,7 +309,7 @@ export function createNumberFieldState(
209
309
  ensureInitialized();
210
310
  const p = getProps();
211
311
  if (p.value !== undefined) {
212
- return applyConstraints(p.value);
312
+ return constrainForCommit(p.value);
213
313
  }
214
314
  return numberValue();
215
315
  });
@@ -222,34 +322,45 @@ export function createNumberFieldState(
222
322
  return;
223
323
  }
224
324
 
225
- const constrained = applyConstraints(p.value);
226
- if (lastControlledValue === undefined || !Object.is(lastControlledValue, constrained)) {
227
- lastControlledValue = constrained;
228
- setNumberValue(constrained);
229
- setInputValueInternal(formatNumber(constrained));
325
+ const next = constrainForCommit(p.value);
326
+ if (lastControlledValue === undefined || !Object.is(lastControlledValue, next)) {
327
+ lastControlledValue = next;
328
+ setNumberValue(next);
329
+ setInputValueInternal(formatNumber(next));
230
330
  }
231
331
  };
232
332
 
233
333
  const parsedInputValue = () => {
234
334
  ensureInitialized();
235
335
  syncControlledValue();
236
- return parseNumber(inputValue());
336
+ return parseNumber(readNow(inputValue));
237
337
  };
238
338
 
339
+ const validation = createFormValidationState({
340
+ get value() {
341
+ ensureInitialized();
342
+ return actualNumberValue();
343
+ },
344
+ get isInvalid() {
345
+ return getProps().isInvalid;
346
+ },
347
+ get validationState() {
348
+ return getProps().validationState;
349
+ },
350
+ get validate() {
351
+ return getProps().validate;
352
+ },
353
+ get name() {
354
+ return getProps().name;
355
+ },
356
+ get validationBehavior() {
357
+ return getProps().validationBehavior ?? "native";
358
+ },
359
+ });
360
+
239
361
  // Validate partial input
240
362
  const validate = (value: string): boolean => {
241
- if (value === "" || value === "-") return true;
242
-
243
- // Allow partial decimal input like "1."
244
- const opts = formatOptions();
245
- const testNumber = formatter().format(1.1);
246
- const decimalSeparator = testNumber.charAt(1);
247
-
248
- // Check if it's a valid partial number
249
- const pattern = new RegExp(
250
- `^-?\\d*${decimalSeparator === "." ? "\\." : decimalSeparator}?\\d*$`,
251
- );
252
- return pattern.test(value);
363
+ return numberParser().isValidPartialNumber(value, getProps().minValue, getProps().maxValue);
253
364
  };
254
365
 
255
366
  // Set input value with validation
@@ -259,17 +370,18 @@ export function createNumberFieldState(
259
370
  setInputValueInternal(value);
260
371
  };
261
372
 
262
- // Commit the current input value
263
- const commit = () => {
373
+ // Commit the current input value, or an override when a paste replaces it.
374
+ const commit = (override?: string) => {
264
375
  ensureInitialized();
265
376
  const p = getProps();
266
- const input = inputValue();
377
+ const input = override === undefined ? readNow(inputValue) : override;
267
378
 
268
- if (input === "" || input === "-") {
379
+ if (input === "") {
269
380
  // Clear value
270
381
  setNumberValue(NaN);
271
- setInputValueInternal(p.value === undefined ? "" : formatNumber(actualNumberValue()));
382
+ setInputValueInternal(p.value === undefined ? "" : formatNumber(readNow(actualNumberValue)));
272
383
  p.onChange?.(NaN);
384
+ validation.commitValidation();
273
385
  return;
274
386
  }
275
387
 
@@ -277,18 +389,22 @@ export function createNumberFieldState(
277
389
 
278
390
  if (isNaN(parsed)) {
279
391
  // Invalid input - revert to current value
280
- setInputValueInternal(formatNumber(actualNumberValue()));
392
+ setInputValueInternal(formatNumber(readNow(actualNumberValue)));
281
393
  return;
282
394
  }
283
395
 
284
- // Clamp and optionally snap to custom step.
285
- parsed = applyConstraints(parsed);
396
+ const previous = readNow(actualNumberValue);
397
+ parsed = constrainForCommit(parsed);
398
+ parsed = numberParser().parse(formatNumber(parsed));
286
399
 
287
- // Update state
288
400
  setNumberValue(parsed);
289
- setInputValueInternal(formatNumber(parsed));
401
+ // A controlled field keeps the current number until its value prop updates.
402
+ setInputValueInternal(formatNumber(p.value === undefined ? parsed : previous));
290
403
 
291
404
  p.onChange?.(parsed);
405
+ if (parsed !== previous) {
406
+ validation.commitValidation();
407
+ }
292
408
  };
293
409
 
294
410
  // Check if can increment
@@ -302,7 +418,7 @@ export function createNumberFieldState(
302
418
 
303
419
  if (p.maxValue == null) return true;
304
420
  return (
305
- snapToStep(current, step(), p.minValue) > current ||
421
+ snapValueToStep(current, p.minValue, p.maxValue, step()) > current ||
306
422
  handleDecimalOperation("+", current, step()) <= p.maxValue
307
423
  );
308
424
  });
@@ -318,7 +434,7 @@ export function createNumberFieldState(
318
434
 
319
435
  if (p.minValue == null) return true;
320
436
  return (
321
- snapToStep(current, step(), p.minValue) < current ||
437
+ snapValueToStep(current, p.minValue, p.maxValue, step()) < current ||
322
438
  handleDecimalOperation("-", current, step()) >= p.minValue
323
439
  );
324
440
  });
@@ -329,16 +445,31 @@ export function createNumberFieldState(
329
445
 
330
446
  if (isNaN(parsed)) {
331
447
  const base = isNaN(minOrMaxValue) ? 0 : minOrMaxValue;
332
- return clamp(snapToStep(base, step(), p.minValue), p.minValue, p.maxValue);
448
+ return snapValueToStep(base, p.minValue, p.maxValue, step());
333
449
  }
334
450
 
335
- const snapped = snapToStep(parsed, step(), p.minValue);
451
+ const snapped = snapValueToStep(parsed, p.minValue, p.maxValue, step());
336
452
  if ((operation === "+" && snapped > parsed) || (operation === "-" && snapped < parsed)) {
337
- return clamp(snapped, p.minValue, p.maxValue);
453
+ return snapped;
338
454
  }
339
455
 
340
- const next = handleDecimalOperation(operation, parsed, step());
341
- return clamp(snapToStep(next, step(), p.minValue), p.minValue, p.maxValue);
456
+ return snapValueToStep(
457
+ handleDecimalOperation(operation, parsed, step()),
458
+ p.minValue,
459
+ p.maxValue,
460
+ step(),
461
+ );
462
+ };
463
+
464
+ // Pin reformats the text when the committed number changes. A controlled
465
+ // step leaves the text alone until `value` updates, unless the step lands
466
+ // on that same number and has to replace what the user typed.
467
+ const commitSteppedNumber = (next: number, refreshWhenUnchanged: boolean) => {
468
+ const committed = readNow(actualNumberValue);
469
+ setNumberValue(next);
470
+ if (getProps().value === undefined || (refreshWhenUnchanged && next === committed)) {
471
+ setInputValueInternal(formatNumber(next));
472
+ }
342
473
  };
343
474
 
344
475
  // Increment by step
@@ -349,9 +480,9 @@ export function createNumberFieldState(
349
480
  if (p.isDisabled || p.isReadOnly) return;
350
481
 
351
482
  const current = safeNextStep("+", p.minValue);
352
- setNumberValue(current);
353
- setInputValueInternal(formatNumber(current));
483
+ commitSteppedNumber(current, true);
354
484
  p.onChange?.(current);
485
+ validation.commitValidation();
355
486
  };
356
487
 
357
488
  // Decrement by step
@@ -362,9 +493,9 @@ export function createNumberFieldState(
362
493
  if (p.isDisabled || p.isReadOnly) return;
363
494
 
364
495
  const current = safeNextStep("-", p.maxValue);
365
- setNumberValue(current);
366
- setInputValueInternal(formatNumber(current));
496
+ commitSteppedNumber(current, true);
367
497
  p.onChange?.(current);
498
+ validation.commitValidation();
368
499
  };
369
500
 
370
501
  // Set to max
@@ -376,13 +507,13 @@ export function createNumberFieldState(
376
507
 
377
508
  if (p.maxValue == null) return;
378
509
 
379
- const snapped = snapToStep(p.maxValue, step(), p.minValue);
380
- setNumberValue(snapped);
381
- setInputValueInternal(formatNumber(snapped));
510
+ const snapped = snapValueToStep(p.maxValue, p.minValue, p.maxValue, step());
511
+ commitSteppedNumber(snapped, false);
382
512
  p.onChange?.(snapped);
513
+ validation.commitValidation();
383
514
  };
384
515
 
385
- // Set to min
516
+ // Set to min. Pin sets the raw minimum, not a snapped step.
386
517
  const decrementToMin = () => {
387
518
  ensureInitialized();
388
519
  syncControlledValue();
@@ -391,19 +522,31 @@ export function createNumberFieldState(
391
522
 
392
523
  if (p.minValue == null) return;
393
524
 
394
- setNumberValue(p.minValue);
395
- setInputValueInternal(formatNumber(p.minValue));
525
+ commitSteppedNumber(p.minValue, false);
396
526
  p.onChange?.(p.minValue);
527
+ validation.commitValidation();
528
+ };
529
+
530
+ const setNumberValuePublic = (value: number) => {
531
+ ensureInitialized();
532
+ commitSteppedNumber(value, false);
533
+ getProps().onChange?.(value);
397
534
  };
398
535
 
399
536
  return {
537
+ realtimeValidation: validation.realtimeValidation,
538
+ displayValidation: validation.displayValidation,
539
+ updateValidation: validation.updateValidation,
540
+ resetValidation: validation.resetValidation,
541
+ commitValidation: validation.commitValidation,
400
542
  get inputValue() {
401
543
  ensureInitialized();
402
544
  syncControlledValue();
403
545
  return inputValue;
404
546
  },
547
+ // Parsed text. Form validation reads the committed number separately.
405
548
  get numberValue() {
406
- return actualNumberValue;
549
+ return parsedInputValue;
407
550
  },
408
551
  canIncrement,
409
552
  canDecrement,
@@ -411,6 +554,12 @@ export function createNumberFieldState(
411
554
  isReadOnly: () => getProps().isReadOnly ?? false,
412
555
  minValue: () => getProps().minValue,
413
556
  maxValue: () => getProps().maxValue,
557
+ step: () => getProps().step,
558
+ get defaultNumberValue() {
559
+ ensureInitialized();
560
+ return capturedDefaultNumberValue;
561
+ },
562
+ setNumberValue: setNumberValuePublic,
414
563
  setInputValue,
415
564
  validate,
416
565
  commit,
@@ -1,10 +1,24 @@
1
+ /*
2
+ * Copyright 2020 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/overlays/useOverlayTriggerState.ts
14
+
1
15
  /**
2
16
  * Manages state for an overlay trigger.
3
17
  * Based on @react-stately/overlays useOverlayTriggerState.
4
18
  */
5
19
 
6
- import { createSignal, type Accessor } from "solid-js";
7
- import { access, type MaybeAccessor } from "../utils";
20
+ import type { Accessor } from "solid-js";
21
+ import { access, createInternalSignal, readNow, type MaybeAccessor } from "../utils";
8
22
 
9
23
  export interface OverlayTriggerProps {
10
24
  /** Whether the overlay is open by default (uncontrolled). */
@@ -26,6 +40,10 @@ export interface OverlayTriggerState {
26
40
  close(): void;
27
41
  /** Toggles the overlay's visibility. */
28
42
  toggle(): void;
43
+ /** Cursor position relative to the window viewport. */
44
+ readonly point: Accessor<{ x: number; y: number } | null>;
45
+ /** Sets the cursor position relative to the window viewport. */
46
+ setPoint(point: { x: number; y: number }): void;
29
47
  }
30
48
 
31
49
  /**
@@ -37,7 +55,10 @@ export function createOverlayTriggerState(
37
55
  ): OverlayTriggerState {
38
56
  const propsAccessor = () => access(props);
39
57
 
40
- const [internalOpen, setInternalOpen] = createSignal(propsAccessor().defaultOpen ?? false);
58
+ const [internalOpen, setInternalOpen] = createInternalSignal(
59
+ propsAccessor().defaultOpen ?? false,
60
+ );
61
+ const [point, setPoint] = createInternalSignal<{ x: number; y: number } | null>(null);
41
62
 
42
63
  const isOpen: Accessor<boolean> = () => {
43
64
  const p = propsAccessor();
@@ -54,7 +75,11 @@ export function createOverlayTriggerState(
54
75
 
55
76
  const open = () => setOpen(true);
56
77
  const close = () => setOpen(false);
57
- const toggle = () => setOpen(!isOpen());
78
+ const toggle = () => {
79
+ const p = propsAccessor();
80
+ const open = p.isOpen !== undefined ? p.isOpen : readNow(internalOpen);
81
+ setOpen(!open);
82
+ };
58
83
 
59
84
  return {
60
85
  isOpen,
@@ -62,5 +87,7 @@ export function createOverlayTriggerState(
62
87
  open,
63
88
  close,
64
89
  toggle,
90
+ point,
91
+ setPoint,
65
92
  };
66
93
  }
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Copyright 2023 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/flags/flags.ts
14
+
15
+ let shadowDOMEnabled = false;
16
+
17
+ /** Enables React Stately's opt-in Shadow DOM behavior across the port stack. */
18
+ export function enableShadowDOM(): void {
19
+ shadowDOMEnabled = true;
20
+ }
21
+
22
+ /** Returns whether opt-in Shadow DOM behavior is enabled. */
23
+ export function shadowDOM(): boolean {
24
+ return shadowDOMEnabled;
25
+ }