@depup/react-aria-components 1.16.0-depup.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 (661) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +31 -0
  3. package/changes.json +10 -0
  4. package/dist/Autocomplete.main.js +78 -0
  5. package/dist/Autocomplete.main.js.map +1 -0
  6. package/dist/Autocomplete.mjs +67 -0
  7. package/dist/Autocomplete.module.js +67 -0
  8. package/dist/Autocomplete.module.js.map +1 -0
  9. package/dist/Breadcrumbs.main.js +103 -0
  10. package/dist/Breadcrumbs.main.js.map +1 -0
  11. package/dist/Breadcrumbs.mjs +92 -0
  12. package/dist/Breadcrumbs.module.js +92 -0
  13. package/dist/Breadcrumbs.module.js.map +1 -0
  14. package/dist/Button.main.js +123 -0
  15. package/dist/Button.main.js.map +1 -0
  16. package/dist/Button.mjs +113 -0
  17. package/dist/Button.module.js +113 -0
  18. package/dist/Button.module.js.map +1 -0
  19. package/dist/Calendar.main.js +364 -0
  20. package/dist/Calendar.main.js.map +1 -0
  21. package/dist/Calendar.mjs +345 -0
  22. package/dist/Calendar.module.js +345 -0
  23. package/dist/Calendar.module.js.map +1 -0
  24. package/dist/Checkbox.main.js +188 -0
  25. package/dist/Checkbox.main.js.map +1 -0
  26. package/dist/Checkbox.mjs +176 -0
  27. package/dist/Checkbox.module.js +176 -0
  28. package/dist/Checkbox.module.js.map +1 -0
  29. package/dist/Collection.main.js +105 -0
  30. package/dist/Collection.main.js.map +1 -0
  31. package/dist/Collection.mjs +91 -0
  32. package/dist/Collection.module.js +91 -0
  33. package/dist/Collection.module.js.map +1 -0
  34. package/dist/ColorArea.main.js +80 -0
  35. package/dist/ColorArea.main.js.map +1 -0
  36. package/dist/ColorArea.mjs +70 -0
  37. package/dist/ColorArea.module.js +70 -0
  38. package/dist/ColorArea.module.js.map +1 -0
  39. package/dist/ColorField.main.js +168 -0
  40. package/dist/ColorField.main.js.map +1 -0
  41. package/dist/ColorField.mjs +158 -0
  42. package/dist/ColorField.module.js +158 -0
  43. package/dist/ColorField.module.js.map +1 -0
  44. package/dist/ColorPicker.main.js +102 -0
  45. package/dist/ColorPicker.main.js.map +1 -0
  46. package/dist/ColorPicker.mjs +91 -0
  47. package/dist/ColorPicker.module.js +91 -0
  48. package/dist/ColorPicker.module.js.map +1 -0
  49. package/dist/ColorSlider.main.js +112 -0
  50. package/dist/ColorSlider.main.js.map +1 -0
  51. package/dist/ColorSlider.mjs +102 -0
  52. package/dist/ColorSlider.module.js +102 -0
  53. package/dist/ColorSlider.module.js.map +1 -0
  54. package/dist/ColorSwatch.main.js +44 -0
  55. package/dist/ColorSwatch.main.js.map +1 -0
  56. package/dist/ColorSwatch.mjs +34 -0
  57. package/dist/ColorSwatch.module.js +34 -0
  58. package/dist/ColorSwatch.module.js.map +1 -0
  59. package/dist/ColorSwatchPicker.main.js +102 -0
  60. package/dist/ColorSwatchPicker.main.js.map +1 -0
  61. package/dist/ColorSwatchPicker.mjs +95 -0
  62. package/dist/ColorSwatchPicker.module.js +95 -0
  63. package/dist/ColorSwatchPicker.module.js.map +1 -0
  64. package/dist/ColorThumb.main.js +67 -0
  65. package/dist/ColorThumb.main.js.map +1 -0
  66. package/dist/ColorThumb.mjs +57 -0
  67. package/dist/ColorThumb.module.js +57 -0
  68. package/dist/ColorThumb.module.js.map +1 -0
  69. package/dist/ColorWheel.main.js +102 -0
  70. package/dist/ColorWheel.main.js.map +1 -0
  71. package/dist/ColorWheel.mjs +90 -0
  72. package/dist/ColorWheel.module.js +90 -0
  73. package/dist/ColorWheel.module.js.map +1 -0
  74. package/dist/ComboBox.main.js +322 -0
  75. package/dist/ComboBox.main.js.map +1 -0
  76. package/dist/ComboBox.mjs +309 -0
  77. package/dist/ComboBox.module.js +309 -0
  78. package/dist/ComboBox.module.js.map +1 -0
  79. package/dist/DateField.main.js +361 -0
  80. package/dist/DateField.main.js.map +1 -0
  81. package/dist/DateField.mjs +345 -0
  82. package/dist/DateField.module.js +345 -0
  83. package/dist/DateField.module.js.map +1 -0
  84. package/dist/DatePicker.main.js +342 -0
  85. package/dist/DatePicker.main.js.map +1 -0
  86. package/dist/DatePicker.mjs +328 -0
  87. package/dist/DatePicker.module.js +328 -0
  88. package/dist/DatePicker.module.js.map +1 -0
  89. package/dist/Dialog.main.js +167 -0
  90. package/dist/Dialog.main.js.map +1 -0
  91. package/dist/Dialog.mjs +155 -0
  92. package/dist/Dialog.module.js +155 -0
  93. package/dist/Dialog.module.js.map +1 -0
  94. package/dist/Disclosure.main.js +171 -0
  95. package/dist/Disclosure.main.js.map +1 -0
  96. package/dist/Disclosure.mjs +157 -0
  97. package/dist/Disclosure.module.js +157 -0
  98. package/dist/Disclosure.module.js.map +1 -0
  99. package/dist/DragAndDrop.main.js +103 -0
  100. package/dist/DragAndDrop.main.js.map +1 -0
  101. package/dist/DragAndDrop.mjs +90 -0
  102. package/dist/DragAndDrop.module.js +90 -0
  103. package/dist/DragAndDrop.module.js.map +1 -0
  104. package/dist/DropZone.main.js +127 -0
  105. package/dist/DropZone.main.js.map +1 -0
  106. package/dist/DropZone.mjs +121 -0
  107. package/dist/DropZone.module.js +121 -0
  108. package/dist/DropZone.module.js.map +1 -0
  109. package/dist/FieldError.main.js +61 -0
  110. package/dist/FieldError.main.js.map +1 -0
  111. package/dist/FieldError.mjs +51 -0
  112. package/dist/FieldError.module.js +51 -0
  113. package/dist/FieldError.module.js.map +1 -0
  114. package/dist/FileTrigger.main.js +60 -0
  115. package/dist/FileTrigger.main.js.map +1 -0
  116. package/dist/FileTrigger.mjs +51 -0
  117. package/dist/FileTrigger.module.js +51 -0
  118. package/dist/FileTrigger.module.js.map +1 -0
  119. package/dist/Form.main.js +49 -0
  120. package/dist/Form.main.js.map +1 -0
  121. package/dist/Form.mjs +39 -0
  122. package/dist/Form.module.js +39 -0
  123. package/dist/Form.module.js.map +1 -0
  124. package/dist/GridList.main.js +589 -0
  125. package/dist/GridList.main.js.map +1 -0
  126. package/dist/GridList.mjs +573 -0
  127. package/dist/GridList.module.js +573 -0
  128. package/dist/GridList.module.js.map +1 -0
  129. package/dist/Group.main.js +72 -0
  130. package/dist/Group.main.js.map +1 -0
  131. package/dist/Group.mjs +62 -0
  132. package/dist/Group.module.js +62 -0
  133. package/dist/Group.module.js.map +1 -0
  134. package/dist/Header.main.js +40 -0
  135. package/dist/Header.main.js.map +1 -0
  136. package/dist/Header.mjs +30 -0
  137. package/dist/Header.module.js +30 -0
  138. package/dist/Header.module.js.map +1 -0
  139. package/dist/Heading.main.js +40 -0
  140. package/dist/Heading.main.js.map +1 -0
  141. package/dist/Heading.mjs +31 -0
  142. package/dist/Heading.module.js +31 -0
  143. package/dist/Heading.module.js.map +1 -0
  144. package/dist/HiddenDateInput.main.js +126 -0
  145. package/dist/HiddenDateInput.main.js.map +1 -0
  146. package/dist/HiddenDateInput.mjs +117 -0
  147. package/dist/HiddenDateInput.module.js +117 -0
  148. package/dist/HiddenDateInput.module.js.map +1 -0
  149. package/dist/Input.main.js +72 -0
  150. package/dist/Input.main.js.map +1 -0
  151. package/dist/Input.mjs +62 -0
  152. package/dist/Input.module.js +62 -0
  153. package/dist/Input.module.js.map +1 -0
  154. package/dist/Keyboard.main.js +38 -0
  155. package/dist/Keyboard.main.js.map +1 -0
  156. package/dist/Keyboard.mjs +28 -0
  157. package/dist/Keyboard.module.js +28 -0
  158. package/dist/Keyboard.module.js.map +1 -0
  159. package/dist/Label.main.js +43 -0
  160. package/dist/Label.main.js.map +1 -0
  161. package/dist/Label.mjs +33 -0
  162. package/dist/Label.module.js +33 -0
  163. package/dist/Label.module.js.map +1 -0
  164. package/dist/Link.main.js +72 -0
  165. package/dist/Link.main.js.map +1 -0
  166. package/dist/Link.mjs +62 -0
  167. package/dist/Link.module.js +62 -0
  168. package/dist/Link.module.js.map +1 -0
  169. package/dist/ListBox.main.js +477 -0
  170. package/dist/ListBox.main.js.map +1 -0
  171. package/dist/ListBox.mjs +463 -0
  172. package/dist/ListBox.module.js +463 -0
  173. package/dist/ListBox.module.js.map +1 -0
  174. package/dist/Menu.main.js +459 -0
  175. package/dist/Menu.main.js.map +1 -0
  176. package/dist/Menu.mjs +443 -0
  177. package/dist/Menu.module.js +443 -0
  178. package/dist/Menu.module.js.map +1 -0
  179. package/dist/Meter.main.js +72 -0
  180. package/dist/Meter.main.js.map +1 -0
  181. package/dist/Meter.mjs +62 -0
  182. package/dist/Meter.module.js +62 -0
  183. package/dist/Meter.module.js.map +1 -0
  184. package/dist/Modal.main.js +191 -0
  185. package/dist/Modal.main.js.map +1 -0
  186. package/dist/Modal.mjs +180 -0
  187. package/dist/Modal.module.js +180 -0
  188. package/dist/Modal.module.js.map +1 -0
  189. package/dist/NumberField.main.js +147 -0
  190. package/dist/NumberField.main.js.map +1 -0
  191. package/dist/NumberField.mjs +136 -0
  192. package/dist/NumberField.module.js +136 -0
  193. package/dist/NumberField.module.js.map +1 -0
  194. package/dist/OverlayArrow.main.js +64 -0
  195. package/dist/OverlayArrow.main.js.map +1 -0
  196. package/dist/OverlayArrow.mjs +54 -0
  197. package/dist/OverlayArrow.module.js +54 -0
  198. package/dist/OverlayArrow.module.js.map +1 -0
  199. package/dist/Popover.main.js +196 -0
  200. package/dist/Popover.main.js.map +1 -0
  201. package/dist/Popover.mjs +186 -0
  202. package/dist/Popover.module.js +186 -0
  203. package/dist/Popover.module.js.map +1 -0
  204. package/dist/ProgressBar.main.js +73 -0
  205. package/dist/ProgressBar.main.js.map +1 -0
  206. package/dist/ProgressBar.mjs +63 -0
  207. package/dist/ProgressBar.module.js +63 -0
  208. package/dist/ProgressBar.module.js.map +1 -0
  209. package/dist/RSPContexts.main.js +37 -0
  210. package/dist/RSPContexts.main.js.map +1 -0
  211. package/dist/RSPContexts.mjs +25 -0
  212. package/dist/RSPContexts.module.js +25 -0
  213. package/dist/RSPContexts.module.js.map +1 -0
  214. package/dist/RadioGroup.main.js +184 -0
  215. package/dist/RadioGroup.main.js.map +1 -0
  216. package/dist/RadioGroup.mjs +171 -0
  217. package/dist/RadioGroup.module.js +171 -0
  218. package/dist/RadioGroup.module.js.map +1 -0
  219. package/dist/SearchField.main.js +140 -0
  220. package/dist/SearchField.main.js.map +1 -0
  221. package/dist/SearchField.mjs +130 -0
  222. package/dist/SearchField.module.js +130 -0
  223. package/dist/SearchField.module.js.map +1 -0
  224. package/dist/Select.main.js +324 -0
  225. package/dist/Select.main.js.map +1 -0
  226. package/dist/Select.mjs +315 -0
  227. package/dist/Select.module.js +315 -0
  228. package/dist/Select.module.js.map +1 -0
  229. package/dist/SelectionIndicator.main.js +45 -0
  230. package/dist/SelectionIndicator.main.js.map +1 -0
  231. package/dist/SelectionIndicator.mjs +35 -0
  232. package/dist/SelectionIndicator.module.js +35 -0
  233. package/dist/SelectionIndicator.module.js.map +1 -0
  234. package/dist/Separator.main.js +71 -0
  235. package/dist/Separator.main.js.map +1 -0
  236. package/dist/Separator.mjs +61 -0
  237. package/dist/Separator.module.js +61 -0
  238. package/dist/Separator.module.js.map +1 -0
  239. package/dist/SharedElementTransition.main.js +140 -0
  240. package/dist/SharedElementTransition.main.js.map +1 -0
  241. package/dist/SharedElementTransition.mjs +130 -0
  242. package/dist/SharedElementTransition.module.js +130 -0
  243. package/dist/SharedElementTransition.module.js.map +1 -0
  244. package/dist/Slider.main.js +220 -0
  245. package/dist/Slider.main.js.map +1 -0
  246. package/dist/Slider.mjs +204 -0
  247. package/dist/Slider.module.js +204 -0
  248. package/dist/Slider.module.js.map +1 -0
  249. package/dist/Switch.main.js +89 -0
  250. package/dist/Switch.main.js.map +1 -0
  251. package/dist/Switch.mjs +79 -0
  252. package/dist/Switch.module.js +79 -0
  253. package/dist/Switch.module.js.map +1 -0
  254. package/dist/Table.main.js +1171 -0
  255. package/dist/Table.main.js.map +1 -0
  256. package/dist/Table.mjs +1154 -0
  257. package/dist/Table.module.js +1154 -0
  258. package/dist/Table.module.js.map +1 -0
  259. package/dist/TableLayout.main.js +38 -0
  260. package/dist/TableLayout.main.js.map +1 -0
  261. package/dist/TableLayout.mjs +33 -0
  262. package/dist/TableLayout.module.js +33 -0
  263. package/dist/TableLayout.module.js.map +1 -0
  264. package/dist/Tabs.main.js +330 -0
  265. package/dist/Tabs.main.js.map +1 -0
  266. package/dist/Tabs.mjs +315 -0
  267. package/dist/Tabs.module.js +315 -0
  268. package/dist/Tabs.module.js.map +1 -0
  269. package/dist/TagGroup.main.js +255 -0
  270. package/dist/TagGroup.main.js.map +1 -0
  271. package/dist/TagGroup.mjs +242 -0
  272. package/dist/TagGroup.module.js +242 -0
  273. package/dist/TagGroup.module.js.map +1 -0
  274. package/dist/Text.main.js +41 -0
  275. package/dist/Text.main.js.map +1 -0
  276. package/dist/Text.mjs +31 -0
  277. package/dist/Text.module.js +31 -0
  278. package/dist/Text.module.js.map +1 -0
  279. package/dist/TextArea.main.js +57 -0
  280. package/dist/TextArea.main.js.map +1 -0
  281. package/dist/TextArea.mjs +47 -0
  282. package/dist/TextArea.module.js +47 -0
  283. package/dist/TextArea.module.js.map +1 -0
  284. package/dist/TextField.main.js +145 -0
  285. package/dist/TextField.main.js.map +1 -0
  286. package/dist/TextField.mjs +135 -0
  287. package/dist/TextField.module.js +135 -0
  288. package/dist/TextField.module.js.map +1 -0
  289. package/dist/Toast.main.js +183 -0
  290. package/dist/Toast.main.js.map +1 -0
  291. package/dist/Toast.mjs +170 -0
  292. package/dist/Toast.module.js +170 -0
  293. package/dist/Toast.module.js.map +1 -0
  294. package/dist/ToggleButton.main.js +96 -0
  295. package/dist/ToggleButton.main.js.map +1 -0
  296. package/dist/ToggleButton.mjs +86 -0
  297. package/dist/ToggleButton.module.js +86 -0
  298. package/dist/ToggleButton.module.js.map +1 -0
  299. package/dist/ToggleButtonGroup.main.js +66 -0
  300. package/dist/ToggleButtonGroup.main.js.map +1 -0
  301. package/dist/ToggleButtonGroup.mjs +55 -0
  302. package/dist/ToggleButtonGroup.module.js +55 -0
  303. package/dist/ToggleButtonGroup.module.js.map +1 -0
  304. package/dist/Toolbar.main.js +55 -0
  305. package/dist/Toolbar.main.js.map +1 -0
  306. package/dist/Toolbar.mjs +45 -0
  307. package/dist/Toolbar.module.js +45 -0
  308. package/dist/Toolbar.module.js.map +1 -0
  309. package/dist/Tooltip.main.js +132 -0
  310. package/dist/Tooltip.main.js.map +1 -0
  311. package/dist/Tooltip.mjs +120 -0
  312. package/dist/Tooltip.module.js +120 -0
  313. package/dist/Tooltip.module.js.map +1 -0
  314. package/dist/Tree.main.js +834 -0
  315. package/dist/Tree.main.js.map +1 -0
  316. package/dist/Tree.mjs +818 -0
  317. package/dist/Tree.module.js +818 -0
  318. package/dist/Tree.module.js.map +1 -0
  319. package/dist/TreeDropTargetDelegate.main.js +216 -0
  320. package/dist/TreeDropTargetDelegate.main.js.map +1 -0
  321. package/dist/TreeDropTargetDelegate.mjs +211 -0
  322. package/dist/TreeDropTargetDelegate.module.js +211 -0
  323. package/dist/TreeDropTargetDelegate.module.js.map +1 -0
  324. package/dist/Virtualizer.main.js +135 -0
  325. package/dist/Virtualizer.main.js.map +1 -0
  326. package/dist/Virtualizer.mjs +126 -0
  327. package/dist/Virtualizer.module.js +126 -0
  328. package/dist/Virtualizer.module.js.map +1 -0
  329. package/dist/ar-AE.main.js +9 -0
  330. package/dist/ar-AE.main.js.map +1 -0
  331. package/dist/ar-AE.mjs +11 -0
  332. package/dist/ar-AE.module.js +11 -0
  333. package/dist/ar-AE.module.js.map +1 -0
  334. package/dist/bg-BG.main.js +9 -0
  335. package/dist/bg-BG.main.js.map +1 -0
  336. package/dist/bg-BG.mjs +11 -0
  337. package/dist/bg-BG.module.js +11 -0
  338. package/dist/bg-BG.module.js.map +1 -0
  339. package/dist/cs-CZ.main.js +9 -0
  340. package/dist/cs-CZ.main.js.map +1 -0
  341. package/dist/cs-CZ.mjs +11 -0
  342. package/dist/cs-CZ.module.js +11 -0
  343. package/dist/cs-CZ.module.js.map +1 -0
  344. package/dist/da-DK.main.js +9 -0
  345. package/dist/da-DK.main.js.map +1 -0
  346. package/dist/da-DK.mjs +11 -0
  347. package/dist/da-DK.module.js +11 -0
  348. package/dist/da-DK.module.js.map +1 -0
  349. package/dist/de-DE.main.js +9 -0
  350. package/dist/de-DE.main.js.map +1 -0
  351. package/dist/de-DE.mjs +11 -0
  352. package/dist/de-DE.module.js +11 -0
  353. package/dist/de-DE.module.js.map +1 -0
  354. package/dist/el-GR.main.js +9 -0
  355. package/dist/el-GR.main.js.map +1 -0
  356. package/dist/el-GR.mjs +11 -0
  357. package/dist/el-GR.module.js +11 -0
  358. package/dist/el-GR.module.js.map +1 -0
  359. package/dist/en-US.main.js +9 -0
  360. package/dist/en-US.main.js.map +1 -0
  361. package/dist/en-US.mjs +11 -0
  362. package/dist/en-US.module.js +11 -0
  363. package/dist/en-US.module.js.map +1 -0
  364. package/dist/es-ES.main.js +9 -0
  365. package/dist/es-ES.main.js.map +1 -0
  366. package/dist/es-ES.mjs +11 -0
  367. package/dist/es-ES.module.js +11 -0
  368. package/dist/es-ES.module.js.map +1 -0
  369. package/dist/et-EE.main.js +9 -0
  370. package/dist/et-EE.main.js.map +1 -0
  371. package/dist/et-EE.mjs +11 -0
  372. package/dist/et-EE.module.js +11 -0
  373. package/dist/et-EE.module.js.map +1 -0
  374. package/dist/fi-FI.main.js +9 -0
  375. package/dist/fi-FI.main.js.map +1 -0
  376. package/dist/fi-FI.mjs +11 -0
  377. package/dist/fi-FI.module.js +11 -0
  378. package/dist/fi-FI.module.js.map +1 -0
  379. package/dist/fr-FR.main.js +9 -0
  380. package/dist/fr-FR.main.js.map +1 -0
  381. package/dist/fr-FR.mjs +11 -0
  382. package/dist/fr-FR.module.js +11 -0
  383. package/dist/fr-FR.module.js.map +1 -0
  384. package/dist/he-IL.main.js +9 -0
  385. package/dist/he-IL.main.js.map +1 -0
  386. package/dist/he-IL.mjs +11 -0
  387. package/dist/he-IL.module.js +11 -0
  388. package/dist/he-IL.module.js.map +1 -0
  389. package/dist/hr-HR.main.js +9 -0
  390. package/dist/hr-HR.main.js.map +1 -0
  391. package/dist/hr-HR.mjs +11 -0
  392. package/dist/hr-HR.module.js +11 -0
  393. package/dist/hr-HR.module.js.map +1 -0
  394. package/dist/hu-HU.main.js +9 -0
  395. package/dist/hu-HU.main.js.map +1 -0
  396. package/dist/hu-HU.mjs +11 -0
  397. package/dist/hu-HU.module.js +11 -0
  398. package/dist/hu-HU.module.js.map +1 -0
  399. package/dist/import.mjs +161 -0
  400. package/dist/intlStrings.main.js +108 -0
  401. package/dist/intlStrings.main.js.map +1 -0
  402. package/dist/intlStrings.mjs +110 -0
  403. package/dist/intlStrings.module.js +110 -0
  404. package/dist/intlStrings.module.js.map +1 -0
  405. package/dist/it-IT.main.js +9 -0
  406. package/dist/it-IT.main.js.map +1 -0
  407. package/dist/it-IT.mjs +11 -0
  408. package/dist/it-IT.module.js +11 -0
  409. package/dist/it-IT.module.js.map +1 -0
  410. package/dist/ja-JP.main.js +9 -0
  411. package/dist/ja-JP.main.js.map +1 -0
  412. package/dist/ja-JP.mjs +11 -0
  413. package/dist/ja-JP.module.js +11 -0
  414. package/dist/ja-JP.module.js.map +1 -0
  415. package/dist/ko-KR.main.js +9 -0
  416. package/dist/ko-KR.main.js.map +1 -0
  417. package/dist/ko-KR.mjs +11 -0
  418. package/dist/ko-KR.module.js +11 -0
  419. package/dist/ko-KR.module.js.map +1 -0
  420. package/dist/lt-LT.main.js +9 -0
  421. package/dist/lt-LT.main.js.map +1 -0
  422. package/dist/lt-LT.mjs +11 -0
  423. package/dist/lt-LT.module.js +11 -0
  424. package/dist/lt-LT.module.js.map +1 -0
  425. package/dist/lv-LV.main.js +9 -0
  426. package/dist/lv-LV.main.js.map +1 -0
  427. package/dist/lv-LV.mjs +11 -0
  428. package/dist/lv-LV.module.js +11 -0
  429. package/dist/lv-LV.module.js.map +1 -0
  430. package/dist/main.js +430 -0
  431. package/dist/main.js.map +1 -0
  432. package/dist/module.js +161 -0
  433. package/dist/module.js.map +1 -0
  434. package/dist/nb-NO.main.js +9 -0
  435. package/dist/nb-NO.main.js.map +1 -0
  436. package/dist/nb-NO.mjs +11 -0
  437. package/dist/nb-NO.module.js +11 -0
  438. package/dist/nb-NO.module.js.map +1 -0
  439. package/dist/nl-NL.main.js +9 -0
  440. package/dist/nl-NL.main.js.map +1 -0
  441. package/dist/nl-NL.mjs +11 -0
  442. package/dist/nl-NL.module.js +11 -0
  443. package/dist/nl-NL.module.js.map +1 -0
  444. package/dist/pl-PL.main.js +9 -0
  445. package/dist/pl-PL.main.js.map +1 -0
  446. package/dist/pl-PL.mjs +11 -0
  447. package/dist/pl-PL.module.js +11 -0
  448. package/dist/pl-PL.module.js.map +1 -0
  449. package/dist/pt-BR.main.js +9 -0
  450. package/dist/pt-BR.main.js.map +1 -0
  451. package/dist/pt-BR.mjs +11 -0
  452. package/dist/pt-BR.module.js +11 -0
  453. package/dist/pt-BR.module.js.map +1 -0
  454. package/dist/pt-PT.main.js +9 -0
  455. package/dist/pt-PT.main.js.map +1 -0
  456. package/dist/pt-PT.mjs +11 -0
  457. package/dist/pt-PT.module.js +11 -0
  458. package/dist/pt-PT.module.js.map +1 -0
  459. package/dist/ro-RO.main.js +9 -0
  460. package/dist/ro-RO.main.js.map +1 -0
  461. package/dist/ro-RO.mjs +11 -0
  462. package/dist/ro-RO.module.js +11 -0
  463. package/dist/ro-RO.module.js.map +1 -0
  464. package/dist/ru-RU.main.js +9 -0
  465. package/dist/ru-RU.main.js.map +1 -0
  466. package/dist/ru-RU.mjs +11 -0
  467. package/dist/ru-RU.module.js +11 -0
  468. package/dist/ru-RU.module.js.map +1 -0
  469. package/dist/sk-SK.main.js +9 -0
  470. package/dist/sk-SK.main.js.map +1 -0
  471. package/dist/sk-SK.mjs +11 -0
  472. package/dist/sk-SK.module.js +11 -0
  473. package/dist/sk-SK.module.js.map +1 -0
  474. package/dist/sl-SI.main.js +9 -0
  475. package/dist/sl-SI.main.js.map +1 -0
  476. package/dist/sl-SI.mjs +11 -0
  477. package/dist/sl-SI.module.js +11 -0
  478. package/dist/sl-SI.module.js.map +1 -0
  479. package/dist/sr-SP.main.js +9 -0
  480. package/dist/sr-SP.main.js.map +1 -0
  481. package/dist/sr-SP.mjs +11 -0
  482. package/dist/sr-SP.module.js +11 -0
  483. package/dist/sr-SP.module.js.map +1 -0
  484. package/dist/sv-SE.main.js +9 -0
  485. package/dist/sv-SE.main.js.map +1 -0
  486. package/dist/sv-SE.mjs +11 -0
  487. package/dist/sv-SE.module.js +11 -0
  488. package/dist/sv-SE.module.js.map +1 -0
  489. package/dist/tr-TR.main.js +9 -0
  490. package/dist/tr-TR.main.js.map +1 -0
  491. package/dist/tr-TR.mjs +11 -0
  492. package/dist/tr-TR.module.js +11 -0
  493. package/dist/tr-TR.module.js.map +1 -0
  494. package/dist/types.d.ts +3764 -0
  495. package/dist/types.d.ts.map +1 -0
  496. package/dist/uk-UA.main.js +9 -0
  497. package/dist/uk-UA.main.js.map +1 -0
  498. package/dist/uk-UA.mjs +11 -0
  499. package/dist/uk-UA.module.js +11 -0
  500. package/dist/uk-UA.module.js.map +1 -0
  501. package/dist/useDragAndDrop.main.js +74 -0
  502. package/dist/useDragAndDrop.main.js.map +1 -0
  503. package/dist/useDragAndDrop.mjs +69 -0
  504. package/dist/useDragAndDrop.module.js +69 -0
  505. package/dist/useDragAndDrop.module.js.map +1 -0
  506. package/dist/utils.main.js +205 -0
  507. package/dist/utils.main.js.map +1 -0
  508. package/dist/utils.mjs +188 -0
  509. package/dist/utils.module.js +188 -0
  510. package/dist/utils.module.js.map +1 -0
  511. package/dist/zh-CN.main.js +9 -0
  512. package/dist/zh-CN.main.js.map +1 -0
  513. package/dist/zh-CN.mjs +11 -0
  514. package/dist/zh-CN.module.js +11 -0
  515. package/dist/zh-CN.module.js.map +1 -0
  516. package/dist/zh-TW.main.js +9 -0
  517. package/dist/zh-TW.main.js.map +1 -0
  518. package/dist/zh-TW.mjs +11 -0
  519. package/dist/zh-TW.module.js +11 -0
  520. package/dist/zh-TW.module.js.map +1 -0
  521. package/i18n/ar-AE.js +1 -0
  522. package/i18n/ar-AE.mjs +1 -0
  523. package/i18n/bg-BG.js +1 -0
  524. package/i18n/bg-BG.mjs +1 -0
  525. package/i18n/cs-CZ.js +1 -0
  526. package/i18n/cs-CZ.mjs +1 -0
  527. package/i18n/da-DK.js +1 -0
  528. package/i18n/da-DK.mjs +1 -0
  529. package/i18n/de-DE.js +1 -0
  530. package/i18n/de-DE.mjs +1 -0
  531. package/i18n/el-GR.js +1 -0
  532. package/i18n/el-GR.mjs +1 -0
  533. package/i18n/en-US.js +1 -0
  534. package/i18n/en-US.mjs +1 -0
  535. package/i18n/es-ES.js +1 -0
  536. package/i18n/es-ES.mjs +1 -0
  537. package/i18n/et-EE.js +1 -0
  538. package/i18n/et-EE.mjs +1 -0
  539. package/i18n/fi-FI.js +1 -0
  540. package/i18n/fi-FI.mjs +1 -0
  541. package/i18n/fr-FR.js +1 -0
  542. package/i18n/fr-FR.mjs +1 -0
  543. package/i18n/he-IL.js +1 -0
  544. package/i18n/he-IL.mjs +1 -0
  545. package/i18n/hr-HR.js +1 -0
  546. package/i18n/hr-HR.mjs +1 -0
  547. package/i18n/hu-HU.js +1 -0
  548. package/i18n/hu-HU.mjs +1 -0
  549. package/i18n/index.d.ts +13 -0
  550. package/i18n/index.js +118 -0
  551. package/i18n/index.mjs +115 -0
  552. package/i18n/it-IT.js +1 -0
  553. package/i18n/it-IT.mjs +1 -0
  554. package/i18n/ja-JP.js +1 -0
  555. package/i18n/ja-JP.mjs +1 -0
  556. package/i18n/ko-KR.js +1 -0
  557. package/i18n/ko-KR.mjs +1 -0
  558. package/i18n/lang.d.ts +7 -0
  559. package/i18n/lt-LT.js +1 -0
  560. package/i18n/lt-LT.mjs +1 -0
  561. package/i18n/lv-LV.js +1 -0
  562. package/i18n/lv-LV.mjs +1 -0
  563. package/i18n/nb-NO.js +1 -0
  564. package/i18n/nb-NO.mjs +1 -0
  565. package/i18n/nl-NL.js +1 -0
  566. package/i18n/nl-NL.mjs +1 -0
  567. package/i18n/pl-PL.js +1 -0
  568. package/i18n/pl-PL.mjs +1 -0
  569. package/i18n/pt-BR.js +1 -0
  570. package/i18n/pt-BR.mjs +1 -0
  571. package/i18n/pt-PT.js +1 -0
  572. package/i18n/pt-PT.mjs +1 -0
  573. package/i18n/ro-RO.js +1 -0
  574. package/i18n/ro-RO.mjs +1 -0
  575. package/i18n/ru-RU.js +1 -0
  576. package/i18n/ru-RU.mjs +1 -0
  577. package/i18n/sk-SK.js +1 -0
  578. package/i18n/sk-SK.mjs +1 -0
  579. package/i18n/sl-SI.js +1 -0
  580. package/i18n/sl-SI.mjs +1 -0
  581. package/i18n/sr-SP.js +1 -0
  582. package/i18n/sr-SP.mjs +1 -0
  583. package/i18n/sv-SE.js +1 -0
  584. package/i18n/sv-SE.mjs +1 -0
  585. package/i18n/tr-TR.js +1 -0
  586. package/i18n/tr-TR.mjs +1 -0
  587. package/i18n/uk-UA.js +1 -0
  588. package/i18n/uk-UA.mjs +1 -0
  589. package/i18n/zh-CN.js +1 -0
  590. package/i18n/zh-CN.mjs +1 -0
  591. package/i18n/zh-TW.js +1 -0
  592. package/i18n/zh-TW.mjs +1 -0
  593. package/package.json +105 -0
  594. package/src/Autocomplete.tsx +64 -0
  595. package/src/Breadcrumbs.tsx +137 -0
  596. package/src/Button.tsx +185 -0
  597. package/src/Calendar.tsx +620 -0
  598. package/src/Checkbox.tsx +282 -0
  599. package/src/Collection.tsx +225 -0
  600. package/src/ColorArea.tsx +89 -0
  601. package/src/ColorField.tsx +243 -0
  602. package/src/ColorPicker.tsx +63 -0
  603. package/src/ColorSlider.tsx +110 -0
  604. package/src/ColorSwatch.tsx +54 -0
  605. package/src/ColorSwatchPicker.tsx +125 -0
  606. package/src/ColorThumb.tsx +108 -0
  607. package/src/ColorWheel.tsx +122 -0
  608. package/src/ComboBox.tsx +325 -0
  609. package/src/DateField.tsx +425 -0
  610. package/src/DatePicker.tsx +334 -0
  611. package/src/Dialog.tsx +159 -0
  612. package/src/Disclosure.tsx +259 -0
  613. package/src/DragAndDrop.tsx +115 -0
  614. package/src/DropZone.tsx +145 -0
  615. package/src/FieldError.tsx +57 -0
  616. package/src/FileTrigger.tsx +79 -0
  617. package/src/Form.tsx +52 -0
  618. package/src/GridList.tsx +678 -0
  619. package/src/Group.tsx +114 -0
  620. package/src/Header.tsx +28 -0
  621. package/src/Heading.tsx +31 -0
  622. package/src/HiddenDateInput.tsx +152 -0
  623. package/src/Input.tsx +113 -0
  624. package/src/Keyboard.tsx +23 -0
  625. package/src/Label.tsx +29 -0
  626. package/src/Link.tsx +115 -0
  627. package/src/ListBox.tsx +577 -0
  628. package/src/Menu.tsx +496 -0
  629. package/src/Meter.tsx +93 -0
  630. package/src/Modal.tsx +262 -0
  631. package/src/NumberField.tsx +152 -0
  632. package/src/OverlayArrow.tsx +91 -0
  633. package/src/Popover.tsx +267 -0
  634. package/src/ProgressBar.tsx +101 -0
  635. package/src/RSPContexts.ts +52 -0
  636. package/src/RadioGroup.tsx +273 -0
  637. package/src/SearchField.tsx +152 -0
  638. package/src/Select.tsx +356 -0
  639. package/src/SelectionIndicator.tsx +46 -0
  640. package/src/Separator.tsx +76 -0
  641. package/src/SharedElementTransition.tsx +186 -0
  642. package/src/Slider.tsx +310 -0
  643. package/src/Switch.tsx +146 -0
  644. package/src/Table.tsx +1597 -0
  645. package/src/TableLayout.ts +28 -0
  646. package/src/Tabs.tsx +495 -0
  647. package/src/TagGroup.tsx +310 -0
  648. package/src/Text.tsx +28 -0
  649. package/src/TextArea.tsx +65 -0
  650. package/src/TextField.tsx +148 -0
  651. package/src/Toast.tsx +248 -0
  652. package/src/ToggleButton.tsx +103 -0
  653. package/src/ToggleButtonGroup.tsx +90 -0
  654. package/src/Toolbar.tsx +69 -0
  655. package/src/Tooltip.tsx +187 -0
  656. package/src/Tree.tsx +1066 -0
  657. package/src/TreeDropTargetDelegate.ts +308 -0
  658. package/src/Virtualizer.tsx +174 -0
  659. package/src/index.ts +160 -0
  660. package/src/useDragAndDrop.tsx +150 -0
  661. package/src/utils.tsx +351 -0
package/src/Menu.tsx ADDED
@@ -0,0 +1,496 @@
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
+ import {AriaMenuProps, FocusScope, mergeProps, useHover, useMenu, useMenuItem, useMenuSection, useMenuTrigger, useSubmenuTrigger} from 'react-aria';
14
+ import {BaseCollection, Collection, CollectionBuilder, CollectionNode, createBranchComponent, createLeafComponent, ItemNode, SectionNode} from '@react-aria/collections';
15
+ import {MenuTriggerProps as BaseMenuTriggerProps, Collection as ICollection, Node, RootMenuTriggerState, TreeState, useMenuTriggerState, useSubmenuTriggerState, useTreeState} from 'react-stately';
16
+ import {
17
+ ClassNameOrFunction,
18
+ ContextValue,
19
+ DEFAULT_SLOT,
20
+ dom,
21
+ DOMRenderProps,
22
+ PossibleLinkDOMRenderProps,
23
+ Provider,
24
+ RenderProps,
25
+ SlotProps,
26
+ StyleRenderProps,
27
+ useContextProps,
28
+ useRenderProps,
29
+ useSlot,
30
+ useSlottedContext
31
+ } from './utils';
32
+ import {CollectionProps, CollectionRendererContext, ItemRenderProps, SectionContext, SectionProps, usePersistedKeys} from './Collection';
33
+ import {FieldInputContext, SelectableCollectionContext, SelectableCollectionContextValue} from './RSPContexts';
34
+ import {filterDOMProps, useObjectRef, useResizeObserver} from '@react-aria/utils';
35
+ import {FocusEvents, FocusStrategy, forwardRefType, GlobalDOMAttributes, HoverEvents, Key, LinkDOMProps, MultipleSelection, PressEvents} from '@react-types/shared';
36
+ import {HeaderContext} from './Header';
37
+ import {KeyboardContext} from './Keyboard';
38
+ import {MultipleSelectionState, SelectionManager, useMultipleSelectionState} from '@react-stately/selection';
39
+ import {OverlayTriggerStateContext} from './Dialog';
40
+ import {PopoverContext} from './Popover';
41
+ import {PressResponder} from '@react-aria/interactions';
42
+ import React, {
43
+ createContext,
44
+ ForwardedRef,
45
+ forwardRef,
46
+ JSX,
47
+ ReactElement,
48
+ ReactNode,
49
+ RefObject,
50
+ useCallback,
51
+ useContext,
52
+ useMemo,
53
+ useRef,
54
+ useState
55
+ } from 'react';
56
+ import {SelectionIndicatorContext} from './SelectionIndicator';
57
+ import {SeparatorContext} from './Separator';
58
+ import {SharedElementTransition} from './SharedElementTransition';
59
+ import {TextContext} from './Text';
60
+
61
+ export const MenuContext = createContext<ContextValue<MenuProps<any>, HTMLDivElement>>(null);
62
+ export const MenuStateContext = createContext<TreeState<any> | null>(null);
63
+ export const RootMenuTriggerStateContext = createContext<RootMenuTriggerState | null>(null);
64
+ const SelectionManagerContext = createContext<SelectionManager | null>(null);
65
+
66
+ export interface MenuTriggerProps extends BaseMenuTriggerProps {
67
+ children: ReactNode
68
+ }
69
+
70
+ export function MenuTrigger(props: MenuTriggerProps): JSX.Element {
71
+ let state = useMenuTriggerState(props);
72
+ let ref = useRef<HTMLButtonElement>(null);
73
+ let {menuTriggerProps, menuProps} = useMenuTrigger({
74
+ ...props,
75
+ type: 'menu'
76
+ }, state, ref);
77
+ // Allows menu width to match button
78
+ let [buttonWidth, setButtonWidth] = useState<string | null>(null);
79
+ let onResize = useCallback(() => {
80
+ if (ref.current) {
81
+ setButtonWidth(ref.current.offsetWidth + 'px');
82
+ }
83
+ }, [ref]);
84
+
85
+ useResizeObserver({
86
+ ref: ref,
87
+ onResize: onResize
88
+ });
89
+ let scrollRef = useRef(null);
90
+
91
+ return (
92
+ <Provider
93
+ values={[
94
+ [MenuContext, {...menuProps, ref: scrollRef}],
95
+ [OverlayTriggerStateContext, state],
96
+ [RootMenuTriggerStateContext, state],
97
+ [PopoverContext, {
98
+ trigger: 'MenuTrigger',
99
+ triggerRef: ref,
100
+ scrollRef,
101
+ placement: 'bottom start',
102
+ style: {'--trigger-width': buttonWidth} as React.CSSProperties,
103
+ 'aria-labelledby': menuProps['aria-labelledby']
104
+ }]
105
+ ]}>
106
+ <PressResponder {...menuTriggerProps} ref={ref} isPressed={state.isOpen}>
107
+ {props.children}
108
+ </PressResponder>
109
+ </Provider>
110
+ );
111
+ }
112
+
113
+ export interface SubmenuTriggerProps {
114
+ /**
115
+ * The contents of the SubmenuTrigger. The first child should be an Item (the trigger) and the second child should be the Popover (for the submenu).
116
+ */
117
+ children: ReactElement[],
118
+ /**
119
+ * The delay time in milliseconds for the submenu to appear after hovering over the trigger.
120
+ * @default 200
121
+ */
122
+ delay?: number
123
+ }
124
+
125
+ const SubmenuTriggerContext = createContext<{parentMenuRef: RefObject<HTMLElement | null>, shouldUseVirtualFocus?: boolean} | null>(null);
126
+
127
+ class SubmenuTriggerNode<T> extends CollectionNode<T> {
128
+ static readonly type = 'submenutrigger';
129
+
130
+ filter(collection: BaseCollection<T>, newCollection: BaseCollection<T>, filterFn: (textValue: string, node: Node<T>) => boolean): CollectionNode<T> | null {
131
+ let triggerNode = collection.getItem(this.firstChildKey!);
132
+ if (triggerNode && filterFn(triggerNode.textValue, this)) {
133
+ let clone = this.clone();
134
+ newCollection.addDescendants(clone, collection);
135
+ return clone;
136
+ }
137
+
138
+ return null;
139
+ }
140
+ }
141
+
142
+ /**
143
+ * A submenu trigger is used to wrap a submenu's trigger item and the submenu itself.
144
+ *
145
+ * @version alpha
146
+ */
147
+ export const SubmenuTrigger = /*#__PURE__*/ createBranchComponent(SubmenuTriggerNode, (props: SubmenuTriggerProps, ref: ForwardedRef<HTMLDivElement>, item) => {
148
+ let {CollectionBranch} = useContext(CollectionRendererContext);
149
+ let state = useContext(MenuStateContext)!;
150
+ let rootMenuTriggerState = useContext(RootMenuTriggerStateContext)!;
151
+ let submenuTriggerState = useSubmenuTriggerState({triggerKey: item.key}, rootMenuTriggerState);
152
+ let submenuRef = useRef<HTMLDivElement>(null);
153
+ let itemRef = useObjectRef(ref);
154
+ let {parentMenuRef, shouldUseVirtualFocus} = useContext(SubmenuTriggerContext)!;
155
+ let {submenuTriggerProps, submenuProps, popoverProps} = useSubmenuTrigger({
156
+ parentMenuRef,
157
+ submenuRef,
158
+ delay: props.delay,
159
+ shouldUseVirtualFocus
160
+ }, submenuTriggerState, itemRef);
161
+
162
+ return (
163
+ <Provider
164
+ values={[
165
+ [MenuItemContext, {...submenuTriggerProps, onAction: undefined, ref: itemRef}],
166
+ [MenuContext, {
167
+ ref: submenuRef,
168
+ ...submenuProps
169
+ }],
170
+ [OverlayTriggerStateContext, submenuTriggerState],
171
+ [PopoverContext, {
172
+ trigger: 'SubmenuTrigger',
173
+ triggerRef: itemRef,
174
+ placement: 'end top',
175
+ 'aria-labelledby': submenuProps['aria-labelledby'],
176
+ ...popoverProps
177
+ }]
178
+ ]}>
179
+ <CollectionBranch collection={state.collection} parent={item} />
180
+ {props.children[1]}
181
+ </Provider>
182
+ );
183
+ }, props => props.children[0]);
184
+
185
+ export interface MenuRenderProps {
186
+ /**
187
+ * Whether the menu has no items and should display its empty state.
188
+ * @selector [data-empty]
189
+ */
190
+ isEmpty: boolean
191
+ }
192
+
193
+ export interface MenuProps<T> extends Omit<AriaMenuProps<T>, 'children'>, CollectionProps<T>, StyleRenderProps<MenuRenderProps>, SlotProps, GlobalDOMAttributes<HTMLDivElement> {
194
+ /**
195
+ * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
196
+ * @default 'react-aria-Menu'
197
+ */
198
+ className?: ClassNameOrFunction<MenuRenderProps>,
199
+ /** Provides content to display when there are no items in the list. */
200
+ renderEmptyState?: () => ReactNode,
201
+ /** Whether the menu should close when the menu item is selected. */
202
+ shouldCloseOnSelect?: boolean
203
+ }
204
+
205
+ /**
206
+ * A menu displays a list of actions or options that a user can choose.
207
+ */
208
+ export const Menu = /*#__PURE__*/ (forwardRef as forwardRefType)(function Menu<T extends object>(props: MenuProps<T>, ref: ForwardedRef<HTMLDivElement>) {
209
+ [props, ref] = useContextProps(props, ref, MenuContext);
210
+
211
+ // Delay rendering the actual menu until we have the collection so that auto focus works properly.
212
+ return (
213
+ <CollectionBuilder content={<Collection {...props} />}>
214
+ {collection => <MenuInner props={props} collection={collection} menuRef={ref} />}
215
+ </CollectionBuilder>
216
+ );
217
+ });
218
+
219
+ interface MenuInnerProps<T> {
220
+ // For now we append filter and other autocomplete context props here for typescript, but eventually we can consider exposing these
221
+ // as top level props for users to use with standalone Menus
222
+ props: MenuProps<T> & {filter?: SelectableCollectionContextValue<object>['filter'], shouldUseVirtualFocus?: boolean},
223
+ collection: BaseCollection<object>,
224
+ menuRef: RefObject<HTMLElement | null>
225
+ }
226
+
227
+ function MenuInner<T extends object>({props, collection, menuRef: ref}: MenuInnerProps<T>) {
228
+ [props, ref] = useContextProps(props, ref, SelectableCollectionContext);
229
+ let {filter, ...autocompleteMenuProps} = props;
230
+ let filteredCollection = useMemo(() => filter ? collection.filter(filter) : collection, [collection, filter]);
231
+ let state = useTreeState({
232
+ ...props,
233
+ collection: filteredCollection as ICollection<Node<object>>,
234
+ children: undefined
235
+ });
236
+ let triggerState = useContext(RootMenuTriggerStateContext);
237
+ let {isVirtualized, CollectionRoot} = useContext(CollectionRendererContext);
238
+ let {menuProps} = useMenu({...props, isVirtualized, onClose: props.onClose || triggerState?.close}, state, ref);
239
+ let renderProps = useRenderProps({
240
+ ...props,
241
+ children: undefined,
242
+ defaultClassName: 'react-aria-Menu',
243
+ values: {
244
+ isEmpty: state.collection.size === 0
245
+ }
246
+ });
247
+
248
+ let emptyState: ReactElement | null = null;
249
+ if (state.collection.size === 0 && props.renderEmptyState) {
250
+ emptyState = (
251
+ <div
252
+ role="menuitem"
253
+ style={{display: 'contents'}}>
254
+ {props.renderEmptyState()}
255
+ </div>
256
+ );
257
+ }
258
+
259
+ let DOMProps = filterDOMProps(props, {global: true});
260
+
261
+ return (
262
+ <FocusScope>
263
+ <dom.div
264
+ {...mergeProps(DOMProps, renderProps, menuProps)}
265
+ ref={ref as RefObject<HTMLDivElement>}
266
+ slot={props.slot || undefined}
267
+ data-empty={state.collection.size === 0 || undefined}
268
+ onScroll={props.onScroll}>
269
+ <Provider
270
+ values={[
271
+ [MenuStateContext, state],
272
+ [SeparatorContext, {elementType: 'div'}],
273
+ [SectionContext, {name: 'MenuSection', render: MenuSectionInner}],
274
+ [SubmenuTriggerContext, {parentMenuRef: ref, shouldUseVirtualFocus: autocompleteMenuProps?.shouldUseVirtualFocus}],
275
+ [MenuItemContext, {shouldCloseOnSelect: props.shouldCloseOnSelect}],
276
+ [SelectableCollectionContext, null],
277
+ [FieldInputContext, null],
278
+ [SelectionManagerContext, state.selectionManager],
279
+ /* Ensure root MenuTriggerState is defined, in case Menu is rendered outside a MenuTrigger. */
280
+ /* We assume the context can never change between defined and undefined. */
281
+ /* eslint-disable-next-line react-hooks/rules-of-hooks */
282
+ [RootMenuTriggerStateContext, triggerState ?? useMenuTriggerState({})]
283
+ ]}>
284
+ <SharedElementTransition>
285
+ <CollectionRoot
286
+ collection={state.collection}
287
+ persistedKeys={usePersistedKeys(state.selectionManager.focusedKey)}
288
+ scrollRef={ref} />
289
+ </SharedElementTransition>
290
+ </Provider>
291
+ {emptyState}
292
+ </dom.div>
293
+ </FocusScope>
294
+ );
295
+ }
296
+
297
+ export interface MenuSectionProps<T> extends SectionProps<T>, MultipleSelection, DOMRenderProps<'section', undefined> {
298
+ /**
299
+ * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element.
300
+ * @default 'react-aria-MenuSection'
301
+ */
302
+ className?: string,
303
+ /** Whether the menu should close when the menu item is selected. */
304
+ shouldCloseOnSelect?: boolean
305
+ }
306
+
307
+ // A subclass of SelectionManager that forwards focus-related properties to the parent,
308
+ // but has its own local selection state.
309
+ class GroupSelectionManager extends SelectionManager {
310
+ private parent: SelectionManager;
311
+
312
+ constructor(parent: SelectionManager, state: MultipleSelectionState) {
313
+ super(parent.collection, state);
314
+ this.parent = parent;
315
+ }
316
+
317
+ get focusedKey() {
318
+ return this.parent.focusedKey;
319
+ }
320
+
321
+ get isFocused() {
322
+ return this.parent.isFocused;
323
+ }
324
+
325
+ setFocusedKey(key: Key | null, childFocusStrategy?: FocusStrategy): void {
326
+ return this.parent.setFocusedKey(key, childFocusStrategy);
327
+ }
328
+
329
+ setFocused(isFocused: boolean): void {
330
+ this.parent.setFocused(isFocused);
331
+ }
332
+
333
+ get childFocusStrategy() {
334
+ return this.parent.childFocusStrategy;
335
+ }
336
+ }
337
+
338
+ function MenuSectionInner<T extends object>(props: MenuSectionProps<T>, ref: ForwardedRef<HTMLElement>, section: Node<T>, className = 'react-aria-MenuSection') {
339
+ let state = useContext(MenuStateContext)!;
340
+ let {CollectionBranch} = useContext(CollectionRendererContext);
341
+ let [headingRef, heading] = useSlot();
342
+ let {headingProps, groupProps} = useMenuSection({
343
+ heading,
344
+ 'aria-label': section.props['aria-label'] ?? undefined
345
+ });
346
+ let renderProps = useRenderProps({
347
+ ...props,
348
+ id: undefined,
349
+ children: undefined,
350
+ defaultClassName: className,
351
+ className: section.props?.className,
352
+ style: section.props?.style,
353
+ values: undefined
354
+ });
355
+
356
+ let parent = useContext(SelectionManagerContext)!;
357
+ let selectionState = useMultipleSelectionState(props);
358
+ let manager = props.selectionMode != null ? new GroupSelectionManager(parent, selectionState) : parent;
359
+
360
+ let closeOnSelect = useSlottedContext(MenuItemContext)?.shouldCloseOnSelect;
361
+
362
+ let DOMProps = filterDOMProps(props as any, {global: true});
363
+ delete DOMProps.id;
364
+
365
+ return (
366
+ <dom.section
367
+ {...mergeProps(DOMProps, renderProps, groupProps)}
368
+ ref={ref}>
369
+ <Provider
370
+ values={[
371
+ [HeaderContext, {...headingProps, ref: headingRef}],
372
+ [SelectionManagerContext, manager],
373
+ [MenuItemContext, {shouldCloseOnSelect: props.shouldCloseOnSelect ?? closeOnSelect}]
374
+ ]}>
375
+ <CollectionBranch collection={state.collection} parent={section} />
376
+ </Provider>
377
+ </dom.section>
378
+ );
379
+ }
380
+
381
+ /**
382
+ * A MenuSection represents a section within a Menu.
383
+ */
384
+ export const MenuSection = /*#__PURE__*/ createBranchComponent(SectionNode, MenuSectionInner);
385
+
386
+ export interface MenuItemRenderProps extends ItemRenderProps {
387
+ /**
388
+ * Whether the item has a submenu.
389
+ *
390
+ * @selector [data-has-submenu]
391
+ */
392
+ hasSubmenu: boolean,
393
+ /**
394
+ * Whether the item's submenu is open.
395
+ *
396
+ * @selector [data-open]
397
+ */
398
+ isOpen: boolean
399
+ }
400
+
401
+ export interface MenuItemProps<T = object> extends Omit<RenderProps<MenuItemRenderProps>, 'render'>, PossibleLinkDOMRenderProps<'div', MenuItemRenderProps>, LinkDOMProps, HoverEvents, FocusEvents, PressEvents, Omit<GlobalDOMAttributes<HTMLDivElement>, 'onClick'> {
402
+ /**
403
+ * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
404
+ * @default 'react-aria-MenuItem'
405
+ */
406
+ className?: ClassNameOrFunction<MenuItemRenderProps>,
407
+ /** The unique id of the item. */
408
+ id?: Key,
409
+ /** The object value that this item represents. When using dynamic collections, this is set automatically. */
410
+ value?: T,
411
+ /** A string representation of the item's contents, used for features like typeahead. */
412
+ textValue?: string,
413
+ /** An accessibility label for this item. */
414
+ 'aria-label'?: string,
415
+ /** Whether the item is disabled. */
416
+ isDisabled?: boolean,
417
+ /** Handler that is called when the item is selected. */
418
+ onAction?: () => void,
419
+ /** Whether the menu should close when the menu item is selected. */
420
+ shouldCloseOnSelect?: boolean
421
+ }
422
+
423
+ const MenuItemContext = createContext<ContextValue<MenuItemProps, HTMLDivElement>>(null);
424
+
425
+ /**
426
+ * A MenuItem represents an individual action in a Menu.
427
+ */
428
+ export const MenuItem = /*#__PURE__*/ createLeafComponent(ItemNode, function MenuItem<T extends object>(props: MenuItemProps<T>, forwardedRef: ForwardedRef<HTMLDivElement>, item: Node<T>) {
429
+ [props, forwardedRef] = useContextProps(props, forwardedRef, MenuItemContext);
430
+ let id = useSlottedContext(MenuItemContext)?.id as string;
431
+ let state = useContext(MenuStateContext)!;
432
+ let ref = useObjectRef<any>(forwardedRef);
433
+ let selectionManager = useContext(SelectionManagerContext)!;
434
+ let {isVirtualized} = useContext(CollectionRendererContext);
435
+ let {menuItemProps, labelProps, descriptionProps, keyboardShortcutProps, ...states} = useMenuItem({
436
+ ...props,
437
+ id,
438
+ key: item.key,
439
+ selectionManager,
440
+ isVirtualized: isVirtualized
441
+ }, state, ref);
442
+
443
+ let {hoverProps, isHovered} = useHover({
444
+ isDisabled: states.isDisabled
445
+ });
446
+ let renderProps = useRenderProps<MenuItemRenderProps, any>({
447
+ ...props,
448
+ id: undefined,
449
+ children: item.rendered,
450
+ defaultClassName: 'react-aria-MenuItem',
451
+ values: {
452
+ ...states,
453
+ isHovered,
454
+ isFocusVisible: states.isFocusVisible,
455
+ selectionMode: selectionManager.selectionMode,
456
+ selectionBehavior: selectionManager.selectionBehavior,
457
+ hasSubmenu: !!props['aria-haspopup'],
458
+ isOpen: props['aria-expanded'] === 'true'
459
+ }
460
+ });
461
+
462
+ let ElementType = props.href ? dom.a : dom.div;
463
+ let DOMProps = filterDOMProps(props as any, {global: true});
464
+ delete DOMProps.id;
465
+ delete DOMProps.onClick;
466
+
467
+ return (
468
+ <ElementType
469
+ {...mergeProps(DOMProps, renderProps, menuItemProps, hoverProps)}
470
+ ref={ref}
471
+ data-disabled={states.isDisabled || undefined}
472
+ data-hovered={isHovered || undefined}
473
+ data-focused={states.isFocused || undefined}
474
+ data-focus-visible={states.isFocusVisible || undefined}
475
+ data-pressed={states.isPressed || undefined}
476
+ data-selected={states.isSelected || undefined}
477
+ data-selection-mode={selectionManager.selectionMode === 'none' ? undefined : selectionManager.selectionMode}
478
+ data-has-submenu={!!props['aria-haspopup'] || undefined}
479
+ data-open={props['aria-expanded'] === 'true' || undefined}>
480
+ <Provider
481
+ values={[
482
+ [TextContext, {
483
+ slots: {
484
+ [DEFAULT_SLOT]: labelProps,
485
+ label: labelProps,
486
+ description: descriptionProps
487
+ }
488
+ }],
489
+ [KeyboardContext, keyboardShortcutProps],
490
+ [SelectionIndicatorContext, {isSelected: states.isSelected}]
491
+ ]}>
492
+ {renderProps.children}
493
+ </Provider>
494
+ </ElementType>
495
+ );
496
+ });
package/src/Meter.tsx ADDED
@@ -0,0 +1,93 @@
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
+ import {AriaMeterProps, useMeter} from 'react-aria';
14
+ import {clamp} from '@react-stately/utils';
15
+ import {
16
+ ClassNameOrFunction,
17
+ ContextValue,
18
+ dom,
19
+ RenderProps,
20
+ SlotProps,
21
+ useContextProps,
22
+ useRenderProps,
23
+ useSlot
24
+ } from './utils';
25
+ import {filterDOMProps, mergeProps} from '@react-aria/utils';
26
+ import {forwardRefType, GlobalDOMAttributes} from '@react-types/shared';
27
+ import {LabelContext} from './Label';
28
+ import React, {createContext, ForwardedRef, forwardRef} from 'react';
29
+
30
+ export interface MeterProps extends Omit<AriaMeterProps, 'label'>, RenderProps<MeterRenderProps>, SlotProps, GlobalDOMAttributes<HTMLDivElement> {
31
+ /**
32
+ * The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state.
33
+ * @default 'react-aria-Meter'
34
+ */
35
+ className?: ClassNameOrFunction<MeterRenderProps>
36
+ }
37
+
38
+ export interface MeterRenderProps {
39
+ /**
40
+ * The value as a percentage between the minimum and maximum.
41
+ */
42
+ percentage: number,
43
+ /**
44
+ * A formatted version of the value.
45
+ * @selector [aria-valuetext]
46
+ */
47
+ valueText: string | undefined
48
+ }
49
+
50
+ export const MeterContext = createContext<ContextValue<MeterProps, HTMLDivElement>>(null);
51
+
52
+ /**
53
+ * A meter represents a quantity within a known range, or a fractional value.
54
+ */
55
+ export const Meter = /*#__PURE__*/ (forwardRef as forwardRefType)(function Meter(props: MeterProps, ref: ForwardedRef<HTMLDivElement>) {
56
+ [props, ref] = useContextProps(props, ref, MeterContext);
57
+ let {
58
+ value = 0,
59
+ minValue = 0,
60
+ maxValue = 100
61
+ } = props;
62
+ value = clamp(value, minValue, maxValue);
63
+
64
+ let [labelRef, label] = useSlot(
65
+ !props['aria-label'] && !props['aria-labelledby']
66
+ );
67
+ let {
68
+ meterProps,
69
+ labelProps
70
+ } = useMeter({...props, label});
71
+
72
+ // Calculate the width of the progress bar as a percentage
73
+ let percentage = (value - minValue) / (maxValue - minValue) * 100;
74
+
75
+ let renderProps = useRenderProps({
76
+ ...props,
77
+ defaultClassName: 'react-aria-Meter',
78
+ values: {
79
+ percentage,
80
+ valueText: meterProps['aria-valuetext']
81
+ }
82
+ });
83
+
84
+ let DOMProps = filterDOMProps(props, {global: true});
85
+
86
+ return (
87
+ <dom.div {...mergeProps(DOMProps, renderProps, meterProps)} ref={ref} slot={props.slot || undefined}>
88
+ <LabelContext.Provider value={{...labelProps, ref: labelRef, elementType: 'span'}}>
89
+ {renderProps.children}
90
+ </LabelContext.Provider>
91
+ </dom.div>
92
+ );
93
+ });