@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
package/src/dnd/types.ts CHANGED
@@ -1,7 +1,23 @@
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-types/shared/src/dnd.d.ts
14
+
1
15
  /**
2
16
  * Drag and Drop types for solid-stately.
3
17
  *
4
18
  * Core types for drag and drop operations, matching React Aria's DnD API.
19
+ *
20
+ * Ported from packages/@react-types/shared/src/dnd.d.ts.
5
21
  */
6
22
 
7
23
  /** The type of drop operation to perform. */
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Copyright 2023 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/flags/flags.ts
14
+
15
+ let shadowDOMEnabled = false;
16
+
17
+ /** Enables React Stately's opt-in Shadow DOM behavior across the port stack. */
18
+ export function enableShadowDOM(): void {
19
+ shadowDOMEnabled = true;
20
+ }
21
+
22
+ /** Returns whether opt-in Shadow DOM behavior is enabled. */
23
+ export function shadowDOM(): boolean {
24
+ return shadowDOMEnabled;
25
+ }
@@ -1,3 +1,17 @@
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/form/useFormValidationState.ts
14
+
1
15
  /**
2
16
  * createFormValidationState for solid-stately
3
17
  *
@@ -7,14 +21,9 @@
7
21
  * Port of react-stately's useFormValidationState.
8
22
  */
9
23
 
10
- import {
11
- type Accessor,
12
- createContext,
13
- createEffect,
14
- createMemo,
15
- createSignal,
16
- useContext,
17
- } from "solid-js";
24
+ import { createContext, createEffect, createMemo } from "solid-js";
25
+ import type { Accessor } from "solid-js";
26
+ import { createInternalSignal, useContextOptional } from "../utils";
18
27
 
19
28
  /** Standard HTML ValidityState interface. */
20
29
  export interface ValidityState {
@@ -197,15 +206,17 @@ export function createFormValidationState<T>(props: FormValidationProps<T>): For
197
206
  : null,
198
207
  );
199
208
 
200
- // Client-side validation
201
- const clientError = createMemo<ValidationResult | null>(() => {
209
+ // Client-side validation. Compute live so commitValidation sees a value
210
+ // that was written in this same turn (Solid 2 memos stay committed until flush).
211
+ const computeClientError = (): ValidationResult | null => {
202
212
  const validate = props.validate;
203
213
  if (!validate || props.value == null) {
204
214
  return null;
205
215
  }
206
216
  const validateErrors = runValidate(validate, props.value);
207
217
  return getValidationResult(validateErrors);
208
- });
218
+ };
219
+ const clientError = createMemo<ValidationResult | null>(computeClientError);
209
220
 
210
221
  // Built-in validation (skip if valid)
211
222
  const builtinValidation = createMemo<ValidationResult | undefined>(() => {
@@ -216,8 +227,9 @@ export function createFormValidationState<T>(props: FormValidationProps<T>): For
216
227
  return builtinValidationProp;
217
228
  });
218
229
 
219
- // Server errors from context
220
- const serverErrors = useContext(FormValidationContext);
230
+ // Server errors from context. Optional: hook factories and tests call this
231
+ // outside a component / FormValidationContext provider.
232
+ const serverErrors = useContextOptional(FormValidationContext) ?? {};
221
233
  const serverErrorMessages = createMemo(() => {
222
234
  const name = props.name;
223
235
  if (name) {
@@ -229,39 +241,45 @@ export function createFormValidationState<T>(props: FormValidationProps<T>): For
229
241
  });
230
242
 
231
243
  // Track server errors clearing
232
- const [lastServerErrors, setLastServerErrors] = createSignal(serverErrors);
233
- const [isServerErrorCleared, setServerErrorCleared] = createSignal(false);
234
-
235
- createEffect(() => {
236
- if (serverErrors !== lastServerErrors()) {
237
- setLastServerErrors(serverErrors);
238
- setServerErrorCleared(false);
239
- }
240
- });
244
+ const [lastServerErrors, setLastServerErrors] = createInternalSignal(serverErrors);
245
+ const [isServerErrorCleared, setServerErrorCleared] = createInternalSignal(false);
246
+
247
+ createEffect(
248
+ () => ({ errors: serverErrors, last: lastServerErrors() }),
249
+ ({ errors, last }) => {
250
+ if (errors !== last) {
251
+ setLastServerErrors(errors);
252
+ setServerErrorCleared(false);
253
+ }
254
+ },
255
+ );
241
256
 
242
257
  const serverError = createMemo<ValidationResult | null>(() =>
243
258
  getValidationResult(isServerErrorCleared() ? [] : serverErrorMessages()),
244
259
  );
245
260
 
246
261
  // Track validation state
247
- const [currentValidity, setCurrentValidity] = createSignal(DEFAULT_VALIDATION_RESULT);
248
- const [commitQueued, setCommitQueued] = createSignal(false);
262
+ const [currentValidity, setCurrentValidity] = createInternalSignal(DEFAULT_VALIDATION_RESULT);
263
+ const [commitQueued, setCommitQueued] = createInternalSignal(false);
249
264
 
250
265
  let nextValidation = DEFAULT_VALIDATION_RESULT;
251
266
  let lastError = DEFAULT_VALIDATION_RESULT;
252
267
 
253
268
  // Commit validation effect
254
- createEffect(() => {
255
- if (!commitQueued()) {
256
- return;
257
- }
258
- setCommitQueued(false);
259
- const error = clientError() || builtinValidation() || nextValidation;
260
- if (!isEqualValidation(error, lastError)) {
261
- lastError = error;
262
- setCurrentValidity(error);
263
- }
264
- });
269
+ createEffect(
270
+ () => ({
271
+ queued: commitQueued(),
272
+ error: clientError() || builtinValidation() || nextValidation,
273
+ }),
274
+ ({ queued, error }) => {
275
+ if (!queued) return;
276
+ setCommitQueued(false);
277
+ if (!isEqualValidation(error, lastError)) {
278
+ lastError = error;
279
+ setCurrentValidity(error);
280
+ }
281
+ },
282
+ );
265
283
 
266
284
  // Realtime validation (for native input state)
267
285
  const realtimeValidation = createMemo<ValidationResult>(
@@ -314,7 +332,7 @@ export function createFormValidationState<T>(props: FormValidationProps<T>): For
314
332
  commitValidation() {
315
333
  // Commit validation state so the user sees it on blur/change/submit.
316
334
  if (validationBehavior() === "native") {
317
- const error = clientError() || builtinValidation() || nextValidation;
335
+ const error = computeClientError() || builtinValidation() || nextValidation;
318
336
  if (!isEqualValidation(error, lastError)) {
319
337
  lastError = error;
320
338
  setCurrentValidity(error);
@@ -1,11 +1,13 @@
1
1
  /**
2
2
  * Grid state management for Table and GridList components.
3
- * Based on @react-stately/grid/useGridState.
3
+ * Based on packages/react-stately/src/grid/useGridState.ts.
4
4
  */
5
5
 
6
- import { createSignal, createEffect, createMemo, on, type Accessor } from "solid-js";
6
+ import { createEffect, createMemo } from "solid-js";
7
+ import type { Accessor } from "solid-js";
7
8
  import type { GridState, GridStateOptions, GridCollection, GridNode } from "./types";
8
9
  import type { Key, FocusStrategy, SelectionBehavior, Selection } from "../collections/types";
10
+ import { createInternalSignal } from "../utils";
9
11
 
10
12
  /**
11
13
  * Creates state management for a grid component.
@@ -21,52 +23,53 @@ export function createGridState<T extends object, C extends GridCollection<T> =
21
23
  return keys ? new Set(keys) : new Set<Key>();
22
24
  });
23
25
 
24
- const [isFocused, setIsFocused] = createSignal(false);
25
- const [focusedKey, setFocusedKeyInternal] = createSignal<Key | null>(null);
26
- const [childFocusStrategy, setChildFocusStrategy] = createSignal<FocusStrategy | null>(null);
27
- const [isKeyboardNavigationDisabled, setKeyboardNavigationDisabled] = createSignal(false);
26
+ const [isFocused, setIsFocused] = createInternalSignal(false);
27
+ const [focusedKey, setFocusedKeyInternal] = createInternalSignal<Key | null>(null);
28
+ const [childFocusStrategy, setChildFocusStrategy] = createInternalSignal<FocusStrategy | null>(
29
+ null,
30
+ );
31
+ const [isKeyboardNavigationDisabled, setKeyboardNavigationDisabled] = createInternalSignal(false);
28
32
 
29
- const [internalSelectedKeys, setInternalSelectedKeys] = createSignal<"all" | Set<Key>>(
33
+ const [internalSelectedKeys, setInternalSelectedKeys] = createInternalSignal<"all" | Set<Key>>(
30
34
  getInitialSelection(getOptions().defaultSelectedKeys),
31
35
  );
32
- const [anchorKey, setAnchorKey] = createSignal<Key | null>(null);
36
+ const [anchorKey, setAnchorKey] = createInternalSignal<Key | null>(null);
33
37
 
34
- const selectedKeys = createMemo(() => {
38
+ const selectedKeys = (): "all" | Set<Key> => {
35
39
  const opts = getOptions();
36
40
  if (opts.selectedKeys !== undefined) {
37
41
  return normalizeSelection(opts.selectedKeys);
38
42
  }
39
43
  return internalSelectedKeys();
40
- });
44
+ };
41
45
 
42
46
  const selectionMode = createMemo(() => getOptions().selectionMode ?? "none");
43
47
  const selectionBehaviorProp = (): SelectionBehavior => getOptions().selectionBehavior ?? "toggle";
44
48
  const [selectionBehaviorState, setSelectionBehaviorState] =
45
- createSignal<SelectionBehavior>(selectionBehaviorProp());
49
+ createInternalSignal<SelectionBehavior>(selectionBehaviorProp());
46
50
  const selectionBehavior = createMemo(() => selectionBehaviorState());
47
51
  const disallowEmptySelection = createMemo(() => getOptions().disallowEmptySelection ?? false);
48
52
  const disabledBehavior = createMemo(() => getOptions().disabledBehavior ?? "all");
49
53
 
50
54
  const focusMode = createMemo(() => getOptions().focusMode ?? "row");
51
55
 
56
+ createEffect(selectionBehaviorProp, (behavior) => {
57
+ setSelectionBehaviorState(behavior);
58
+ });
59
+
52
60
  createEffect(
53
- on(selectionBehaviorProp, (behavior) => {
54
- setSelectionBehaviorState(behavior);
61
+ () => ({
62
+ prop: selectionBehaviorProp(),
63
+ state: selectionBehaviorState(),
64
+ keys: selectedKeys(),
55
65
  }),
66
+ ({ prop, state, keys }) => {
67
+ if (prop === "replace" && state === "toggle" && keys !== "all" && keys.size === 0) {
68
+ setSelectionBehaviorState("replace");
69
+ }
70
+ },
56
71
  );
57
72
 
58
- createEffect(() => {
59
- const keys = selectedKeys();
60
- if (
61
- selectionBehaviorProp() === "replace" &&
62
- selectionBehaviorState() === "toggle" &&
63
- keys !== "all" &&
64
- keys.size === 0
65
- ) {
66
- setSelectionBehaviorState("replace");
67
- }
68
- });
69
-
70
73
  const setFocusedKey = (key: Key | null, strategy: FocusStrategy = "first") => {
71
74
  const opts = getOptions();
72
75
  const collection = opts.collection;
@@ -88,84 +91,138 @@ export function createGridState<T extends object, C extends GridCollection<T> =
88
91
  setChildFocusStrategy(strategy);
89
92
  };
90
93
 
91
- // Reset focused key if the item is deleted from the collection
92
- let cachedCollection: C | null = null;
94
+ // Reset focused key if the item is deleted from the collection.
95
+ // Seed the cache at factory time so the first effect run (Solid 2 flushes
96
+ // effects, they do not run synchronously) can still see a deletion.
97
+ let cachedCollection: C | null = getOptions().collection;
93
98
 
94
99
  createEffect(
95
- on(
96
- () => getOptions().collection,
97
- (collection) => {
98
- const currentFocusedKey = focusedKey();
99
-
100
- if (
101
- currentFocusedKey != null &&
102
- cachedCollection &&
103
- !collection.getItem(currentFocusedKey)
104
- ) {
105
- // The focused item was deleted, find a new one to focus
106
- const node = cachedCollection.getItem(currentFocusedKey);
107
- const parentNode =
108
- node?.parentKey != null &&
109
- (node.type === "cell" || node.type === "rowheader" || node.type === "column")
110
- ? cachedCollection.getItem(node.parentKey)
111
- : node;
112
-
113
- if (!parentNode) {
114
- setFocusedKeyInternal(null);
115
- cachedCollection = collection;
116
- return;
117
- }
118
-
119
- const cachedRows = cachedCollection.rows;
120
- const rows = collection.rows;
121
- const diff = cachedRows.length - rows.length;
100
+ () => ({
101
+ collection: getOptions().collection,
102
+ currentFocusedKey: focusedKey(),
103
+ disabled: disabledKeys(),
104
+ }),
105
+ ({ collection, currentFocusedKey, disabled }) => {
106
+ if (currentFocusedKey != null && cachedCollection && !collection.getItem(currentFocusedKey)) {
107
+ // The focused item was deleted, find a new one to focus
108
+ const node = cachedCollection.getItem(currentFocusedKey);
109
+ const parentNode =
110
+ node?.parentKey != null &&
111
+ (node.type === "cell" || node.type === "rowheader" || node.type === "column")
112
+ ? cachedCollection.getItem(node.parentKey)
113
+ : node;
114
+
115
+ if (!parentNode) {
116
+ setFocusedKeyInternal(null);
117
+ cachedCollection = collection;
118
+ return;
119
+ }
122
120
 
123
- let index = Math.min(
124
- diff > 1 ? Math.max(parentNode.index - diff + 1, 0) : parentNode.index,
125
- rows.length - 1,
126
- );
121
+ const cachedRows = cachedCollection.rows;
122
+ const rows = collection.rows;
123
+ const diff = cachedRows.length - rows.length;
124
+
125
+ let index = Math.min(
126
+ diff > 1 ? Math.max(parentNode.index - diff + 1, 0) : parentNode.index,
127
+ rows.length - 1,
128
+ );
129
+
130
+ let newRow: GridNode<T> | null = null;
131
+
132
+ // Search forward once from the deleted position, then backward once.
133
+ // The previous direction-switching loop could bounce forever between
134
+ // two disabled rows when the focused row was deleted.
135
+ for (let i = Math.max(0, index); i < rows.length; i++) {
136
+ const row = rows[i];
137
+ if (!disabled.has(row.key) && row.type !== "headerrow") {
138
+ newRow = row;
139
+ break;
140
+ }
141
+ }
127
142
 
128
- let newRow: GridNode<T> | null = null;
129
- while (index >= 0) {
130
- const row = rows[index];
131
- if (!disabledKeys().has(row.key) && row.type !== "headerrow") {
143
+ if (newRow === null) {
144
+ for (let i = index - 1; i >= 0; i--) {
145
+ const row = rows[i];
146
+ if (!disabled.has(row.key) && row.type !== "headerrow") {
132
147
  newRow = row;
133
148
  break;
134
149
  }
135
- // Find next, not disabled row
136
- if (index < rows.length - 1) {
137
- index++;
138
- } else {
139
- // Otherwise, find previous, not disabled row
140
- if (index > parentNode.index) {
141
- index = parentNode.index;
142
- }
143
- index--;
144
- }
145
150
  }
151
+ }
146
152
 
147
- if (newRow) {
148
- const childNodes = newRow.hasChildNodes ? [...collection.getChildren(newRow.key)] : [];
149
- const keyToFocus =
150
- newRow.hasChildNodes && parentNode !== node && node && node.index < childNodes.length
151
- ? childNodes[node.index].key
152
- : newRow.key;
153
- setFocusedKeyInternal(keyToFocus);
154
- } else {
155
- setFocusedKeyInternal(null);
156
- }
153
+ if (newRow) {
154
+ const childNodes = newRow.hasChildNodes ? [...collection.getChildren(newRow.key)] : [];
155
+ const keyToFocus =
156
+ newRow.hasChildNodes && parentNode !== node && node && node.index < childNodes.length
157
+ ? childNodes[node.index].key
158
+ : newRow.key;
159
+ setFocusedKeyInternal(keyToFocus);
160
+ } else {
161
+ setFocusedKeyInternal(null);
157
162
  }
163
+ }
158
164
 
159
- cachedCollection = collection;
160
- },
161
- ),
165
+ cachedCollection = collection;
166
+ },
162
167
  );
163
168
 
164
169
  // Selection methods
170
+ const getSelectionKey = (key: Key): Key | null => {
171
+ const collection = getOptions().collection;
172
+ let item = collection.getItem(key);
173
+
174
+ if (!item) {
175
+ return key;
176
+ }
177
+
178
+ // Cells and other child nodes select their parent row.
179
+ while (item && item.type !== "item" && item.parentKey != null) {
180
+ item = collection.getItem(item.parentKey);
181
+ }
182
+
183
+ return item?.type === "item" ? item.key : null;
184
+ };
185
+
186
+ const canSelectItem = (key: Key): boolean => {
187
+ if (selectionMode() === "none" || disabledKeys().has(key)) {
188
+ return false;
189
+ }
190
+
191
+ const item = getOptions().collection.getItem(key);
192
+ return !!item && item.type === "item" && !item.isDisabled && !item.props?.isDisabled;
193
+ };
194
+
195
+ const getSelectAllKeys = (): Key[] => {
196
+ return getOptions()
197
+ .collection.rows.filter((row) => row.type === "item" && canSelectItem(row.key))
198
+ .map((row) => row.key);
199
+ };
200
+
201
+ const isEmpty = createMemo(() => {
202
+ const keys = selectedKeys();
203
+ return keys !== "all" && keys.size === 0;
204
+ });
205
+
206
+ const isSelectAll = createMemo(() => {
207
+ const keys = selectedKeys();
208
+ if (isEmpty()) return false;
209
+
210
+ if (keys === "all") {
211
+ return true;
212
+ }
213
+
214
+ return getSelectAllKeys().every((key) => keys.has(key));
215
+ });
216
+
165
217
  const isSelected = (key: Key): boolean => {
218
+ if (selectionMode() === "none") return false;
219
+
220
+ const selectionKey = getSelectionKey(key);
221
+ if (selectionKey == null) return false;
222
+
166
223
  const keys = selectedKeys();
167
- if (keys === "all") return true;
168
- return keys.has(key);
224
+ if (keys === "all") return canSelectItem(selectionKey);
225
+ return keys.has(selectionKey);
169
226
  };
170
227
 
171
228
  const isDisabled = (key: Key): boolean => {
@@ -196,49 +253,62 @@ export function createGridState<T extends object, C extends GridCollection<T> =
196
253
  };
197
254
 
198
255
  const toggleSelection = (key: Key) => {
199
- if (isDisabled(key)) return;
200
256
  if (selectionMode() === "none") return;
201
257
 
258
+ const selectionKey = getSelectionKey(key);
259
+ if (selectionKey == null) return;
260
+
202
261
  const current = selectedKeys();
203
262
 
204
263
  if (selectionMode() === "single") {
205
- if (isSelected(key) && !disallowEmptySelection()) {
264
+ if (isSelected(selectionKey) && !disallowEmptySelection()) {
206
265
  updateSelection(new Set());
207
- } else {
208
- updateSelection(new Set([key]));
266
+ } else if (canSelectItem(selectionKey)) {
267
+ updateSelection(new Set([selectionKey]));
209
268
  }
210
269
  return;
211
270
  }
212
271
 
213
272
  // Multiple selection
214
- if (current === "all") {
215
- // Can't toggle when all selected without knowing all keys
216
- return;
217
- }
218
-
219
- const newSelection = new Set(current);
220
- if (newSelection.has(key)) {
273
+ const newSelection = new Set(current === "all" ? getSelectAllKeys() : current);
274
+ if (newSelection.has(selectionKey)) {
221
275
  if (newSelection.size > 1 || !disallowEmptySelection()) {
222
- newSelection.delete(key);
276
+ newSelection.delete(selectionKey);
223
277
  }
224
- } else {
225
- newSelection.add(key);
278
+ } else if (canSelectItem(selectionKey)) {
279
+ newSelection.add(selectionKey);
226
280
  }
227
281
 
228
282
  updateSelection(newSelection);
229
- setAnchorKey(key);
283
+ setAnchorKey(selectionKey);
230
284
  };
231
285
 
232
286
  const replaceSelection = (key: Key) => {
233
- if (isDisabled(key)) return;
234
287
  if (selectionMode() === "none") return;
235
288
 
236
- updateSelection(new Set([key]));
237
- setAnchorKey(key);
289
+ const selectionKey = getSelectionKey(key);
290
+ if (selectionKey == null) return;
291
+
292
+ updateSelection(canSelectItem(selectionKey) ? new Set([selectionKey]) : new Set());
293
+ setAnchorKey(selectionKey);
238
294
  };
239
295
 
240
296
  const setSelectedKeys = (keys: Selection | Iterable<Key>) => {
241
- updateSelection(normalizeSelection(keys));
297
+ if (selectionMode() === "none") return;
298
+ if (keys === "all") {
299
+ updateSelection("all");
300
+ return;
301
+ }
302
+
303
+ const selection = new Set<Key>();
304
+ for (const key of keys) {
305
+ const selectionKey = getSelectionKey(key);
306
+ if (selectionKey != null) {
307
+ selection.add(selectionKey);
308
+ if (selectionMode() === "single") break;
309
+ }
310
+ }
311
+ updateSelection(selection);
242
312
  };
243
313
 
244
314
  const extendSelection = (toKey: Key) => {
@@ -248,7 +318,7 @@ export function createGridState<T extends object, C extends GridCollection<T> =
248
318
  return;
249
319
  }
250
320
 
251
- const anchor = anchorKey();
321
+ const anchor = anchorKey() ?? focusedKey();
252
322
  if (!anchor) {
253
323
  replaceSelection(toKey);
254
324
  return;
@@ -274,7 +344,9 @@ export function createGridState<T extends object, C extends GridCollection<T> =
274
344
 
275
345
  const selectAll = () => {
276
346
  if (selectionMode() !== "multiple") return;
277
- updateSelection("all");
347
+ if (!isSelectAll()) {
348
+ updateSelection("all");
349
+ }
278
350
  };
279
351
 
280
352
  const clearSelection = () => {
@@ -285,7 +357,7 @@ export function createGridState<T extends object, C extends GridCollection<T> =
285
357
  const toggleSelectAll = () => {
286
358
  if (selectionMode() !== "multiple") return;
287
359
 
288
- if (selectedKeys() === "all") {
360
+ if (isSelectAll()) {
289
361
  clearSelection();
290
362
  } else {
291
363
  selectAll();
@@ -326,6 +398,12 @@ export function createGridState<T extends object, C extends GridCollection<T> =
326
398
  get selectedKeys() {
327
399
  return selectedKeys();
328
400
  },
401
+ get isEmpty() {
402
+ return isEmpty();
403
+ },
404
+ get isSelectAll() {
405
+ return isSelectAll();
406
+ },
329
407
  isSelected,
330
408
  isDisabled,
331
409
  setFocusedKey,
package/src/grid/types.ts CHANGED
@@ -1,6 +1,23 @@
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/grid/GridCollection.ts
14
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/grid/useGridState.ts
15
+
1
16
  /**
2
17
  * Grid collection types for Table and GridList components.
3
- * Based on @react-types/grid.
18
+ * Ported from:
19
+ * - packages/react-stately/src/grid/GridCollection.ts
20
+ * - packages/react-stately/src/grid/useGridState.ts
4
21
  */
5
22
 
6
23
  import type { Key, FocusStrategy, Selection, SelectionBehavior } from "../collections/types";
@@ -145,6 +162,10 @@ export interface GridState<T, C extends GridCollection<T> = GridCollection<T>> {
145
162
  readonly disallowEmptySelection: boolean;
146
163
  /** The currently selected keys. */
147
164
  readonly selectedKeys: "all" | Set<Key>;
165
+ /** Whether no rows are selected. */
166
+ readonly isEmpty: boolean;
167
+ /** Whether every selectable row is selected. */
168
+ readonly isSelectAll: boolean;
148
169
  /** Check if a key is selected. */
149
170
  isSelected(key: Key): boolean;
150
171
  /** Check if a key is disabled. */