@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,12 +1,34 @@
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/steplist/useStepListState.ts
14
+
1
15
  /**
2
16
  * State management for step list components.
3
17
  * Tracks selected step, completion status, and selectability.
18
+ *
19
+ * Ported from packages/react-stately/src/steplist/useStepListState.ts.
4
20
  */
5
21
 
6
- import { createEffect, createMemo, createSignal, type Accessor } from "solid-js";
7
- import type { Key } from "../collections/types";
22
+ import { createEffect, createMemo } from "solid-js";
23
+ import type { Accessor } from "solid-js";
24
+ import { createInternalSignal } from "../utils";
25
+ import type { CollectionNode, Key } from "../collections/types";
26
+ import {
27
+ createSingleSelectListState,
28
+ type SingleSelectListState,
29
+ } from "../collections/createListState";
8
30
 
9
- export interface StepListStateProps {
31
+ export interface StepListStateProps<T = unknown> {
10
32
  /** The currently selected step key (controlled). */
11
33
  selectedKey?: Key;
12
34
  /** The default selected step key (uncontrolled). */
@@ -26,47 +48,31 @@ export interface StepListStateProps {
26
48
  /** Keys of individually disabled steps. */
27
49
  disabledKeys?: Iterable<Key>;
28
50
  /** The step items. */
29
- items: Array<{ key: Key; [key: string]: any }>;
51
+ items: T[];
30
52
  }
31
53
 
32
- export interface StepListState {
33
- readonly selectedKey: Accessor<Key | null>;
54
+ export interface StepListState<T = unknown> extends SingleSelectListState<T> {
34
55
  readonly lastCompletedStep: Accessor<Key | null>;
35
- readonly items: Accessor<Array<{ key: Key }>>;
56
+ readonly items: Accessor<T[]>;
36
57
  setSelectedKey(key: Key): void;
37
- setLastCompletedStep(key: Key): void;
58
+ setLastCompletedStep(key: Key | null): void;
38
59
  isCompleted(key: Key): boolean;
39
60
  isSelectable(key: Key): boolean;
40
- isDisabled: Accessor<boolean>;
61
+ isDisabled: Accessor<boolean> & ((key?: Key) => boolean);
41
62
  isReadOnly: Accessor<boolean>;
42
63
  }
43
64
 
44
65
  /**
45
66
  * Creates state for a step list component.
46
67
  */
47
- export function createStepListState(props: StepListStateProps): StepListState {
48
- const items = () => props.items;
49
-
50
- // Build an index map: Key -> index
51
- const indexMap = createMemo(() => {
52
- const map = new Map<Key, number>();
53
- const currentItems = items();
54
- for (let i = 0; i < currentItems.length; i++) {
55
- map.set(currentItems[i].key, i);
56
- }
57
- return map;
58
- });
59
-
60
- // Disabled keys set
61
- const disabledKeysSet = createMemo(() => new Set<Key>(props.disabledKeys ?? []));
62
-
63
- const isDisabled: Accessor<boolean> = () => props.isDisabled ?? false;
68
+ export function createStepListState<T = unknown>(props: StepListStateProps<T>): StepListState<T> {
69
+ const isListDisabled: Accessor<boolean> = () => props.isDisabled ?? false;
64
70
  const isReadOnly: Accessor<boolean> = () => props.isReadOnly ?? false;
71
+ const items: Accessor<T[]> = () => props.items ?? [];
65
72
 
66
- // Last completed step signal (uncontrolled)
67
- const [lastCompletedStepInternal, setLastCompletedStepInternal] = createSignal<Key | null>(
68
- props.defaultLastCompletedStep ?? null,
69
- );
73
+ // Last completed step signal (uncontrolled / controlled sync)
74
+ const [lastCompletedStepInternal, setLastCompletedStepInternal] =
75
+ createInternalSignal<Key | null>(props.defaultLastCompletedStep ?? null);
70
76
 
71
77
  const lastCompletedStep: Accessor<Key | null> = () => {
72
78
  if (props.lastCompletedStep !== undefined) {
@@ -75,140 +81,188 @@ export function createStepListState(props: StepListStateProps): StepListState {
75
81
  return lastCompletedStepInternal();
76
82
  };
77
83
 
78
- const setLastCompletedStep = (key: Key) => {
79
- const currentIndex = indexMap().get(key);
80
- const prevIndex = lastCompletedStep() !== null ? indexMap().get(lastCompletedStep()!) : -1;
84
+ const isCompleted = (step: Key): boolean => {
85
+ if (step == null) return false;
86
+ const completed = lastCompletedStep();
87
+ if (completed == null) return false;
88
+ const { indexMap } = keyMaps();
89
+ const stepIdx = indexMap.get(step);
90
+ const completedIdx = indexMap.get(completed);
91
+ if (stepIdx === undefined || completedIdx === undefined) return false;
92
+ return stepIdx <= completedIdx;
93
+ };
81
94
 
82
- // Only advance completion, never go back
83
- if (
84
- currentIndex !== undefined &&
85
- (prevIndex === undefined || currentIndex > (prevIndex ?? -1))
86
- ) {
87
- if (props.lastCompletedStep === undefined) {
88
- setLastCompletedStepInternal(key);
89
- }
90
- props.onLastCompletedStepChange?.(key);
95
+ const isSelectable = (step: Key): boolean => {
96
+ if (isListDisabled() || singleSelectListState.disabledKeys().has(step) || isReadOnly()) {
97
+ return false;
91
98
  }
99
+ if (isCompleted(step)) return true;
100
+ const { keysLinkedList } = keyMaps();
101
+ const prevStep = keysLinkedList.get(step);
102
+ return (
103
+ (prevStep !== undefined && isCompleted(prevStep)) ||
104
+ step === singleSelectListState.collection().getFirstKey()
105
+ );
92
106
  };
93
107
 
94
- const isCompleted = (key: Key): boolean => {
95
- const completed = lastCompletedStep();
96
- if (completed === null) return false;
97
- const keyIndex = indexMap().get(key);
98
- const completedIndex = indexMap().get(completed);
99
- if (keyIndex === undefined || completedIndex === undefined) return false;
100
- return keyIndex <= completedIndex;
108
+ const findInitialSelectedKey = (): Key | undefined => {
109
+ if (props.defaultSelectedKey !== undefined) {
110
+ return props.defaultSelectedKey;
111
+ }
112
+ const currentItems = (props.items ?? []) as Array<{ key: Key }>;
113
+ const disabled = new Set<Key>(props.disabledKeys ?? []);
114
+ for (const item of currentItems) {
115
+ if (!disabled.has(item.key)) {
116
+ return item.key;
117
+ }
118
+ }
119
+ return currentItems[0]?.key;
101
120
  };
102
121
 
103
- const isStepDisabled = (key: Key): boolean => {
104
- if (isDisabled()) return true;
105
- return disabledKeysSet().has(key);
106
- };
122
+ // Route through the shared SingleSelectListState collection spine
123
+ const singleSelectListState = createSingleSelectListState<T>({
124
+ get items() {
125
+ return (props.items ?? []) as T[];
126
+ },
127
+ getKey(item: any) {
128
+ return item.key;
129
+ },
130
+ getTextValue(item: any) {
131
+ return item.label ?? item.textValue ?? (item.key != null ? String(item.key) : "");
132
+ },
133
+ get disabledKeys() {
134
+ return props.disabledKeys;
135
+ },
136
+ get selectedKey() {
137
+ return props.selectedKey;
138
+ },
139
+ get defaultSelectedKey() {
140
+ return findInitialSelectedKey();
141
+ },
142
+ onSelectionChange(key) {
143
+ if (key != null) {
144
+ props.onSelectionChange?.(key);
145
+ }
146
+ },
147
+ });
107
148
 
108
- const isSelectable = (key: Key): boolean => {
109
- if (isDisabled() || isReadOnly() || isStepDisabled(key)) return false;
110
- // Completed steps are always selectable
111
- if (isCompleted(key)) return true;
112
- // First step is always selectable
113
- const keyIndex = indexMap().get(key);
114
- if (keyIndex === 0) return true;
115
- // Otherwise a step is selectable only if the PREVIOUS step is completed —
116
- // mirrors react-stately `useStepListState.isSelectable`
117
- // (`isCompleted(prevStep) || step === firstKey`). There is no "step after the
118
- // currently selected step" clause upstream: a fresh list exposes only the
119
- // first step, and the immediate-next step becomes selectable when its
120
- // predecessor is *completed*, not merely selected.
121
- const currentItems = items();
122
- if (keyIndex !== undefined && keyIndex > 0) {
123
- const prevKey = currentItems[keyIndex - 1].key;
124
- if (isCompleted(prevKey)) return true;
149
+ // Build indexMap and keysLinkedList from the collection
150
+ const keyMaps = createMemo(() => {
151
+ const coll = singleSelectListState.collection();
152
+ const indexMap = new Map<Key, number>();
153
+ const keysLinkedList = new Map<Key, Key | undefined>();
154
+ let i = 0;
155
+ let prev: CollectionNode<T> | undefined;
156
+ for (const item of coll) {
157
+ indexMap.set(item.key, i);
158
+ keysLinkedList.set(item.key, prev?.key);
159
+ prev = item;
160
+ i++;
125
161
  }
126
- return false;
127
- };
162
+ return { indexMap, keysLinkedList };
163
+ });
128
164
 
129
- // Find the first selectable non-completed step
130
- const findDefaultSelectedKey = (): Key | null => {
131
- const currentItems = items();
132
- for (const item of currentItems) {
133
- if (!isCompleted(item.key) && !isStepDisabled(item.key)) {
134
- return item.key;
165
+ const setLastCompletedStep = (key: Key | null) => {
166
+ if (key == null) {
167
+ if (props.lastCompletedStep === undefined) {
168
+ setLastCompletedStepInternal(null);
135
169
  }
170
+ props.onLastCompletedStepChange?.(null);
171
+ return;
136
172
  }
137
- // All completed - select first non-disabled
138
- for (const item of currentItems) {
139
- if (!isStepDisabled(item.key)) {
140
- return item.key;
173
+ const { indexMap } = keyMaps();
174
+ const currentIndex = indexMap.get(key);
175
+ const completed = lastCompletedStep();
176
+ const prevIndex = completed !== null ? indexMap.get(completed) : -1;
177
+
178
+ // Only advance completion, never go back
179
+ if (
180
+ currentIndex !== undefined &&
181
+ (prevIndex === undefined || currentIndex > (prevIndex ?? -1))
182
+ ) {
183
+ if (props.lastCompletedStep === undefined) {
184
+ setLastCompletedStepInternal(key);
141
185
  }
186
+ props.onLastCompletedStepChange?.(key);
142
187
  }
143
- return currentItems.length > 0 ? currentItems[0].key : null;
144
188
  };
145
189
 
146
- // Selected key signal (uncontrolled)
147
- const [selectedKeyInternal, setSelectedKeyInternal] = createSignal<Key | null>(
148
- props.defaultSelectedKey ?? findDefaultSelectedKey(),
190
+ // Mirror react-stately useStepListState's effect: whenever the selected step
191
+ // sits more than one past the last completed step (e.g. mounted with a
192
+ // defaultSelectedKey ahead of progress), auto-complete its immediate predecessor.
193
+ createEffect(
194
+ () => {
195
+ const selKey = singleSelectListState.selectedKey();
196
+ if (selKey === null) return null;
197
+ const { indexMap, keysLinkedList } = keyMaps();
198
+ const selIdx = indexMap.get(selKey);
199
+ if (selIdx === undefined || selIdx <= 0) return null;
200
+ const completed = lastCompletedStep();
201
+ const lcs = completed !== null ? (indexMap.get(completed) ?? -1) : -1;
202
+ if (selIdx <= lcs + 1) return null;
203
+ return keysLinkedList.get(selKey) ?? null;
204
+ },
205
+ (prevKey) => {
206
+ if (prevKey != null) {
207
+ setLastCompletedStep(prevKey);
208
+ }
209
+ },
149
210
  );
150
211
 
151
- const selectedKey: Accessor<Key | null> = () => {
152
- if (props.selectedKey !== undefined) {
153
- return props.selectedKey;
154
- }
155
- return selectedKeyInternal();
156
- };
212
+ // Sync initial focus to selectedKey if focusedKey is unset
213
+ createEffect(
214
+ () => singleSelectListState.selectedKey(),
215
+ (selKey) => {
216
+ if (singleSelectListState.focusedKey() == null && selKey != null) {
217
+ singleSelectListState.setFocusedKey(selKey);
218
+ }
219
+ },
220
+ );
157
221
 
158
222
  const setSelectedKey = (key: Key) => {
159
- if (isReadOnly() || isDisabled()) return;
223
+ if (isListDisabled() || isReadOnly()) return;
160
224
  if (!isSelectable(key)) return;
161
-
162
- // Mark previous selected step as completed if advancing
163
- const currentSelected = selectedKey();
164
- if (currentSelected !== null) {
165
- const currentIndex = indexMap().get(currentSelected);
166
- const newIndex = indexMap().get(key);
167
- if (
168
- currentIndex !== undefined &&
169
- newIndex !== undefined &&
170
- newIndex > currentIndex &&
171
- !isCompleted(currentSelected)
172
- ) {
173
- setLastCompletedStep(currentSelected);
174
- }
225
+ const { keysLinkedList } = keyMaps();
226
+ const prevKey = keysLinkedList.get(key);
227
+ if (prevKey && !isCompleted(prevKey)) {
228
+ setLastCompletedStep(prevKey);
175
229
  }
230
+ singleSelectListState.setSelectedKey(key);
231
+ };
176
232
 
177
- if (props.selectedKey === undefined) {
178
- setSelectedKeyInternal(key);
233
+ // Bridge selectionManager with step list selectability
234
+ singleSelectListState.selectionManager.canSelectItem = (key: Key) => isSelectable(key);
235
+ const origReplaceSelection = singleSelectListState.selectionManager.replaceSelection.bind(
236
+ singleSelectListState.selectionManager,
237
+ );
238
+ singleSelectListState.selectionManager.replaceSelection = (key: Key) => {
239
+ if (isListDisabled() || isReadOnly()) return;
240
+ if (!isSelectable(key)) return;
241
+ const { keysLinkedList } = keyMaps();
242
+ const prevKey = keysLinkedList.get(key);
243
+ if (prevKey && !isCompleted(prevKey)) {
244
+ setLastCompletedStep(prevKey);
179
245
  }
180
- props.onSelectionChange?.(key);
246
+ origReplaceSelection(key);
181
247
  };
182
248
 
183
- // Mirror react-stately `useStepListState`'s effect: whenever the selected step
184
- // sits more than one past the last completed step (e.g. mounted with a
185
- // `defaultSelectedKey` ahead of progress), auto-complete its immediate
186
- // predecessor. Because completion is cumulative (`isCompleted` = index ≤
187
- // lastCompleted index), advancing `lastCompletedStep` to `selectedIdx - 1`
188
- // marks every intermediate step complete. This runs regardless of
189
- // `isDisabled` / `isReadOnly`, exactly as upstream (the effect is ungated).
190
- createEffect(() => {
191
- const selKey = selectedKey();
192
- if (selKey === null) return;
193
- const selIdx = indexMap().get(selKey);
194
- if (selIdx === undefined || selIdx <= 0) return;
195
- const completed = lastCompletedStep();
196
- const lcs = completed !== null ? (indexMap().get(completed) ?? -1) : -1;
197
- if (selIdx > lcs + 1) {
198
- const prevKey = items()[selIdx - 1]?.key;
199
- if (prevKey !== undefined) setLastCompletedStep(prevKey);
249
+ const isDisabledFn = ((key?: Key): boolean => {
250
+ if (key === undefined) {
251
+ return isListDisabled();
200
252
  }
201
- });
253
+ return !isSelectable(key);
254
+ }) as Accessor<boolean> & ((key?: Key) => boolean);
202
255
 
203
256
  return {
204
- selectedKey,
257
+ ...singleSelectListState,
258
+ selectedKey: singleSelectListState.selectedKey,
205
259
  lastCompletedStep,
206
260
  items,
207
261
  setSelectedKey,
208
262
  setLastCompletedStep,
209
263
  isCompleted,
210
264
  isSelectable,
211
- isDisabled,
265
+ isDisabled: isDisabledFn,
212
266
  isReadOnly,
213
267
  };
214
268
  }
@@ -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/table/TableCollection.ts
14
+
1
15
  /**
2
16
  * TableCollection - A collection class for table data.
3
17
  * Based on @react-stately/table/TableCollection.
@@ -1,3 +1,17 @@
1
+ /*
2
+ * Copyright 2022 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/table/useTableColumnResizeState.ts
14
+
1
15
  /**
2
16
  * Table column resize state management.
3
17
  * Based on @react-stately/table/useTableColumnResizeState.
@@ -7,7 +21,10 @@
7
21
  * width distribution and clamping.
8
22
  */
9
23
 
10
- import { createSignal, createMemo, type Accessor } from "solid-js";
24
+ import { createMemo } from "solid-js";
25
+ import type { Accessor } from "solid-js";
26
+ import { createInternalSignal } from "../utils";
27
+
11
28
  import type { Key } from "../collections/types";
12
29
 
13
30
  /** Column size: a number (px) or a string ('100px', '50%', '1fr'). */
@@ -96,13 +113,38 @@ function parseColumnDef(col: ColumnResizeDefinition, tableWidth: number): Parsed
96
113
  return { key: col.key, fr: 0, fixedPx: isNaN(px) ? 0 : px, minWidth, maxWidth };
97
114
  }
98
115
 
116
+ function applyFractionalRemainder(
117
+ widths: Map<Key, number>,
118
+ columns: ColumnResizeDefinition[],
119
+ originalWidth: number,
120
+ ): void {
121
+ const flooredWidth = Math.floor(originalWidth);
122
+ const hasFractionalWidth = originalWidth - flooredWidth > 0;
123
+ if (!hasFractionalWidth || columns.length === 0) return;
124
+
125
+ const lastKey = columns[columns.length - 1].key;
126
+ if (widths.has(lastKey)) {
127
+ const tableFractionalWidth = originalWidth.toString().split(".")[1];
128
+ if (tableFractionalWidth) {
129
+ const columnWidth = Math.floor(widths.get(lastKey)!).toString();
130
+ widths.set(lastKey, Number(columnWidth + "." + tableFractionalWidth));
131
+ }
132
+ }
133
+ }
134
+
99
135
  /**
100
136
  * Distribute `tableWidth` among columns:
101
- * 1. Fixed-width columns get their declared width (clamped to min/max).
102
- * 2. Remaining space is distributed among fractional columns proportionally.
137
+ * 1. Floor tableWidth to integer before column sizing, matching upstream TableUtils.calculateColumnSizes.
138
+ * 2. Fixed-width columns get their declared width (clamped to min/max).
139
+ * 3. Remaining space is distributed among fractional columns proportionally with cascading rounding.
140
+ * 4. Leftover sub-pixel width is added to the last column so widths sum exactly to tableWidth.
103
141
  */
104
142
  function distributeWidths(columns: ColumnResizeDefinition[], tableWidth: number): Map<Key, number> {
105
- const parsed = columns.map((c) => parseColumnDef(c, tableWidth));
143
+ const originalWidth = tableWidth;
144
+ const flooredWidth = Math.floor(tableWidth);
145
+ const availableWidth = Math.max(0, flooredWidth);
146
+
147
+ const parsed = columns.map((c) => parseColumnDef(c, availableWidth));
106
148
 
107
149
  // Pass 1 — allocate fixed columns
108
150
  let usedSpace = 0;
@@ -116,23 +158,36 @@ function distributeWidths(columns: ColumnResizeDefinition[], tableWidth: number)
116
158
  }
117
159
  }
118
160
 
119
- const remainingSpace = Math.max(0, tableWidth - usedSpace);
161
+ const remainingSpace = Math.max(0, availableWidth - usedSpace);
120
162
  const perFr = totalFr > 0 ? remainingSpace / totalFr : 0;
121
163
 
122
- // Pass 2 — build map
164
+ // Pass 2 — build map with cascading rounding
123
165
  const widths = new Map<Key, number>();
166
+ let fpTotal = 0;
167
+ let intTotal = 0;
168
+
124
169
  for (const p of parsed) {
125
- let w: number;
170
+ let targetSize: number;
126
171
  if (p.fr > 0) {
127
- w = p.fr * perFr;
172
+ targetSize = p.fr * perFr;
128
173
  } else {
129
- w = p.fixedPx;
174
+ targetSize = p.fixedPx;
130
175
  }
131
176
  // Clamp
132
- w = Math.max(p.minWidth, Math.min(p.maxWidth, w));
133
- widths.set(p.key, Math.round(w));
177
+ targetSize = Math.max(p.minWidth, Math.min(p.maxWidth, targetSize));
178
+
179
+ // Cascade rounding to ensure sum of integers matches availableWidth
180
+ const rounded = Math.round(targetSize + fpTotal) - intTotal;
181
+ fpTotal += targetSize;
182
+ intTotal += rounded;
183
+
184
+ widths.set(p.key, rounded);
134
185
  }
135
186
 
187
+ // Give the leftover sub-pixel width to the last column so the columns sum
188
+ // exactly to the (possibly fractional) available width.
189
+ applyFractionalRemainder(widths, columns, originalWidth);
190
+
136
191
  return widths;
137
192
  }
138
193
 
@@ -154,8 +209,8 @@ export function createTableColumnResizeState(
154
209
  );
155
210
 
156
211
  // User-overridden widths (set during/after resize)
157
- const [overrides, setOverrides] = createSignal<Map<Key, number>>(new Map());
158
- const [resizingColumn, setResizingColumn] = createSignal<Key | null>(null);
212
+ const [overrides, setOverrides] = createInternalSignal<Map<Key, number>>(new Map());
213
+ const [resizingColumn, setResizingColumn] = createInternalSignal<Key | null>(null);
159
214
 
160
215
  // Computed widths: initial merged with overrides
161
216
  const columnWidths = createMemo(() => {
@@ -169,6 +224,7 @@ export function createTableColumnResizeState(
169
224
  merged.set(key, width);
170
225
  }
171
226
  }
227
+ applyFractionalRemainder(merged, getProps().columns, getProps().tableWidth);
172
228
  return merged;
173
229
  });
174
230
 
@@ -212,7 +268,7 @@ export function createTableColumnResizeState(
212
268
  const updateResizedColumns = (key: Key, width: number): Map<Key, number> => {
213
269
  const minW = getColumnMinWidth(key);
214
270
  const maxW = getColumnMaxWidth(key);
215
- const clampedWidth = Math.round(Math.max(minW, Math.min(maxW, width)));
271
+ const clampedWidth = Math.max(minW, Math.min(maxW, Math.floor(width)));
216
272
 
217
273
  const newOverrides = new Map(overrides());
218
274
  newOverrides.set(key, clampedWidth);
@@ -226,6 +282,7 @@ export function createTableColumnResizeState(
226
282
  merged.set(k, w);
227
283
  }
228
284
  }
285
+ applyFractionalRemainder(merged, getProps().columns, getProps().tableWidth);
229
286
  return merged;
230
287
  };
231
288
 
@@ -1,9 +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/table/useTableState.ts
14
+
1
15
  /**
2
16
  * Table state management for Table components.
3
17
  * Based on @react-stately/table/useTableState.
4
18
  */
5
19
 
6
- import { createMemo, type Accessor } from "solid-js";
20
+ import { createMemo } from "solid-js";
21
+ import { propsAccessor, type MaybeAccessor } from "../utils";
7
22
  import { createGridState } from "../grid/createGridState";
8
23
  import type { Key } from "../collections/types";
9
24
  import type {
@@ -26,8 +41,8 @@ const OPPOSITE_SORT_DIRECTION: Record<SortDirection, SortDirection> = {
26
41
  export function createTableState<
27
42
  T extends object,
28
43
  C extends TableCollection<T> = TableCollection<T>,
29
- >(options: Accessor<TableStateOptions<T, C>>): TableState<T, C> {
30
- const getOptions = () => options();
44
+ >(options: MaybeAccessor<TableStateOptions<T, C>>): TableState<T, C> {
45
+ const getOptions = propsAccessor(options);
31
46
 
32
47
  // Create the underlying grid state
33
48
  const gridState = createGridState<T, C>(() => ({
@@ -88,7 +103,8 @@ export function createTableState<
88
103
  return gridState.disabledBehavior;
89
104
  },
90
105
  get isKeyboardNavigationDisabled() {
91
- return gridState.isKeyboardNavigationDisabled;
106
+ // An empty body keeps navigation disabled after the flag is cleared.
107
+ return getOptions().collection.size === 0 || gridState.isKeyboardNavigationDisabled;
92
108
  },
93
109
  get focusedKey() {
94
110
  return gridState.focusedKey;
@@ -111,6 +127,12 @@ export function createTableState<
111
127
  get selectedKeys() {
112
128
  return gridState.selectedKeys;
113
129
  },
130
+ get isEmpty() {
131
+ return gridState.isEmpty;
132
+ },
133
+ get isSelectAll() {
134
+ return gridState.isSelectAll;
135
+ },
114
136
 
115
137
  // Grid state methods
116
138
  isSelected: gridState.isSelected,