@proyecto-viviana/solidaria-components 0.5.0 → 0.7.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 (561) hide show
  1. package/LICENSE-APACHE-2.0 +201 -0
  2. package/NOTICE +91 -0
  3. package/README.md +4 -7
  4. package/dist/ActionBar.d.ts +2 -10
  5. package/dist/ActionBar.d.ts.map +1 -1
  6. package/dist/ActionBar.js +95 -59
  7. package/dist/ActionBar.js.map +1 -1
  8. package/dist/ActionBar.jsx +42 -15
  9. package/dist/ActionBar.jsx.map +1 -1
  10. package/dist/ActionGroup.d.ts +1 -12
  11. package/dist/ActionGroup.d.ts.map +1 -1
  12. package/dist/ActionGroup.js +66 -44
  13. package/dist/ActionGroup.js.map +1 -1
  14. package/dist/ActionGroup.jsx +25 -10
  15. package/dist/ActionGroup.jsx.map +1 -1
  16. package/dist/Alert.d.ts +4 -1
  17. package/dist/Alert.d.ts.map +1 -1
  18. package/dist/Alert.js +25 -17
  19. package/dist/Alert.js.map +1 -1
  20. package/dist/Alert.jsx +9 -5
  21. package/dist/Alert.jsx.map +1 -1
  22. package/dist/Autocomplete.d.ts +2 -9
  23. package/dist/Autocomplete.d.ts.map +1 -1
  24. package/dist/Autocomplete.js +18 -5
  25. package/dist/Autocomplete.js.map +1 -1
  26. package/dist/Autocomplete.jsx +20 -7
  27. package/dist/Autocomplete.jsx.map +1 -1
  28. package/dist/Breadcrumbs.d.ts +2 -7
  29. package/dist/Breadcrumbs.d.ts.map +1 -1
  30. package/dist/Breadcrumbs.js +71 -51
  31. package/dist/Breadcrumbs.js.map +1 -1
  32. package/dist/Breadcrumbs.jsx +25 -12
  33. package/dist/Breadcrumbs.jsx.map +1 -1
  34. package/dist/Button.d.ts +1 -7
  35. package/dist/Button.d.ts.map +1 -1
  36. package/dist/Button.js +125 -72
  37. package/dist/Button.js.map +1 -1
  38. package/dist/Button.jsx +105 -43
  39. package/dist/Button.jsx.map +1 -1
  40. package/dist/Calendar.d.ts +1 -7
  41. package/dist/Calendar.d.ts.map +1 -1
  42. package/dist/Calendar.js +297 -221
  43. package/dist/Calendar.js.map +1 -1
  44. package/dist/Calendar.jsx +52 -32
  45. package/dist/Calendar.jsx.map +1 -1
  46. package/dist/CalendarPicker.d.ts +1 -10
  47. package/dist/CalendarPicker.d.ts.map +1 -1
  48. package/dist/CalendarPicker.js +12 -0
  49. package/dist/CalendarPicker.js.map +1 -1
  50. package/dist/CalendarPicker.jsx +12 -0
  51. package/dist/CalendarPicker.jsx.map +1 -1
  52. package/dist/Checkbox.d.ts +2 -7
  53. package/dist/Checkbox.d.ts.map +1 -1
  54. package/dist/Checkbox.js +332 -270
  55. package/dist/Checkbox.js.map +1 -1
  56. package/dist/Checkbox.jsx +70 -77
  57. package/dist/Checkbox.jsx.map +1 -1
  58. package/dist/Collection.d.ts +33 -7
  59. package/dist/Collection.d.ts.map +1 -1
  60. package/dist/Collection.js +128 -74
  61. package/dist/Collection.js.map +1 -1
  62. package/dist/Collection.jsx +46 -7
  63. package/dist/Collection.jsx.map +1 -1
  64. package/dist/Color.d.ts +15 -20
  65. package/dist/Color.d.ts.map +1 -1
  66. package/dist/Color.js +572 -334
  67. package/dist/Color.js.map +1 -1
  68. package/dist/Color.jsx +205 -85
  69. package/dist/Color.jsx.map +1 -1
  70. package/dist/ColorEditor.d.ts +3 -1
  71. package/dist/ColorEditor.d.ts.map +1 -1
  72. package/dist/ColorEditor.js +147 -124
  73. package/dist/ColorEditor.js.map +1 -1
  74. package/dist/ColorEditor.jsx +4 -1
  75. package/dist/ColorEditor.jsx.map +1 -1
  76. package/dist/ComboBox.d.ts +31 -10
  77. package/dist/ComboBox.d.ts.map +1 -1
  78. package/dist/ComboBox.js +539 -274
  79. package/dist/ComboBox.js.map +1 -1
  80. package/dist/ComboBox.jsx +213 -70
  81. package/dist/ComboBox.jsx.map +1 -1
  82. package/dist/ContextualHelpTrigger.d.ts +1 -7
  83. package/dist/ContextualHelpTrigger.d.ts.map +1 -1
  84. package/dist/ContextualHelpTrigger.js +102 -72
  85. package/dist/ContextualHelpTrigger.js.map +1 -1
  86. package/dist/ContextualHelpTrigger.jsx +36 -16
  87. package/dist/ContextualHelpTrigger.jsx.map +1 -1
  88. package/dist/DateField.d.ts +2 -7
  89. package/dist/DateField.d.ts.map +1 -1
  90. package/dist/DateField.js +0 -2
  91. package/dist/DateField.jsx +0 -2
  92. package/dist/DateField2.js +194 -179
  93. package/dist/DateField2.js.map +1 -1
  94. package/dist/DateField2.jsx +58 -55
  95. package/dist/DateField2.jsx.map +1 -1
  96. package/dist/DatePicker.d.ts +7 -7
  97. package/dist/DatePicker.d.ts.map +1 -1
  98. package/dist/DatePicker.js +2 -2
  99. package/dist/DatePicker.jsx +2 -2
  100. package/dist/DatePicker2.js +357 -435
  101. package/dist/DatePicker2.js.map +1 -1
  102. package/dist/DatePicker2.jsx +109 -178
  103. package/dist/DatePicker2.jsx.map +1 -1
  104. package/dist/DateRangePickerContext.d.ts +7 -0
  105. package/dist/DateRangePickerContext.d.ts.map +1 -1
  106. package/dist/Dialog.d.ts +4 -9
  107. package/dist/Dialog.d.ts.map +1 -1
  108. package/dist/Dialog.js +168 -101
  109. package/dist/Dialog.js.map +1 -1
  110. package/dist/Dialog.jsx +75 -27
  111. package/dist/Dialog.jsx.map +1 -1
  112. package/dist/Disclosure.d.ts +1 -9
  113. package/dist/Disclosure.d.ts.map +1 -1
  114. package/dist/Disclosure.js +121 -79
  115. package/dist/Disclosure.js.map +1 -1
  116. package/dist/Disclosure.jsx +32 -19
  117. package/dist/Disclosure.jsx.map +1 -1
  118. package/dist/DragAndDrop.d.ts +9 -6
  119. package/dist/DragAndDrop.d.ts.map +1 -1
  120. package/dist/DragAndDrop.js +37 -22
  121. package/dist/DragAndDrop.js.map +1 -1
  122. package/dist/DragAndDrop.jsx +20 -4
  123. package/dist/DragAndDrop.jsx.map +1 -1
  124. package/dist/DragPreview.d.ts +1 -1
  125. package/dist/DragPreview.d.ts.map +1 -1
  126. package/dist/DropZone.d.ts +1 -7
  127. package/dist/DropZone.d.ts.map +1 -1
  128. package/dist/DropZone.js +74 -40
  129. package/dist/DropZone.js.map +1 -1
  130. package/dist/DropZone.jsx +24 -8
  131. package/dist/DropZone.jsx.map +1 -1
  132. package/dist/ElementTag.d.ts +9 -20
  133. package/dist/ElementTag.d.ts.map +1 -1
  134. package/dist/ElementTag.js +8 -210
  135. package/dist/ElementTag.js.map +1 -1
  136. package/dist/ElementTag.jsx +8 -57
  137. package/dist/ElementTag.jsx.map +1 -1
  138. package/dist/FieldError.d.ts +8 -7
  139. package/dist/FieldError.d.ts.map +1 -1
  140. package/dist/FieldError.js +33 -13
  141. package/dist/FieldError.js.map +1 -1
  142. package/dist/FieldError.jsx +20 -5
  143. package/dist/FieldError.jsx.map +1 -1
  144. package/dist/FileTrigger.d.ts +1 -7
  145. package/dist/FileTrigger.d.ts.map +1 -1
  146. package/dist/FileTrigger.js +30 -12
  147. package/dist/FileTrigger.js.map +1 -1
  148. package/dist/FileTrigger.jsx +15 -2
  149. package/dist/FileTrigger.jsx.map +1 -1
  150. package/dist/Focusable.d.ts +2 -8
  151. package/dist/Focusable.d.ts.map +1 -1
  152. package/dist/Focusable.js +23 -6
  153. package/dist/Focusable.js.map +1 -1
  154. package/dist/Focusable.jsx +22 -5
  155. package/dist/Focusable.jsx.map +1 -1
  156. package/dist/Form.d.ts +9 -8
  157. package/dist/Form.d.ts.map +1 -1
  158. package/dist/Form.js +66 -43
  159. package/dist/Form.js.map +1 -1
  160. package/dist/Form.jsx +36 -16
  161. package/dist/Form.jsx.map +1 -1
  162. package/dist/GridList.d.ts +5 -10
  163. package/dist/GridList.d.ts.map +1 -1
  164. package/dist/GridList.js +372 -243
  165. package/dist/GridList.js.map +1 -1
  166. package/dist/GridList.jsx +177 -99
  167. package/dist/GridList.jsx.map +1 -1
  168. package/dist/HiddenDateInput.d.ts +1 -7
  169. package/dist/HiddenDateInput.d.ts.map +1 -1
  170. package/dist/Icon.d.ts +4 -1
  171. package/dist/Icon.d.ts.map +1 -1
  172. package/dist/Icon.js +41 -37
  173. package/dist/Icon.js.map +1 -1
  174. package/dist/Icon.jsx +7 -3
  175. package/dist/Icon.jsx.map +1 -1
  176. package/dist/Keyboard.d.ts +1 -7
  177. package/dist/Keyboard.d.ts.map +1 -1
  178. package/dist/Keyboard.js +24 -11
  179. package/dist/Keyboard.js.map +1 -1
  180. package/dist/Keyboard.jsx +15 -2
  181. package/dist/Keyboard.jsx.map +1 -1
  182. package/dist/Label.d.ts +20 -0
  183. package/dist/Label.d.ts.map +1 -0
  184. package/dist/Label.js +60 -0
  185. package/dist/Label.js.map +1 -0
  186. package/dist/Label.jsx +47 -0
  187. package/dist/Label.jsx.map +1 -0
  188. package/dist/Landmark.d.ts +4 -1
  189. package/dist/Landmark.d.ts.map +1 -1
  190. package/dist/Landmark.js +10 -4
  191. package/dist/Landmark.js.map +1 -1
  192. package/dist/Landmark.jsx +5 -1
  193. package/dist/Landmark.jsx.map +1 -1
  194. package/dist/Link.d.ts +2 -7
  195. package/dist/Link.d.ts.map +1 -1
  196. package/dist/Link.js +56 -36
  197. package/dist/Link.js.map +1 -1
  198. package/dist/Link.jsx +52 -10
  199. package/dist/Link.jsx.map +1 -1
  200. package/dist/ListBox.d.ts +17 -13
  201. package/dist/ListBox.d.ts.map +1 -1
  202. package/dist/ListBox.js +647 -348
  203. package/dist/ListBox.js.map +1 -1
  204. package/dist/ListBox.jsx +339 -236
  205. package/dist/ListBox.jsx.map +1 -1
  206. package/dist/ListDropTargetDelegate.d.ts +3 -0
  207. package/dist/ListDropTargetDelegate.d.ts.map +1 -1
  208. package/dist/Menu.d.ts +39 -30
  209. package/dist/Menu.d.ts.map +1 -1
  210. package/dist/Menu.js +547 -368
  211. package/dist/Menu.js.map +1 -1
  212. package/dist/Menu.jsx +328 -230
  213. package/dist/Menu.jsx.map +1 -1
  214. package/dist/Meter.d.ts +6 -13
  215. package/dist/Meter.d.ts.map +1 -1
  216. package/dist/Meter.js +55 -18
  217. package/dist/Meter.js.map +1 -1
  218. package/dist/Meter.jsx +33 -8
  219. package/dist/Meter.jsx.map +1 -1
  220. package/dist/Modal.d.ts +1 -7
  221. package/dist/Modal.d.ts.map +1 -1
  222. package/dist/Modal.js +104 -56
  223. package/dist/Modal.js.map +1 -1
  224. package/dist/Modal.jsx +68 -38
  225. package/dist/Modal.jsx.map +1 -1
  226. package/dist/NumberField.d.ts +4 -7
  227. package/dist/NumberField.d.ts.map +1 -1
  228. package/dist/NumberField.js +243 -124
  229. package/dist/NumberField.js.map +1 -1
  230. package/dist/NumberField.jsx +115 -26
  231. package/dist/NumberField.jsx.map +1 -1
  232. package/dist/Popover.d.ts +15 -7
  233. package/dist/Popover.d.ts.map +1 -1
  234. package/dist/Popover.js +370 -181
  235. package/dist/Popover.js.map +1 -1
  236. package/dist/Popover.jsx +215 -82
  237. package/dist/Popover.jsx.map +1 -1
  238. package/dist/Pressable.d.ts +2 -8
  239. package/dist/Pressable.d.ts.map +1 -1
  240. package/dist/Pressable.js +23 -6
  241. package/dist/Pressable.js.map +1 -1
  242. package/dist/Pressable.jsx +22 -5
  243. package/dist/Pressable.jsx.map +1 -1
  244. package/dist/PreviewTrigger.d.ts +24 -0
  245. package/dist/PreviewTrigger.d.ts.map +1 -0
  246. package/dist/PreviewTrigger.js +128 -0
  247. package/dist/PreviewTrigger.js.map +1 -0
  248. package/dist/PreviewTrigger.jsx +117 -0
  249. package/dist/PreviewTrigger.jsx.map +1 -0
  250. package/dist/ProgressBar.d.ts +1 -7
  251. package/dist/ProgressBar.d.ts.map +1 -1
  252. package/dist/ProgressBar.js +34 -14
  253. package/dist/ProgressBar.js.map +1 -1
  254. package/dist/ProgressBar.jsx +17 -3
  255. package/dist/ProgressBar.jsx.map +1 -1
  256. package/dist/RadioGroup.d.ts +2 -7
  257. package/dist/RadioGroup.d.ts.map +1 -1
  258. package/dist/RadioGroup.js +388 -269
  259. package/dist/RadioGroup.js.map +1 -1
  260. package/dist/RadioGroup.jsx +110 -99
  261. package/dist/RadioGroup.jsx.map +1 -1
  262. package/dist/RangeCalendar.d.ts +3 -7
  263. package/dist/RangeCalendar.d.ts.map +1 -1
  264. package/dist/RangeCalendar.js +271 -202
  265. package/dist/RangeCalendar.js.map +1 -1
  266. package/dist/RangeCalendar.jsx +56 -37
  267. package/dist/RangeCalendar.jsx.map +1 -1
  268. package/dist/RouterProvider.d.ts +3 -9
  269. package/dist/RouterProvider.d.ts.map +1 -1
  270. package/dist/RouterProvider.js +15 -14
  271. package/dist/RouterProvider.js.map +1 -1
  272. package/dist/RouterProvider.jsx +14 -13
  273. package/dist/RouterProvider.jsx.map +1 -1
  274. package/dist/SearchField.d.ts +4 -7
  275. package/dist/SearchField.d.ts.map +1 -1
  276. package/dist/SearchField.js +191 -164
  277. package/dist/SearchField.js.map +1 -1
  278. package/dist/SearchField.jsx +69 -62
  279. package/dist/SearchField.jsx.map +1 -1
  280. package/dist/Select.d.ts +5 -10
  281. package/dist/Select.d.ts.map +1 -1
  282. package/dist/Select.js +565 -359
  283. package/dist/Select.js.map +1 -1
  284. package/dist/Select.jsx +281 -161
  285. package/dist/Select.jsx.map +1 -1
  286. package/dist/SelectionIndicator.d.ts +1 -4
  287. package/dist/SelectionIndicator.d.ts.map +1 -1
  288. package/dist/SelectionIndicator.js +29 -13
  289. package/dist/SelectionIndicator.js.map +1 -1
  290. package/dist/SelectionIndicator.jsx +18 -4
  291. package/dist/SelectionIndicator.jsx.map +1 -1
  292. package/dist/Separator.d.ts +1 -7
  293. package/dist/Separator.d.ts.map +1 -1
  294. package/dist/Separator.js +22 -6
  295. package/dist/Separator.js.map +1 -1
  296. package/dist/Separator.jsx +16 -3
  297. package/dist/Separator.jsx.map +1 -1
  298. package/dist/SharedElementTransition.d.ts +1 -10
  299. package/dist/SharedElementTransition.d.ts.map +1 -1
  300. package/dist/SharedElementTransition.js +68 -40
  301. package/dist/SharedElementTransition.js.map +1 -1
  302. package/dist/SharedElementTransition.jsx +49 -25
  303. package/dist/SharedElementTransition.jsx.map +1 -1
  304. package/dist/Slider.d.ts +2 -8
  305. package/dist/Slider.d.ts.map +1 -1
  306. package/dist/Slider.js +155 -97
  307. package/dist/Slider.js.map +1 -1
  308. package/dist/Slider.jsx +25 -12
  309. package/dist/Slider.jsx.map +1 -1
  310. package/dist/StepList.d.ts +1 -7
  311. package/dist/StepList.d.ts.map +1 -1
  312. package/dist/StepList.js +112 -68
  313. package/dist/StepList.js.map +1 -1
  314. package/dist/StepList.jsx +58 -20
  315. package/dist/StepList.jsx.map +1 -1
  316. package/dist/Switch.d.ts +2 -9
  317. package/dist/Switch.d.ts.map +1 -1
  318. package/dist/Switch.js +164 -114
  319. package/dist/Switch.js.map +1 -1
  320. package/dist/Switch.jsx +26 -13
  321. package/dist/Switch.jsx.map +1 -1
  322. package/dist/Table.d.ts +2 -1
  323. package/dist/Table.d.ts.map +1 -1
  324. package/dist/Table.js +689 -592
  325. package/dist/Table.js.map +1 -1
  326. package/dist/Table.jsx +317 -237
  327. package/dist/Table.jsx.map +1 -1
  328. package/dist/Tabs.d.ts +2 -7
  329. package/dist/Tabs.d.ts.map +1 -1
  330. package/dist/Tabs.js +278 -293
  331. package/dist/Tabs.js.map +1 -1
  332. package/dist/Tabs.jsx +68 -66
  333. package/dist/Tabs.jsx.map +1 -1
  334. package/dist/TagGroup.d.ts +4 -11
  335. package/dist/TagGroup.d.ts.map +1 -1
  336. package/dist/TagGroup.js +153 -115
  337. package/dist/TagGroup.js.map +1 -1
  338. package/dist/TagGroup.jsx +37 -24
  339. package/dist/TagGroup.jsx.map +1 -1
  340. package/dist/Text.d.ts +3 -3
  341. package/dist/Text.d.ts.map +1 -1
  342. package/dist/Text.js +24 -7
  343. package/dist/Text.js.map +1 -1
  344. package/dist/Text.jsx +17 -5
  345. package/dist/Text.jsx.map +1 -1
  346. package/dist/TextField.d.ts +3 -16
  347. package/dist/TextField.d.ts.map +1 -1
  348. package/dist/TextField.js +104 -129
  349. package/dist/TextField.js.map +1 -1
  350. package/dist/TextField.jsx +76 -102
  351. package/dist/TextField.jsx.map +1 -1
  352. package/dist/TimeField.d.ts +2 -15
  353. package/dist/TimeField.d.ts.map +1 -1
  354. package/dist/TimeField.js +86 -102
  355. package/dist/TimeField.js.map +1 -1
  356. package/dist/TimeField.jsx +32 -49
  357. package/dist/TimeField.jsx.map +1 -1
  358. package/dist/Toast.d.ts +10 -13
  359. package/dist/Toast.d.ts.map +1 -1
  360. package/dist/Toast.js +209 -108
  361. package/dist/Toast.js.map +1 -1
  362. package/dist/Toast.jsx +127 -22
  363. package/dist/Toast.jsx.map +1 -1
  364. package/dist/ToggleButton.d.ts +1 -7
  365. package/dist/ToggleButton.d.ts.map +1 -1
  366. package/dist/ToggleButton.js +57 -35
  367. package/dist/ToggleButton.js.map +1 -1
  368. package/dist/ToggleButton.jsx +26 -12
  369. package/dist/ToggleButton.jsx.map +1 -1
  370. package/dist/ToggleButtonGroup.d.ts +1 -7
  371. package/dist/ToggleButtonGroup.d.ts.map +1 -1
  372. package/dist/ToggleButtonGroup.js +59 -44
  373. package/dist/ToggleButtonGroup.js.map +1 -1
  374. package/dist/ToggleButtonGroup.jsx +25 -12
  375. package/dist/ToggleButtonGroup.jsx.map +1 -1
  376. package/dist/TokenField.d.ts +52 -0
  377. package/dist/TokenField.d.ts.map +1 -0
  378. package/dist/TokenField.js +301 -0
  379. package/dist/TokenField.js.map +1 -0
  380. package/dist/TokenField.jsx +197 -0
  381. package/dist/TokenField.jsx.map +1 -0
  382. package/dist/Toolbar.d.ts +2 -7
  383. package/dist/Toolbar.d.ts.map +1 -1
  384. package/dist/Toolbar.js +35 -16
  385. package/dist/Toolbar.js.map +1 -1
  386. package/dist/Toolbar.jsx +15 -2
  387. package/dist/Toolbar.jsx.map +1 -1
  388. package/dist/Tooltip.d.ts +2 -7
  389. package/dist/Tooltip.d.ts.map +1 -1
  390. package/dist/Tooltip.js +105 -68
  391. package/dist/Tooltip.js.map +1 -1
  392. package/dist/Tooltip.jsx +60 -36
  393. package/dist/Tooltip.jsx.map +1 -1
  394. package/dist/Tree.d.ts +8 -11
  395. package/dist/Tree.d.ts.map +1 -1
  396. package/dist/Tree.js +486 -339
  397. package/dist/Tree.js.map +1 -1
  398. package/dist/Tree.jsx +155 -107
  399. package/dist/Tree.jsx.map +1 -1
  400. package/dist/Virtualizer.d.ts +39 -9
  401. package/dist/Virtualizer.d.ts.map +1 -1
  402. package/dist/Virtualizer.js +2 -2
  403. package/dist/Virtualizer.jsx +2 -2
  404. package/dist/Virtualizer2.js +491 -136
  405. package/dist/Virtualizer2.js.map +1 -1
  406. package/dist/Virtualizer2.jsx +455 -122
  407. package/dist/Virtualizer2.jsx.map +1 -1
  408. package/dist/VirtualizerLayouts.d.ts +55 -2
  409. package/dist/VirtualizerLayouts.d.ts.map +1 -1
  410. package/dist/VisuallyHidden.d.ts +4 -3
  411. package/dist/VisuallyHidden.d.ts.map +1 -1
  412. package/dist/VisuallyHidden.js +18 -11
  413. package/dist/VisuallyHidden.js.map +1 -1
  414. package/dist/VisuallyHidden.jsx +15 -9
  415. package/dist/VisuallyHidden.jsx.map +1 -1
  416. package/dist/contexts.d.ts +25 -0
  417. package/dist/contexts.d.ts.map +1 -1
  418. package/dist/contexts.js +3 -0
  419. package/dist/contexts.js.map +1 -1
  420. package/dist/contexts.jsx +3 -0
  421. package/dist/contexts.jsx.map +1 -1
  422. package/dist/index.d.ts +11 -9
  423. package/dist/index.d.ts.map +1 -1
  424. package/dist/index.js +14 -11
  425. package/dist/index.jsx +14 -11
  426. package/dist/intl/index.d.ts +16 -0
  427. package/dist/intl/index.d.ts.map +1 -0
  428. package/dist/intl.js +212 -0
  429. package/dist/intl.js.map +1 -0
  430. package/dist/intl.jsx +212 -0
  431. package/dist/intl.jsx.map +1 -0
  432. package/dist/useDragAndDrop.d.ts +4 -2
  433. package/dist/useDragAndDrop.d.ts.map +1 -1
  434. package/dist/useDragAndDrop2.js +39 -21
  435. package/dist/useDragAndDrop2.js.map +1 -1
  436. package/dist/useDragAndDrop2.jsx +39 -21
  437. package/dist/useDragAndDrop2.jsx.map +1 -1
  438. package/dist/utils.d.ts +28 -9
  439. package/dist/utils.d.ts.map +1 -1
  440. package/dist/utils.js +96 -24
  441. package/dist/utils.js.map +1 -1
  442. package/dist/utils.jsx +81 -24
  443. package/dist/utils.jsx.map +1 -1
  444. package/dist/virtualizer/Layout.d.ts +9 -0
  445. package/dist/virtualizer/Layout.d.ts.map +1 -1
  446. package/dist/virtualizer/Layout.js +23 -2
  447. package/dist/virtualizer/Layout.js.map +1 -1
  448. package/dist/virtualizer/Layout.jsx +23 -2
  449. package/dist/virtualizer/Layout.jsx.map +1 -1
  450. package/package.json +29 -10
  451. package/src/ActionBar.tsx +50 -24
  452. package/src/ActionGroup.tsx +31 -19
  453. package/src/Alert.tsx +10 -4
  454. package/src/Autocomplete.tsx +24 -15
  455. package/src/Breadcrumbs.tsx +32 -16
  456. package/src/Button.tsx +182 -67
  457. package/src/Calendar.tsx +65 -47
  458. package/src/CalendarPicker.tsx +16 -1
  459. package/src/Checkbox.tsx +84 -116
  460. package/src/Collection.tsx +84 -3
  461. package/src/Color.tsx +282 -104
  462. package/src/ColorEditor.tsx +5 -1
  463. package/src/ComboBox.tsx +384 -109
  464. package/src/ContextualHelpTrigger.tsx +47 -41
  465. package/src/DateField.tsx +74 -106
  466. package/src/DatePicker.tsx +156 -352
  467. package/src/DateRangePickerContext.tsx +8 -0
  468. package/src/Dialog.tsx +105 -38
  469. package/src/Disclosure.tsx +29 -19
  470. package/src/DragAndDrop.tsx +43 -8
  471. package/src/DragPreview.tsx +20 -1
  472. package/src/DropZone.tsx +32 -18
  473. package/src/ElementTag.tsx +14 -104
  474. package/src/FieldError.tsx +39 -7
  475. package/src/FileTrigger.tsx +18 -3
  476. package/src/Focusable.tsx +27 -6
  477. package/src/Form.tsx +57 -11
  478. package/src/GridList.tsx +233 -141
  479. package/src/HiddenDateInput.tsx +19 -3
  480. package/src/Icon.tsx +8 -2
  481. package/src/Keyboard.tsx +18 -2
  482. package/src/Label.tsx +77 -0
  483. package/src/Landmark.tsx +6 -1
  484. package/src/Link.tsx +65 -19
  485. package/src/ListBox.tsx +645 -468
  486. package/src/ListDropTargetDelegate.ts +4 -0
  487. package/src/Menu.tsx +512 -349
  488. package/src/Meter.tsx +42 -8
  489. package/src/Modal.tsx +85 -42
  490. package/src/NumberField.tsx +161 -48
  491. package/src/Popover.tsx +424 -148
  492. package/src/Pressable.tsx +27 -6
  493. package/src/PreviewTrigger.tsx +171 -0
  494. package/src/ProgressBar.tsx +25 -3
  495. package/src/RadioGroup.tsx +230 -161
  496. package/src/RangeCalendar.tsx +75 -63
  497. package/src/RouterProvider.tsx +24 -14
  498. package/src/SearchField.tsx +118 -121
  499. package/src/Select.tsx +454 -274
  500. package/src/SelectionIndicator.tsx +21 -3
  501. package/src/Separator.tsx +17 -1
  502. package/src/SharedElementTransition.tsx +115 -97
  503. package/src/Slider.tsx +35 -17
  504. package/src/StepList.tsx +71 -32
  505. package/src/Switch.tsx +45 -29
  506. package/src/Table.tsx +446 -380
  507. package/src/Tabs.tsx +132 -155
  508. package/src/TagGroup.tsx +53 -40
  509. package/src/Text.tsx +23 -6
  510. package/src/TextField.tsx +118 -159
  511. package/src/TimeField.tsx +34 -95
  512. package/src/Toast.tsx +141 -67
  513. package/src/ToggleButton.tsx +33 -15
  514. package/src/ToggleButtonGroup.tsx +27 -9
  515. package/src/TokenField.tsx +379 -0
  516. package/src/Toolbar.tsx +19 -9
  517. package/src/Tooltip.tsx +126 -84
  518. package/src/Tree.tsx +233 -173
  519. package/src/Virtualizer.tsx +400 -138
  520. package/src/VirtualizerLayouts.ts +211 -26
  521. package/src/VisuallyHidden.tsx +22 -8
  522. package/src/contexts.ts +13 -0
  523. package/src/index.ts +32 -11
  524. package/src/intl/ar-AE.json +6 -0
  525. package/src/intl/bg-BG.json +6 -0
  526. package/src/intl/cs-CZ.json +6 -0
  527. package/src/intl/da-DK.json +6 -0
  528. package/src/intl/de-DE.json +6 -0
  529. package/src/intl/el-GR.json +6 -0
  530. package/src/intl/en-US.json +6 -0
  531. package/src/intl/es-ES.json +6 -0
  532. package/src/intl/et-EE.json +6 -0
  533. package/src/intl/fi-FI.json +6 -0
  534. package/src/intl/fr-FR.json +6 -0
  535. package/src/intl/he-IL.json +6 -0
  536. package/src/intl/hr-HR.json +6 -0
  537. package/src/intl/hu-HU.json +6 -0
  538. package/src/intl/index.ts +125 -0
  539. package/src/intl/it-IT.json +6 -0
  540. package/src/intl/ja-JP.json +6 -0
  541. package/src/intl/ko-KR.json +6 -0
  542. package/src/intl/lt-LT.json +6 -0
  543. package/src/intl/lv-LV.json +6 -0
  544. package/src/intl/nb-NO.json +6 -0
  545. package/src/intl/nl-NL.json +6 -0
  546. package/src/intl/pl-PL.json +6 -0
  547. package/src/intl/pt-BR.json +6 -0
  548. package/src/intl/pt-PT.json +6 -0
  549. package/src/intl/ro-RO.json +6 -0
  550. package/src/intl/ru-RU.json +6 -0
  551. package/src/intl/sk-SK.json +6 -0
  552. package/src/intl/sl-SI.json +6 -0
  553. package/src/intl/sr-SP.json +6 -0
  554. package/src/intl/sv-SE.json +6 -0
  555. package/src/intl/tr-TR.json +6 -0
  556. package/src/intl/uk-UA.json +6 -0
  557. package/src/intl/zh-CN.json +6 -0
  558. package/src/intl/zh-TW.json +6 -0
  559. package/src/useDragAndDrop.ts +30 -32
  560. package/src/utils.tsx +124 -68
  561. package/src/virtualizer/Layout.ts +29 -0
package/dist/Table.jsx CHANGED
@@ -2,11 +2,14 @@ import { dataAttr, filterDOMProps, useRenderProps } from "./utils.jsx";
2
2
  import { ButtonContext } from "./Button.jsx";
3
3
  import { SharedElementTransition } from "./SharedElementTransition.jsx";
4
4
  import { useLinkProps, useRouter } from "./RouterProvider.jsx";
5
- import { CollectionRendererContext, useCollectionRenderer } from "./Collection.jsx";
6
- import { r as useVirtualizerContext } from "./Virtualizer2.jsx";
7
- import { getNormalizedDropTargetKey, mergePersistedKeysIntoVirtualRange, useDndPersistedKeys, useRenderDropIndicator } from "./DragAndDrop.jsx";
8
- import { For, Show, createContext, createEffect, createMemo, createSignal, createUniqueId, onCleanup, splitProps, untrack, useContext } from "solid-js";
9
- import { createFocusRing, createHover, createTable, createTableCell, createTableColumnHeader, createTableColumnResize, createTableRow, createTableRowGroup, createTableSelectAllCheckbox, createTableSelectionCheckbox, getTableData, isFocusVisible, mergeProps as mergeProps$1 } from "@proyecto-viviana/solidaria";
5
+ import { t as racIntlStrings } from "./intl.jsx";
6
+ import { CollectionRendererContext, renderCollectionDropSlots, useCollectionRenderer, useCollectionRoot } from "./Collection.jsx";
7
+ import { o as useVirtualizerContext, t as PersistedVirtualItem } from "./Virtualizer2.jsx";
8
+ import { getNormalizedDropTargetKey, indexesOutsideRange, mergePersistedKeysIntoVirtualRange, useDndPersistedKeys, useRenderDropIndicator } from "./DragAndDrop.jsx";
9
+ import { createTreeDropTargetDelegate } from "./Tree.jsx";
10
+ import { For, Show, createContext, createEffect, createMemo, createRenderEffect, createSignal, createTrackedEffect, createUniqueId, untrack, useContext } from "solid-js";
11
+ import { createFocusRing, createHover, createStringFormatter, createTable, createTableCell, createTableColumnHeader, createTableColumnResize, createTableRow, createTableRowGroup, createTableSelectAllCheckbox, createTableSelectionCheckbox, getTableData, isFocusVisible, mergeProps, useLocale } from "@proyecto-viviana/solidaria";
12
+ import { splitProps } from "@proyecto-viviana/solidaria/utils";
10
13
  import { createTableCollection, createTableColumnResizeState, createTableState, createTreeGridState } from "@proyecto-viviana/solid-stately";
11
14
  //#region src/Table.tsx
12
15
  /**
@@ -15,7 +18,7 @@ import { createTableCollection, createTableColumnResizeState, createTableState,
15
18
  * A pre-wired headless table that combines state + aria hooks.
16
19
  * Based on react-aria-components/src/Table.tsx
17
20
  */
18
- function assignRef(ref, el) {
21
+ function assignRef$1(ref, el) {
19
22
  if (!ref) return;
20
23
  if (typeof ref === "function") ref(el);
21
24
  else ref.current = el;
@@ -38,6 +41,24 @@ function resolveItemKey(item, getKey, index) {
38
41
  const record = item;
39
42
  return record.id ?? record.key ?? index;
40
43
  }
44
+ /** RAC Table.tsx TableElementType / THead / TBody / row / cell: div when virtualized. */
45
+ function TableHost(props) {
46
+ const [local, rest] = splitProps(props, [
47
+ "hostTag",
48
+ "virtualized",
49
+ "children"
50
+ ]);
51
+ if (local.virtualized) return <div {...rest}>{local.children}</div>;
52
+ switch (local.hostTag) {
53
+ case "table": return <table {...rest}>{local.children}</table>;
54
+ case "thead": return <thead {...rest}>{local.children}</thead>;
55
+ case "tbody": return <tbody {...rest}>{local.children}</tbody>;
56
+ case "tfoot": return <tfoot {...rest}>{local.children}</tfoot>;
57
+ case "tr": return <tr {...rest}>{local.children}</tr>;
58
+ case "th": return <th {...rest}>{local.children}</th>;
59
+ default: return <td {...rest}>{local.children}</td>;
60
+ }
61
+ }
41
62
  /**
42
63
  * Turns the flat `items` into nested {@link RowDefinition}s by recursively expanding each
43
64
  * item's children via `getChildItems`. The result feeds the tree-grid collection.
@@ -100,6 +121,7 @@ function Table(props) {
100
121
  "UNSTABLE_defaultExpandedKeys",
101
122
  "UNSTABLE_onExpandedChange"
102
123
  ]);
124
+ const locale = useLocale();
103
125
  const [ref, setRef] = createSignal(null);
104
126
  const normalizedColumns = createMemo(() => normalizeColumnDefinitions(stateProps.columns));
105
127
  const rowHeaderColumnKeys = createMemo(() => getRowHeaderColumnKeys(normalizedColumns()));
@@ -195,43 +217,38 @@ function Table(props) {
195
217
  const hooks = local.dragAndDropHooks;
196
218
  return Boolean(hooks?.useDroppableCollectionState && hooks.useDroppableCollection && (hooks.dropTargetDelegate || parentCollectionRenderer?.dropTargetDelegate || hooks.ListDropTargetDelegate));
197
219
  });
198
- const hasDraggableDnd = createMemo(() => {
220
+ const dragStateValue = createMemo(() => {
199
221
  const hooks = local.dragAndDropHooks;
200
222
  return Boolean(hooks?.useDraggableCollectionState && hooks.useDraggableCollection);
201
- });
202
- const dragState = createMemo(() => {
203
- if (!hasDraggableDnd()) return void 0;
204
- return local.dragAndDropHooks?.useDraggableCollectionState?.({ items: stateProps.items });
205
- });
206
- const dropState = createMemo(() => {
223
+ })() ? local.dragAndDropHooks?.useDraggableCollectionState?.({
224
+ items: stateProps.items,
225
+ collection: state.collection,
226
+ selectedKeys: state.selectedKeys,
227
+ isSelected: (key) => state.isSelected(key)
228
+ }) : void 0;
229
+ const dragState = () => dragStateValue;
230
+ const dropStateValue = hasDroppableDnd() ? local.dragAndDropHooks?.useDroppableCollectionState?.({ get collection() {
231
+ return state.collection;
232
+ } }) : void 0;
233
+ const dropState = () => dropStateValue;
234
+ if (local.dragAndDropHooks?.useDraggableCollection && dragStateValue) local.dragAndDropHooks.useDraggableCollection({}, dragStateValue, () => ref());
235
+ const droppableCollectionValue = (() => {
207
236
  if (!hasDroppableDnd()) return void 0;
208
- return local.dragAndDropHooks?.useDroppableCollectionState?.({});
209
- });
210
- createEffect(() => {
211
- if (!hasDraggableDnd()) return;
212
237
  const hooks = local.dragAndDropHooks;
213
- const activeDragState = dragState();
214
- if (!hooks?.useDraggableCollection || !activeDragState) return;
215
- hooks.useDraggableCollection({}, activeDragState, () => ref());
216
- });
217
- const droppableCollection = createMemo(() => {
218
- if (!hasDroppableDnd()) return void 0;
219
- const hooks = local.dragAndDropHooks;
220
- const activeDropState = dropState();
238
+ const activeDropState = dropStateValue;
221
239
  if (!hooks?.useDroppableCollection || !activeDropState) return void 0;
222
- const resolveDirection = () => {
223
- const el = ref();
224
- if (el && typeof window !== "undefined" && typeof window.getComputedStyle === "function") {
225
- if (window.getComputedStyle(el).direction === "rtl") return "rtl";
226
- }
227
- return typeof document !== "undefined" && document.dir === "rtl" ? "rtl" : "ltr";
228
- };
229
- const dropTargetDelegate = hooks.dropTargetDelegate ?? parentCollectionRenderer?.dropTargetDelegate ?? (hooks.ListDropTargetDelegate ? new hooks.ListDropTargetDelegate(() => state.collection, () => ref(), {
240
+ const resolveDirection = () => locale().direction;
241
+ const baseDropTargetDelegate = hooks.dropTargetDelegate ?? parentCollectionRenderer?.dropTargetDelegate ?? (hooks.ListDropTargetDelegate ? new hooks.ListDropTargetDelegate(() => state.collection, () => ref(), {
230
242
  layout: "grid",
231
243
  orientation: "vertical",
232
244
  direction: resolveDirection()
233
245
  }) : void 0);
234
- if (!dropTargetDelegate) return void 0;
246
+ if (!baseDropTargetDelegate) return void 0;
247
+ const expandedKeys = state.expandedKeys;
248
+ const dropTargetDelegate = createTreeDropTargetDelegate(baseDropTargetDelegate, {
249
+ collection: state.collection,
250
+ expandedKeys: expandedKeys === "all" ? new Set(Array.from(state.collection, (node) => node.key)) : expandedKeys ?? /* @__PURE__ */ new Set()
251
+ }, resolveDirection());
235
252
  return hooks.useDroppableCollection({
236
253
  dropTargetDelegate,
237
254
  keyboardDelegate: {
@@ -257,7 +274,8 @@ function Table(props) {
257
274
  },
258
275
  setFocusedKey: (key) => state.setFocusedKey(key)
259
276
  }, activeDropState, () => ref());
260
- });
277
+ })();
278
+ const droppableCollection = () => droppableCollectionValue;
261
279
  const isRootDropTarget = createMemo(() => {
262
280
  return Boolean(dropState()?.target?.type === "root");
263
281
  });
@@ -293,7 +311,8 @@ function Table(props) {
293
311
  },
294
312
  get isVirtualized() {
295
313
  return ariaProps.isVirtualized ?? parentCollectionRenderer?.isVirtualized ?? false;
296
- }
314
+ },
315
+ getScrollElement: () => ref()
297
316
  };
298
317
  const collectionRenderer = createMemo(() => ({
299
318
  ...parentCollectionRenderer,
@@ -304,27 +323,29 @@ function Table(props) {
304
323
  const tableProps = () => ({
305
324
  ref: (el) => {
306
325
  setRef(el);
307
- assignRef(local.ref, el);
326
+ assignRef$1(local.ref, el);
308
327
  },
309
- ...mergeProps$1(domProps(), cleanGridProps(), cleanFocusProps(), droppableCollection()?.collectionProps ?? {}),
328
+ ...mergeProps(domProps(), cleanGridProps(), cleanFocusProps(), droppableCollection()?.collectionProps ?? {}),
310
329
  class: renderProps.class(),
311
330
  style: renderProps.style(),
312
- "data-focused": state.isFocused || void 0,
313
- "data-focus-visible": isFocusVisible() || void 0,
314
- "data-empty": stateProps.items.length === 0 || void 0,
315
- "data-drop-target": isRootDropTarget() || void 0,
331
+ "data-focused": dataAttr(state.isFocused),
332
+ "data-focus-visible": dataAttr(isFocusVisible()),
333
+ "data-empty": dataAttr(stateProps.items.length === 0),
334
+ "data-drop-target": dataAttr(isRootDropTarget()),
316
335
  slot: local.slot
317
336
  });
318
- return <TableContext.Provider value={contextValue}>
319
- <TableStateContext.Provider value={state}>
320
- <CollectionRendererContext.Provider value={collectionRenderer()}>
337
+ return <TableContext value={contextValue}>
338
+ <TableStateContext value={state}>
339
+ <CollectionRendererContext value={collectionRenderer()}>
321
340
  {local.render ? local.render({
322
341
  ...tableProps(),
323
342
  children: tableChildren()
324
- }, renderValues()) : <table {...tableProps()}>{tableChildren()}</table>}
325
- </CollectionRendererContext.Provider>
326
- </TableStateContext.Provider>
327
- </TableContext.Provider>;
343
+ }, renderValues()) : <TableHost hostTag="table" virtualized={contextValue.isVirtualized} {...tableProps()}>
344
+ {tableChildren()}
345
+ </TableHost>}
346
+ </CollectionRendererContext>
347
+ </TableStateContext>
348
+ </TableContext>;
328
349
  }
329
350
  /**
330
351
  * A header row in a table containing column headers.
@@ -338,7 +359,8 @@ function TableHeader(props) {
338
359
  "children",
339
360
  "ref"
340
361
  ]);
341
- if (!useContext(TableContext)) throw new Error("TableHeader must be used within a Table");
362
+ const context = useContext(TableContext);
363
+ if (!context) throw new Error("TableHeader must be used within a Table");
342
364
  const { rowGroupProps } = createTableRowGroup(() => ({ type: "thead" }));
343
365
  const { isHovered, hoverProps } = createHover({
344
366
  isDisabled: false,
@@ -370,19 +392,24 @@ function TableHeader(props) {
370
392
  return rest;
371
393
  };
372
394
  const headerProps = () => ({
373
- ref: (el) => assignRef(local.ref, el),
395
+ ref: (el) => assignRef$1(local.ref, el),
374
396
  ...domProps,
375
397
  ...cleanRowGroupProps(),
376
398
  ...cleanHoverProps(),
377
399
  class: renderProps.class(),
378
400
  style: renderProps.style(),
379
401
  "data-hovered": isHovered() || void 0,
380
- children: <tr role="row">{local.children}</tr>
402
+ children: <TableHost hostTag="tr" virtualized={context.isVirtualized} role="row">
403
+ {local.children}
404
+ </TableHost>
381
405
  });
382
- return local.render ? local.render(headerProps(), renderValues()) : <thead ref={(el) => assignRef(local.ref, el)} {...domProps} {...cleanRowGroupProps()} {...cleanHoverProps()} class={renderProps.class()} style={renderProps.style()} data-hovered={isHovered() || void 0}>
383
- <tr role="row">{local.children}</tr>
384
- </thead>;
406
+ return local.render ? local.render(headerProps(), renderValues()) : <TableHost hostTag="thead" virtualized={context.isVirtualized} ref={(el) => assignRef$1(local.ref, el)} {...domProps} {...cleanRowGroupProps()} {...cleanHoverProps()} class={renderProps.class()} style={renderProps.style()} data-hovered={dataAttr(isHovered())}>
407
+ <TableHost hostTag="tr" virtualized={context.isVirtualized} role="row">
408
+ {local.children}
409
+ </TableHost>
410
+ </TableHost>;
385
411
  }
412
+ const TableColumnDefinitionContext = createContext(null);
386
413
  /**
387
414
  * A column header in a table.
388
415
  */
@@ -497,31 +524,45 @@ function TableColumn(props) {
497
524
  ...widthStyle
498
525
  };
499
526
  });
500
- const columnChildren = () => typeof local.children === "function" ? local.children(renderValues()) : local.children;
501
- const columnProps = () => ({
527
+ const columnChildren = () => {
528
+ const rawChildren = local.children;
529
+ return typeof rawChildren === "function" ? rawChildren(renderValues()) : rawChildren;
530
+ };
531
+ const columnAttrs = () => ({
502
532
  ref: (el) => {
503
533
  setRef(el);
504
- assignRef(local.ref, el);
534
+ assignRef$1(local.ref, el);
505
535
  },
506
536
  ...domProps,
507
- ...mergeProps$1(cleanColumnHeaderProps(), cleanHoverProps(), cleanFocusProps()),
537
+ ...mergeProps(cleanColumnHeaderProps(), cleanHoverProps(), cleanFocusProps()),
508
538
  class: renderProps.class(),
509
539
  style: columnStyle(),
510
- "data-sortable": local.allowsSorting || void 0,
540
+ "data-sortable": dataAttr(!!local.allowsSorting),
511
541
  "data-sort-direction": sortDirection() || void 0,
512
- "data-resizable": local.allowsResizing || void 0,
513
- "data-resizing": isResizing() || void 0,
514
- "data-hovered": isHovered() || void 0,
515
- "data-focused": state.focusedKey === local.id || void 0,
516
- "data-focus-visible": isFocusVisible() && state.focusedKey === local.id || void 0,
517
- children: columnChildren()
542
+ "data-resizable": dataAttr(!!local.allowsResizing),
543
+ "data-resizing": dataAttr(isResizing()),
544
+ "data-hovered": dataAttr(isHovered()),
545
+ "data-focused": dataAttr(state.focusedKey === local.id),
546
+ "data-focus-visible": dataAttr(isFocusVisible() && state.focusedKey === local.id),
547
+ "data-key": local.id
518
548
  });
519
- return local.render ? local.render(columnProps(), renderValues()) : <th ref={(el) => {
520
- setRef(el);
521
- assignRef(local.ref, el);
522
- }} {...domProps} {...mergeProps$1(cleanColumnHeaderProps(), cleanHoverProps(), cleanFocusProps())} class={renderProps.class()} style={columnStyle()} data-sortable={local.allowsSorting || void 0} data-sort-direction={sortDirection() || void 0} data-resizable={local.allowsResizing || void 0} data-resizing={isResizing() || void 0} data-hovered={isHovered() || void 0} data-focused={state.focusedKey === local.id || void 0} data-focus-visible={isFocusVisible() && state.focusedKey === local.id || void 0}>
523
- {columnChildren()}
524
- </th>;
549
+ const columnDefinition = {
550
+ key: local.id,
551
+ width: local.width ?? local.defaultWidth,
552
+ minWidth: local.minWidth,
553
+ maxWidth: local.maxWidth
554
+ };
555
+ if (local.render) return <TableColumnDefinitionContext value={columnDefinition}>
556
+ {local.render({
557
+ ...columnAttrs(),
558
+ children: columnChildren()
559
+ }, renderValues())}
560
+ </TableColumnDefinitionContext>;
561
+ return <TableColumnDefinitionContext value={columnDefinition}>
562
+ <TableHost hostTag="th" virtualized={context.isVirtualized} {...columnAttrs()}>
563
+ {columnChildren()}
564
+ </TableHost>
565
+ </TableColumnDefinitionContext>;
525
566
  }
526
567
  /**
527
568
  * The body of a table containing data rows.
@@ -564,21 +605,22 @@ function TableBody(props) {
564
605
  if (!virtualizer || !parentCollectionRenderer?.isVirtualized) return null;
565
606
  const rowCount = items().length;
566
607
  const baseRange = virtualizer.getVisibleRange(rowCount);
567
- const persistedIndexes = Array.from(persistedKeys()).map((key) => rowNodes().findIndex((node) => node.key === key)).filter((index) => index >= 0);
568
608
  const dropTarget = context.dropState?.target;
569
609
  const normalizedDropKey = getNormalizedDropTargetKey(dropTarget, context.collection);
570
- const focusedKey = context.state.focusedKey;
571
- const focusedIndex = focusedKey != null ? rowNodes().findIndex((node) => node.key === focusedKey) : -1;
572
- return mergePersistedKeysIntoVirtualRange(baseRange, persistedIndexes, rowCount, virtualizer, 80, {
573
- forceIncludeIndexes: [
574
- dropTarget?.type === "item" ? rowNodes().findIndex((node) => node.key === dropTarget.key) : -1,
575
- normalizedDropKey != null ? rowNodes().findIndex((node) => node.key === normalizedDropKey) : -1,
576
- dropTarget?.type === "item" ? -1 : focusedIndex
577
- ].filter((index) => index >= 0),
610
+ const forceIncludeIndexes = [dropTarget?.type === "item" ? rowNodes().findIndex((node) => node.key === dropTarget.key) : -1, normalizedDropKey != null ? rowNodes().findIndex((node) => node.key === normalizedDropKey) : -1].filter((index) => index >= 0);
611
+ return mergePersistedKeysIntoVirtualRange(baseRange, [], rowCount, virtualizer, 80, {
612
+ forceIncludeIndexes,
578
613
  forceIncludeMaxSpan: 320
579
614
  });
580
615
  });
581
- createEffect(() => {
616
+ const persistedOutsideIndexes = createMemo(() => {
617
+ const range = virtualRange();
618
+ if (!range) return [];
619
+ const persistedIndexes = Array.from(persistedKeys()).map((key) => rowNodes().findIndex((node) => node.key === key)).filter((index) => index >= 0);
620
+ return indexesOutsideRange(range, persistedIndexes);
621
+ });
622
+ createTrackedEffect(() => {
623
+ const _s2Cleanups = [];
582
624
  if (!virtualizer || !parentCollectionRenderer?.isVirtualized) return;
583
625
  virtualizer.setDropTargetItemCountResolver(() => items().length);
584
626
  virtualizer.setDropTargetIndexResolver((key) => {
@@ -593,11 +635,14 @@ function TableBody(props) {
593
635
  key: typeof node.key === "string" || typeof node.key === "number" ? node.key : void 0
594
636
  };
595
637
  });
596
- onCleanup(() => {
638
+ _s2Cleanups.push(() => {
597
639
  virtualizer.setDropTargetIndexResolver(void 0);
598
640
  virtualizer.setDropTargetItemCountResolver(void 0);
599
641
  virtualizer.setDropTargetResolver(void 0);
600
642
  });
643
+ return () => {
644
+ for (const c of _s2Cleanups) c();
645
+ };
601
646
  });
602
647
  const visibleItems = createMemo(() => {
603
648
  if (context.state.treeColumn != null) return rowNodes().map((node) => node.value);
@@ -606,43 +651,42 @@ function TableBody(props) {
606
651
  return items().slice(range.start, range.end);
607
652
  });
608
653
  const spacerColSpan = () => context.columns.length + (context.showSelectionCheckboxes ? 1 : 0);
654
+ const CollectionRoot = useCollectionRoot();
655
+ const collectionRows = () => {
656
+ const rows = <For each={visibleItems()}>
657
+ {(item, index) => {
658
+ const itemIndex = () => (virtualRange()?.start ?? 0) + index();
659
+ return renderCollectionDropSlots({
660
+ index: itemIndex(),
661
+ lastIndex: rowNodes().length - 1,
662
+ renderDropIndicator: (i, position) => parentCollectionRenderer?.renderDropIndicator?.(i, position),
663
+ children: local.children?.(item)
664
+ });
665
+ }}
666
+ </For>;
667
+ if (!context.isVirtualized) return rows;
668
+ return <CollectionRoot collection={virtualRange() ? items() : []} scrollRef={() => context.getScrollElement()} persistedKeys={persistedKeys()}>
669
+ {rows}
670
+ <For each={persistedOutsideIndexes()}>
671
+ {(index) => <PersistedVirtualItem index={index}>
672
+ {renderCollectionDropSlots({
673
+ index,
674
+ lastIndex: rowNodes().length - 1,
675
+ renderDropIndicator: (i, position) => parentCollectionRenderer?.renderDropIndicator?.(i, position),
676
+ children: local.children?.(items()[index])
677
+ })}
678
+ </PersistedVirtualItem>}
679
+ </For>
680
+ </CollectionRoot>;
681
+ };
609
682
  const bodyChildren = () => <>
610
683
  <SharedElementTransition>
611
- <Show when={isEmpty() && local.renderEmptyState && !local.isLoading} fallback={<>
612
- {virtualRange()?.offsetTop ? <tr role="presentation" aria-hidden="true" data-virtualizer-spacer="top">
613
- <td colSpan={spacerColSpan()} style={{
614
- height: `${virtualRange().offsetTop}px`,
615
- padding: "0",
616
- border: "0"
617
- }} />
618
- </tr> : null}
619
- <For each={visibleItems()}>
620
- {(item, index) => {
621
- const itemIndex = () => (virtualRange()?.start ?? 0) + index();
622
- const beforeIndicator = () => parentCollectionRenderer?.renderDropIndicator?.(itemIndex(), "before");
623
- const onIndicator = () => parentCollectionRenderer?.renderDropIndicator?.(itemIndex(), "on");
624
- const afterIndicator = () => parentCollectionRenderer?.renderDropIndicator?.(itemIndex(), "after");
625
- return <>
626
- {beforeIndicator()}
627
- {onIndicator()}
628
- {local.children?.(item)}
629
- {afterIndicator()}
630
- </>;
631
- }}
632
- </For>
633
- {virtualRange()?.offsetBottom ? <tr role="presentation" aria-hidden="true" data-virtualizer-spacer="bottom">
634
- <td colSpan={spacerColSpan()} style={{
635
- height: `${virtualRange().offsetBottom}px`,
636
- padding: "0",
637
- border: "0"
638
- }} />
639
- </tr> : null}
640
- </>}>
641
- <tr role="row" data-empty-state>
642
- <th role="rowheader" colSpan={spacerColSpan()}>
684
+ <Show when={isEmpty() && local.renderEmptyState && !local.isLoading} fallback={collectionRows()}>
685
+ <TableHost hostTag="tr" virtualized={context.isVirtualized} role="row" data-empty-state>
686
+ <TableHost hostTag="th" virtualized={context.isVirtualized} role="rowheader" colSpan={spacerColSpan()}>
643
687
  {local.renderEmptyState?.()}
644
- </th>
645
- </tr>
688
+ </TableHost>
689
+ </TableHost>
646
690
  </Show>
647
691
  </SharedElementTransition>
648
692
  <Show when={local.hasMore && local.onLoadMore}>
@@ -650,57 +694,17 @@ function TableBody(props) {
650
694
  </Show>
651
695
  </>;
652
696
  const bodyProps = () => ({
653
- ref: (el) => assignRef(local.ref, el),
697
+ ref: (el) => assignRef$1(local.ref, el),
654
698
  ...domProps,
655
699
  ...cleanRowGroupProps(),
656
700
  class: renderProps.class(),
657
701
  style: renderProps.style(),
658
- "data-empty": isEmpty() || void 0,
702
+ "data-empty": dataAttr(isEmpty()),
659
703
  children: bodyChildren()
660
704
  });
661
- return local.render ? local.render(bodyProps(), renderValues()) : <tbody ref={(el) => assignRef(local.ref, el)} {...domProps} {...cleanRowGroupProps()} class={renderProps.class()} style={renderProps.style()} data-empty={isEmpty() || void 0}>
662
- <SharedElementTransition>
663
- <Show when={isEmpty() && local.renderEmptyState && !local.isLoading} fallback={<>
664
- {virtualRange()?.offsetTop ? <tr role="presentation" aria-hidden="true" data-virtualizer-spacer="top">
665
- <td colSpan={spacerColSpan()} style={{
666
- height: `${virtualRange().offsetTop}px`,
667
- padding: "0",
668
- border: "0"
669
- }} />
670
- </tr> : null}
671
- <For each={visibleItems()}>
672
- {(item, index) => {
673
- const itemIndex = () => (virtualRange()?.start ?? 0) + index();
674
- const beforeIndicator = () => parentCollectionRenderer?.renderDropIndicator?.(itemIndex(), "before");
675
- const onIndicator = () => parentCollectionRenderer?.renderDropIndicator?.(itemIndex(), "on");
676
- const afterIndicator = () => parentCollectionRenderer?.renderDropIndicator?.(itemIndex(), "after");
677
- return <>
678
- {beforeIndicator()}
679
- {onIndicator()}
680
- {local.children?.(item)}
681
- {afterIndicator()}
682
- </>;
683
- }}
684
- </For>
685
- {virtualRange()?.offsetBottom ? <tr role="presentation" aria-hidden="true" data-virtualizer-spacer="bottom">
686
- <td colSpan={spacerColSpan()} style={{
687
- height: `${virtualRange().offsetBottom}px`,
688
- padding: "0",
689
- border: "0"
690
- }} />
691
- </tr> : null}
692
- </>}>
693
- <tr role="row" data-empty-state>
694
- <th role="rowheader" colSpan={spacerColSpan()}>
695
- {local.renderEmptyState?.()}
696
- </th>
697
- </tr>
698
- </Show>
699
- </SharedElementTransition>
700
- <Show when={local.hasMore && local.onLoadMore}>
701
- <TableLoadMoreItem onLoadMore={local.onLoadMore} isLoading={local.isLoading} colSpan={spacerColSpan()} />
702
- </Show>
703
- </tbody>;
705
+ return local.render ? local.render(bodyProps(), renderValues()) : <TableHost hostTag="tbody" virtualized={context.isVirtualized} ref={(el) => assignRef$1(local.ref, el)} {...domProps} {...cleanRowGroupProps()} class={renderProps.class()} style={renderProps.style()} data-empty={dataAttr(isEmpty())}>
706
+ {bodyChildren()}
707
+ </TableHost>;
704
708
  }
705
709
  /**
706
710
  * The footer of a table containing summary rows.
@@ -713,7 +717,8 @@ function TableFooter(props) {
713
717
  "slot",
714
718
  "children"
715
719
  ]);
716
- if (!useContext(TableContext)) throw new Error("TableFooter must be used within a Table");
720
+ const context = useContext(TableContext);
721
+ if (!context) throw new Error("TableFooter must be used within a Table");
717
722
  const { rowGroupProps } = createTableRowGroup(() => ({ type: "tfoot" }));
718
723
  const items = createMemo(() => local.items ?? []);
719
724
  const renderValues = createMemo(() => ({ isEmpty: items().length === 0 }));
@@ -726,16 +731,18 @@ function TableFooter(props) {
726
731
  const { ref: _ref, ...rest } = rowGroupProps;
727
732
  return rest;
728
733
  };
729
- return <tfoot {...domProps} {...cleanRowGroupProps()} class={renderProps.class()} style={renderProps.style()}>
734
+ return <TableHost hostTag="tfoot" virtualized={context.isVirtualized} {...domProps} {...cleanRowGroupProps()} class={renderProps.class()} style={renderProps.style()}>
730
735
  <Show when={local.items && typeof local.children === "function"} fallback={local.children}>
731
736
  <For each={items()}>{(item) => local.children(item)}</For>
732
737
  </Show>
733
- </tfoot>;
738
+ </TableHost>;
734
739
  }
735
740
  function TableLoadMoreItem(props) {
736
- let sentinelRef;
741
+ const [sentinel, setSentinel] = createSignal();
737
742
  const [isPending, setIsPending] = createSignal(false);
743
+ const scrollOffsetValue = createMemo(() => props.scrollOffset ?? 1);
738
744
  const isLoading = () => !!props.isLoading || isPending();
745
+ const tableContext = useContext(TableContext);
739
746
  const triggerLoadMore = async () => {
740
747
  if (isPending()) return;
741
748
  setIsPending(true);
@@ -745,7 +752,18 @@ function TableLoadMoreItem(props) {
745
752
  setIsPending(false);
746
753
  }
747
754
  };
748
- createEffect(() => {});
755
+ createEffect(() => ({
756
+ current: sentinel(),
757
+ scrollOffset: scrollOffsetValue()
758
+ }), ({ current, scrollOffset }) => {
759
+ if (!current || typeof IntersectionObserver !== "function") return;
760
+ const margin = `0px 0px ${100 * scrollOffset}% 0px`;
761
+ const observer = new IntersectionObserver((entries) => {
762
+ if (entries[0]?.isIntersecting) triggerLoadMore();
763
+ }, { rootMargin: margin });
764
+ observer.observe(current);
765
+ return () => observer.disconnect();
766
+ });
749
767
  const renderProps = useRenderProps({
750
768
  children: props.children ?? (() => isLoading() ? <div role="progressbar" aria-label="loading" /> : null),
751
769
  class: props.class,
@@ -753,28 +771,54 @@ function TableLoadMoreItem(props) {
753
771
  defaultClassName: "solidaria-Table-loadMore"
754
772
  }, () => ({ isLoading: isLoading() }));
755
773
  return <>
756
- <tr style={{
774
+ <Show when={tableContext?.isVirtualized} fallback={<>
775
+ <tr style={{
776
+ position: "relative",
777
+ width: 0,
778
+ height: 0,
779
+ overflow: "hidden"
780
+ }} inert>
781
+ <td>
782
+ <div ref={setSentinel} data-testid="loadMoreSentinel" style={{
783
+ position: "absolute",
784
+ height: "1px",
785
+ width: "1px"
786
+ }} />
787
+ </td>
788
+ </tr>
789
+ <Show when={isLoading()}>
790
+ <tr role="row" tabindex={0} onFocus={() => {
791
+ triggerLoadMore();
792
+ }} class={renderProps.class()} style={renderProps.style()} data-loading>
793
+ <td role="rowheader" colspan={props.colSpan ?? 1}>
794
+ {renderProps.renderChildren()}
795
+ </td>
796
+ </tr>
797
+ </Show>
798
+ </>}>
799
+ <TableHost hostTag="tr" virtualized style={{
757
800
  position: "relative",
758
801
  width: 0,
759
802
  height: 0,
760
803
  overflow: "hidden"
761
804
  }} inert>
762
- <td>
763
- <div ref={sentinelRef} data-testid="loadMoreSentinel" style={{
805
+ <TableHost hostTag="td" virtualized>
806
+ <div ref={setSentinel} data-testid="loadMoreSentinel" style={{
764
807
  position: "absolute",
765
808
  height: "1px",
766
809
  width: "1px"
767
810
  }} />
768
- </td>
769
- </tr>
770
- <Show when={isLoading()}>
771
- <tr role="row" tabIndex={0} onFocus={() => {
811
+ </TableHost>
812
+ </TableHost>
813
+ <Show when={isLoading()}>
814
+ <TableHost hostTag="tr" virtualized role="row" tabindex={0} onFocus={() => {
772
815
  triggerLoadMore();
773
816
  }} class={renderProps.class()} style={renderProps.style()} data-loading>
774
- <td role="rowheader" colSpan={props.colSpan ?? 1}>
775
- {renderProps.renderChildren()}
776
- </td>
777
- </tr>
817
+ <TableHost hostTag="td" virtualized role="rowheader" colSpan={props.colSpan ?? 1}>
818
+ {renderProps.renderChildren()}
819
+ </TableHost>
820
+ </TableHost>
821
+ </Show>
778
822
  </Show>
779
823
  </>;
780
824
  }
@@ -923,8 +967,12 @@ function TableRow(props) {
923
967
  return rest;
924
968
  };
925
969
  const rowContextValue = {
926
- rowKey: rowKey(),
927
- rowNode: rowNode(),
970
+ get rowKey() {
971
+ return rowKey();
972
+ },
973
+ get rowNode() {
974
+ return rowNode();
975
+ },
928
976
  get isRowDisabled() {
929
977
  return isDisabled();
930
978
  },
@@ -935,7 +983,8 @@ function TableRow(props) {
935
983
  index = registeredCellIds.length;
936
984
  registeredCellIds.push(cellId);
937
985
  }
938
- return explicitId ?? tableContext.columns[index]?.key;
986
+ const dataColumns = tableContext.columns.filter((column) => column.key !== "__selection__");
987
+ return explicitId ?? dataColumns[index]?.key;
939
988
  }
940
989
  };
941
990
  const dragButtonProps = createMemo(() => {
@@ -996,8 +1045,8 @@ function TableRow(props) {
996
1045
  "--table-row-level": rowLevel()
997
1046
  };
998
1047
  };
999
- return <TableRowContext.Provider value={rowContextValue}>
1000
- <ButtonContext.Provider value={buttonContextValue}>
1048
+ return <TableRowContext value={rowContextValue}>
1049
+ <ButtonContext value={buttonContextValue}>
1001
1050
  {(() => {
1002
1051
  registeredCellIds.length = 0;
1003
1052
  const rowChildrenContent = typeof local.children === "function" ? local.columns ? <For each={local.columns}>
@@ -1006,44 +1055,41 @@ function TableRow(props) {
1006
1055
  const tableRowProps = () => ({
1007
1056
  ref: (el) => {
1008
1057
  setRef(el);
1009
- assignRef(local.ref, el);
1058
+ assignRef$1(local.ref, el);
1059
+ const dragRef = (draggableItem()?.dragProps)?.ref;
1060
+ if (typeof dragRef === "function") dragRef(el);
1010
1061
  },
1011
1062
  ...domProps,
1012
- ...mergeProps$1(cleanRowProps(), cleanHoverProps(), cleanFocusProps(), focusWithinProps, draggableItem()?.dragProps ?? {}, droppableItem()?.dropProps ?? {}),
1063
+ ...mergeProps(cleanRowProps(), cleanHoverProps(), cleanFocusProps(), focusWithinProps, draggableItem()?.dragProps ?? {}, droppableItem()?.dropProps ?? {}),
1013
1064
  class: renderProps.class(),
1014
1065
  style: rowStyle(),
1015
1066
  "data-key": rowKey(),
1016
- "data-selected": isSelected() || void 0,
1017
- "data-focused": isFocused() || void 0,
1018
- "data-focus-visible": isFocusVisible$1() && isFocused() || void 0,
1067
+ "data-selected": dataAttr(isSelected()),
1068
+ "data-focused": dataAttr(isFocused()),
1069
+ "data-focus-visible": dataAttr(isFocusVisible$1() && isFocused()),
1019
1070
  "data-focus-visible-within": dataAttr(isFocusWithin() && isFocusVisible()),
1020
- "data-pressed": isPressed() || void 0,
1021
- "data-hovered": isHovered() || void 0,
1022
- "data-disabled": isDisabled() || void 0,
1071
+ "data-pressed": dataAttr(isPressed()),
1072
+ "data-hovered": dataAttr(isHovered()),
1073
+ "data-disabled": dataAttr(isDisabled()),
1023
1074
  "data-href": linkProps().href,
1024
1075
  "data-target": linkProps().target,
1025
1076
  "data-rel": linkProps().rel,
1026
1077
  "data-download": typeof linkProps().download === "string" ? linkProps().download : linkProps().download ? "" : void 0,
1027
1078
  "data-ping": linkProps().ping,
1028
1079
  "data-referrer-policy": linkProps().referrerPolicy,
1029
- "data-dragging": draggableItem()?.isDragging || void 0,
1030
- "data-drop-target": droppableItem()?.isDropTarget || void 0,
1031
- "data-expanded": isTreeRow() && isExpanded() || void 0,
1032
- "data-has-child-items": isTreeRow() && hasChildItems() || void 0,
1080
+ "data-dragging": dataAttr(!!draggableItem()?.isDragging),
1081
+ "data-drop-target": dataAttr(!!droppableItem()?.isDropTarget),
1082
+ "data-expanded": dataAttr(isTreeRow() && isExpanded()),
1083
+ "data-has-child-items": dataAttr(isTreeRow() && hasChildItems()),
1033
1084
  "data-level": isTreeRow() ? rowLevel() : void 0,
1034
1085
  children: rowChildrenContent
1035
1086
  });
1036
- return <Show when={local.render} fallback={<tr ref={(el) => {
1037
- setRef(el);
1038
- assignRef(local.ref, el);
1039
- }} {...domProps} {...mergeProps$1(cleanRowProps(), cleanHoverProps(), cleanFocusProps(), focusWithinProps, draggableItem()?.dragProps ?? {}, droppableItem()?.dropProps ?? {})} class={renderProps.class()} style={rowStyle()} data-key={rowKey()} data-selected={isSelected() || void 0} data-focused={isFocused() || void 0} data-focus-visible={isFocusVisible$1() && isFocused() || void 0} data-focus-visible-within={dataAttr(isFocusWithin() && isFocusVisible())} data-pressed={isPressed() || void 0} data-hovered={isHovered() || void 0} data-disabled={isDisabled() || void 0} data-href={linkProps().href} data-target={linkProps().target} data-rel={linkProps().rel} data-download={typeof linkProps().download === "string" ? linkProps().download : linkProps().download ? "" : void 0} data-ping={linkProps().ping} data-referrer-policy={linkProps().referrerPolicy} data-dragging={draggableItem()?.isDragging || void 0} data-drop-target={droppableItem()?.isDropTarget || void 0} data-expanded={isTreeRow() && isExpanded() || void 0} data-has-child-items={isTreeRow() && hasChildItems() || void 0} data-level={isTreeRow() ? rowLevel() : void 0}>
1040
- {rowChildrenContent}
1041
- </tr>}>
1087
+ return <Show when={local.render} fallback={tableContext.isVirtualized ? <div {...tableRowProps()} /> : <tr {...tableRowProps()} />}>
1042
1088
  {local.render(tableRowProps(), renderValues())}
1043
1089
  </Show>;
1044
1090
  })()}
1045
- </ButtonContext.Provider>
1046
- </TableRowContext.Provider>;
1091
+ </ButtonContext>
1092
+ </TableRowContext>;
1047
1093
  }
1048
1094
  /**
1049
1095
  * A cell in a table row.
@@ -1070,14 +1116,26 @@ function TableCell(props) {
1070
1116
  const columnKey = createMemo(() => rowContext.getCellColumnKey(cellId, local.id));
1071
1117
  const cellNode = createMemo(() => {
1072
1118
  const key = columnKey();
1119
+ const collection = state.collection;
1073
1120
  if (key != null) {
1074
1121
  const cellKey = `${rowKey}-${key}`;
1075
- const node = state.collection.getItem(cellKey);
1122
+ const node = collection.getItem(cellKey);
1076
1123
  if (node) return node;
1124
+ return {
1125
+ type: collection.rowHeaderColumnKeys.has(key) ? "rowheader" : "cell",
1126
+ key: cellKey,
1127
+ value: rowNode.value,
1128
+ textValue: "",
1129
+ level: 1,
1130
+ index: 0,
1131
+ parentKey: rowKey,
1132
+ hasChildNodes: false,
1133
+ childNodes: []
1134
+ };
1077
1135
  }
1078
1136
  return {
1079
1137
  type: "cell",
1080
- key: key ?? `${rowKey}-cell`,
1138
+ key: `${rowKey}-cell`,
1081
1139
  value: rowNode.value,
1082
1140
  textValue: "",
1083
1141
  level: 1,
@@ -1135,35 +1193,38 @@ function TableCell(props) {
1135
1193
  const { ref: _ref3, ...rest } = focusProps;
1136
1194
  return rest;
1137
1195
  };
1138
- const cellChildren = () => typeof local.children === "function" ? local.children(renderValues()) : local.children;
1139
- const tableCellProps = () => ({
1196
+ const cellChildren = () => {
1197
+ const rawChildren = local.children;
1198
+ return typeof rawChildren === "function" ? rawChildren(renderValues()) : rawChildren;
1199
+ };
1200
+ const cellAttrs = () => ({
1140
1201
  ref: (el) => {
1141
1202
  setRef(el);
1142
- assignRef(local.ref, el);
1203
+ assignRef$1(local.ref, el);
1143
1204
  },
1144
1205
  ...domProps,
1145
- ...mergeProps$1(cleanCellProps(), cleanHoverProps(), cleanFocusProps()),
1206
+ ...mergeProps(cleanCellProps(), cleanHoverProps(), cleanFocusProps()),
1146
1207
  colSpan: local.colSpan,
1147
1208
  class: renderProps.class(),
1148
1209
  style: renderProps.style(),
1149
1210
  "data-key": cellNode().key,
1150
- "data-focused": isFocused() || void 0,
1151
- "data-focus-visible": isFocusVisible() && isFocused() || void 0,
1211
+ "data-focused": dataAttr(isFocused()),
1212
+ "data-focus-visible": dataAttr(isFocusVisible() && isFocused()),
1152
1213
  "data-column-index": cellColumnIndex(),
1153
- "data-pressed": isPressed() || void 0,
1154
- "data-hovered": isHovered() || void 0,
1155
- "data-tree-column": isTreeColumn() || void 0,
1156
- "data-expanded": isTreeGridCell() && cellIsExpanded() || void 0,
1157
- "data-has-child-items": isTreeGridCell() && cellHasChildItems() || void 0,
1158
- "data-level": isTreeGridCell() ? cellLevel() : void 0,
1159
- children: cellChildren()
1214
+ "data-pressed": dataAttr(isPressed()),
1215
+ "data-hovered": dataAttr(isHovered()),
1216
+ "data-tree-column": dataAttr(isTreeColumn()),
1217
+ "data-expanded": dataAttr(isTreeGridCell() && cellIsExpanded()),
1218
+ "data-has-child-items": dataAttr(isTreeGridCell() && cellHasChildItems()),
1219
+ "data-level": isTreeGridCell() ? cellLevel() : void 0
1160
1220
  });
1161
- return local.render ? local.render(tableCellProps(), renderValues()) : <td ref={(el) => {
1162
- setRef(el);
1163
- assignRef(local.ref, el);
1164
- }} {...domProps} {...mergeProps$1(cleanCellProps(), cleanHoverProps(), cleanFocusProps())} colSpan={local.colSpan} class={renderProps.class()} style={renderProps.style()} data-key={cellNode().key} data-focused={isFocused() || void 0} data-focus-visible={isFocusVisible() && isFocused() || void 0} data-column-index={cellColumnIndex()} data-pressed={isPressed() || void 0} data-hovered={isHovered() || void 0} data-tree-column={isTreeColumn() || void 0} data-expanded={isTreeGridCell() && cellIsExpanded() || void 0} data-has-child-items={isTreeGridCell() && cellHasChildItems() || void 0} data-level={isTreeGridCell() ? cellLevel() : void 0}>
1221
+ if (local.render) return local.render({
1222
+ ...cellAttrs(),
1223
+ children: cellChildren()
1224
+ }, renderValues());
1225
+ return <TableHost hostTag="td" virtualized={tableContext.isVirtualized} {...cellAttrs()}>
1165
1226
  {cellChildren()}
1166
- </td>;
1227
+ </TableHost>;
1167
1228
  }
1168
1229
  /**
1169
1230
  * A checkbox cell for row selection.
@@ -1177,7 +1238,7 @@ function TableSelectionCheckbox(props) {
1177
1238
  key: props.rowKey,
1178
1239
  isRowDisabled: rowContext?.isRowDisabled
1179
1240
  }), () => state);
1180
- return <input {...selectionCheckboxAria.checkboxProps} class={props.class} style={props.style} tabIndex={props.excludeFromTabOrder ? -1 : selectionCheckboxAria.checkboxProps.tabIndex} aria-label={props["aria-label"] ?? selectionCheckboxAria.checkboxProps["aria-label"]} onClick={(event) => event.stopPropagation()} onKeyDown={(event) => event.stopPropagation()} onKeyUp={(event) => event.stopPropagation()} onPointerDown={(event) => event.stopPropagation()} onPointerUp={(event) => event.stopPropagation()} />;
1241
+ return <input {...selectionCheckboxAria.checkboxProps} class={props.class} style={props.style} tabindex={-1} aria-label={props["aria-label"] ?? selectionCheckboxAria.checkboxProps["aria-label"]} onClick={(event) => event.stopPropagation()} onKeyDown={(event) => event.stopPropagation()} onKeyUp={(event) => event.stopPropagation()} onPointerDown={(event) => event.stopPropagation()} onPointerUp={(event) => event.stopPropagation()} />;
1181
1242
  }
1182
1243
  /**
1183
1244
  * A checkbox for select-all functionality.
@@ -1187,9 +1248,17 @@ function TableSelectAllCheckbox(props = {}) {
1187
1248
  if (!context) throw new Error("TableSelectAllCheckbox must be used within a Table");
1188
1249
  const { state } = context;
1189
1250
  const selectAllCheckboxAria = createTableSelectAllCheckbox(() => state);
1190
- let inputRef;
1191
- createEffect(() => {});
1192
- return <input ref={inputRef} {...selectAllCheckboxAria.checkboxProps} class={props.class} style={props.style} aria-label={props["aria-label"] ?? selectAllCheckboxAria.checkboxProps["aria-label"]} />;
1251
+ const [inputEl, setInputEl] = createSignal(null);
1252
+ const applyIndeterminate = (input) => {
1253
+ if (input) input.indeterminate = selectAllCheckboxAria.isIndeterminate;
1254
+ };
1255
+ createRenderEffect(() => [selectAllCheckboxAria.checkboxProps.checked, inputEl()], ([, input]) => {
1256
+ applyIndeterminate(input);
1257
+ });
1258
+ return <input ref={(el) => {
1259
+ setInputEl(el);
1260
+ applyIndeterminate(el);
1261
+ }} {...selectAllCheckboxAria.checkboxProps} class={props.class} style={props.style} aria-label={props["aria-label"] ?? selectAllCheckboxAria.checkboxProps["aria-label"]} />;
1193
1262
  }
1194
1263
  Table.Header = TableHeader;
1195
1264
  Table.Column = TableColumn;
@@ -1212,8 +1281,15 @@ function ColumnResizer(props) {
1212
1281
  "slot",
1213
1282
  "children"
1214
1283
  ]);
1284
+ const stringFormatter = createStringFormatter(racIntlStrings, "react-aria-components");
1215
1285
  const registerColumn = useContext(ResizableTableRegisterContext);
1216
- if (registerColumn) registerColumn(local.column.key, { key: local.column.key });
1286
+ const columnDef = useContext(TableColumnDefinitionContext);
1287
+ if (registerColumn) registerColumn(local.column.key, {
1288
+ key: local.column.key,
1289
+ width: columnDef?.width,
1290
+ minWidth: columnDef?.minWidth,
1291
+ maxWidth: columnDef?.maxWidth
1292
+ });
1217
1293
  const resizeCtx = useContext(TableColumnResizeStateContext);
1218
1294
  const hasResizeContext = !!resizeCtx;
1219
1295
  const noopResizeState = {
@@ -1238,7 +1314,7 @@ function ColumnResizer(props) {
1238
1314
  const [isFocused, setIsFocused] = createSignal(false);
1239
1315
  const columnResize = createTableColumnResize(() => ({
1240
1316
  column: local.column,
1241
- "aria-label": local["aria-label"] ?? "Resizer",
1317
+ "aria-label": local["aria-label"] ?? stringFormatter().format("tableResizer"),
1242
1318
  isDisabled: local.isDisabled,
1243
1319
  onResizeStart: (widths) => {
1244
1320
  resizeCtx?.getCallbacks?.().onResizeStart?.(widths);
@@ -1268,7 +1344,7 @@ function ColumnResizer(props) {
1268
1344
  const { ref: _ref, ...rest } = hoverProps;
1269
1345
  return rest;
1270
1346
  };
1271
- return <div {...domProps} {...columnResize.resizerProps} {...cleanHoverProps()} class={renderProps.class()} style={renderProps.style()} data-hovered={isHovered() || void 0} data-resizing={columnResize.isResizing() || void 0}>
1347
+ return <div {...domProps} {...columnResize.resizerProps} {...cleanHoverProps()} class={renderProps.class()} style={renderProps.style()} data-hovered={dataAttr(isHovered())} data-resizing={dataAttr(columnResize.isResizing())}>
1272
1348
  <Show when={hasResizeContext}>
1273
1349
  <input {...columnResize.inputProps} onFocus={() => setIsFocused(true)} onBlur={() => setIsFocused(false)} />
1274
1350
  </Show>
@@ -1288,7 +1364,8 @@ function ResizableTableContainer(props) {
1288
1364
  ]);
1289
1365
  const [containerRef, setContainerRef] = createSignal(null);
1290
1366
  const [tableWidth, setTableWidth] = createSignal(0);
1291
- createEffect(() => {
1367
+ createTrackedEffect(() => {
1368
+ const _s2Cleanups = [];
1292
1369
  const el = containerRef();
1293
1370
  if (!el) return;
1294
1371
  setTableWidth(el.clientWidth);
@@ -1297,10 +1374,13 @@ function ResizableTableContainer(props) {
1297
1374
  for (const entry of entries) setTableWidth(entry.contentRect.width);
1298
1375
  });
1299
1376
  observer.observe(el);
1300
- onCleanup(() => observer.disconnect());
1377
+ _s2Cleanups.push(() => observer.disconnect());
1301
1378
  }
1379
+ return () => {
1380
+ for (const c of _s2Cleanups) c();
1381
+ };
1302
1382
  });
1303
- const [autoColumns, setAutoColumns] = createSignal(/* @__PURE__ */ new Map());
1383
+ const [autoColumns, setAutoColumns] = createSignal(/* @__PURE__ */ new Map(), { ownedWrite: true });
1304
1384
  const registerColumn = (key, def) => {
1305
1385
  setAutoColumns((prev) => {
1306
1386
  const next = new Map(prev);
@@ -1332,8 +1412,8 @@ function ResizableTableContainer(props) {
1332
1412
  onResizeEnd: local.onResizeEnd
1333
1413
  })
1334
1414
  };
1335
- return <ResizableTableRegisterContext.Provider value={registerColumn}>
1336
- <TableColumnResizeStateContext.Provider value={contextValue}>
1415
+ return <ResizableTableRegisterContext value={registerColumn}>
1416
+ <TableColumnResizeStateContext value={contextValue}>
1337
1417
  <div ref={setContainerRef} {...domProps} class={local.class ?? "solidaria-ResizableTableContainer"} style={{
1338
1418
  position: "relative",
1339
1419
  overflow: "auto",
@@ -1341,8 +1421,8 @@ function ResizableTableContainer(props) {
1341
1421
  }}>
1342
1422
  {local.children}
1343
1423
  </div>
1344
- </TableColumnResizeStateContext.Provider>
1345
- </ResizableTableRegisterContext.Provider>;
1424
+ </TableColumnResizeStateContext>
1425
+ </ResizableTableRegisterContext>;
1346
1426
  }
1347
1427
  /** Internal context for ColumnResizer to register itself with ResizableTableContainer */
1348
1428
  const ResizableTableRegisterContext = createContext(null);