@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/Select.js CHANGED
@@ -1,10 +1,27 @@
1
- import { filterDOMProps, useRenderProps } from "./utils.js";
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
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria-components/src/Select.tsx
13
+ import { DEFAULT_SLOT, OptionContent, Provider, ariaTrueFalse, attrTrue, coerceDomRecord, dataAttr, filterDOMProps, useRenderProps } from "./utils.js";
14
+ import { TextContext } from "./Text.js";
2
15
  import { FieldErrorContext } from "./FieldError.js";
3
16
  import { SelectionIndicatorContext } from "./SelectionIndicator.js";
17
+ import { t as racIntlStrings } from "./intl.js";
18
+ import { useCollectionRenderer, useCollectionRoot } from "./Collection.js";
19
+ import { i as VirtualizerItem } from "./Virtualizer2.js";
4
20
  import { ListBoxLoadMoreItem } from "./ListBox.js";
5
- import { createComponent, effect, getNextElement, getNextMarker, insert, memo, mergeProps, runHydrationEvents, setAttribute, setProperty, spread, template, use } from "solid-js/web";
6
- import { For, Show, createContext, createEffect, createMemo, createSignal, createUniqueId, splitProps, untrack, useContext } from "solid-js";
7
- import { FocusScope, createHiddenSelect, createHover, createInteractOutside, createListBox, createOption, createSelect, focusSafely, mergeProps as mergeProps$2 } from "@proyecto-viviana/solidaria";
21
+ import { createComponent, effect, getNextElement, getNextMarker, insert, memo, ref, runHydrationEvents, scope, setProperty, spread, template } from "@solidjs/web";
22
+ import { For, Show, createContext, createMemo, createRenderEffect, createSignal, createTrackedEffect, untrack, useContext } from "solid-js";
23
+ import { FocusScope, createFocusRing, createHiddenSelect, createHover, createInteractOutside, createListBox, createListFormatter, createOption, createSelect, createStringFormatter, focusSafely, getInteractionModality, mergeProps as mergeProps$1 } from "@proyecto-viviana/solidaria";
24
+ import { splitProps } from "@proyecto-viviana/solidaria/utils";
8
25
  import { DEFAULT_VALIDATION_RESULT, createSelectState } from "@proyecto-viviana/solid-stately";
9
26
  //#region src/Select.tsx
10
27
  /**
@@ -13,8 +30,15 @@ import { DEFAULT_VALIDATION_RESULT, createSelectState } from "@proyecto-viviana/
13
30
  * A pre-wired headless select that combines state + aria hooks.
14
31
  * Port of react-aria-components/src/Select.tsx
15
32
  */
16
- var _tmpl$ = /*#__PURE__*/ template(`<span>`), _tmpl$2 = /*#__PURE__*/ template(`<option>`), _tmpl$3 = /*#__PURE__*/ template(`<input type=hidden>`), _tmpl$4 = /*#__PURE__*/ template(`<div><select><!$><!/><!$><!/></select><!$><!/><!$><!/>`), _tmpl$5 = /*#__PURE__*/ template(`<div>`), _tmpl$6 = /*#__PURE__*/ template(`<button>`), _tmpl$7 = /*#__PURE__*/ template(`<div><!$><!/><!$><!/>`), _tmpl$8 = /*#__PURE__*/ template(`<div role=option data-empty-state style=display:contents>`);
17
- function assignRef(ref, el) {
33
+ var _tmpl$ = /* @__PURE__ */ template(`<span>`);
34
+ var _tmpl$2 = /* @__PURE__ */ template(`<div><label><!$><!/><select><option value label= > </option><!$><!/><!$><!/>`);
35
+ var _tmpl$3 = /* @__PURE__ */ template(`<input>`);
36
+ var _tmpl$4 = /* @__PURE__ */ template(`<option>`);
37
+ var _tmpl$5 = /* @__PURE__ */ template(`<div>`);
38
+ var _tmpl$6 = /* @__PURE__ */ template(`<button>`);
39
+ var _tmpl$7 = /* @__PURE__ */ template(`<div><!$><!/><!$><!/><!$><!/>`);
40
+ var _tmpl$8 = /* @__PURE__ */ template(`<div role=option data-empty-state style=display:contents>`);
41
+ function assignRef$1(ref, el) {
18
42
  if (!ref) return;
19
43
  if (typeof ref === "function") ref(el);
20
44
  else ref.current = el;
@@ -41,7 +65,10 @@ function getNativeSelectValidation(select) {
41
65
  const SelectContext = createContext(null);
42
66
  const SelectStateContext = createContext(null);
43
67
  const SelectValueContext = SelectContext;
44
- const selectRootLabelProps = new Set([
68
+ /** True when this SelectListBox is the overlay list (Picker / Popover). */
69
+ const SelectListBoxInPopoverContext = createContext(false);
70
+ function noopOptionFocus() {}
71
+ const selectRootLabelProps = /* @__PURE__ */ new Set([
45
72
  "aria-label",
46
73
  "aria-labelledby",
47
74
  "aria-describedby",
@@ -51,8 +78,9 @@ const selectRootLabelProps = new Set([
51
78
  * A select displays a collapsible list of options and allows a user to select one of them.
52
79
  */
53
80
  function Select(props) {
54
- const contextSlotProps = useContext(SelectContext)?.slots?.[props.slot ?? "default"];
55
- const [local, stateProps, ariaProps] = splitProps(contextSlotProps ? mergeProps$2(contextSlotProps, props) : props, [
81
+ const contextSlotProps = useContext(SelectContext)?.slots?.[typeof props.slot === "string" ? props.slot : "default"];
82
+ const mergedSelectProps = contextSlotProps ? mergeProps$1(contextSlotProps, props) : props;
83
+ const [local, stateProps, ariaProps] = splitProps(mergedSelectProps, [
56
84
  "class",
57
85
  "style",
58
86
  "render",
@@ -79,7 +107,6 @@ function Select(props) {
79
107
  ]);
80
108
  let rootRef;
81
109
  const [selectValidation, setSelectValidation] = createSignal(DEFAULT_VALIDATION_RESULT);
82
- const errorMessageId = createUniqueId();
83
110
  const resolveDisabled = () => {
84
111
  const disabled = ariaProps.isDisabled;
85
112
  if (typeof disabled === "function") return disabled();
@@ -136,20 +163,47 @@ function Select(props) {
136
163
  },
137
164
  get isRequired() {
138
165
  return ariaProps.isRequired;
166
+ },
167
+ get isInvalid() {
168
+ return ariaProps.isInvalid;
169
+ },
170
+ get validationState() {
171
+ return ariaProps.validationState;
172
+ },
173
+ get validate() {
174
+ return ariaProps.validate;
175
+ },
176
+ get name() {
177
+ return stateProps.name;
178
+ },
179
+ get validationBehavior() {
180
+ return ariaProps.validationBehavior;
139
181
  }
140
182
  });
141
- const { labelProps, triggerProps, valueProps, menuProps, isFocused, isFocusVisible, isOpen, isPressed } = createSelect(createMemo(() => {
183
+ const selectAriaProps = createMemo(() => {
142
184
  const clean = {};
143
185
  for (const key in ariaProps) if (!key.startsWith("data-")) clean[key] = ariaProps[key];
144
186
  return clean;
187
+ });
188
+ const isInvalid = createMemo(() => state.displayValidation().isInvalid || selectValidation().isInvalid);
189
+ const composedValidation = createMemo(() => {
190
+ const fromState = state.displayValidation();
191
+ if (fromState.isInvalid) return fromState;
192
+ return selectValidation();
193
+ });
194
+ const selectHook = createSelect(() => ({
195
+ ...selectAriaProps(),
196
+ isInvalid: isInvalid()
145
197
  }), state);
198
+ const { isFocused, isFocusVisible, isOpen, isPressed } = selectHook;
146
199
  const { isHovered, hoverProps } = createHover({ get isDisabled() {
147
200
  return resolveDisabled();
148
201
  } });
202
+ const { isFocusVisible: isFocusVisibleWithin, focusProps } = createFocusRing({ within: true });
149
203
  const renderValues = createMemo(() => ({
150
204
  isOpen: isOpen(),
151
205
  isFocused: isFocused(),
152
- isFocusVisible: isFocusVisible(),
206
+ isFocusVisible: isFocusVisibleWithin(),
153
207
  isDisabled: resolveDisabled(),
154
208
  isRequired: !!ariaProps.isRequired,
155
209
  isSelected: state.selectionMode() === "multiple" ? state.selectedKeys() === "all" || state.selectedKeys().size > 0 : state.selectedKey() != null
@@ -162,7 +216,7 @@ function Select(props) {
162
216
  return isFocused();
163
217
  },
164
218
  get isFocusVisible() {
165
- return isFocusVisible();
219
+ return isFocusVisibleWithin();
166
220
  },
167
221
  get isDisabled() {
168
222
  return resolveDisabled();
@@ -188,37 +242,29 @@ function Select(props) {
188
242
  const { ref: _ref, ...rest } = hoverProps;
189
243
  return rest;
190
244
  };
245
+ const cleanFocusProps = () => {
246
+ const { ref: _ref, onFocus, onBlur, ...rest } = focusProps;
247
+ return {
248
+ ...rest,
249
+ onFocusIn: onFocus,
250
+ onFocusOut: onBlur
251
+ };
252
+ };
191
253
  const cleanLabelProps = () => {
192
- const { ref: _ref, ...rest } = labelProps;
254
+ const { ref: _ref, ...rest } = selectHook.labelProps;
193
255
  return rest;
194
256
  };
195
257
  const setRootRef = (el) => {
196
258
  rootRef = el;
197
- assignRef(local.ref, el);
198
- };
199
- const validation = createMemo(() => {
200
- const current = selectValidation();
201
- if (current.isInvalid || !ariaProps.isInvalid) return current;
202
- return {
203
- ...DEFAULT_VALIDATION_RESULT,
204
- isInvalid: true
205
- };
206
- });
207
- const isInvalid = createMemo(() => validation().isInvalid);
208
- const triggerDescribedBy = () => {
209
- const ids = [triggerProps["aria-describedby"], isInvalid() ? errorMessageId : void 0].filter(Boolean).join(" ").split(" ").filter(Boolean);
210
- return ids.length ? Array.from(new Set(ids)).join(" ") : void 0;
259
+ assignRef$1(local.ref, el);
211
260
  };
212
- const triggerPropsWithValidation = () => ({
213
- ...triggerProps,
214
- "aria-describedby": triggerDescribedBy()
215
- });
261
+ const triggerPropsWithValidation = () => selectHook.triggerProps;
216
262
  const fieldErrorContext = {
217
263
  get validation() {
218
- return validation();
264
+ return composedValidation();
219
265
  },
220
266
  get errorMessageProps() {
221
- return { id: errorMessageId };
267
+ return selectHook.errorMessageProps;
222
268
  }
223
269
  };
224
270
  const focusTrigger = () => {
@@ -246,12 +292,17 @@ function Select(props) {
246
292
  };
247
293
  return getNativeSelectValidation(select);
248
294
  };
249
- const { containerProps, selectProps: hiddenSelectProps } = createHiddenSelect({
295
+ let triggerRef = null;
296
+ const setTriggerRef = (el) => {
297
+ triggerRef = el;
298
+ };
299
+ const { containerProps, selectProps: hiddenSelectProps, inputProps: hiddenInputProps } = createHiddenSelect({
250
300
  state,
251
301
  name: stateProps.name,
252
302
  form: ariaProps.form,
253
303
  isRequired: ariaProps.isRequired,
254
304
  validationBehavior: ariaProps.validationBehavior ?? "native",
305
+ triggerRef: () => triggerRef,
255
306
  get isDisabled() {
256
307
  return resolveDisabled();
257
308
  }
@@ -265,13 +316,29 @@ function Select(props) {
265
316
  hiddenSelectProps.onChange?.(event);
266
317
  setSelectValidation(hasSelection() && event.currentTarget.validity.valid ? DEFAULT_VALIDATION_RESULT : getSelectValidation(event.currentTarget));
267
318
  };
268
- createEffect(() => {
319
+ const hiddenSelectItemNodes = () => Array.from(state.collection()).filter((item) => item.type === "item");
320
+ const nativeSelectValue = () => {
321
+ if (state.selectionMode() === "multiple") {
322
+ const selectedKeys = state.selectedKeys();
323
+ if (selectedKeys === "all") return hiddenSelectItemNodes().map((item) => String(item.key));
324
+ return Array.from(selectedKeys).map(String);
325
+ }
326
+ const key = state.selectedKey();
327
+ return key != null ? String(key) : "";
328
+ };
329
+ const hiddenSelectFallbackValues = () => {
330
+ if (state.selectionMode() === "multiple") {
331
+ const keys = state.selectedKeys();
332
+ if (keys === "all") return hiddenSelectItemNodes().map((item) => item.key);
333
+ const listed = Array.from(keys);
334
+ return listed.length === 0 ? [null] : listed;
335
+ }
336
+ return [state.selectedKey()];
337
+ };
338
+ createTrackedEffect(() => {
269
339
  if (hasSelection() && selectValidation().isInvalid) setSelectValidation(DEFAULT_VALIDATION_RESULT);
340
+ if (hasSelection() && !ariaProps.isInvalid && state.displayValidation().isInvalid) state.resetValidation();
270
341
  });
271
- let triggerRef = null;
272
- const setTriggerRef = (el) => {
273
- triggerRef = el;
274
- };
275
342
  const RootChildren = () => {
276
343
  const selectChildren = untrack(() => typeof local.children === "function" ? local.children(childRenderValues) : local.children);
277
344
  return [
@@ -281,139 +348,169 @@ function Select(props) {
281
348
  },
282
349
  get children() {
283
350
  var _el$ = getNextElement(_tmpl$);
284
- spread(_el$, mergeProps(cleanLabelProps), false, true);
285
- insert(_el$, () => ariaProps.label);
351
+ spread(_el$, cleanLabelProps, true);
352
+ insert(_el$, () => {
353
+ return ariaProps.label;
354
+ });
286
355
  runHydrationEvents();
287
356
  return _el$;
288
357
  }
289
358
  }),
290
359
  selectChildren,
291
- (() => {
292
- var _el$2 = getNextElement(_tmpl$4), _el$3 = _el$2.firstChild, _el$5 = _el$3.firstChild, [_el$6, _co$] = getNextMarker(_el$5.nextSibling), _el$7 = _el$6.nextSibling, [_el$8, _co$2] = getNextMarker(_el$7.nextSibling), _el$0 = _el$3.nextSibling, [_el$1, _co$3] = getNextMarker(_el$0.nextSibling), _el$10 = _el$1.nextSibling, [_el$11, _co$4] = getNextMarker(_el$10.nextSibling);
293
- spread(_el$2, containerProps, false, true);
294
- spread(_el$3, mergeProps(hiddenSelectProps, {
295
- get name() {
296
- return memo(() => !!hasSelection())() ? void 0 : stateProps.name;
297
- },
298
- get required() {
299
- return memo(() => !!(hasNativeValidation() && ariaProps.isRequired))() && !hasSelection() || void 0;
300
- },
301
- "onInvalid": handleHiddenSelectInvalid,
302
- "onChange": handleHiddenSelectChange
303
- }), false, true);
304
- insert(_el$3, createComponent(Show, {
305
- get when() {
306
- return state.selectionMode() !== "multiple";
307
- },
308
- get children() {
309
- var _el$4 = getNextElement(_tmpl$2);
310
- effect(() => setProperty(_el$4, "selected", state.selectedKey() == null));
311
- return _el$4;
312
- }
313
- }), _el$6, _co$);
314
- insert(_el$3, createComponent(For, {
315
- get each() {
316
- return stateProps.items;
317
- },
318
- children: (item) => {
319
- const itemRecord = isObjectRecord(item) ? item : null;
320
- const fallbackKey = itemRecord != null ? toKey(itemRecord.key) ?? toKey(itemRecord.id) : void 0;
321
- const key = stateProps.getKey?.(item) ?? fallbackKey ?? String(item);
322
- const fallbackTextValue = itemRecord != null ? toTextValue(itemRecord.textValue) ?? toTextValue(itemRecord.label) ?? toTextValue(itemRecord.name) ?? toTextValue(itemRecord.title) : void 0;
323
- const textValue = stateProps.getTextValue?.(item) ?? fallbackTextValue ?? (itemRecord != null ? String(key) : String(item));
324
- const selectedKeys = state.selectedKeys();
325
- const isSelected = state.selectionMode() === "multiple" ? selectedKeys === "all" ? true : selectedKeys.has(key) : key === state.selectedKey();
326
- return (() => {
327
- var _el$12 = getNextElement(_tmpl$2);
328
- setProperty(_el$12, "selected", isSelected);
329
- insert(_el$12, textValue);
330
- effect(() => setProperty(_el$12, "value", String(key)));
331
- return _el$12;
332
- })();
333
- }
334
- }), _el$8, _co$2);
335
- insert(_el$2, createComponent(Show, {
336
- get when() {
337
- return memo(() => state.selectionMode() === "multiple")() && stateProps.name;
338
- },
339
- get children() {
340
- return createComponent(For, {
341
- get each() {
342
- return memo(() => state.selectedKeys() === "all")() ? Array.from(state.collection()).map((item) => item.key) : Array.from(state.selectedKeys());
343
- },
344
- children: (key) => (() => {
345
- var _el$13 = getNextElement(_tmpl$3);
346
- effect((_p$) => {
347
- var _v$4 = stateProps.name, _v$5 = ariaProps.form, _v$6 = resolveDisabled();
348
- _v$4 !== _p$.e && setAttribute(_el$13, "name", _p$.e = _v$4);
349
- _v$5 !== _p$.t && setAttribute(_el$13, "form", _p$.t = _v$5);
350
- _v$6 !== _p$.a && setProperty(_el$13, "disabled", _p$.a = _v$6);
351
- return _p$;
352
- }, {
353
- e: void 0,
354
- t: void 0,
355
- a: void 0
356
- });
357
- effect(() => setProperty(_el$13, "value", String(key)));
358
- return _el$13;
359
- })()
360
- });
361
- }
362
- }), _el$1, _co$3);
363
- insert(_el$2, createComponent(Show, {
364
- get when() {
365
- return memo(() => !!(state.selectionMode() !== "multiple" && stateProps.name))() && state.selectedKey() != null;
366
- },
367
- get children() {
368
- var _el$9 = getNextElement(_tmpl$3);
369
- effect((_p$) => {
370
- var _v$ = stateProps.name, _v$2 = ariaProps.form, _v$3 = resolveDisabled();
371
- _v$ !== _p$.e && setAttribute(_el$9, "name", _p$.e = _v$);
372
- _v$2 !== _p$.t && setAttribute(_el$9, "form", _p$.t = _v$2);
373
- _v$3 !== _p$.a && setProperty(_el$9, "disabled", _p$.a = _v$3);
374
- return _p$;
375
- }, {
376
- e: void 0,
377
- t: void 0,
378
- a: void 0
379
- });
380
- effect(() => setProperty(_el$9, "value", String(state.selectedKey())));
381
- return _el$9;
382
- }
383
- }), _el$11, _co$4);
384
- runHydrationEvents();
385
- return _el$2;
386
- })()
360
+ createComponent(Show, {
361
+ get when() {
362
+ return state.collection().size <= 300;
363
+ },
364
+ get fallback() {
365
+ return createComponent(Show, {
366
+ get when() {
367
+ return stateProps.name;
368
+ },
369
+ get children() {
370
+ return createComponent(For, {
371
+ get each() {
372
+ const keys = state.selectionMode() === "multiple" ? state.selectedKeys() === "all" ? Array.from(state.collection()).map((item) => item.key) : Array.from(state.selectedKeys()) : [state.selectedKey()];
373
+ return keys.length === 0 ? [null] : keys;
374
+ },
375
+ children: (key) => (() => {
376
+ var _el$15 = getNextElement(_tmpl$3);
377
+ spread(_el$15, [hiddenInputProps, {
378
+ get name() {
379
+ return stateProps.name;
380
+ },
381
+ get form() {
382
+ return ariaProps.form;
383
+ },
384
+ get value() {
385
+ return key != null ? String(key) : "";
386
+ },
387
+ get disabled() {
388
+ return resolveDisabled();
389
+ },
390
+ onInvalid: handleHiddenSelectInvalid
391
+ }], false);
392
+ runHydrationEvents();
393
+ return _el$15;
394
+ })()
395
+ });
396
+ }
397
+ });
398
+ },
399
+ get children() {
400
+ var _el$2 = getNextElement(_tmpl$2);
401
+ var _el$3 = _el$2.firstChild;
402
+ var _el$4 = _el$3.firstChild;
403
+ var [_el$5, _el$6] = getNextMarker(_el$4.nextSibling);
404
+ var _el$7 = _el$5.nextSibling;
405
+ var _el$9 = _el$7.firstChild.nextSibling;
406
+ var [_el$10, _el$11] = getNextMarker(_el$9.nextSibling);
407
+ var _el$12 = _el$10.nextSibling;
408
+ var [_el$13, _el$14] = getNextMarker(_el$12.nextSibling);
409
+ spread(_el$2, [() => {
410
+ return coerceDomRecord(containerProps);
411
+ }, { "data-testid": "hidden-select-container" }], true);
412
+ insert(_el$3, () => {
413
+ return ariaProps.label;
414
+ }, _el$5, _el$6);
415
+ spread(_el$7, [hiddenSelectProps, {
416
+ get name() {
417
+ return stateProps.name;
418
+ },
419
+ get required() {
420
+ return hasNativeValidation() && ariaProps.isRequired && !hasSelection() || void 0;
421
+ },
422
+ get value() {
423
+ return nativeSelectValue();
424
+ },
425
+ onInvalid: handleHiddenSelectInvalid,
426
+ onChange: handleHiddenSelectChange,
427
+ onInput: handleHiddenSelectChange
428
+ }], true);
429
+ insert(_el$7, createComponent(For, {
430
+ get each() {
431
+ return hiddenSelectItemNodes();
432
+ },
433
+ children: (item) => (() => {
434
+ var _el$16 = getNextElement(_tmpl$4);
435
+ insert(_el$16, () => {
436
+ return item.textValue;
437
+ });
438
+ effect(() => String(item.key), (_v$) => {
439
+ setProperty(_el$16, "value", _v$);
440
+ });
441
+ return _el$16;
442
+ })()
443
+ }), _el$10, _el$11);
444
+ insert(_el$7, createComponent(Show, {
445
+ get when() {
446
+ return memo(() => {
447
+ return state.collection().size === 0;
448
+ })() && stateProps.name;
449
+ },
450
+ get children() {
451
+ return createComponent(For, {
452
+ get each() {
453
+ return hiddenSelectFallbackValues();
454
+ },
455
+ children: (value) => (() => {
456
+ var _el$17 = getNextElement(_tmpl$4);
457
+ effect(() => value != null ? String(value) : "", (_v$) => {
458
+ setProperty(_el$17, "value", _v$);
459
+ });
460
+ return _el$17;
461
+ })()
462
+ });
463
+ }
464
+ }), _el$13, _el$14);
465
+ runHydrationEvents();
466
+ return _el$2;
467
+ }
468
+ })
387
469
  ];
388
470
  };
389
471
  const baseRootProps = () => ({
390
472
  ...domProps(),
391
473
  ...cleanHoverProps(),
474
+ ...cleanFocusProps(),
392
475
  ref: setRootRef,
393
476
  class: renderProps.class(),
394
477
  style: renderProps.style(),
395
478
  slot: local.slot,
396
- "data-open": isOpen() || void 0,
397
- "data-disabled": resolveDisabled() || void 0,
398
- "data-required": ariaProps.isRequired || void 0,
399
- "data-invalid": isInvalid() || void 0,
400
- "data-hovered": isHovered() || void 0
479
+ "data-focused": dataAttr(isFocused()),
480
+ "data-focus-visible": dataAttr(isFocusVisibleWithin()),
481
+ "data-open": dataAttr(isOpen()),
482
+ "data-disabled": dataAttr(resolveDisabled()),
483
+ "data-required": dataAttr(ariaProps.isRequired),
484
+ "data-invalid": dataAttr(isInvalid()),
485
+ "data-hovered": dataAttr(isHovered())
401
486
  });
402
487
  const RootContent = () => {
403
- const renderedRootChildren = createComponent(RootChildren, {});
488
+ const renderedRootChildren = createComponent(Provider, {
489
+ values: [[TextContext, { slots: {
490
+ get description() {
491
+ return selectHook.descriptionProps;
492
+ },
493
+ get errorMessage() {
494
+ return selectHook.errorMessageProps;
495
+ }
496
+ } }]],
497
+ get children() {
498
+ return createComponent(RootChildren, {});
499
+ }
500
+ });
404
501
  const rootProps = () => ({
405
502
  ...baseRootProps(),
406
503
  children: renderedRootChildren
407
504
  });
408
505
  return local.render ? local.render(rootProps(), renderValues()) : (() => {
409
- var _el$14 = getNextElement(_tmpl$5);
410
- spread(_el$14, mergeProps(baseRootProps), false, true);
411
- insert(_el$14, renderedRootChildren);
506
+ var _el$18 = getNextElement(_tmpl$5);
507
+ spread(_el$18, baseRootProps, true);
508
+ insert(_el$18, renderedRootChildren);
412
509
  runHydrationEvents();
413
- return _el$14;
510
+ return _el$18;
414
511
  })();
415
512
  };
416
- return createComponent(SelectContext.Provider, {
513
+ return createComponent(SelectContext, {
417
514
  get value() {
418
515
  return {
419
516
  state,
@@ -423,14 +520,20 @@ function Select(props) {
423
520
  get triggerProps() {
424
521
  return triggerPropsWithValidation();
425
522
  },
426
- valueProps,
427
- labelProps,
428
- menuProps,
523
+ get valueProps() {
524
+ return selectHook.valueProps;
525
+ },
526
+ get labelProps() {
527
+ return selectHook.labelProps;
528
+ },
529
+ get menuProps() {
530
+ return selectHook.menuProps;
531
+ },
429
532
  get errorMessageProps() {
430
- return { id: errorMessageId };
533
+ return selectHook.errorMessageProps;
431
534
  },
432
535
  get validation() {
433
- return validation();
536
+ return composedValidation();
434
537
  },
435
538
  isOpen,
436
539
  isFocused,
@@ -443,10 +546,10 @@ function Select(props) {
443
546
  };
444
547
  },
445
548
  get children() {
446
- return createComponent(SelectStateContext.Provider, {
549
+ return createComponent(SelectStateContext, {
447
550
  value: state,
448
551
  get children() {
449
- return createComponent(FieldErrorContext.Provider, {
552
+ return createComponent(FieldErrorContext, {
450
553
  value: fieldErrorContext,
451
554
  get children() {
452
555
  return createComponent(RootContent, {});
@@ -470,14 +573,15 @@ function SelectTrigger(props) {
470
573
  ]);
471
574
  const context = useContext(SelectContext);
472
575
  if (!context) throw new Error("SelectTrigger must be used within a Select");
473
- const { isOpen, isFocused, isFocusVisible, isPressed, state } = context;
576
+ const { isOpen, isFocusVisible, isPressed, state } = context;
577
+ const { isFocused, focusProps: triggerFocusProps } = createFocusRing();
474
578
  let triggerRef;
475
579
  const setTriggerRef = (el) => {
476
580
  triggerRef = el;
477
581
  context.setTriggerRef(el);
478
- assignRef(local.ref, el);
582
+ assignRef$1(local.ref, el);
479
583
  };
480
- createEffect(() => {
584
+ createTrackedEffect(() => {
481
585
  if (context.autoFocus) triggerRef?.focus();
482
586
  });
483
587
  const { isHovered, hoverProps } = createHover({ get isDisabled() {
@@ -500,8 +604,8 @@ function SelectTrigger(props) {
500
604
  defaultClassName: "solidaria-Select-trigger"
501
605
  }, renderValues);
502
606
  const cleanTriggerProps = () => {
503
- const { ref: _ref1, ...rest } = context.triggerProps;
504
- return rest;
607
+ const { ref: _ref1, "aria-disabled": _ariaDisabled, "data-open": _dataOpen, ...rest } = context.triggerProps;
608
+ return mergeProps$1(rest, triggerFocusProps);
505
609
  };
506
610
  const cleanHoverProps = () => {
507
611
  const { ref: _ref2, ...rest } = hoverProps;
@@ -509,65 +613,69 @@ function SelectTrigger(props) {
509
613
  };
510
614
  const triggerAriaProps = () => context.triggerProps;
511
615
  const menuAriaProps = () => context.menuProps;
512
- return (() => {
513
- var _el$15 = getNextElement(_tmpl$6);
514
- use(setTriggerRef, _el$15);
515
- spread(_el$15, mergeProps(domProps, cleanTriggerProps, cleanHoverProps, {
516
- "type": "button",
616
+ var _el$19 = getNextElement(_tmpl$6);
617
+ ref(() => {
618
+ return setTriggerRef;
619
+ }, _el$19);
620
+ spread(_el$19, [
621
+ domProps,
622
+ cleanTriggerProps,
623
+ cleanHoverProps,
624
+ {
625
+ type: "button",
517
626
  get id() {
518
627
  return triggerAriaProps().id;
519
628
  },
520
- get tabIndex() {
629
+ get tabindex() {
521
630
  return state.isDisabled ? void 0 : 0;
522
631
  },
523
- get ["aria-label"]() {
632
+ get disabled() {
633
+ return state.isDisabled || void 0;
634
+ },
635
+ get "aria-label"() {
524
636
  return triggerAriaProps()["aria-label"];
525
637
  },
526
- get ["aria-labelledby"]() {
638
+ get "aria-labelledby"() {
527
639
  return triggerAriaProps()["aria-labelledby"];
528
640
  },
529
641
  "aria-haspopup": "listbox",
530
- get ["aria-expanded"]() {
531
- return isOpen();
642
+ get "aria-expanded"() {
643
+ return ariaTrueFalse(isOpen());
532
644
  },
533
- get ["aria-controls"]() {
534
- return memo(() => !!isOpen())() ? menuAriaProps().id : void 0;
645
+ get "aria-controls"() {
646
+ return isOpen() ? menuAriaProps().id : void 0;
535
647
  },
536
- get ["aria-disabled"]() {
537
- return state.isDisabled || void 0;
648
+ get "aria-required"() {
649
+ return attrTrue(Boolean(triggerAriaProps()["aria-required"]));
538
650
  },
539
- get ["aria-required"]() {
540
- return triggerAriaProps()["aria-required"];
541
- },
542
- get ["aria-describedby"]() {
651
+ get "aria-describedby"() {
543
652
  return triggerAriaProps()["aria-describedby"];
544
653
  },
545
- get ["class"]() {
654
+ get "class"() {
546
655
  return renderProps.class();
547
656
  },
548
657
  get style() {
549
658
  return renderProps.style();
550
659
  },
551
- get ["data-open"]() {
552
- return isOpen() || void 0;
553
- },
554
- get ["data-focused"]() {
555
- return isFocused() || void 0;
660
+ get "data-focused"() {
661
+ return dataAttr(isFocused());
556
662
  },
557
- get ["data-focus-visible"]() {
558
- return isFocusVisible() || void 0;
663
+ get "data-focus-visible"() {
664
+ return dataAttr(isFocusVisible());
559
665
  },
560
- get ["data-hovered"]() {
561
- return isHovered() || void 0;
666
+ get "data-hovered"() {
667
+ return dataAttr(isHovered());
562
668
  },
563
- get ["data-disabled"]() {
564
- return state.isDisabled || void 0;
669
+ get "data-disabled"() {
670
+ return dataAttr(state.isDisabled);
565
671
  }
566
- }), false, true);
567
- insert(_el$15, () => renderProps.renderChildren());
568
- runHydrationEvents();
569
- return _el$15;
570
- })();
672
+ }
673
+ ], true);
674
+ insert(_el$19, scope(() => {
675
+ return renderProps.renderChildren();
676
+ }));
677
+ runHydrationEvents();
678
+ return _el$19;
571
679
  }
572
680
  function defaultSelectValueChildren(values) {
573
681
  return values.selectedText ?? values.placeholder ?? "";
@@ -587,7 +695,12 @@ function SelectValue(props) {
587
695
  if (!context) throw new Error("SelectValue must be used within a Select");
588
696
  const { valueProps, placeholder: contextPlaceholder } = context;
589
697
  const state = context.state;
590
- const placeholder = () => local.placeholder ?? contextPlaceholder;
698
+ const stringFormatter = createStringFormatter(racIntlStrings, "react-aria-components");
699
+ const listFormatter = createListFormatter({
700
+ style: "long",
701
+ type: "conjunction"
702
+ });
703
+ const placeholder = () => local.placeholder ?? contextPlaceholder ?? stringFormatter().format("selectPlaceholder");
591
704
  const renderValues = createMemo(() => {
592
705
  const collection = state.collection();
593
706
  const selectedItem = state.selectedKey() == null ? null : collection.getItem(state.selectedKey());
@@ -596,10 +709,7 @@ function SelectValue(props) {
596
709
  return {
597
710
  selectedItem,
598
711
  selectedItems,
599
- selectedText: state.selectionMode() === "multiple" ? selectedItems.length > 0 ? new Intl.ListFormat(void 0, {
600
- style: "long",
601
- type: "conjunction"
602
- }).format(selectedItems.map((item) => item.textValue)) : null : selectedItem?.textValue ?? null,
712
+ selectedText: state.selectionMode() === "multiple" ? selectedItems.length > 0 ? listFormatter().format(selectedItems.map((item) => item.textValue)) : null : selectedItem?.textValue ?? null,
603
713
  isSelected: state.selectionMode() === "multiple" ? selectedItems.length > 0 : selectedItem != null,
604
714
  placeholder: placeholder()
605
715
  };
@@ -612,26 +722,32 @@ function SelectValue(props) {
612
722
  style: local.style,
613
723
  defaultClassName: "solidaria-Select-value"
614
724
  }, renderValues);
615
- return (() => {
616
- var _el$16 = getNextElement(_tmpl$);
617
- spread(_el$16, mergeProps(domProps, valueProps, {
618
- get ["class"]() {
725
+ var _el$20 = getNextElement(_tmpl$);
726
+ spread(_el$20, [
727
+ domProps,
728
+ valueProps,
729
+ {
730
+ get "class"() {
619
731
  return renderProps.class();
620
732
  },
621
733
  get style() {
622
734
  return renderProps.style();
623
735
  },
624
- get ["data-placeholder"]() {
625
- return !renderValues().isSelected || void 0;
736
+ get "data-placeholder"() {
737
+ return dataAttr(!renderValues().isSelected);
626
738
  }
627
- }), false, true);
628
- insert(_el$16, (() => {
629
- var _c$ = memo(() => props.children == null);
630
- return () => _c$() ? renderValues().selectedText ?? renderValues().placeholder ?? "" : renderProps.renderChildren();
631
- })());
632
- runHydrationEvents();
633
- return _el$16;
634
- })();
739
+ }
740
+ ], true);
741
+ insert(_el$20, scope((() => {
742
+ var _c$ = memo(() => {
743
+ return props.children == null;
744
+ });
745
+ return () => {
746
+ return _c$() ? renderValues().selectedText ?? renderValues().placeholder ?? "" : renderProps.renderChildren();
747
+ };
748
+ })()));
749
+ runHydrationEvents();
750
+ return _el$20;
635
751
  }
636
752
  /**
637
753
  * The listbox popup for a select.
@@ -653,7 +769,7 @@ function SelectListBox(props) {
653
769
  if (!context) throw new Error("SelectListBox must be used within a Select");
654
770
  const { menuProps, rootRef, state: selectState, isOpen } = context;
655
771
  const state = selectState;
656
- createEffect(() => {
772
+ createTrackedEffect(() => {
657
773
  if (!isOpen()) return;
658
774
  state.selectionManager.setFocused(true);
659
775
  if (state.focusedKey() != null) return;
@@ -661,6 +777,9 @@ function SelectListBox(props) {
661
777
  if (selectedKey != null && !state.collection().getItem(selectedKey)?.isDisabled) state.setFocusedKey(selectedKey);
662
778
  });
663
779
  let listBoxRef;
780
+ const [listBoxEl, setListBoxEl] = createSignal(null, { ownedWrite: true });
781
+ const CollectionRoot = useCollectionRoot();
782
+ const isVirtualized = () => parentCollectionRenderer?.isVirtualized === true;
664
783
  createInteractOutside({
665
784
  ref: () => rootRef() ?? listBoxRef ?? null,
666
785
  onInteractOutside: () => {
@@ -670,16 +789,22 @@ function SelectListBox(props) {
670
789
  return !isOpen() || local.isInPopover === true;
671
790
  }
672
791
  });
792
+ const parentCollectionRenderer = useCollectionRenderer();
673
793
  const listBoxHook = createListBox({
674
794
  ...menuProps,
675
795
  shouldSelectOnPressUp: true,
676
796
  shouldFocusOnHover: true,
797
+ disallowEmptySelection: true,
677
798
  shouldSelectOnFocus: local.isInPopover === true ? false : void 0,
678
799
  get isDisabled() {
679
800
  return state.isDisabled;
801
+ },
802
+ get isVirtualized() {
803
+ return parentCollectionRenderer?.isVirtualized;
680
804
  }
681
805
  }, createSelectListStateAdapter(state));
682
- const renderValues = createMemo(() => ({ isFocused: state.selectionManager.isFocused }));
806
+ const { isFocused: isListBoxFocused, isFocusVisible: isListBoxFocusVisible, focusProps: listBoxFocusProps } = createFocusRing();
807
+ const renderValues = createMemo(() => ({ isFocused: isListBoxFocused() }));
683
808
  const renderProps = useRenderProps({
684
809
  class: local.class,
685
810
  style: local.style,
@@ -693,95 +818,158 @@ function SelectListBox(props) {
693
818
  const { ref: _ref2, "aria-activedescendant": _activeDescendant, onFocus: _onFocus, ...rest } = listBoxHook.listBoxProps;
694
819
  return {
695
820
  ...rest,
696
- tabIndex: state.isDisabled ? void 0 : state.focusedKey() != null ? -1 : 0
821
+ tabindex: state.isDisabled ? void 0 : state.focusedKey() != null ? -1 : 0
697
822
  };
698
823
  };
824
+ const cleanListBoxFocusProps = () => {
825
+ const { ref: _ref3, ...rest } = listBoxFocusProps;
826
+ return rest;
827
+ };
699
828
  const items = () => Array.from(state.collection());
700
- createEffect(() => {
829
+ createTrackedEffect(() => {
701
830
  if (!isOpen()) return;
702
831
  const focusedKey = state.focusedKey();
703
832
  if (focusedKey == null) return;
833
+ if (local.isInPopover === true && getInteractionModality() !== "keyboard") return;
704
834
  queueMicrotask(() => {
705
835
  const option = Array.from(listBoxRef?.querySelectorAll("[role='option']") ?? []).find((element) => element.id === String(focusedKey));
706
836
  if (option && document.activeElement !== option) focusSafely(option);
707
837
  });
708
838
  });
709
- const listBox = () => (() => {
710
- var _el$17 = getNextElement(_tmpl$7), _el$18 = _el$17.firstChild, [_el$19, _co$5] = getNextMarker(_el$18.nextSibling), _el$20 = _el$19.nextSibling, [_el$21, _co$6] = getNextMarker(_el$20.nextSibling);
711
- use((el) => listBoxRef = el, _el$17);
712
- spread(_el$17, mergeProps(domProps, cleanMenuProps, cleanListBoxProps, {
713
- get ["class"]() {
714
- return renderProps.class();
715
- },
716
- get style() {
717
- return renderProps.style();
718
- },
719
- get ["data-focused"]() {
720
- return state.selectionManager.isFocused || void 0;
721
- },
722
- get ["data-empty"]() {
723
- return state.collection().size === 0 || void 0;
724
- }
725
- }), false, true);
726
- insert(_el$17, (() => {
727
- var _c$2 = memo(() => !!(state.collection().size === 0 && local.renderEmptyState));
728
- return () => _c$2() ? (() => {
729
- var _el$22 = getNextElement(_tmpl$8);
730
- insert(_el$22, () => local.renderEmptyState());
731
- return _el$22;
732
- })() : createComponent(Show, {
733
- get when() {
734
- return local.children;
839
+ const listBox = () => createComponent(SelectListBoxInPopoverContext, {
840
+ get value() {
841
+ return local.isInPopover === true;
842
+ },
843
+ get children() {
844
+ var _el$21 = getNextElement(_tmpl$7);
845
+ var _el$22 = _el$21.firstChild;
846
+ var [_el$23, _el$24] = getNextMarker(_el$22.nextSibling);
847
+ var _el$25 = _el$23.nextSibling;
848
+ var [_el$26, _el$27] = getNextMarker(_el$25.nextSibling);
849
+ var _el$28 = _el$26.nextSibling;
850
+ var [_el$29, _el$30] = getNextMarker(_el$28.nextSibling);
851
+ ref(() => {
852
+ return (el) => {
853
+ listBoxRef = el;
854
+ setListBoxEl(el);
855
+ };
856
+ }, _el$21);
857
+ spread(_el$21, [
858
+ domProps,
859
+ cleanMenuProps,
860
+ cleanListBoxProps,
861
+ cleanListBoxFocusProps,
862
+ {
863
+ get "class"() {
864
+ return renderProps.class();
865
+ },
866
+ get style() {
867
+ return renderProps.style();
868
+ },
869
+ get "data-focused"() {
870
+ return dataAttr(isListBoxFocused());
871
+ },
872
+ get "data-focus-visible"() {
873
+ return dataAttr(isListBoxFocusVisible());
874
+ },
875
+ get "data-empty"() {
876
+ return dataAttr(state.collection().size === 0);
877
+ },
878
+ "data-layout": "stack",
879
+ "data-orientation": "vertical"
880
+ }
881
+ ], true);
882
+ insert(_el$21, createComponent(CollectionRoot, {
883
+ get collection() {
884
+ return items();
735
885
  },
736
- get fallback() {
737
- return createComponent(For, {
738
- get each() {
739
- return items();
886
+ scrollRef: () => listBoxEl(),
887
+ get children() {
888
+ return createComponent(Show, {
889
+ get when() {
890
+ return local.children;
740
891
  },
741
- children: (node) => createComponent(SelectOption, {
742
- get id() {
743
- return node.key;
744
- },
745
- get children() {
746
- return node.textValue;
747
- }
748
- })
892
+ get fallback() {
893
+ return createComponent(For, {
894
+ get each() {
895
+ return items();
896
+ },
897
+ children: (node, index) => {
898
+ const item = createComponent(SelectOption, {
899
+ get id() {
900
+ return node.key;
901
+ },
902
+ get children() {
903
+ return node.textValue;
904
+ }
905
+ });
906
+ return isVirtualized() ? createComponent(VirtualizerItem, {
907
+ get index() {
908
+ return index();
909
+ },
910
+ children: item
911
+ }) : item;
912
+ }
913
+ });
914
+ },
915
+ get children() {
916
+ return createComponent(For, {
917
+ get each() {
918
+ return items();
919
+ },
920
+ children: (node, index) => {
921
+ const child = node.value != null ? local.children(node.value) : null;
922
+ return isVirtualized() ? createComponent(VirtualizerItem, {
923
+ get index() {
924
+ return index();
925
+ },
926
+ children: child
927
+ }) : child;
928
+ }
929
+ });
930
+ }
749
931
  });
932
+ }
933
+ }), _el$23, _el$24);
934
+ insert(_el$21, scope((() => {
935
+ var _c$2 = memo(() => {
936
+ return !!(state.collection().size === 0 && local.renderEmptyState);
937
+ });
938
+ return () => {
939
+ return _c$2() ? (() => {
940
+ var _el$31 = getNextElement(_tmpl$8);
941
+ insert(_el$31, scope(() => {
942
+ return local.renderEmptyState();
943
+ }));
944
+ return _el$31;
945
+ })() : null;
946
+ };
947
+ })()), _el$26, _el$27);
948
+ insert(_el$21, createComponent(Show, {
949
+ get when() {
950
+ return local.onLoadMore;
750
951
  },
751
952
  get children() {
752
- return createComponent(For, {
753
- get each() {
754
- return items();
953
+ return createComponent(ListBoxLoadMoreItem, {
954
+ get onLoadMore() {
955
+ return local.onLoadMore;
755
956
  },
756
- children: (node) => node.value != null ? local.children(node.value) : null
957
+ get isLoading() {
958
+ return local.isLoading;
959
+ },
960
+ get "class"() {
961
+ return local.loadMoreClass;
962
+ },
963
+ get children() {
964
+ return local.renderLoadMore?.();
965
+ }
757
966
  });
758
967
  }
759
- });
760
- })(), _el$19, _co$5);
761
- insert(_el$17, createComponent(Show, {
762
- get when() {
763
- return local.onLoadMore;
764
- },
765
- get children() {
766
- return createComponent(ListBoxLoadMoreItem, {
767
- get onLoadMore() {
768
- return local.onLoadMore;
769
- },
770
- get isLoading() {
771
- return local.isLoading;
772
- },
773
- get ["class"]() {
774
- return local.loadMoreClass;
775
- },
776
- get children() {
777
- return local.renderLoadMore?.();
778
- }
779
- });
780
- }
781
- }), _el$21, _co$6);
782
- runHydrationEvents();
783
- return _el$17;
784
- })();
968
+ }), _el$29, _el$30);
969
+ runHydrationEvents();
970
+ return _el$21;
971
+ }
972
+ });
785
973
  return createComponent(Show, {
786
974
  get when() {
787
975
  return isOpen();
@@ -824,18 +1012,26 @@ function SelectOption(props) {
824
1012
  if (!context) throw new Error("SelectOption must be used within a Select");
825
1013
  const state = context;
826
1014
  const selectContext = useContext(SelectContext);
827
- const [ref, setRefSignal] = createSignal(null);
1015
+ const [ref$1, setRefSignal] = createSignal(null);
828
1016
  const setRef = (el) => {
829
1017
  setRefSignal(el);
830
- assignRef(local.ref, el);
1018
+ assignRef$1(local.ref, el);
831
1019
  };
1020
+ const parentCollectionRenderer = useCollectionRenderer();
1021
+ const isInPopover = useContext(SelectListBoxInPopoverContext);
832
1022
  const optionAria = createOption({
833
1023
  key: local.id,
1024
+ get focus() {
1025
+ return ariaProps.focus ?? (isInPopover ? noopOptionFocus : void 0);
1026
+ },
1027
+ get isVirtualized() {
1028
+ return parentCollectionRenderer?.isVirtualized;
1029
+ },
834
1030
  get isDisabled() {
835
1031
  return Boolean(ariaProps.isDisabled || selectContext?.isDisabled());
836
1032
  },
837
1033
  get "aria-label"() {
838
- return ariaProps["aria-label"] ?? local.textValue;
1034
+ return ariaProps["aria-label"];
839
1035
  },
840
1036
  shouldSelectOnPressUp: true,
841
1037
  shouldFocusOnHover: true,
@@ -854,7 +1050,7 @@ function SelectOption(props) {
854
1050
  if (state.selectionMode() === "multiple") {
855
1051
  const keys = state.selectedKeys();
856
1052
  if (keys === "all") return;
857
- state.setSelectedKeys(new Set([...keys, key]));
1053
+ state.setSelectedKeys(/* @__PURE__ */ new Set([...keys, key]));
858
1054
  return;
859
1055
  }
860
1056
  state.setSelectedKey(key);
@@ -877,8 +1073,8 @@ function SelectOption(props) {
877
1073
  state.setSelectedKey(key);
878
1074
  if (state.selectionMode() !== "multiple") state.close();
879
1075
  }
880
- }, () => ref());
881
- const isOptionFocusVisible = () => optionAria.isFocused() && (selectContext?.isFocusVisible() ?? optionAria.isFocusVisible());
1076
+ }, () => ref$1());
1077
+ const isOptionFocusVisible = () => optionAria.isFocusVisible();
882
1078
  const renderValues = createMemo(() => ({
883
1079
  isSelected: optionAria.isSelected(),
884
1080
  isFocused: optionAria.isFocused(),
@@ -895,13 +1091,9 @@ function SelectOption(props) {
895
1091
  style: local.style,
896
1092
  defaultClassName: "solidaria-Select-option"
897
1093
  }, renderValues);
898
- const hasPrimitiveLabel = () => {
899
- return typeof props.children === "string" || typeof props.children === "number";
900
- };
901
1094
  const selectionIndicatorContext = createMemo(() => ({ isSelected: optionAria.isSelected }));
902
1095
  const cleanOptionProps = () => {
903
- const { ref: _ref1, "aria-describedby": _ariaDescribedby, ...rest } = optionAria.optionProps;
904
- if (!hasPrimitiveLabel() && rest["aria-label"] == null) delete rest["aria-labelledby"];
1096
+ const { ref: _ref1, ...rest } = optionAria.optionProps;
905
1097
  const onClick = rest.onClick;
906
1098
  rest.onClick = ((event) => {
907
1099
  const wasSelected = optionAria.isSelected();
@@ -913,6 +1105,32 @@ function SelectOption(props) {
913
1105
  });
914
1106
  return rest;
915
1107
  };
1108
+ const optionTextSlots = { slots: {
1109
+ get [DEFAULT_SLOT]() {
1110
+ return optionAria.labelProps;
1111
+ },
1112
+ get label() {
1113
+ return optionAria.labelProps;
1114
+ },
1115
+ get description() {
1116
+ return optionAria.descriptionProps;
1117
+ }
1118
+ } };
1119
+ createRenderEffect(() => ({
1120
+ el: ref$1(),
1121
+ labelId: optionAria.labelProps.id,
1122
+ descriptionId: optionAria.descriptionProps.id
1123
+ }), ({ el, labelId, descriptionId }) => {
1124
+ if (!el) return;
1125
+ if (labelId) {
1126
+ const label = el.querySelector("[slot='label']");
1127
+ if (label && !label.id) label.id = labelId;
1128
+ }
1129
+ if (descriptionId) {
1130
+ const description = el.querySelector("[slot='description']");
1131
+ if (description && !description.id) description.id = descriptionId;
1132
+ }
1133
+ });
916
1134
  const selectOption = () => {
917
1135
  if (optionAria.isDisabled()) return;
918
1136
  if (state.selectionMode() === "multiple") {
@@ -927,63 +1145,62 @@ function SelectOption(props) {
927
1145
  state.setSelectedKey(local.id);
928
1146
  state.close();
929
1147
  };
930
- return createComponent(SelectionIndicatorContext.Provider, {
1148
+ return createComponent(SelectionIndicatorContext, {
931
1149
  get value() {
932
1150
  return selectionIndicatorContext();
933
1151
  },
934
1152
  get children() {
935
- var _el$23 = getNextElement(_tmpl$5);
936
- use(setRef, _el$23);
937
- spread(_el$23, mergeProps(cleanOptionProps, {
938
- get ["class"]() {
1153
+ var _el$32 = getNextElement(_tmpl$5);
1154
+ ref(() => {
1155
+ return setRef;
1156
+ }, _el$32);
1157
+ spread(_el$32, [cleanOptionProps, {
1158
+ get "class"() {
939
1159
  return renderProps.class();
940
1160
  },
941
1161
  get style() {
942
1162
  return renderProps.style();
943
1163
  },
944
- get ["data-selected"]() {
945
- return optionAria.isSelected() || void 0;
1164
+ get "data-selected"() {
1165
+ return dataAttr(optionAria.isSelected());
1166
+ },
1167
+ get "data-focused"() {
1168
+ return dataAttr(optionAria.isFocused());
946
1169
  },
947
- get ["data-focused"]() {
948
- return optionAria.isFocused() || void 0;
1170
+ get "data-focus-visible"() {
1171
+ return dataAttr(isOptionFocusVisible());
949
1172
  },
950
- get ["data-focus-visible"]() {
951
- return isOptionFocusVisible() || void 0;
1173
+ get "data-pressed"() {
1174
+ return dataAttr(optionAria.isPressed());
952
1175
  },
953
- get ["data-pressed"]() {
954
- return optionAria.isPressed() || void 0;
1176
+ get "data-hovered"() {
1177
+ return dataAttr(optionAria.isHovered());
955
1178
  },
956
- get ["data-hovered"]() {
957
- return optionAria.isHovered() || void 0;
1179
+ get "data-disabled"() {
1180
+ return dataAttr(optionAria.isDisabled());
958
1181
  },
959
- get ["data-disabled"]() {
960
- return optionAria.isDisabled() || void 0;
1182
+ get "data-selection-mode"() {
1183
+ return state.selectionMode();
961
1184
  }
962
- }), false, true);
963
- insert(_el$23, (() => {
964
- var _c$3 = memo(() => !!hasPrimitiveLabel());
965
- return () => _c$3() ? (() => {
966
- var _el$24 = getNextElement(_tmpl$);
967
- spread(_el$24, mergeProps(() => optionAria.labelProps), false, true);
968
- insert(_el$24, () => renderProps.renderChildren());
969
- runHydrationEvents();
970
- return _el$24;
971
- })() : renderProps.renderChildren();
972
- })());
1185
+ }], true);
1186
+ insert(_el$32, createComponent(Provider, {
1187
+ values: [[TextContext, optionTextSlots]],
1188
+ get children() {
1189
+ return createComponent(OptionContent, {
1190
+ get render() {
1191
+ return renderProps.renderChildrenStable;
1192
+ },
1193
+ get labelProps() {
1194
+ return optionAria.labelProps;
1195
+ }
1196
+ });
1197
+ }
1198
+ }));
973
1199
  runHydrationEvents();
974
- return _el$23;
1200
+ return _el$32;
975
1201
  }
976
1202
  });
977
1203
  }
978
- function isObjectRecord(value) {
979
- return typeof value === "object" && value !== null;
980
- }
981
- function toKey(value) {
982
- if (typeof value === "string" || typeof value === "number") return value;
983
- }
984
- function toTextValue(value) {
985
- if (typeof value === "string" || typeof value === "number") return String(value);
986
- }
987
1204
  function createSelectListStateAdapter(state) {
988
1205
  const selectedKeys = createMemo(() => {
989
1206
  const keys = state.selectedKeys();
@@ -1002,9 +1219,9 @@ function createSelectListStateAdapter(state) {
1002
1219
  focusedKey: state.focusedKey,
1003
1220
  setFocusedKey: (key) => state.setFocusedKey(key ?? null),
1004
1221
  childFocusStrategy: () => null,
1005
- selectionMode: () => state.selectionMode(),
1006
- selectionBehavior: () => "replace",
1007
- disallowEmptySelection: () => true,
1222
+ selectionMode: () => state.selectionManager.selectionMode,
1223
+ selectionBehavior: () => state.selectionManager.selectionBehavior,
1224
+ disallowEmptySelection: () => state.selectionManager.disallowEmptySelection,
1008
1225
  selectedKeys,
1009
1226
  disabledKeys,
1010
1227
  disabledBehavior: () => "all",
@@ -1012,26 +1229,15 @@ function createSelectListStateAdapter(state) {
1012
1229
  isSelectAll: () => state.selectedKeys() === "all",
1013
1230
  isSelected: (key) => selectedKeys().has(key),
1014
1231
  isDisabled: state.isKeyDisabled,
1015
- setSelectionBehavior: () => {},
1016
- toggleSelection: (key) => {
1017
- if (state.selectionMode() !== "multiple") {
1018
- state.setSelectedKey(key);
1019
- return;
1020
- }
1021
- const keys = state.selectedKeys();
1022
- if (keys === "all") return;
1023
- const next = new Set(keys);
1024
- if (next.has(key)) next.delete(key);
1025
- else next.add(key);
1026
- state.setSelectedKeys(next);
1027
- },
1028
- replaceSelection: (key) => state.setSelectedKey(key),
1029
- setSelectedKeys: (keys) => state.setSelectedKeys(keys),
1030
- selectAll: () => {},
1031
- clearSelection: () => state.selectionMode() === "multiple" ? state.setSelectedKeys([]) : state.setSelectedKey(null),
1032
- toggleSelectAll: () => {},
1033
- extendSelection: (toKey) => state.setSelectedKey(toKey),
1034
- select: (key) => state.selectionMode() === "multiple" ? state.setSelectedKeys([...state.selectedKeys() === "all" ? [] : state.selectedKeys(), key]) : state.setSelectedKey(key)
1232
+ setSelectionBehavior: (behavior) => state.selectionManager.setSelectionBehavior(behavior),
1233
+ toggleSelection: (key) => state.selectionManager.toggleSelection(key),
1234
+ replaceSelection: (key) => state.selectionManager.replaceSelection(key),
1235
+ setSelectedKeys: (keys) => state.selectionManager.setSelectedKeys(keys),
1236
+ selectAll: () => state.selectionManager.selectAll(),
1237
+ clearSelection: () => state.selectionManager.clearSelection(),
1238
+ toggleSelectAll: () => state.selectionManager.toggleSelectAll(),
1239
+ extendSelection: (toKey) => state.selectionManager.extendSelection(toKey),
1240
+ select: (key, event) => state.selectionManager.select(key, event)
1035
1241
  };
1036
1242
  }
1037
1243
  Select.Trigger = SelectTrigger;