@proyecto-viviana/solid-stately 0.5.1 → 0.6.0-rc.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 (414) hide show
  1. package/LICENSE-APACHE-2.0 +201 -0
  2. package/NOTICE +91 -0
  3. package/dist/autocomplete/createAutocompleteState.d.ts +2 -1
  4. package/dist/autocomplete/createAutocompleteState.d.ts.map +1 -0
  5. package/dist/autocomplete/index.d.ts +1 -0
  6. package/dist/autocomplete/index.d.ts.map +1 -0
  7. package/dist/calendar/IncompleteDate.d.ts +2 -1
  8. package/dist/calendar/IncompleteDate.d.ts.map +1 -0
  9. package/dist/calendar/createCalendarState.d.ts +7 -8
  10. package/dist/calendar/createCalendarState.d.ts.map +1 -0
  11. package/dist/calendar/createDateFieldState.d.ts +4 -20
  12. package/dist/calendar/createDateFieldState.d.ts.map +1 -0
  13. package/dist/calendar/createDatePickerState.d.ts +2 -7
  14. package/dist/calendar/createDatePickerState.d.ts.map +1 -0
  15. package/dist/calendar/createRangeCalendarState.d.ts +7 -7
  16. package/dist/calendar/createRangeCalendarState.d.ts.map +1 -0
  17. package/dist/calendar/createTimeFieldState.d.ts +4 -23
  18. package/dist/calendar/createTimeFieldState.d.ts.map +1 -0
  19. package/dist/calendar/index.d.ts +1 -0
  20. package/dist/calendar/index.d.ts.map +1 -0
  21. package/dist/calendar/intl/index.d.ts +1 -0
  22. package/dist/calendar/intl/index.d.ts.map +1 -0
  23. package/dist/checkbox/createCheckboxGroupState.d.ts +1 -0
  24. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -0
  25. package/dist/checkbox/index.d.ts +1 -0
  26. package/dist/checkbox/index.d.ts.map +1 -0
  27. package/dist/collections/ListCollection.d.ts +5 -0
  28. package/dist/collections/ListCollection.d.ts.map +1 -0
  29. package/dist/collections/createListState.d.ts +2 -6
  30. package/dist/collections/createListState.d.ts.map +1 -0
  31. package/dist/collections/createMenuState.d.ts +30 -13
  32. package/dist/collections/createMenuState.d.ts.map +1 -0
  33. package/dist/collections/createSelectionState.d.ts +2 -5
  34. package/dist/collections/createSelectionState.d.ts.map +1 -0
  35. package/dist/collections/getChildNodes.d.ts +6 -3
  36. package/dist/collections/getChildNodes.d.ts.map +1 -0
  37. package/dist/collections/index.d.ts +2 -1
  38. package/dist/collections/index.d.ts.map +1 -0
  39. package/dist/collections/types.d.ts +36 -2
  40. package/dist/collections/types.d.ts.map +1 -0
  41. package/dist/color/Color.d.ts +7 -1
  42. package/dist/color/Color.d.ts.map +1 -0
  43. package/dist/color/createColorAreaState.d.ts +2 -5
  44. package/dist/color/createColorAreaState.d.ts.map +1 -0
  45. package/dist/color/createColorFieldState.d.ts +2 -5
  46. package/dist/color/createColorFieldState.d.ts.map +1 -0
  47. package/dist/color/createColorSliderState.d.ts +2 -5
  48. package/dist/color/createColorSliderState.d.ts.map +1 -0
  49. package/dist/color/createColorWheelState.d.ts +2 -5
  50. package/dist/color/createColorWheelState.d.ts.map +1 -0
  51. package/dist/color/getColorChannels.d.ts +3 -0
  52. package/dist/color/getColorChannels.d.ts.map +1 -0
  53. package/dist/color/index.d.ts +2 -1
  54. package/dist/color/index.d.ts.map +1 -0
  55. package/dist/color/intl/index.d.ts +1 -0
  56. package/dist/color/intl/index.d.ts.map +1 -0
  57. package/dist/color/types.d.ts +2 -1
  58. package/dist/color/types.d.ts.map +1 -0
  59. package/dist/combobox/createComboBoxState.d.ts +4 -8
  60. package/dist/combobox/createComboBoxState.d.ts.map +1 -0
  61. package/dist/combobox/index.d.ts +1 -0
  62. package/dist/combobox/index.d.ts.map +1 -0
  63. package/dist/data/createAsyncList.d.ts +1 -7
  64. package/dist/data/createAsyncList.d.ts.map +1 -0
  65. package/dist/data/createListData.d.ts +1 -6
  66. package/dist/data/createListData.d.ts.map +1 -0
  67. package/dist/data/createTreeData.d.ts +1 -6
  68. package/dist/data/createTreeData.d.ts.map +1 -0
  69. package/dist/data/index.d.ts +1 -0
  70. package/dist/data/index.d.ts.map +1 -0
  71. package/dist/datepicker/index.d.ts +1 -0
  72. package/dist/datepicker/index.d.ts.map +1 -0
  73. package/dist/disclosure/createDisclosureState.d.ts +2 -5
  74. package/dist/disclosure/createDisclosureState.d.ts.map +1 -0
  75. package/dist/disclosure/index.d.ts +1 -0
  76. package/dist/disclosure/index.d.ts.map +1 -0
  77. package/dist/dnd/createDragState.d.ts +2 -6
  78. package/dist/dnd/createDragState.d.ts.map +1 -0
  79. package/dist/dnd/createDraggableCollectionState.d.ts +39 -10
  80. package/dist/dnd/createDraggableCollectionState.d.ts.map +1 -0
  81. package/dist/dnd/createDropState.d.ts +2 -6
  82. package/dist/dnd/createDropState.d.ts.map +1 -0
  83. package/dist/dnd/createDroppableCollectionState.d.ts +28 -11
  84. package/dist/dnd/createDroppableCollectionState.d.ts.map +1 -0
  85. package/dist/dnd/index.d.ts +3 -2
  86. package/dist/dnd/index.d.ts.map +1 -0
  87. package/dist/dnd/types.d.ts +17 -0
  88. package/dist/dnd/types.d.ts.map +1 -0
  89. package/dist/flags/flags.d.ts +5 -0
  90. package/dist/flags/flags.d.ts.map +1 -0
  91. package/dist/form/createFormValidationState.d.ts +2 -9
  92. package/{src → dist}/form/createFormValidationState.d.ts.map +1 -1
  93. package/dist/form/index.d.ts +1 -0
  94. package/dist/form/index.d.ts.map +1 -0
  95. package/dist/grid/createGridState.d.ts +3 -2
  96. package/dist/grid/createGridState.d.ts.map +1 -0
  97. package/dist/grid/index.d.ts +1 -0
  98. package/dist/grid/index.d.ts.map +1 -0
  99. package/dist/grid/types.d.ts +23 -1
  100. package/dist/grid/types.d.ts.map +1 -0
  101. package/dist/index.d.ts +4 -2
  102. package/dist/index.d.ts.map +1 -0
  103. package/dist/index.js +2030 -593
  104. package/dist/index.js.map +1 -1
  105. package/dist/menu/index.d.ts +2 -1
  106. package/dist/menu/index.d.ts.map +1 -0
  107. package/dist/numberfield/createNumberFieldState.d.ts +31 -6
  108. package/dist/numberfield/createNumberFieldState.d.ts.map +1 -0
  109. package/dist/numberfield/index.d.ts +1 -0
  110. package/dist/numberfield/index.d.ts.map +1 -0
  111. package/dist/overlays/createOverlayTriggerState.d.ts +12 -1
  112. package/dist/overlays/createOverlayTriggerState.d.ts.map +1 -0
  113. package/dist/overlays/index.d.ts +1 -0
  114. package/dist/overlays/index.d.ts.map +1 -0
  115. package/dist/private/flags/flags.js +26 -0
  116. package/dist/private/flags/flags.js.map +1 -0
  117. package/dist/radio/createRadioGroupState.d.ts +1 -0
  118. package/dist/radio/createRadioGroupState.d.ts.map +1 -0
  119. package/dist/radio/index.d.ts +1 -0
  120. package/dist/radio/index.d.ts.map +1 -0
  121. package/dist/searchfield/createSearchFieldState.d.ts +2 -5
  122. package/dist/searchfield/createSearchFieldState.d.ts.map +1 -0
  123. package/dist/searchfield/index.d.ts +1 -0
  124. package/dist/searchfield/index.d.ts.map +1 -0
  125. package/dist/select/createSelectState.d.ts +17 -6
  126. package/dist/select/createSelectState.d.ts.map +1 -0
  127. package/dist/select/index.d.ts +1 -0
  128. package/dist/select/index.d.ts.map +1 -0
  129. package/dist/selection/Selection.d.ts +2 -1
  130. package/dist/selection/Selection.d.ts.map +1 -0
  131. package/dist/selection/SelectionManager.d.ts +1 -19
  132. package/dist/selection/SelectionManager.d.ts.map +1 -0
  133. package/dist/selection/createMultipleSelectionState.d.ts +2 -13
  134. package/dist/selection/createMultipleSelectionState.d.ts.map +1 -0
  135. package/dist/selection/index.d.ts +1 -0
  136. package/dist/selection/index.d.ts.map +1 -0
  137. package/dist/slider/createSliderState.d.ts +2 -5
  138. package/dist/slider/createSliderState.d.ts.map +1 -0
  139. package/dist/slider/index.d.ts +1 -0
  140. package/dist/slider/index.d.ts.map +1 -0
  141. package/dist/ssr/index.d.ts +2 -7
  142. package/dist/ssr/index.d.ts.map +1 -0
  143. package/dist/steplist/createStepListState.d.ts +2 -5
  144. package/dist/steplist/createStepListState.d.ts.map +1 -0
  145. package/dist/steplist/index.d.ts +1 -0
  146. package/dist/steplist/index.d.ts.map +1 -0
  147. package/dist/table/TableCollection.d.ts +1 -0
  148. package/dist/table/TableCollection.d.ts.map +1 -0
  149. package/dist/table/createTableColumnResizeState.d.ts +2 -9
  150. package/dist/table/createTableColumnResizeState.d.ts.map +1 -0
  151. package/dist/table/createTableState.d.ts +2 -5
  152. package/dist/table/createTableState.d.ts.map +1 -0
  153. package/dist/table/createTreeGridState.d.ts +2 -8
  154. package/dist/table/createTreeGridState.d.ts.map +1 -0
  155. package/dist/table/index.d.ts +1 -0
  156. package/dist/table/index.d.ts.map +1 -0
  157. package/dist/table/types.d.ts +35 -1
  158. package/dist/table/types.d.ts.map +1 -0
  159. package/dist/tabs/createTabListState.d.ts +2 -5
  160. package/dist/tabs/createTabListState.d.ts.map +1 -0
  161. package/dist/tabs/index.d.ts +1 -0
  162. package/dist/tabs/index.d.ts.map +1 -0
  163. package/dist/textfield/createTextFieldState.d.ts +1 -0
  164. package/dist/textfield/createTextFieldState.d.ts.map +1 -0
  165. package/dist/textfield/index.d.ts +1 -0
  166. package/dist/textfield/index.d.ts.map +1 -0
  167. package/dist/toast/createToastState.d.ts +2 -5
  168. package/dist/toast/createToastState.d.ts.map +1 -0
  169. package/dist/toast/index.d.ts +1 -0
  170. package/dist/toast/index.d.ts.map +1 -0
  171. package/dist/toggle/createToggleGroupState.d.ts +1 -0
  172. package/dist/toggle/createToggleGroupState.d.ts.map +1 -0
  173. package/dist/toggle/createToggleState.d.ts +1 -0
  174. package/dist/toggle/createToggleState.d.ts.map +1 -0
  175. package/dist/toggle/index.d.ts +1 -0
  176. package/dist/toggle/index.d.ts.map +1 -0
  177. package/dist/tokenfield/TokenFieldValue.d.ts +72 -0
  178. package/dist/tokenfield/TokenFieldValue.d.ts.map +1 -0
  179. package/dist/tokenfield/createTokenFieldState.d.ts +33 -0
  180. package/dist/tokenfield/createTokenFieldState.d.ts.map +1 -0
  181. package/dist/tokenfield/index.d.ts +3 -0
  182. package/dist/tokenfield/index.d.ts.map +1 -0
  183. package/dist/tooltip/createTooltipTriggerState.d.ts +9 -8
  184. package/dist/tooltip/createTooltipTriggerState.d.ts.map +1 -0
  185. package/dist/tooltip/index.d.ts +1 -0
  186. package/dist/tooltip/index.d.ts.map +1 -0
  187. package/dist/tree/TreeCollection.d.ts +1 -0
  188. package/dist/tree/TreeCollection.d.ts.map +1 -0
  189. package/dist/tree/createTreeState.d.ts +2 -7
  190. package/{src → dist}/tree/createTreeState.d.ts.map +1 -1
  191. package/dist/tree/index.d.ts +1 -0
  192. package/dist/tree/index.d.ts.map +1 -0
  193. package/dist/tree/types.d.ts +19 -1
  194. package/dist/tree/types.d.ts.map +1 -0
  195. package/dist/utils/index.d.ts +3 -1
  196. package/dist/utils/index.d.ts.map +1 -0
  197. package/dist/utils/owner.d.ts +9 -0
  198. package/dist/utils/owner.d.ts.map +1 -0
  199. package/dist/utils/reactivity.d.ts +19 -0
  200. package/dist/utils/reactivity.d.ts.map +1 -0
  201. package/package.json +21 -9
  202. package/src/autocomplete/createAutocompleteState.ts +18 -4
  203. package/src/calendar/IncompleteDate.ts +15 -1
  204. package/src/calendar/createCalendarState.ts +194 -79
  205. package/src/calendar/createDateFieldState.ts +45 -31
  206. package/src/calendar/createDatePickerState.ts +32 -14
  207. package/src/calendar/createRangeCalendarState.ts +134 -73
  208. package/src/calendar/createTimeFieldState.ts +25 -6
  209. package/src/calendar/intl/index.ts +37 -2
  210. package/src/checkbox/createCheckboxGroupState.ts +29 -13
  211. package/src/collections/ListCollection.ts +31 -0
  212. package/src/collections/createListState.ts +23 -6
  213. package/src/collections/createMenuState.ts +59 -14
  214. package/src/collections/createSelectionState.ts +32 -12
  215. package/src/collections/getChildNodes.ts +20 -3
  216. package/src/collections/index.ts +2 -0
  217. package/src/collections/types.ts +35 -2
  218. package/src/color/Color.ts +61 -22
  219. package/src/color/createColorAreaState.ts +29 -4
  220. package/src/color/createColorFieldState.ts +37 -11
  221. package/src/color/createColorSliderState.ts +36 -7
  222. package/src/color/createColorWheelState.ts +20 -4
  223. package/src/color/getColorChannels.ts +16 -0
  224. package/src/color/index.ts +1 -0
  225. package/src/color/intl/index.ts +38 -3
  226. package/src/color/types.ts +1 -1
  227. package/src/combobox/createComboBoxState.ts +178 -195
  228. package/src/data/createAsyncList.ts +22 -2
  229. package/src/data/createListData.ts +19 -2
  230. package/src/data/createTreeData.ts +19 -3
  231. package/src/disclosure/createDisclosureState.ts +40 -19
  232. package/src/dnd/createDragState.ts +22 -4
  233. package/src/dnd/createDraggableCollectionState.ts +137 -10
  234. package/src/dnd/createDropState.ts +21 -3
  235. package/src/dnd/createDroppableCollectionState.ts +117 -11
  236. package/src/dnd/index.ts +4 -0
  237. package/src/dnd/types.ts +16 -0
  238. package/src/flags/flags.ts +25 -0
  239. package/src/form/createFormValidationState.ts +54 -36
  240. package/src/grid/createGridState.ts +187 -109
  241. package/src/grid/types.ts +22 -1
  242. package/src/index.ts +15 -0
  243. package/src/menu/index.ts +2 -0
  244. package/src/numberfield/createNumberFieldState.ts +153 -66
  245. package/src/overlays/createOverlayTriggerState.ts +31 -4
  246. package/src/radio/createRadioGroupState.ts +19 -5
  247. package/src/searchfield/createSearchFieldState.ts +18 -3
  248. package/src/select/createSelectState.ts +73 -8
  249. package/src/selection/Selection.ts +15 -1
  250. package/src/selection/SelectionManager.ts +14 -0
  251. package/src/selection/createMultipleSelectionState.ts +44 -25
  252. package/src/slider/createSliderState.ts +20 -5
  253. package/src/ssr/index.ts +27 -4
  254. package/src/steplist/createStepListState.ts +38 -17
  255. package/src/table/TableCollection.ts +14 -0
  256. package/src/table/createTableColumnResizeState.ts +20 -3
  257. package/src/table/createTableState.ts +22 -1
  258. package/src/table/createTreeGridState.ts +21 -4
  259. package/src/table/types.ts +36 -3
  260. package/src/tabs/createTabListState.ts +77 -34
  261. package/src/textfield/createTextFieldState.ts +17 -3
  262. package/src/toast/createToastState.ts +28 -3
  263. package/src/toggle/createToggleGroupState.ts +20 -5
  264. package/src/toggle/createToggleState.ts +19 -4
  265. package/src/tokenfield/TokenFieldValue.ts +440 -0
  266. package/src/tokenfield/createTokenFieldState.ts +88 -0
  267. package/src/tokenfield/index.ts +14 -0
  268. package/src/tooltip/createTooltipTriggerState.ts +49 -13
  269. package/src/tree/TreeCollection.ts +14 -0
  270. package/src/tree/createTreeState.ts +62 -35
  271. package/src/tree/types.ts +18 -1
  272. package/src/utils/index.ts +9 -1
  273. package/src/utils/owner.ts +20 -0
  274. package/src/utils/reactivity.ts +45 -1
  275. package/src/autocomplete/createAutocompleteState.d.ts +0 -48
  276. package/src/autocomplete/createAutocompleteState.d.ts.map +0 -1
  277. package/src/autocomplete/index.d.ts +0 -6
  278. package/src/autocomplete/index.d.ts.map +0 -1
  279. package/src/calendar/createCalendarState.d.ts +0 -152
  280. package/src/calendar/createCalendarState.d.ts.map +0 -1
  281. package/src/calendar/createDateFieldState.d.ts +0 -145
  282. package/src/calendar/createDateFieldState.d.ts.map +0 -1
  283. package/src/calendar/createRangeCalendarState.d.ts +0 -171
  284. package/src/calendar/createRangeCalendarState.d.ts.map +0 -1
  285. package/src/calendar/createTimeFieldState.d.ts +0 -97
  286. package/src/calendar/createTimeFieldState.d.ts.map +0 -1
  287. package/src/calendar/index.d.ts +0 -80
  288. package/src/calendar/index.d.ts.map +0 -1
  289. package/src/checkbox/createCheckboxGroupState.d.ts +0 -73
  290. package/src/checkbox/createCheckboxGroupState.d.ts.map +0 -1
  291. package/src/checkbox/index.d.ts +0 -6
  292. package/src/checkbox/index.d.ts.map +0 -1
  293. package/src/collections/ListCollection.d.ts +0 -40
  294. package/src/collections/ListCollection.d.ts.map +0 -1
  295. package/src/collections/createListState.d.ts +0 -94
  296. package/src/collections/createListState.d.ts.map +0 -1
  297. package/src/collections/createMenuState.d.ts +0 -55
  298. package/src/collections/createMenuState.d.ts.map +0 -1
  299. package/src/collections/createSelectionState.d.ts +0 -89
  300. package/src/collections/createSelectionState.d.ts.map +0 -1
  301. package/src/collections/index.d.ts +0 -38
  302. package/src/collections/index.d.ts.map +0 -1
  303. package/src/collections/types.d.ts +0 -147
  304. package/src/collections/types.d.ts.map +0 -1
  305. package/src/color/Color.d.ts +0 -43
  306. package/src/color/Color.d.ts.map +0 -1
  307. package/src/color/createColorAreaState.d.ts +0 -78
  308. package/src/color/createColorAreaState.d.ts.map +0 -1
  309. package/src/color/createColorFieldState.d.ts +0 -57
  310. package/src/color/createColorFieldState.d.ts.map +0 -1
  311. package/src/color/createColorSliderState.d.ts +0 -69
  312. package/src/color/createColorSliderState.d.ts.map +0 -1
  313. package/src/color/createColorWheelState.d.ts +0 -53
  314. package/src/color/createColorWheelState.d.ts.map +0 -1
  315. package/src/color/index.d.ts +0 -39
  316. package/src/color/index.d.ts.map +0 -1
  317. package/src/color/types.d.ts +0 -111
  318. package/src/color/types.d.ts.map +0 -1
  319. package/src/combobox/createComboBoxState.d.ts +0 -127
  320. package/src/combobox/createComboBoxState.d.ts.map +0 -1
  321. package/src/combobox/index.d.ts +0 -13
  322. package/src/combobox/index.d.ts.map +0 -1
  323. package/src/disclosure/createDisclosureState.d.ts +0 -68
  324. package/src/disclosure/createDisclosureState.d.ts.map +0 -1
  325. package/src/disclosure/index.d.ts +0 -10
  326. package/src/disclosure/index.d.ts.map +0 -1
  327. package/src/dnd/createDragState.d.ts +0 -68
  328. package/src/dnd/createDragState.d.ts.map +0 -1
  329. package/src/dnd/createDraggableCollectionState.d.ts +0 -68
  330. package/src/dnd/createDraggableCollectionState.d.ts.map +0 -1
  331. package/src/dnd/createDropState.d.ts +0 -80
  332. package/src/dnd/createDropState.d.ts.map +0 -1
  333. package/src/dnd/createDroppableCollectionState.d.ts +0 -107
  334. package/src/dnd/createDroppableCollectionState.d.ts.map +0 -1
  335. package/src/dnd/index.d.ts +0 -60
  336. package/src/dnd/index.d.ts.map +0 -1
  337. package/src/dnd/types.d.ts +0 -277
  338. package/src/dnd/types.d.ts.map +0 -1
  339. package/src/form/createFormValidationState.d.ts +0 -102
  340. package/src/form/index.d.ts +0 -16
  341. package/src/form/index.d.ts.map +0 -1
  342. package/src/grid/createGridState.d.ts +0 -15
  343. package/src/grid/createGridState.d.ts.map +0 -1
  344. package/src/grid/index.d.ts +0 -7
  345. package/src/grid/index.d.ts.map +0 -1
  346. package/src/grid/types.d.ts +0 -163
  347. package/src/grid/types.d.ts.map +0 -1
  348. package/src/index.d.ts +0 -311
  349. package/src/index.d.ts.map +0 -1
  350. package/src/numberfield/createNumberFieldState.d.ts +0 -67
  351. package/src/numberfield/createNumberFieldState.d.ts.map +0 -1
  352. package/src/numberfield/index.d.ts +0 -6
  353. package/src/numberfield/index.d.ts.map +0 -1
  354. package/src/overlays/createOverlayTriggerState.d.ts +0 -34
  355. package/src/overlays/createOverlayTriggerState.d.ts.map +0 -1
  356. package/src/overlays/index.d.ts +0 -6
  357. package/src/overlays/index.d.ts.map +0 -1
  358. package/src/radio/createRadioGroupState.d.ts +0 -79
  359. package/src/radio/createRadioGroupState.d.ts.map +0 -1
  360. package/src/radio/index.d.ts +0 -7
  361. package/src/radio/index.d.ts.map +0 -1
  362. package/src/searchfield/createSearchFieldState.d.ts +0 -27
  363. package/src/searchfield/createSearchFieldState.d.ts.map +0 -1
  364. package/src/searchfield/index.d.ts +0 -3
  365. package/src/searchfield/index.d.ts.map +0 -1
  366. package/src/select/createSelectState.d.ts +0 -75
  367. package/src/select/createSelectState.d.ts.map +0 -1
  368. package/src/select/index.d.ts +0 -2
  369. package/src/select/index.d.ts.map +0 -1
  370. package/src/slider/createSliderState.d.ts +0 -72
  371. package/src/slider/createSliderState.d.ts.map +0 -1
  372. package/src/slider/index.d.ts +0 -3
  373. package/src/slider/index.d.ts.map +0 -1
  374. package/src/ssr/index.d.ts +0 -28
  375. package/src/ssr/index.d.ts.map +0 -1
  376. package/src/table/TableCollection.d.ts +0 -54
  377. package/src/table/TableCollection.d.ts.map +0 -1
  378. package/src/table/createTableState.d.ts +0 -15
  379. package/src/table/createTableState.d.ts.map +0 -1
  380. package/src/table/index.d.ts +0 -18
  381. package/src/table/index.d.ts.map +0 -1
  382. package/src/table/types.d.ts +0 -145
  383. package/src/table/types.d.ts.map +0 -1
  384. package/src/tabs/createTabListState.d.ts +0 -70
  385. package/src/tabs/createTabListState.d.ts.map +0 -1
  386. package/src/tabs/index.d.ts +0 -8
  387. package/src/tabs/index.d.ts.map +0 -1
  388. package/src/textfield/createTextFieldState.d.ts +0 -32
  389. package/src/textfield/createTextFieldState.d.ts.map +0 -1
  390. package/src/textfield/index.d.ts +0 -6
  391. package/src/textfield/index.d.ts.map +0 -1
  392. package/src/toast/createToastState.d.ts +0 -129
  393. package/src/toast/createToastState.d.ts.map +0 -1
  394. package/src/toast/index.d.ts +0 -12
  395. package/src/toast/index.d.ts.map +0 -1
  396. package/src/toggle/createToggleState.d.ts +0 -34
  397. package/src/toggle/createToggleState.d.ts.map +0 -1
  398. package/src/toggle/index.d.ts +0 -2
  399. package/src/toggle/index.d.ts.map +0 -1
  400. package/src/tooltip/createTooltipTriggerState.d.ts +0 -39
  401. package/src/tooltip/createTooltipTriggerState.d.ts.map +0 -1
  402. package/src/tooltip/index.d.ts +0 -7
  403. package/src/tooltip/index.d.ts.map +0 -1
  404. package/src/tree/TreeCollection.d.ts +0 -43
  405. package/src/tree/TreeCollection.d.ts.map +0 -1
  406. package/src/tree/createTreeState.d.ts +0 -17
  407. package/src/tree/index.d.ts +0 -13
  408. package/src/tree/index.d.ts.map +0 -1
  409. package/src/tree/types.d.ts +0 -162
  410. package/src/tree/types.d.ts.map +0 -1
  411. package/src/utils/index.d.ts +0 -2
  412. package/src/utils/index.d.ts.map +0 -1
  413. package/src/utils/reactivity.d.ts +0 -28
  414. package/src/utils/reactivity.d.ts.map +0 -1
@@ -1,3 +1,17 @@
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/calendar/useCalendarState.ts
14
+
1
15
  /**
2
16
  * CalendarState for Solid-Stately
3
17
  *
@@ -5,7 +19,8 @@
5
19
  * Based on @react-stately/calendar useCalendarState
6
20
  */
7
21
 
8
- import { createSignal, createMemo, createEffect, type Accessor } from "solid-js";
22
+ import { createMemo, createEffect } from "solid-js";
23
+ import type { Accessor } from "solid-js";
9
24
  import {
10
25
  type Calendar as InternationalizedCalendar,
11
26
  type CalendarDate,
@@ -25,8 +40,9 @@ import {
25
40
  createCalendar as intlCreateCalendar,
26
41
  toCalendar as intlToCalendar,
27
42
  toCalendarDate as intlToCalendarDate,
43
+ minDate,
28
44
  } from "@internationalized/date";
29
- import { access, type MaybeAccessor } from "../utils";
45
+ import { access, createInternalSignal, readNow, type MaybeAccessor } from "../utils";
30
46
 
31
47
  export type ValidationState = "valid" | "invalid";
32
48
  export type CalendarPageBehavior = "single" | "visible";
@@ -75,7 +91,7 @@ export interface CalendarStateProps<
75
91
  /** Callback that is called for each date in the calendar to determine if it is unavailable. */
76
92
  isDateUnavailable?: (date: DateValue) => boolean;
77
93
  /** The number of months to display at once. */
78
- visibleMonths?: number;
94
+ visibleMonths?: MaybeAccessor<number | undefined>;
79
95
  /** Controls whether paging advances by one month or by the visible month range. */
80
96
  pageBehavior?: CalendarPageBehavior;
81
97
  /** Determines how the visible months align around the initial focused date. */
@@ -138,6 +154,10 @@ export interface CalendarState<
138
154
  isOutsideVisibleRange: (date: DateValue) => boolean;
139
155
  /** Whether a date is invalid. */
140
156
  isInvalid: (date: DateValue) => boolean;
157
+ /** Whether the previous page is entirely outside min/max. */
158
+ isPreviousVisibleRangeInvalid: () => boolean;
159
+ /** Whether the next page is entirely outside min/max. */
160
+ isNextVisibleRangeInvalid: () => boolean;
141
161
  /** Moves focus to the previous page (month). */
142
162
  focusPreviousPage: () => void;
143
163
  /** Moves focus to the next page (month). */
@@ -198,7 +218,7 @@ export function createCalendarState<
198
218
  const calendar = createMemo(() =>
199
219
  (props.createCalendar ?? intlCreateCalendar)(resolvedOptions().calendar as CalendarIdentifier),
200
220
  );
201
- const visibleMonths = props.visibleMonths ?? 1;
221
+ const visibleMonths = createMemo(() => Math.max(1, Number(access(props.visibleMonths) ?? 1)));
202
222
  const firstDayOfWeekName = (): CalendarDayOfWeek | undefined =>
203
223
  props.firstDayOfWeek == null ? undefined : dayOfWeekNames[props.firstDayOfWeek];
204
224
 
@@ -212,11 +232,11 @@ export function createCalendarState<
212
232
  case "start":
213
233
  return 0;
214
234
  case "end":
215
- return Math.max(visibleMonths - 1, 0);
235
+ return Math.max(visibleMonths() - 1, 0);
216
236
  case "center":
217
237
  default: {
218
- let halfDuration = Math.floor(visibleMonths / 2);
219
- if (halfDuration > 0 && visibleMonths % 2 === 0) {
238
+ let halfDuration = Math.floor(visibleMonths() / 2);
239
+ if (halfDuration > 0 && visibleMonths() % 2 === 0) {
220
240
  halfDuration--;
221
241
  }
222
242
  return halfDuration;
@@ -232,7 +252,7 @@ export function createCalendarState<
232
252
  const visibleRangeEnd = (start: CalendarDate): CalendarDate => {
233
253
  let end = endOfMonth(start);
234
254
 
235
- for (let i = 1; i < visibleMonths; i++) {
255
+ for (let i = 1; i < visibleMonths(); i++) {
236
256
  end = endOfMonth(end.add({ months: 1 }));
237
257
  }
238
258
 
@@ -280,18 +300,19 @@ export function createCalendarState<
280
300
 
281
301
  // State signals
282
302
  const initialFocusedDate = constrainDate(getInitialFocusedDate());
283
- const [internalValue, setInternalValue] = createSignal<T | T[] | null>(
303
+ const [internalValue, setInternalValue] = createInternalSignal<T | T[] | null>(
284
304
  (props.defaultValue as T | T[] | null) ?? null,
285
305
  );
286
- const [focusedDate, setFocusedDateInternal] = createSignal<CalendarDate>(initialFocusedDate);
287
- const [visibleRangeStart, setVisibleRangeStart] = createSignal<CalendarDate>(
306
+ const [focusedDate, setFocusedDateInternal] =
307
+ createInternalSignal<CalendarDate>(initialFocusedDate);
308
+ const [visibleRangeStart, setVisibleRangeStart] = createInternalSignal<CalendarDate>(
288
309
  alignVisibleRangeStart(initialFocusedDate),
289
310
  );
290
311
  // Init from autoFocus, mirroring @react-stately useCalendarState
291
312
  // (`useState(props.autoFocus || false)`). Without autoFocus the calendar
292
313
  // mounts unfocused and never steals DOM focus.
293
- const [isFocused, setFocused] = createSignal(props.autoFocus ?? false);
294
- const [isPaginating, setIsPaginating] = createSignal(false);
314
+ const [isFocused, setFocused] = createInternalSignal(props.autoFocus ?? false);
315
+ const [isPaginating, setIsPaginating] = createInternalSignal(false);
295
316
 
296
317
  // Controlled vs uncontrolled value
297
318
  const sourceValue = createMemo<T | T[] | null>(() => {
@@ -312,75 +333,96 @@ export function createCalendarState<
312
333
  const validationState = createMemo(() => access(props.validationState));
313
334
  const isValueInvalid = createMemo(() => validationState() === "invalid");
314
335
 
315
- // Visible range based on the paged range start.
316
- const visibleRange = createMemo(() => {
336
+ // Visible range based on the paged range start. Function (not memo) so
337
+ // onFocusChange snapshots see the live page after a same-turn write.
338
+ const visibleRange = () => {
317
339
  const start = visibleRangeStart();
318
340
  const end = visibleRangeEnd(start);
319
341
 
320
342
  return { start, end };
321
- });
322
-
323
- const syncVisibleRangeForFocusedDate = (nextFocusedDate: CalendarDate) => {
324
- const range = visibleRange();
343
+ };
325
344
 
345
+ const syncVisibleRangeForFocusedDate = (
346
+ nextFocusedDate: CalendarDate,
347
+ range: { start: CalendarDate; end: CalendarDate },
348
+ months: number,
349
+ ) => {
326
350
  if (nextFocusedDate.compare(range.start) < 0) {
327
- setVisibleRangeStart(startOfMonth(nextFocusedDate.subtract({ months: visibleMonths - 1 })));
351
+ setVisibleRangeStart(startOfMonth(nextFocusedDate.subtract({ months: months - 1 })));
328
352
  } else if (nextFocusedDate.compare(range.end) > 0) {
329
353
  setVisibleRangeStart(startOfMonth(nextFocusedDate));
330
354
  }
331
355
  };
332
356
 
333
- createEffect(() => {
334
- const controlledFocused = access(props.focusedValue);
335
- if (!controlledFocused) {
336
- return;
337
- }
338
-
339
- const nextFocusedDate = constrainDate(toDisplayCalendarDate(controlledFocused));
340
-
341
- const currentFocusedDate = focusedDate();
342
- if (
343
- nextFocusedDate.compare(currentFocusedDate) !== 0 ||
344
- !isEqualCalendar(nextFocusedDate.calendar, currentFocusedDate.calendar)
345
- ) {
346
- setFocusedDateInternal(nextFocusedDate);
347
- }
348
-
349
- syncVisibleRangeForFocusedDate(nextFocusedDate);
350
- });
351
-
352
- createEffect(() => {
353
- const controlledFocused = access(props.focusedValue);
354
- if (controlledFocused) {
355
- return;
356
- }
357
-
358
- const currentFocusedDate = focusedDate();
359
- const nextFocusedDate = constrainDate(currentFocusedDate);
360
-
361
- if (
362
- nextFocusedDate.compare(currentFocusedDate) === 0 &&
363
- isEqualCalendar(nextFocusedDate.calendar, currentFocusedDate.calendar)
364
- ) {
365
- return;
366
- }
367
-
368
- syncVisibleRangeForFocusedDate(nextFocusedDate);
369
- setFocusedDateInternal(nextFocusedDate);
370
- props.onFocusChange?.(nextFocusedDate);
371
- });
372
-
373
- createEffect(() => {
374
- const currentFocusedDate = focusedDate();
375
- const nextFocusedDate = toDisplayCalendarDate(currentFocusedDate);
357
+ createEffect(
358
+ () => {
359
+ const controlledFocused = access(props.focusedValue);
360
+ if (!controlledFocused) return null;
361
+ return {
362
+ nextFocusedDate: constrainDate(toDisplayCalendarDate(controlledFocused)),
363
+ currentFocusedDate: focusedDate(),
364
+ range: visibleRange(),
365
+ months: visibleMonths(),
366
+ };
367
+ },
368
+ (data) => {
369
+ if (!data) return;
370
+ const { nextFocusedDate, currentFocusedDate, range, months } = data;
371
+ if (
372
+ nextFocusedDate.compare(currentFocusedDate) !== 0 ||
373
+ !isEqualCalendar(nextFocusedDate.calendar, currentFocusedDate.calendar)
374
+ ) {
375
+ setFocusedDateInternal(nextFocusedDate);
376
+ }
377
+ syncVisibleRangeForFocusedDate(nextFocusedDate, range, months);
378
+ },
379
+ );
376
380
 
377
- if (isEqualCalendar(currentFocusedDate.calendar, nextFocusedDate.calendar)) {
378
- return;
379
- }
381
+ createEffect(
382
+ () => {
383
+ const controlledFocused = access(props.focusedValue);
384
+ if (controlledFocused) return null;
385
+ const currentFocusedDate = focusedDate();
386
+ const nextFocusedDate = constrainDate(currentFocusedDate);
387
+ if (
388
+ nextFocusedDate.compare(currentFocusedDate) === 0 &&
389
+ isEqualCalendar(nextFocusedDate.calendar, currentFocusedDate.calendar)
390
+ ) {
391
+ return null;
392
+ }
393
+ return {
394
+ currentFocusedDate,
395
+ nextFocusedDate,
396
+ range: visibleRange(),
397
+ months: visibleMonths(),
398
+ };
399
+ },
400
+ (data) => {
401
+ if (!data) return;
402
+ syncVisibleRangeForFocusedDate(data.nextFocusedDate, data.range, data.months);
403
+ setFocusedDateInternal(data.nextFocusedDate);
404
+ props.onFocusChange?.(data.nextFocusedDate);
405
+ },
406
+ );
380
407
 
381
- setFocusedDateInternal(nextFocusedDate);
382
- setVisibleRangeStart(alignVisibleRangeStart(nextFocusedDate));
383
- });
408
+ createEffect(
409
+ () => {
410
+ const currentFocusedDate = focusedDate();
411
+ const nextFocusedDate = toDisplayCalendarDate(currentFocusedDate);
412
+ if (isEqualCalendar(currentFocusedDate.calendar, nextFocusedDate.calendar)) {
413
+ return null;
414
+ }
415
+ return {
416
+ nextFocusedDate,
417
+ alignedStart: alignVisibleRangeStart(nextFocusedDate),
418
+ };
419
+ },
420
+ (data) => {
421
+ if (!data) return;
422
+ setFocusedDateInternal(data.nextFocusedDate);
423
+ setVisibleRangeStart(data.alignedStart);
424
+ },
425
+ );
384
426
 
385
427
  // Format week days for headers
386
428
  const weekDays = createMemo(() => {
@@ -408,22 +450,45 @@ export function createCalendarState<
408
450
  return formatter.format(formattableMonth.toDate(timeZone));
409
451
  });
410
452
 
453
+ // Walks previousAvailableDate from minValue ?? minDate(constrained, startDate)
454
+ // rather than from startDate alone, so a date before the visible month remains
455
+ // selectable when isDateUnavailable is set. Mirrors useCalendarState.normalizeValue.
456
+ const normalizeValue = (newValue: CalendarDate): T | null => {
457
+ const constrained = constrainDate(newValue);
458
+ const minBound = access(props.minValue);
459
+ const lowerBound =
460
+ minBound != null
461
+ ? toDisplayCalendarDate(minBound)
462
+ : (minDate(constrained, visibleRange().start) ?? constrained);
463
+ const prev = previousAvailableDate(constrained, lowerBound, props.isDateUnavailable);
464
+ if (!prev) {
465
+ return null;
466
+ }
467
+
468
+ const oldValue = sourceValue();
469
+ const referenceValue = Array.isArray(oldValue) ? (oldValue[0] ?? null) : oldValue;
470
+ return convertValue(prev, referenceValue) as T;
471
+ };
472
+
411
473
  // Set value with onChange callback
412
474
  const setValue = (newValue: T | T[] | null) => {
413
475
  if (isDisabled() || isReadOnly()) return;
414
476
 
415
477
  const oldValue = sourceValue();
416
- const referenceValue = Array.isArray(oldValue) ? (oldValue[0] ?? null) : oldValue;
417
478
 
418
479
  let nextValue: T | T[] | null;
419
480
  if (newValue == null) {
420
481
  nextValue = selectionMode() === "multiple" ? ([] as T[]) : null;
421
482
  } else if (Array.isArray(newValue)) {
422
- nextValue = newValue.map(
423
- (v) => convertValue(constrainDate(toDisplayCalendarDate(v)), referenceValue) as T,
424
- );
483
+ nextValue = newValue
484
+ .map((v) => normalizeValue(toDisplayCalendarDate(v)))
485
+ .filter((v): v is T => v != null);
425
486
  } else {
426
- nextValue = convertValue(constrainDate(toDisplayCalendarDate(newValue)), referenceValue) as T;
487
+ const localValue = normalizeValue(toDisplayCalendarDate(newValue));
488
+ if (!localValue) {
489
+ return;
490
+ }
491
+ nextValue = localValue;
427
492
  }
428
493
 
429
494
  const controlled = access(props.value);
@@ -444,7 +509,7 @@ export function createCalendarState<
444
509
  return;
445
510
  }
446
511
 
447
- syncVisibleRangeForFocusedDate(constrained);
512
+ syncVisibleRangeForFocusedDate(constrained, visibleRange(), visibleMonths());
448
513
  setFocusedDateInternal(constrained);
449
514
  props.onFocusChange?.(constrained);
450
515
  };
@@ -510,10 +575,33 @@ export function createCalendarState<
510
575
  return isCellDisabled(date) || isCellUnavailable(date);
511
576
  };
512
577
 
578
+ // RAC `useCalendarState.ts` `isPreviousVisibleRangeInvalid` /
579
+ // `isNextVisibleRangeInvalid`: prev = startDate−1 invalid; next = endDate+1.
580
+ const isDateOutsideAllowedRange = (date: DateValue): boolean => {
581
+ const min = minValueState();
582
+ const max = maxValueState();
583
+ const calDate = toDisplayCalendarDate(date);
584
+ if (min && calDate.compare(toDisplayCalendarDate(min)) < 0) return true;
585
+ if (max && calDate.compare(toDisplayCalendarDate(max)) > 0) return true;
586
+ return false;
587
+ };
588
+
589
+ const isPreviousVisibleRangeInvalid = () => {
590
+ const start = visibleRange().start;
591
+ const previous = start.subtract({ days: 1 });
592
+ return isSameDay(previous, start) || isDateOutsideAllowedRange(previous);
593
+ };
594
+
595
+ const isNextVisibleRangeInvalid = () => {
596
+ const end = visibleRange().end;
597
+ const next = end.add({ days: 1 });
598
+ return isSameDay(next, end) || isDateOutsideAllowedRange(next);
599
+ };
600
+
513
601
  // Navigation methods
514
602
  const focusPreviousPage = () => {
515
603
  setIsPaginating(true);
516
- const pageMonths = props.pageBehavior === "single" ? 1 : visibleMonths;
604
+ const pageMonths = props.pageBehavior === "single" ? 1 : visibleMonths();
517
605
  const nextFocusedDate = constrainDate(focusedDate().subtract({ months: pageMonths }));
518
606
  setFocusedDateInternal(nextFocusedDate);
519
607
  setVisibleRangeStart(startOfMonth(visibleRangeStart().subtract({ months: pageMonths })));
@@ -523,7 +611,7 @@ export function createCalendarState<
523
611
 
524
612
  const focusNextPage = () => {
525
613
  setIsPaginating(true);
526
- const pageMonths = props.pageBehavior === "single" ? 1 : visibleMonths;
614
+ const pageMonths = props.pageBehavior === "single" ? 1 : visibleMonths();
527
615
  const nextFocusedDate = constrainDate(focusedDate().add({ months: pageMonths }));
528
616
  setFocusedDateInternal(nextFocusedDate);
529
617
  setVisibleRangeStart(startOfMonth(visibleRangeStart().add({ months: pageMonths })));
@@ -583,7 +671,7 @@ export function createCalendarState<
583
671
  if (isReadOnly() || isDisabled()) return;
584
672
 
585
673
  if (selectionMode() === "multiple") {
586
- const current = value();
674
+ const current = access(props.value) !== undefined ? value() : readNow(internalValue);
587
675
  const base: CalendarDate[] = Array.isArray(current)
588
676
  ? current.map((v) => toDisplayCalendarDate(v))
589
677
  : current != null
@@ -655,6 +743,8 @@ export function createCalendarState<
655
743
  isCellDisabled,
656
744
  isOutsideVisibleRange,
657
745
  isInvalid,
746
+ isPreviousVisibleRangeInvalid,
747
+ isNextVisibleRangeInvalid,
658
748
  focusPreviousPage,
659
749
  focusNextPage,
660
750
  focusPreviousSection,
@@ -673,7 +763,9 @@ export function createCalendarState<
673
763
  getWeeksInMonth: getWeeksInMonthFn,
674
764
  weekDays,
675
765
  title,
676
- visibleMonths,
766
+ get visibleMonths() {
767
+ return visibleMonths();
768
+ },
677
769
  isPaginating,
678
770
  };
679
771
  }
@@ -695,3 +787,26 @@ function convertValue(newValue: CalendarDate, oldValue?: DateValue | null): Date
695
787
 
696
788
  return localValue;
697
789
  }
790
+
791
+ /**
792
+ * Walks backward from `date` while it is unavailable and still at/after `minValue`.
793
+ * Mirrors @react-stately/calendar previousAvailableDate.
794
+ */
795
+ function previousAvailableDate(
796
+ date: CalendarDate,
797
+ minValue: CalendarDate,
798
+ isDateUnavailable?: (date: DateValue) => boolean,
799
+ ): CalendarDate | null {
800
+ if (!isDateUnavailable) {
801
+ return date;
802
+ }
803
+
804
+ while (date.compare(minValue) >= 0 && isDateUnavailable(date)) {
805
+ date = date.subtract({ days: 1 });
806
+ }
807
+
808
+ if (date.compare(minValue) >= 0) {
809
+ return date;
810
+ }
811
+ return null;
812
+ }
@@ -1,3 +1,18 @@
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/datepicker/useDateFieldState.ts
14
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/datepicker/utils.ts
15
+
1
16
  /**
2
17
  * DateFieldState for Solid-Stately
3
18
  *
@@ -12,11 +27,14 @@
12
27
  *
13
28
  * The upstream "derived state during render" resync (which re-mints the display
14
29
  * value when the committed value / calendar / hour cycle changes) is ported to a
15
- * Solid `createComputed` so it runs synchronously before render effects — mirroring
16
- * React's render-phase setState rather than a post-render `createEffect`.
30
+ * split `createEffect`. Compute tracks the committed value; apply writes the
31
+ * display override. Solid 2 has no `createComputed`.
17
32
  */
18
33
 
19
- import { createSignal, createMemo, createComputed, untrack, type Accessor } from "solid-js";
34
+ import { createMemo, createEffect, untrack } from "solid-js";
35
+ import type { Accessor } from "solid-js";
36
+ import { access, createInternalSignal, type MaybeAccessor } from "../utils";
37
+
20
38
  import {
21
39
  type Calendar,
22
40
  type CalendarDateTime,
@@ -33,7 +51,6 @@ import {
33
51
  isEqualCalendar,
34
52
  createCalendar as intlCreateCalendar,
35
53
  } from "@internationalized/date";
36
- import { access, type MaybeAccessor } from "../utils";
37
54
  import type { ValidationState } from "./createCalendarState";
38
55
  import { IncompleteDate } from "./IncompleteDate";
39
56
  import { formatDateFieldError, getPlaceholder, type DateFieldErrorKey } from "./intl";
@@ -100,7 +117,7 @@ export interface DateFieldStateProps<T extends DateValue = DateValue> {
100
117
  /** Whether the value is invalid (controlled). */
101
118
  isInvalid?: boolean;
102
119
  /** The locale to use for formatting. */
103
- locale?: string;
120
+ locale?: MaybeAccessor<string | undefined>;
104
121
  /** The granularity of the date/time (day, hour, minute, second). */
105
122
  granularity?: FieldGranularity;
106
123
  /** The maximum granularity (largest editable unit). Defaults to `year`. */
@@ -235,7 +252,7 @@ const TYPE_MAPPING: Record<string, string> = {
235
252
  export function createDateFieldState<T extends DateValue = DateValue>(
236
253
  props: DateFieldStateProps<T> = {},
237
254
  ): DateFieldState<T> {
238
- const locale = (): string => props.locale ?? "en-US";
255
+ const locale = createMemo(() => access(props.locale) ?? "en-US");
239
256
  const createCalendarFn = (name: CalendarIdentifier): Calendar =>
240
257
  (props.createCalendar ?? intlCreateCalendar)(name);
241
258
 
@@ -252,19 +269,15 @@ export function createDateFieldState<T extends DateValue = DateValue>(
252
269
  timeZone: v && "timeZone" in v ? (v as { timeZone: string }).timeZone : undefined,
253
270
  };
254
271
  });
255
- const [lastDefaults, setLastDefaults] = createSignal<{
256
- granularity: Granularity;
257
- timeZone: string | undefined;
258
- }>(initialDefaults);
259
- createComputed(() => {
272
+ const lastDefaults = createMemo<typeof initialDefaults>((prev = initialDefaults) => {
260
273
  const v = v0();
261
- if (!v) return;
274
+ if (!v) return prev;
262
275
  const defaultGranularity = ("minute" in v ? "minute" : "day") as Granularity;
263
276
  const defaultTimeZone = "timeZone" in v ? (v as { timeZone: string }).timeZone : undefined;
264
- const last = untrack(lastDefaults);
265
- if (last.granularity !== defaultGranularity || last.timeZone !== defaultTimeZone) {
266
- setLastDefaults({ granularity: defaultGranularity, timeZone: defaultTimeZone });
277
+ if (prev.granularity !== defaultGranularity || prev.timeZone !== defaultTimeZone) {
278
+ return { granularity: defaultGranularity, timeZone: defaultTimeZone };
267
279
  }
280
+ return prev;
268
281
  });
269
282
  const granularity = (): FieldGranularity => {
270
283
  if (props.granularity) return props.granularity;
@@ -296,7 +309,9 @@ export function createDateFieldState<T extends DateValue = DateValue>(
296
309
  const hourCycle = (): HourCycle => calendarAndHourCycle()[1];
297
310
 
298
311
  // Controlled vs uncontrolled committed value.
299
- const [internalValue, setInternalValue] = createSignal<T | null>(props.defaultValue ?? null);
312
+ const [internalValue, setInternalValue] = createInternalSignal<T | null>(
313
+ props.defaultValue ?? null,
314
+ );
300
315
  const rawValue = createMemo<T | null>(() => {
301
316
  const controlled = access(props.value);
302
317
  return controlled !== undefined ? controlled : internalValue();
@@ -314,27 +329,26 @@ export function createDateFieldState<T extends DateValue = DateValue>(
314
329
  const initialValue = untrack(calendarValue);
315
330
 
316
331
  // The display override: holds the (possibly invalid/incomplete) value being edited.
317
- const [displayValue, setDisplayValue] = createSignal<IncompleteDate>(
332
+ const [displayValue, setDisplayValue] = createInternalSignal<IncompleteDate>(
318
333
  untrack(() => new IncompleteDate(calendar(), hourCycle(), untrack(calendarValue))),
319
334
  );
320
335
 
321
- // Render-phase resync: whenever the committed value, calendar, or hour cycle changes
322
- // from the outside, re-mint the display override. Ported to createComputed so it runs
323
- // synchronously (like React's render-phase setState), never leaving a stale frame.
336
+ // Resync the display override when the committed value, calendar, or hour
337
+ // cycle changes from the outside. Compute tracks those sources; apply writes.
324
338
  let lastValue = untrack(calendarValue);
325
339
  let lastCalendar = untrack(calendar);
326
340
  let lastHourCycle = untrack(hourCycle);
327
- createComputed(() => {
328
- const cv = calendarValue();
329
- const cal = calendar();
330
- const hc = hourCycle();
331
- if (cv !== lastValue || hc !== lastHourCycle || !isEqualCalendar(cal, lastCalendar)) {
332
- lastValue = cv;
333
- lastCalendar = cal;
334
- lastHourCycle = hc;
335
- setDisplayValue(new IncompleteDate(cal, hc, cv));
336
- }
337
- });
341
+ createEffect(
342
+ () => ({ cv: calendarValue(), cal: calendar(), hc: hourCycle() }),
343
+ ({ cv, cal, hc }) => {
344
+ if (cv !== lastValue || hc !== lastHourCycle || !isEqualCalendar(cal, lastCalendar)) {
345
+ lastValue = cv;
346
+ lastCalendar = cal;
347
+ lastHourCycle = hc;
348
+ setDisplayValue(new IncompleteDate(cal, hc, cv));
349
+ }
350
+ },
351
+ );
338
352
 
339
353
  const showEra = (): boolean => calendar().identifier === "gregory" && displayValue().era === "BC";
340
354
  const maxGranularity = (): "year" | "month" | "day" | "hour" | "minute" =>
@@ -1,3 +1,17 @@
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/datepicker/useDatePickerState.ts
14
+
1
15
  /**
2
16
  * DatePickerState for Solid-Stately
3
17
  *
@@ -5,7 +19,8 @@
5
19
  * Based on @react-stately/datepicker useDatePickerState
6
20
  */
7
21
 
8
- import { createSignal, createMemo, type Accessor } from "solid-js";
22
+ import { createMemo } from "solid-js";
23
+ import type { Accessor } from "solid-js";
9
24
  import {
10
25
  type DateValue,
11
26
  type CalendarDateTime,
@@ -16,7 +31,7 @@ import {
16
31
  toZoned,
17
32
  getLocalTimeZone,
18
33
  } from "@internationalized/date";
19
- import { access, type MaybeAccessor } from "../utils";
34
+ import { access, createInternalSignal, readNow, type MaybeAccessor } from "../utils";
20
35
  import type { ValidationState } from "./createCalendarState";
21
36
  import type { TimeValue } from "./createTimeFieldState";
22
37
 
@@ -76,18 +91,21 @@ export function createDatePickerState<T extends DateValue = DateValue>(
76
91
  const timeZone = getLocalTimeZone();
77
92
 
78
93
  // Internal signals for value and overlay state
79
- const [internalValue, setInternalValue] = createSignal<T | null>(props.defaultValue ?? null);
80
- const [internalOpen, setInternalOpen] = createSignal(props.defaultOpen ?? false);
94
+ const [internalValue, setInternalValue] = createInternalSignal<T | null>(
95
+ props.defaultValue ?? null,
96
+ );
97
+ const [internalOpen, setInternalOpen] = createInternalSignal(props.defaultOpen ?? false);
81
98
 
82
99
  // Transient selections for date and time
83
- const [selectedDate, setSelectedDate] = createSignal<DateValue | null>(null);
84
- const [selectedTime, setSelectedTime] = createSignal<TimeValue | null>(null);
100
+ const [selectedDate, setSelectedDate] = createInternalSignal<DateValue | null>(null);
101
+ const [selectedTime, setSelectedTime] = createInternalSignal<TimeValue | null>(null);
85
102
 
86
- // Controlled vs uncontrolled value
87
- const value = createMemo<T | null>(() => {
103
+ // Controlled vs uncontrolled value. Function (not memo) so same-turn
104
+ // methods and tests see the live internal write.
105
+ const value: Accessor<T | null> = () => {
88
106
  const controlled = access(props.value);
89
107
  return controlled !== undefined ? controlled : internalValue();
90
- });
108
+ };
91
109
 
92
110
  // Granularity: auto-detect from value type if not provided
93
111
  const granularity = createMemo<Granularity>(() => {
@@ -109,7 +127,7 @@ export function createDatePickerState<T extends DateValue = DateValue>(
109
127
  const isDisabled = createMemo(() => access(props.isDisabled) ?? false);
110
128
  const isReadOnly = createMemo(() => access(props.isReadOnly) ?? false);
111
129
  const validationState = createMemo(() => access(props.validationState));
112
- const isOpen: Accessor<boolean> = () => access(props.isOpen) ?? internalOpen();
130
+ const isOpen: Accessor<boolean> = () => access(props.isOpen) ?? readNow(internalOpen);
113
131
 
114
132
  // Date and time portions of the current value
115
133
  const dateValue = createMemo<DateValue | null>(() => {
@@ -187,7 +205,7 @@ export function createDatePickerState<T extends DateValue = DateValue>(
187
205
  const setDateValue = (date: DateValue) => {
188
206
  if (isDisabled() || isReadOnly()) return;
189
207
 
190
- const currentTime = selectedTime();
208
+ const currentTime = readNow(selectedTime);
191
209
  const currentValue = value();
192
210
  const shouldClose =
193
211
  typeof props.shouldCloseOnSelect === "function"
@@ -222,7 +240,7 @@ export function createDatePickerState<T extends DateValue = DateValue>(
222
240
  const setTimeValue = (time: TimeValue) => {
223
241
  if (isDisabled() || isReadOnly()) return;
224
242
 
225
- const currentDate = selectedDate();
243
+ const currentDate = readNow(selectedDate);
226
244
  const currentValue = value();
227
245
 
228
246
  if (currentDate) {
@@ -252,8 +270,8 @@ export function createDatePickerState<T extends DateValue = DateValue>(
252
270
  // When closing, only commit if both date and time are available (when time is required).
253
271
  // Don't auto-commit partial selections with placeholder time to avoid phantom values.
254
272
  const currentValue = value();
255
- const currentDate = selectedDate();
256
- const currentTime = selectedTime();
273
+ const currentDate = readNow(selectedDate);
274
+ const currentTime = readNow(selectedTime);
257
275
 
258
276
  if (!currentValue && currentDate && hasTime() && currentTime) {
259
277
  // Both date and time explicitly selected — safe to commit