@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/src/Tabs.tsx CHANGED
@@ -1,3 +1,17 @@
1
+ /*
2
+ * Copyright 2022 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria-components/src/Tabs.tsx
14
+
1
15
  /**
2
16
  * Tabs component for solidaria-components
3
17
  *
@@ -6,18 +20,19 @@
6
20
  */
7
21
 
8
22
  import {
9
- type Accessor,
10
- type JSX,
11
23
  createContext,
12
24
  createEffect,
13
25
  createMemo,
14
26
  createSignal,
15
- splitProps,
16
27
  useContext,
17
28
  For,
18
29
  Show,
19
30
  onCleanup,
31
+ sharedConfig,
32
+ createTrackedEffect,
20
33
  } from "solid-js";
34
+ import type { Accessor } from "solid-js";
35
+ import type { JSX } from "@solidjs/web";
21
36
  import {
22
37
  createTabList,
23
38
  createTab,
@@ -42,6 +57,9 @@ import {
42
57
  type SlotProps,
43
58
  useRenderProps,
44
59
  filterDOMProps,
60
+ dataAttr,
61
+ ariaTrueFalse,
62
+ attrTrue,
45
63
  } from "./utils";
46
64
  import {
47
65
  SelectionIndicator,
@@ -49,6 +67,7 @@ import {
49
67
  type SelectionIndicatorContextValue,
50
68
  } from "./SelectionIndicator";
51
69
  import { SharedElementTransition } from "./SharedElementTransition";
70
+ import { splitProps } from "@proyecto-viviana/solidaria/utils";
52
71
 
53
72
  export {
54
73
  SelectionIndicator,
@@ -249,8 +268,12 @@ export function Tabs<T>(props: TabsProps<T>): JSX.Element {
249
268
  ],
250
269
  );
251
270
 
252
- const [tabListItems, setTabListItems] = createSignal<T[] | undefined>(undefined);
253
- const [registeredTabs, setRegisteredTabs] = createSignal<RegisteredTab[]>([]);
271
+ const [tabListItems, setTabListItems] = createSignal<T[] | undefined>(undefined, {
272
+ ownedWrite: true,
273
+ });
274
+ const [registeredTabs, setRegisteredTabs] = createSignal<RegisteredTab[]>([], {
275
+ ownedWrite: true,
276
+ });
254
277
  const effectiveItems = createMemo<T[]>(() => {
255
278
  if (stateProps.items) return stateProps.items;
256
279
  if (tabListItems()) return tabListItems() ?? [];
@@ -346,20 +369,20 @@ export function Tabs<T>(props: TabsProps<T>): JSX.Element {
346
369
  };
347
370
 
348
371
  return (
349
- <TabsContext.Provider value={contextValue as TabsContextValue<unknown>}>
350
- <TabsStateContext.Provider value={state}>
372
+ <TabsContext value={contextValue as TabsContextValue<unknown>}>
373
+ <TabsStateContext value={state}>
351
374
  <div
352
375
  {...domProps()}
353
376
  ref={(element) => assignRef(local.ref, element)}
354
377
  class={renderProps.class()}
355
378
  style={renderProps.style()}
356
379
  data-orientation={state.orientation()}
357
- data-disabled={state.isDisabled() || undefined}
380
+ data-disabled={dataAttr(state.isDisabled())}
358
381
  >
359
382
  {props.children as JSX.Element}
360
383
  </div>
361
- </TabsStateContext.Provider>
362
- </TabsContext.Provider>
384
+ </TabsStateContext>
385
+ </TabsContext>
363
386
  );
364
387
  }
365
388
 
@@ -375,65 +398,26 @@ export function TabList<T>(props: TabListProps<T>): JSX.Element {
375
398
 
376
399
  const context = useContext(TabsContext);
377
400
 
378
- return (
379
- <Show when={context} fallback={<div class="solidaria-TabList" role="tablist" />}>
380
- {(ctx) => (
381
- <TabListInner
382
- context={ctx()}
383
- local={local}
384
- items={collectionProps.items}
385
- ariaProps={ariaProps}
386
- children={props.children}
387
- />
388
- )}
389
- </Show>
390
- );
391
- }
392
-
393
- /** Inner TabList component that has access to context */
394
- function TabListInner<T>(props: {
395
- context: TabsContextValue<unknown>;
396
- local: {
397
- class?: ClassNameOrFunction<TabListRenderProps>;
398
- style?: StyleOrFunction<TabListRenderProps>;
399
- slot?: string;
400
- };
401
- ariaProps: Omit<TabListProps<T>, "children" | "class" | "style" | "slot" | "items">;
402
- items?: T[];
403
- children?: JSX.Element | ((item: T) => JSX.Element);
404
- }): JSX.Element {
405
- const state = props.context.state as TabListState<T>;
406
- const items = props.context.items as Accessor<T[]>;
407
- const renderItem = createMemo(() => {
408
- if (typeof props.children !== "function") {
409
- return undefined;
410
- }
411
-
412
- const child = props.children as (...args: unknown[]) => JSX.Element;
413
- if (child.length === 0 && props.items === undefined) {
414
- return undefined;
415
- }
416
-
417
- return props.children as (item: T) => JSX.Element;
418
- });
419
- const renderedChildren = createMemo(() => {
420
- if (renderItem() || typeof props.children !== "function") {
421
- return props.children as JSX.Element;
422
- }
401
+ if (!context) {
402
+ return <div class="solidaria-TabList" role="tablist" />;
403
+ }
423
404
 
424
- return (props.children as () => JSX.Element)();
425
- });
405
+ const state = context.state as TabListState<T>;
406
+ const items = context.items as Accessor<T[]>;
426
407
 
427
- createEffect(() => {
428
- props.context.setTabListItems(props.items as unknown[] | undefined);
429
- });
408
+ createEffect(
409
+ () => collectionProps.items as unknown[] | undefined,
410
+ (items) => {
411
+ context.setTabListItems(items);
412
+ },
413
+ );
430
414
 
431
415
  onCleanup(() => {
432
- props.context.setTabListItems(undefined);
416
+ context.setTabListItems(undefined);
433
417
  });
434
418
 
435
419
  // Create tab list aria props
436
- const { tabListProps } = createTabList<T>(props.ariaProps as AriaTabListProps, state);
420
+ const { tabListProps } = createTabList<T>(ariaProps as AriaTabListProps, state);
437
421
 
438
422
  const renderValues = createMemo<TabListRenderProps>(() => ({
439
423
  orientation: state.orientation(),
@@ -442,8 +426,8 @@ function TabListInner<T>(props: {
442
426
 
443
427
  const renderProps = useRenderProps(
444
428
  {
445
- class: props.local.class,
446
- style: props.local.style,
429
+ class: local.class,
430
+ style: local.style,
447
431
  defaultClassName: "solidaria-TabList",
448
432
  },
449
433
  renderValues,
@@ -461,6 +445,24 @@ function TabListInner<T>(props: {
461
445
  tabListProps.onFocusOut(e);
462
446
  };
463
447
 
448
+ const renderChildren = () => {
449
+ const children = props.children;
450
+ const isItemRenderer =
451
+ typeof children === "function" && (children as (...args: unknown[]) => unknown).length > 0;
452
+
453
+ if (isItemRenderer) {
454
+ return (
455
+ <SharedElementTransition>
456
+ <For each={(collectionProps.items ?? items()) as T[]}>
457
+ {(item) => (children as (item: T) => JSX.Element)(item)}
458
+ </For>
459
+ </SharedElementTransition>
460
+ );
461
+ }
462
+
463
+ return children as JSX.Element;
464
+ };
465
+
464
466
  return (
465
467
  <div
466
468
  role={tabListProps.role}
@@ -474,15 +476,9 @@ function TabListInner<T>(props: {
474
476
  onFocusIn={handleFocus}
475
477
  onFocusOut={handleBlur}
476
478
  data-orientation={state.orientation()}
477
- data-disabled={state.isDisabled() || undefined}
479
+ data-disabled={dataAttr(state.isDisabled())}
478
480
  >
479
- {renderItem() ? (
480
- <SharedElementTransition>
481
- <For each={(props.items ?? items()) as T[]}>{(item) => renderItem()?.(item)}</For>
482
- </SharedElementTransition>
483
- ) : (
484
- renderedChildren()
485
- )}
481
+ {renderChildren()}
486
482
  </div>
487
483
  );
488
484
  }
@@ -496,68 +492,47 @@ export function Tab(props: TabProps): JSX.Element {
496
492
  const context = useContext(TabsStateContext);
497
493
  const tabsContext = useContext(TabsContext);
498
494
 
499
- return (
500
- <Show when={context} fallback={<div class="solidaria-Tab" role="tab" />}>
501
- {(state) => (
502
- <TabInner
503
- state={state()}
504
- tabsContext={tabsContext}
505
- local={local}
506
- ariaProps={ariaProps}
507
- children={props.children}
508
- />
509
- )}
510
- </Show>
511
- );
512
- }
495
+ if (!context) {
496
+ return <div class="solidaria-Tab" role="tab" />;
497
+ }
513
498
 
514
- /** Inner Tab component that has access to context */
515
- function TabInner(props: {
516
- state: TabListState<unknown>;
517
- tabsContext: TabsContextValue<unknown> | null;
518
- local: {
519
- class?: ClassNameOrFunction<TabRenderProps>;
520
- style?: StyleOrFunction<TabRenderProps>;
521
- slot?: string;
522
- id: Key;
523
- };
524
- ariaProps: Omit<TabProps, "children" | "class" | "style" | "slot" | "id">;
525
- children?: RenderChildren<TabRenderProps>;
526
- }): JSX.Element {
527
- let tabRef: HTMLDivElement | undefined;
499
+ const [tabRef, setTabRef] = createSignal<HTMLDivElement | null>(null);
528
500
  const textValue = () => {
529
- if (props.ariaProps["aria-label"]) return props.ariaProps["aria-label"];
501
+ if (ariaProps["aria-label"]) return ariaProps["aria-label"];
530
502
  return typeof props.children === "string" ? props.children : undefined;
531
503
  };
532
504
 
533
- createEffect(() => {
534
- props.tabsContext?.registerTab({
535
- id: props.local.id,
505
+ createEffect(
506
+ () => ({
507
+ id: local.id,
536
508
  textValue: textValue(),
537
- isDisabled: props.ariaProps.isDisabled,
538
- });
539
- });
509
+ isDisabled: ariaProps.isDisabled,
510
+ }),
511
+ (tab) => {
512
+ tabsContext?.registerTab(tab);
513
+ },
514
+ );
540
515
 
541
516
  onCleanup(() => {
542
- props.tabsContext?.unregisterTab(props.local.id);
517
+ tabsContext?.unregisterTab(local.id);
543
518
  });
544
519
 
545
520
  // Create tab aria props
546
521
  const tabAria = createTab<unknown>(
547
522
  {
548
- key: props.local.id,
523
+ key: local.id,
549
524
  get isDisabled() {
550
- return props.ariaProps.isDisabled;
525
+ return ariaProps.isDisabled;
551
526
  },
552
527
  get "aria-label"() {
553
- return props.ariaProps["aria-label"];
528
+ return ariaProps["aria-label"];
554
529
  },
555
530
  get "aria-labelledby"() {
556
- return props.ariaProps["aria-labelledby"];
531
+ return ariaProps["aria-labelledby"];
557
532
  },
558
533
  },
559
- props.state,
560
- () => tabRef ?? null,
534
+ context,
535
+ tabRef,
561
536
  );
562
537
 
563
538
  const { isHovered, hoverProps } = createHover({
@@ -580,8 +555,8 @@ function TabInner(props: {
580
555
  get children() {
581
556
  return props.children;
582
557
  },
583
- class: props.local.class,
584
- style: props.local.style,
558
+ class: local.class,
559
+ style: local.style,
585
560
  defaultClassName: "solidaria-Tab",
586
561
  },
587
562
  renderValues,
@@ -592,37 +567,37 @@ function TabInner(props: {
592
567
  }));
593
568
 
594
569
  return (
595
- <SelectionIndicatorContext.Provider value={selectionIndicatorContext()}>
596
- <div
597
- ref={tabRef}
598
- id={tabAria.tabProps.id}
599
- role={tabAria.tabProps.role}
600
- aria-selected={tabAria.isSelected()}
601
- aria-disabled={tabAria.isDisabled() || undefined}
602
- aria-controls={tabAria.isSelected() ? tabAria.tabProps["aria-controls"] : undefined}
603
- aria-label={tabAria.tabProps["aria-label"]}
604
- aria-labelledby={tabAria.tabProps["aria-labelledby"]}
605
- tabIndex={tabAria.tabProps.tabIndex}
606
- class={renderProps.class()}
607
- style={renderProps.style()}
608
- onKeyDown={tabAria.tabProps.onKeyDown}
609
- onMouseDown={tabAria.tabProps.onMouseDown}
610
- onPointerDown={tabAria.tabProps.onPointerDown}
611
- onClick={tabAria.tabProps.onClick}
612
- onFocus={tabAria.tabProps.onFocus}
613
- onFocusIn={tabAria.tabProps.onFocusIn}
614
- onBlur={tabAria.tabProps.onBlur}
615
- {...hoverProps}
616
- data-selected={tabAria.isSelected() || undefined}
617
- data-focused={tabAria.isFocused() || undefined}
618
- data-focus-visible={tabAria.isFocusVisible() || undefined}
619
- data-pressed={tabAria.isPressed() || undefined}
620
- data-hovered={isHovered() || undefined}
621
- data-disabled={tabAria.isDisabled() || undefined}
622
- >
570
+ <div
571
+ ref={setTabRef}
572
+ id={tabAria.tabProps.id}
573
+ role={tabAria.tabProps.role}
574
+ aria-selected={ariaTrueFalse(tabAria.isSelected())}
575
+ aria-disabled={attrTrue(tabAria.isDisabled())}
576
+ aria-controls={tabAria.isSelected() ? tabAria.tabProps["aria-controls"] : undefined}
577
+ aria-label={tabAria.tabProps["aria-label"]}
578
+ aria-labelledby={tabAria.tabProps["aria-labelledby"]}
579
+ tabindex={tabAria.tabProps.tabIndex}
580
+ class={renderProps.class()}
581
+ style={renderProps.style()}
582
+ onKeyDown={tabAria.tabProps.onKeyDown}
583
+ onMouseDown={tabAria.tabProps.onMouseDown}
584
+ onPointerDown={tabAria.tabProps.onPointerDown}
585
+ onClick={tabAria.tabProps.onClick}
586
+ onFocus={tabAria.tabProps.onFocus}
587
+ onFocusIn={tabAria.tabProps.onFocusIn}
588
+ onBlur={tabAria.tabProps.onBlur}
589
+ {...hoverProps}
590
+ data-selected={dataAttr(tabAria.isSelected())}
591
+ data-focused={dataAttr(tabAria.isFocused())}
592
+ data-focus-visible={dataAttr(tabAria.isFocusVisible())}
593
+ data-pressed={dataAttr(tabAria.isPressed())}
594
+ data-hovered={dataAttr(isHovered())}
595
+ data-disabled={dataAttr(tabAria.isDisabled())}
596
+ >
597
+ <SelectionIndicatorContext value={selectionIndicatorContext()}>
623
598
  {renderProps.renderChildrenStable()}
624
- </div>
625
- </SelectionIndicatorContext.Provider>
599
+ </SelectionIndicatorContext>
600
+ </div>
626
601
  );
627
602
  }
628
603
 
@@ -639,7 +614,7 @@ export function TabPanels(props: TabPanelsProps): JSX.Element {
639
614
  let previousSelectedKey: Key | null | undefined = undefined;
640
615
  const [panelSize, setPanelSize] = createSignal<{ width?: string; height?: string }>({});
641
616
 
642
- createEffect(() => {
617
+ createTrackedEffect(() => {
643
618
  const selectedKey = state?.selectedKey() ?? null;
644
619
  if (!ref) {
645
620
  previousSelectedKey = selectedKey;
@@ -694,12 +669,13 @@ export function TabPanels(props: TabPanelsProps): JSX.Element {
694
669
  */
695
670
  export function TabPanel(props: TabPanelProps): JSX.Element {
696
671
  const [local, ariaProps] = splitProps(props, ["class", "style", "slot", "shouldForceMount"]);
672
+ const [panelRef, setPanelRef] = createSignal<HTMLDivElement>();
697
673
 
698
674
  // Get state from context (may be null for SSR scenarios)
699
675
  const state = useContext(TabsStateContext);
700
676
 
701
677
  // Create tab panel aria props
702
- const { tabPanelProps, isSelected } = createTabPanel<unknown>(ariaProps, state);
678
+ const { tabPanelProps, isSelected } = createTabPanel<unknown>(ariaProps, state, panelRef);
703
679
 
704
680
  // Create focus ring for the panel
705
681
  const { isFocused, isFocusVisible, focusProps } = createFocusRing();
@@ -744,23 +720,24 @@ export function TabPanel(props: TabPanelProps): JSX.Element {
744
720
  return (
745
721
  <Show when={shouldRender()}>
746
722
  <div
723
+ ref={setPanelRef}
747
724
  id={tabPanelProps.id}
748
725
  role={tabPanelProps.role}
749
726
  aria-labelledby={tabPanelProps["aria-labelledby"]}
750
727
  aria-label={tabPanelProps["aria-label"]}
751
728
  aria-describedby={tabPanelProps["aria-describedby"]}
752
- tabIndex={tabPanelProps.tabIndex}
729
+ tabindex={tabPanelProps.tabIndex}
753
730
  class={renderProps.class()}
754
731
  style={renderProps.style()}
755
732
  onFocus={focusProps.onFocus}
756
733
  onBlur={focusProps.onBlur}
757
- data-selected={isSelected() || undefined}
758
- data-focused={isFocused() || undefined}
759
- data-focus-visible={isFocusVisible() || undefined}
734
+ data-selected={dataAttr(isSelected())}
735
+ data-focused={dataAttr(isFocused())}
736
+ data-focus-visible={dataAttr(isFocusVisible())}
760
737
  inert={isInert() ? true : undefined}
761
- data-inert={isInert() || undefined}
762
- data-entering={isEntering() || undefined}
763
- data-exiting={isExiting() || undefined}
738
+ data-inert={dataAttr(isInert())}
739
+ data-entering={dataAttr(isEntering())}
740
+ data-exiting={dataAttr(isExiting())}
764
741
  hidden={
765
742
  ariaProps.id !== undefined && !isSelected() && !local.shouldForceMount ? true : undefined
766
743
  }
package/src/TagGroup.tsx CHANGED
@@ -1,3 +1,17 @@
1
+ /*
2
+ * Copyright 2022 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria-components/src/TagGroup.tsx
14
+
1
15
  /**
2
16
  * TagGroup component for solidaria-components
3
17
  *
@@ -8,16 +22,8 @@
8
22
  * with support for keyboard navigation, selection, and removal.
9
23
  */
10
24
 
11
- import {
12
- type JSX,
13
- createContext,
14
- createMemo,
15
- createSignal,
16
- splitProps,
17
- useContext,
18
- For,
19
- Show,
20
- } from "solid-js";
25
+ import { createContext, createMemo, createSignal, useContext, For, Show } from "solid-js";
26
+ import type { JSX } from "@solidjs/web";
21
27
  import {
22
28
  createTagGroup,
23
29
  createTag,
@@ -43,6 +49,7 @@ import {
43
49
  mergeRefs,
44
50
  } from "./utils";
45
51
  import { SharedElementTransition } from "./SharedElementTransition";
52
+ import { splitProps } from "@proyecto-viviana/solidaria/utils";
46
53
  import {
47
54
  SelectionIndicatorContext,
48
55
  type SelectionIndicatorContextValue,
@@ -59,7 +66,10 @@ export interface TagGroupProps
59
66
  extends
60
67
  Omit<AriaTagGroupProps, "id">,
61
68
  SlotProps,
62
- Omit<JSX.HTMLAttributes<HTMLDivElement>, "class" | "style" | "children"> {
69
+ Omit<
70
+ JSX.HTMLAttributes<HTMLDivElement>,
71
+ "class" | "style" | "children" | "aria-label" | "aria-labelledby" | "aria-describedby"
72
+ > {
63
73
  /** The children of the component. */
64
74
  children?: JSX.Element;
65
75
  /** The CSS className for the element. */
@@ -124,6 +134,8 @@ export interface TagRenderProps {
124
134
  isDisabled: boolean;
125
135
  /** Whether the tag is focused. */
126
136
  isFocused: boolean;
137
+ /** Whether the tag is keyboard focused. */
138
+ isFocusVisible: boolean;
127
139
  /** Whether the tag is pressed. */
128
140
  isPressed: boolean;
129
141
  /** Whether the tag allows removal. */
@@ -268,7 +280,11 @@ export function TagList<T extends { id?: Key; key?: Key }>(props: TagListProps<T
268
280
  // ListBox, and useTagGroup passing `direction` to the ListKeyboardDelegate).
269
281
  const locale = useLocale();
270
282
 
271
- // Create tag group accessibility props
283
+ // Callback-valued props must not go through createMemo — a memo that
284
+ // stores a function is easy to unwrap/call, and the live getter
285
+ // `onRemove={handler()}` must re-read on each access.
286
+ const onRemove = () => local.onRemove;
287
+
272
288
  const tagGroupAria = createTagGroup(
273
289
  {
274
290
  get "aria-label"() {
@@ -284,7 +300,7 @@ export function TagList<T extends { id?: Key; key?: Key }>(props: TagListProps<T
284
300
  return local.isDisabled;
285
301
  },
286
302
  get onRemove() {
287
- return local.onRemove;
303
+ return onRemove();
288
304
  },
289
305
  get direction() {
290
306
  return locale().direction;
@@ -313,7 +329,7 @@ export function TagList<T extends { id?: Key; key?: Key }>(props: TagListProps<T
313
329
  const contextValue: TagGroupContextValue = {
314
330
  state,
315
331
  get onRemove() {
316
- return local.onRemove;
332
+ return onRemove();
317
333
  },
318
334
  get isDisabled() {
319
335
  return local.isDisabled;
@@ -321,8 +337,8 @@ export function TagList<T extends { id?: Key; key?: Key }>(props: TagListProps<T
321
337
  };
322
338
 
323
339
  return (
324
- <TagGroupContext.Provider value={contextValue}>
325
- <TagListStateContext.Provider value={state}>
340
+ <TagGroupContext value={contextValue}>
341
+ <TagListStateContext value={state}>
326
342
  <div
327
343
  ref={setGridRef}
328
344
  {...domProps}
@@ -353,8 +369,8 @@ export function TagList<T extends { id?: Key; key?: Key }>(props: TagListProps<T
353
369
  </Show>
354
370
  </SharedElementTransition>
355
371
  </div>
356
- </TagListStateContext.Provider>
357
- </TagGroupContext.Provider>
372
+ </TagListStateContext>
373
+ </TagGroupContext>
358
374
  );
359
375
  }
360
376
 
@@ -392,6 +408,9 @@ export function Tag(props: TagProps): JSX.Element {
392
408
  get textValue() {
393
409
  return local.textValue;
394
410
  },
411
+ get onAction() {
412
+ return local.onAction ? () => local.onAction?.(local.id) : undefined;
413
+ },
395
414
  },
396
415
  state!,
397
416
  tagRef,
@@ -403,21 +422,21 @@ export function Tag(props: TagProps): JSX.Element {
403
422
  return {
404
423
  ...raw,
405
424
  onPress: () => {
406
- if (!tagAria.isDisabled && groupContext?.onRemove) {
407
- groupContext.onRemove(new Set([local.id]));
408
- return;
409
- }
410
425
  rawHandler?.();
411
426
  },
412
427
  };
413
428
  });
414
429
 
430
+ const allowsRemoving = createMemo(
431
+ () => Boolean(tagAria.allowsRemoving) || Boolean(groupContext?.onRemove),
432
+ );
415
433
  const renderValues = createMemo<TagRenderProps>(() => ({
416
434
  isSelected: tagAria.isSelected,
417
435
  isDisabled: tagAria.isDisabled,
418
436
  isFocused: tagAria.isFocused,
437
+ isFocusVisible: tagAria.isFocusVisible,
419
438
  isPressed: tagAria.isPressed,
420
- allowsRemoving: tagAria.allowsRemoving,
439
+ allowsRemoving: allowsRemoving(),
421
440
  selectionMode: state?.selectionMode() ?? "none",
422
441
  removeButtonProps: normalizedRemoveButtonProps(),
423
442
  }));
@@ -441,14 +460,14 @@ export function Tag(props: TagProps): JSX.Element {
441
460
  const domProps = createMemo(() => filterDOMProps(rest, { global: true }));
442
461
 
443
462
  return (
444
- <SelectionIndicatorContext.Provider value={selectionIndicatorContext()}>
445
- <TagContext.Provider
463
+ <SelectionIndicatorContext value={selectionIndicatorContext()}>
464
+ <TagContext
446
465
  value={{
447
466
  get removeButtonProps() {
448
467
  return normalizedRemoveButtonProps();
449
468
  },
450
469
  get allowsRemoving() {
451
- return tagAria.allowsRemoving;
470
+ return allowsRemoving();
452
471
  },
453
472
  }}
454
473
  >
@@ -458,28 +477,19 @@ export function Tag(props: TagProps): JSX.Element {
458
477
  {...tagAria.rowProps}
459
478
  class={renderProps.class()}
460
479
  style={renderProps.style()}
461
- onClick={(event) => {
462
- const rowClick = tagAria.rowProps.onClick;
463
- if (typeof rowClick === "function") {
464
- (rowClick as JSX.EventHandler<HTMLDivElement, MouseEvent>)(event);
465
- }
466
-
467
- if (!tagAria.isDisabled && !(event.target as Element | null)?.closest("button")) {
468
- local.onAction?.(local.id);
469
- }
470
- }}
471
480
  data-selected={dataAttr(tagAria.isSelected)}
472
481
  data-disabled={dataAttr(tagAria.isDisabled)}
473
482
  data-focused={dataAttr(tagAria.isFocused)}
483
+ data-focus-visible={dataAttr(tagAria.isFocusVisible)}
474
484
  data-pressed={dataAttr(tagAria.isPressed)}
475
- data-allows-removing={dataAttr(tagAria.allowsRemoving)}
485
+ data-allows-removing={dataAttr(allowsRemoving())}
476
486
  >
477
487
  <div {...tagAria.gridCellProps} style={{ display: "contents" }}>
478
- {renderProps.renderChildren()}
488
+ {renderProps.renderChildrenStable()}
479
489
  </div>
480
490
  </div>
481
- </TagContext.Provider>
482
- </SelectionIndicatorContext.Provider>
491
+ </TagContext>
492
+ </SelectionIndicatorContext>
483
493
  );
484
494
  }
485
495
 
@@ -505,10 +515,12 @@ export function TagRemoveButton(props: TagRemoveButtonProps): JSX.Element {
505
515
  const rawId = getRemoveButtonProps().id;
506
516
  const rawAriaLabel = getRemoveButtonProps()["aria-label"];
507
517
  const rawAriaLabelledBy = getRemoveButtonProps()["aria-labelledby"];
518
+ const rawTabIndex = getRemoveButtonProps().tabIndex;
508
519
  const buttonId: string | undefined = typeof rawId === "string" ? rawId : undefined;
509
520
  const ariaLabel: string = typeof rawAriaLabel === "string" ? rawAriaLabel : "Remove";
510
521
  const ariaLabelledBy: string | undefined =
511
522
  typeof rawAriaLabelledBy === "string" ? rawAriaLabelledBy : undefined;
523
+ const tabindex: number | undefined = typeof rawTabIndex === "number" ? rawTabIndex : undefined;
512
524
 
513
525
  const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (event) => {
514
526
  event.stopPropagation();
@@ -529,6 +541,7 @@ export function TagRemoveButton(props: TagRemoveButtonProps): JSX.Element {
529
541
  id={buttonId}
530
542
  aria-label={ariaLabel}
531
543
  aria-labelledby={ariaLabelledBy}
544
+ tabindex={tabindex}
532
545
  disabled={getIsDisabled()}
533
546
  data-allows-removing={dataAttr(tagContext?.allowsRemoving ?? false)}
534
547
  onPointerDown={stopRowPress}