@react-spectrum/s2 1.0.0 → 1.2.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 (629) hide show
  1. package/dist/Accordion.cjs +3 -3
  2. package/dist/Accordion.cjs.map +1 -1
  3. package/dist/Accordion.css +2 -2
  4. package/dist/Accordion.css.map +1 -1
  5. package/dist/Accordion.mjs +3 -3
  6. package/dist/Accordion.mjs.map +1 -1
  7. package/dist/ActionBar.cjs +62 -61
  8. package/dist/ActionBar.cjs.map +1 -1
  9. package/dist/ActionBar.css +58 -58
  10. package/dist/ActionBar.css.map +1 -1
  11. package/dist/ActionBar.mjs +62 -61
  12. package/dist/ActionBar.mjs.map +1 -1
  13. package/dist/ActionButton.cjs +234 -234
  14. package/dist/ActionButton.cjs.map +1 -1
  15. package/dist/ActionButton.css +160 -160
  16. package/dist/ActionButton.css.map +1 -1
  17. package/dist/ActionButton.mjs +234 -234
  18. package/dist/ActionButton.mjs.map +1 -1
  19. package/dist/ActionButtonGroup.cjs +16 -16
  20. package/dist/ActionButtonGroup.css +9 -9
  21. package/dist/ActionButtonGroup.mjs +16 -16
  22. package/dist/Add.cjs +10 -10
  23. package/dist/Add.css +6 -6
  24. package/dist/Add.mjs +10 -10
  25. package/dist/AlertDialog.cjs +3 -3
  26. package/dist/AlertDialog.css +3 -3
  27. package/dist/AlertDialog.mjs +3 -3
  28. package/dist/Asterisk.cjs +6 -6
  29. package/dist/Asterisk.css +4 -4
  30. package/dist/Asterisk.mjs +6 -6
  31. package/dist/Avatar.cjs +17 -17
  32. package/dist/Avatar.css +16 -16
  33. package/dist/Avatar.mjs +17 -17
  34. package/dist/AvatarGroup.cjs +121 -121
  35. package/dist/AvatarGroup.css +31 -31
  36. package/dist/AvatarGroup.mjs +121 -121
  37. package/dist/Badge.cjs +197 -197
  38. package/dist/Badge.css +125 -125
  39. package/dist/Badge.mjs +197 -197
  40. package/dist/Breadcrumbs.cjs +235 -235
  41. package/dist/Breadcrumbs.cjs.map +1 -1
  42. package/dist/Breadcrumbs.css +100 -100
  43. package/dist/Breadcrumbs.css.map +1 -1
  44. package/dist/Breadcrumbs.mjs +235 -235
  45. package/dist/Breadcrumbs.mjs.map +1 -1
  46. package/dist/Button.cjs +333 -333
  47. package/dist/Button.cjs.map +1 -1
  48. package/dist/Button.css +174 -174
  49. package/dist/Button.css.map +1 -1
  50. package/dist/Button.mjs +333 -333
  51. package/dist/Button.mjs.map +1 -1
  52. package/dist/ButtonGroup.cjs +21 -21
  53. package/dist/ButtonGroup.css +15 -15
  54. package/dist/ButtonGroup.mjs +21 -21
  55. package/dist/Calendar.cjs +169 -169
  56. package/dist/Calendar.cjs.map +1 -1
  57. package/dist/Calendar.css +134 -134
  58. package/dist/Calendar.css.map +1 -1
  59. package/dist/Calendar.mjs +169 -169
  60. package/dist/Calendar.mjs.map +1 -1
  61. package/dist/Card.cjs +310 -310
  62. package/dist/Card.cjs.map +1 -1
  63. package/dist/Card.css +206 -206
  64. package/dist/Card.css.map +1 -1
  65. package/dist/Card.mjs +310 -310
  66. package/dist/Card.mjs.map +1 -1
  67. package/dist/CardView.cjs +19 -19
  68. package/dist/CardView.cjs.map +1 -1
  69. package/dist/CardView.css +17 -17
  70. package/dist/CardView.css.map +1 -1
  71. package/dist/CardView.mjs +19 -19
  72. package/dist/CardView.mjs.map +1 -1
  73. package/dist/CenterBaseline.cjs +1 -1
  74. package/dist/CenterBaseline.css +2 -2
  75. package/dist/CenterBaseline.mjs +1 -1
  76. package/dist/Checkbox.cjs +162 -162
  77. package/dist/Checkbox.cjs.map +1 -1
  78. package/dist/Checkbox.css +95 -91
  79. package/dist/Checkbox.css.map +1 -1
  80. package/dist/Checkbox.mjs +162 -162
  81. package/dist/Checkbox.mjs.map +1 -1
  82. package/dist/CheckboxGroup.cjs +44 -44
  83. package/dist/CheckboxGroup.cjs.map +1 -1
  84. package/dist/CheckboxGroup.css +37 -37
  85. package/dist/CheckboxGroup.css.map +1 -1
  86. package/dist/CheckboxGroup.mjs +44 -44
  87. package/dist/CheckboxGroup.mjs.map +1 -1
  88. package/dist/Checkmark.cjs +12 -12
  89. package/dist/Checkmark.css +8 -8
  90. package/dist/Checkmark.mjs +12 -12
  91. package/dist/Chevron.cjs +12 -12
  92. package/dist/Chevron.css +10 -10
  93. package/dist/Chevron.mjs +12 -12
  94. package/dist/ClearButton.cjs +30 -30
  95. package/dist/ClearButton.css +30 -30
  96. package/dist/ClearButton.mjs +30 -30
  97. package/dist/CloseButton.cjs +56 -56
  98. package/dist/CloseButton.css +47 -47
  99. package/dist/CloseButton.mjs +56 -56
  100. package/dist/ColorArea.cjs +17 -17
  101. package/dist/ColorArea.cjs.map +1 -1
  102. package/dist/ColorArea.css +16 -16
  103. package/dist/ColorArea.css.map +1 -1
  104. package/dist/ColorArea.mjs +17 -17
  105. package/dist/ColorArea.mjs.map +1 -1
  106. package/dist/ColorField.cjs +32 -32
  107. package/dist/ColorField.cjs.map +1 -1
  108. package/dist/ColorField.css +27 -27
  109. package/dist/ColorField.css.map +1 -1
  110. package/dist/ColorField.mjs +32 -32
  111. package/dist/ColorField.mjs.map +1 -1
  112. package/dist/ColorHandle.cjs +27 -27
  113. package/dist/ColorHandle.css +42 -42
  114. package/dist/ColorHandle.mjs +27 -27
  115. package/dist/ColorSlider.cjs +109 -109
  116. package/dist/ColorSlider.cjs.map +1 -1
  117. package/dist/ColorSlider.css +52 -52
  118. package/dist/ColorSlider.css.map +1 -1
  119. package/dist/ColorSlider.mjs +109 -109
  120. package/dist/ColorSlider.mjs.map +1 -1
  121. package/dist/ColorSwatch.cjs +30 -30
  122. package/dist/ColorSwatch.cjs.map +1 -1
  123. package/dist/ColorSwatch.css +29 -29
  124. package/dist/ColorSwatch.css.map +1 -1
  125. package/dist/ColorSwatch.mjs +30 -30
  126. package/dist/ColorSwatch.mjs.map +1 -1
  127. package/dist/ColorSwatchPicker.cjs +30 -30
  128. package/dist/ColorSwatchPicker.css +48 -48
  129. package/dist/ColorSwatchPicker.mjs +30 -30
  130. package/dist/ColorWheel.cjs +31 -27
  131. package/dist/ColorWheel.cjs.map +1 -1
  132. package/dist/ColorWheel.css +17 -17
  133. package/dist/ColorWheel.css.map +1 -1
  134. package/dist/ColorWheel.mjs +31 -27
  135. package/dist/ColorWheel.mjs.map +1 -1
  136. package/dist/ComboBox.cjs +383 -383
  137. package/dist/ComboBox.cjs.map +1 -1
  138. package/dist/ComboBox.css +187 -187
  139. package/dist/ComboBox.css.map +1 -1
  140. package/dist/ComboBox.mjs +383 -383
  141. package/dist/ComboBox.mjs.map +1 -1
  142. package/dist/ContextualHelp.cjs +70 -41
  143. package/dist/ContextualHelp.cjs.map +1 -1
  144. package/dist/ContextualHelp.css +71 -71
  145. package/dist/ContextualHelp.css.map +1 -1
  146. package/dist/ContextualHelp.mjs +74 -46
  147. package/dist/ContextualHelp.mjs.map +1 -1
  148. package/dist/Cross.cjs +14 -14
  149. package/dist/Cross.css +10 -10
  150. package/dist/Cross.mjs +14 -14
  151. package/dist/CustomDialog.cjs +26 -26
  152. package/dist/CustomDialog.cjs.map +1 -1
  153. package/dist/CustomDialog.css +25 -25
  154. package/dist/CustomDialog.css.map +1 -1
  155. package/dist/CustomDialog.mjs +26 -26
  156. package/dist/CustomDialog.mjs.map +1 -1
  157. package/dist/Dash.cjs +10 -10
  158. package/dist/Dash.css +6 -6
  159. package/dist/Dash.mjs +10 -10
  160. package/dist/DateField.cjs +74 -74
  161. package/dist/DateField.cjs.map +1 -1
  162. package/dist/DateField.css +77 -77
  163. package/dist/DateField.css.map +1 -1
  164. package/dist/DateField.mjs +74 -74
  165. package/dist/DateField.mjs.map +1 -1
  166. package/dist/DatePicker.cjs +173 -173
  167. package/dist/DatePicker.cjs.map +1 -1
  168. package/dist/DatePicker.css +128 -128
  169. package/dist/DatePicker.css.map +1 -1
  170. package/dist/DatePicker.mjs +173 -173
  171. package/dist/DatePicker.mjs.map +1 -1
  172. package/dist/DateRangePicker.cjs +56 -56
  173. package/dist/DateRangePicker.cjs.map +1 -1
  174. package/dist/DateRangePicker.css +59 -59
  175. package/dist/DateRangePicker.css.map +1 -1
  176. package/dist/DateRangePicker.mjs +56 -56
  177. package/dist/DateRangePicker.mjs.map +1 -1
  178. package/dist/Dialog.cjs +17 -17
  179. package/dist/Dialog.cjs.map +1 -1
  180. package/dist/Dialog.css +70 -70
  181. package/dist/Dialog.css.map +1 -1
  182. package/dist/Dialog.mjs +17 -17
  183. package/dist/Dialog.mjs.map +1 -1
  184. package/dist/Disclosure.cjs +120 -120
  185. package/dist/Disclosure.cjs.map +1 -1
  186. package/dist/Disclosure.css +112 -112
  187. package/dist/Disclosure.css.map +1 -1
  188. package/dist/Disclosure.mjs +120 -120
  189. package/dist/Disclosure.mjs.map +1 -1
  190. package/dist/Divider.cjs +26 -26
  191. package/dist/Divider.cjs.map +1 -1
  192. package/dist/Divider.css +25 -25
  193. package/dist/Divider.css.map +1 -1
  194. package/dist/Divider.mjs +26 -26
  195. package/dist/Divider.mjs.map +1 -1
  196. package/dist/DropZone.cjs +62 -62
  197. package/dist/DropZone.cjs.map +1 -1
  198. package/dist/DropZone.css +57 -57
  199. package/dist/DropZone.css.map +1 -1
  200. package/dist/DropZone.mjs +62 -62
  201. package/dist/DropZone.mjs.map +1 -1
  202. package/dist/Field.cjs +351 -351
  203. package/dist/Field.cjs.map +1 -1
  204. package/dist/Field.css +147 -147
  205. package/dist/Field.css.map +1 -1
  206. package/dist/Field.mjs +351 -351
  207. package/dist/Field.mjs.map +1 -1
  208. package/dist/Form.cjs +10 -10
  209. package/dist/Form.cjs.map +1 -1
  210. package/dist/Form.css +9 -9
  211. package/dist/Form.css.map +1 -1
  212. package/dist/Form.mjs +10 -10
  213. package/dist/Form.mjs.map +1 -1
  214. package/dist/FullscreenDialog.cjs +5 -5
  215. package/dist/FullscreenDialog.cjs.map +1 -1
  216. package/dist/FullscreenDialog.css +78 -78
  217. package/dist/FullscreenDialog.css.map +1 -1
  218. package/dist/FullscreenDialog.mjs +5 -5
  219. package/dist/FullscreenDialog.mjs.map +1 -1
  220. package/dist/IllustratedMessage.cjs +229 -229
  221. package/dist/IllustratedMessage.css +72 -72
  222. package/dist/IllustratedMessage.mjs +229 -229
  223. package/dist/Image.cjs +14 -14
  224. package/dist/Image.css +14 -14
  225. package/dist/Image.mjs +14 -14
  226. package/dist/InlineAlert.cjs +101 -101
  227. package/dist/InlineAlert.css +76 -76
  228. package/dist/InlineAlert.mjs +101 -101
  229. package/dist/Link.cjs +50 -50
  230. package/dist/Link.cjs.map +1 -1
  231. package/dist/Link.css +41 -41
  232. package/dist/Link.css.map +1 -1
  233. package/dist/Link.mjs +50 -50
  234. package/dist/Link.mjs.map +1 -1
  235. package/dist/LinkOut.cjs +8 -8
  236. package/dist/LinkOut.css +8 -8
  237. package/dist/LinkOut.mjs +8 -8
  238. package/dist/ListView.cjs +777 -0
  239. package/dist/ListView.cjs.map +1 -0
  240. package/dist/ListView.css +740 -0
  241. package/dist/ListView.css.map +1 -0
  242. package/dist/ListView.mjs +770 -0
  243. package/dist/ListView.mjs.map +1 -0
  244. package/dist/Menu.cjs +540 -445
  245. package/dist/Menu.cjs.map +1 -1
  246. package/dist/Menu.css +234 -190
  247. package/dist/Menu.css.map +1 -1
  248. package/dist/Menu.mjs +541 -447
  249. package/dist/Menu.mjs.map +1 -1
  250. package/dist/Meter.cjs +154 -154
  251. package/dist/Meter.cjs.map +1 -1
  252. package/dist/Meter.css +91 -91
  253. package/dist/Meter.css.map +1 -1
  254. package/dist/Meter.mjs +154 -154
  255. package/dist/Meter.mjs.map +1 -1
  256. package/dist/Modal.cjs +66 -66
  257. package/dist/Modal.cjs.map +1 -1
  258. package/dist/Modal.css +54 -54
  259. package/dist/Modal.css.map +1 -1
  260. package/dist/Modal.mjs +66 -66
  261. package/dist/Modal.mjs.map +1 -1
  262. package/dist/NotificationBadge.cjs +57 -57
  263. package/dist/NotificationBadge.css +49 -49
  264. package/dist/NotificationBadge.mjs +57 -57
  265. package/dist/NumberField.cjs +115 -115
  266. package/dist/NumberField.cjs.map +1 -1
  267. package/dist/NumberField.css +99 -99
  268. package/dist/NumberField.css.map +1 -1
  269. package/dist/NumberField.mjs +115 -115
  270. package/dist/NumberField.mjs.map +1 -1
  271. package/dist/Picker.cjs +337 -285
  272. package/dist/Picker.cjs.map +1 -1
  273. package/dist/Picker.css +173 -173
  274. package/dist/Picker.css.map +1 -1
  275. package/dist/Picker.mjs +339 -287
  276. package/dist/Picker.mjs.map +1 -1
  277. package/dist/Popover.cjs +89 -89
  278. package/dist/Popover.cjs.map +1 -1
  279. package/dist/Popover.css +70 -70
  280. package/dist/Popover.css.map +1 -1
  281. package/dist/Popover.mjs +89 -89
  282. package/dist/Popover.mjs.map +1 -1
  283. package/dist/ProgressBar.cjs +164 -164
  284. package/dist/ProgressBar.cjs.map +1 -1
  285. package/dist/ProgressBar.css +99 -99
  286. package/dist/ProgressBar.css.map +1 -1
  287. package/dist/ProgressBar.mjs +164 -164
  288. package/dist/ProgressBar.mjs.map +1 -1
  289. package/dist/ProgressCircle.cjs +32 -32
  290. package/dist/ProgressCircle.cjs.map +1 -1
  291. package/dist/ProgressCircle.css +24 -24
  292. package/dist/ProgressCircle.css.map +1 -1
  293. package/dist/ProgressCircle.mjs +32 -32
  294. package/dist/ProgressCircle.mjs.map +1 -1
  295. package/dist/Provider.cjs +11 -11
  296. package/dist/Provider.css +10 -10
  297. package/dist/Provider.mjs +11 -11
  298. package/dist/Radio.cjs +146 -146
  299. package/dist/Radio.cjs.map +1 -1
  300. package/dist/Radio.css +78 -78
  301. package/dist/Radio.css.map +1 -1
  302. package/dist/Radio.mjs +146 -146
  303. package/dist/Radio.mjs.map +1 -1
  304. package/dist/RadioGroup.cjs +42 -42
  305. package/dist/RadioGroup.cjs.map +1 -1
  306. package/dist/RadioGroup.css +37 -37
  307. package/dist/RadioGroup.css.map +1 -1
  308. package/dist/RadioGroup.mjs +42 -42
  309. package/dist/RadioGroup.mjs.map +1 -1
  310. package/dist/RangeCalendar.cjs +8 -8
  311. package/dist/RangeCalendar.cjs.map +1 -1
  312. package/dist/RangeCalendar.css +10 -10
  313. package/dist/RangeCalendar.css.map +1 -1
  314. package/dist/RangeCalendar.mjs +8 -8
  315. package/dist/RangeCalendar.mjs.map +1 -1
  316. package/dist/SearchField.cjs +42 -42
  317. package/dist/SearchField.cjs.map +1 -1
  318. package/dist/SearchField.css +45 -45
  319. package/dist/SearchField.css.map +1 -1
  320. package/dist/SearchField.mjs +42 -42
  321. package/dist/SearchField.mjs.map +1 -1
  322. package/dist/SegmentedControl.cjs +180 -180
  323. package/dist/SegmentedControl.css +123 -123
  324. package/dist/SegmentedControl.mjs +180 -180
  325. package/dist/SelectBoxGroup.cjs +144 -144
  326. package/dist/SelectBoxGroup.cjs.map +1 -1
  327. package/dist/SelectBoxGroup.css +120 -120
  328. package/dist/SelectBoxGroup.css.map +1 -1
  329. package/dist/SelectBoxGroup.mjs +144 -144
  330. package/dist/SelectBoxGroup.mjs.map +1 -1
  331. package/dist/Slider.cjs +295 -295
  332. package/dist/Slider.cjs.map +1 -1
  333. package/dist/Slider.css +154 -154
  334. package/dist/Slider.css.map +1 -1
  335. package/dist/Slider.mjs +295 -295
  336. package/dist/Slider.mjs.map +1 -1
  337. package/dist/StatusLight.cjs +116 -116
  338. package/dist/StatusLight.css +59 -59
  339. package/dist/StatusLight.mjs +116 -116
  340. package/dist/Switch.cjs +155 -155
  341. package/dist/Switch.cjs.map +1 -1
  342. package/dist/Switch.css +74 -74
  343. package/dist/Switch.css.map +1 -1
  344. package/dist/Switch.mjs +155 -155
  345. package/dist/Switch.mjs.map +1 -1
  346. package/dist/TableView.cjs +448 -424
  347. package/dist/TableView.cjs.map +1 -1
  348. package/dist/TableView.css +232 -204
  349. package/dist/TableView.css.map +1 -1
  350. package/dist/TableView.mjs +450 -426
  351. package/dist/TableView.mjs.map +1 -1
  352. package/dist/Tabs.cjs +127 -127
  353. package/dist/Tabs.cjs.map +1 -1
  354. package/dist/Tabs.css +105 -105
  355. package/dist/Tabs.css.map +1 -1
  356. package/dist/Tabs.mjs +127 -127
  357. package/dist/Tabs.mjs.map +1 -1
  358. package/dist/TabsPicker.cjs +127 -127
  359. package/dist/TabsPicker.cjs.map +1 -1
  360. package/dist/TabsPicker.css +108 -108
  361. package/dist/TabsPicker.css.map +1 -1
  362. package/dist/TabsPicker.mjs +127 -127
  363. package/dist/TabsPicker.mjs.map +1 -1
  364. package/dist/TagGroup.cjs +204 -204
  365. package/dist/TagGroup.cjs.map +1 -1
  366. package/dist/TagGroup.css +146 -146
  367. package/dist/TagGroup.css.map +1 -1
  368. package/dist/TagGroup.mjs +204 -204
  369. package/dist/TagGroup.mjs.map +1 -1
  370. package/dist/TextField.cjs +59 -59
  371. package/dist/TextField.cjs.map +1 -1
  372. package/dist/TextField.css +54 -54
  373. package/dist/TextField.css.map +1 -1
  374. package/dist/TextField.mjs +59 -59
  375. package/dist/TextField.mjs.map +1 -1
  376. package/dist/TimeField.cjs +52 -52
  377. package/dist/TimeField.cjs.map +1 -1
  378. package/dist/TimeField.css +47 -47
  379. package/dist/TimeField.css.map +1 -1
  380. package/dist/TimeField.mjs +52 -52
  381. package/dist/TimeField.mjs.map +1 -1
  382. package/dist/Toast.cjs +121 -121
  383. package/dist/Toast.cjs.map +1 -1
  384. package/dist/Toast.css +110 -110
  385. package/dist/Toast.css.map +1 -1
  386. package/dist/Toast.mjs +122 -122
  387. package/dist/Toast.mjs.map +1 -1
  388. package/dist/ToggleButton.cjs +3 -3
  389. package/dist/ToggleButton.cjs.map +1 -1
  390. package/dist/ToggleButton.css +12 -12
  391. package/dist/ToggleButton.css.map +1 -1
  392. package/dist/ToggleButton.mjs +3 -3
  393. package/dist/ToggleButton.mjs.map +1 -1
  394. package/dist/ToggleButtonGroup.cjs.map +1 -1
  395. package/dist/ToggleButtonGroup.mjs.map +1 -1
  396. package/dist/Tooltip.cjs +78 -78
  397. package/dist/Tooltip.cjs.map +1 -1
  398. package/dist/Tooltip.css +65 -65
  399. package/dist/Tooltip.css.map +1 -1
  400. package/dist/Tooltip.mjs +78 -78
  401. package/dist/Tooltip.mjs.map +1 -1
  402. package/dist/TreeView.cjs +191 -141
  403. package/dist/TreeView.cjs.map +1 -1
  404. package/dist/TreeView.css +143 -127
  405. package/dist/TreeView.css.map +1 -1
  406. package/dist/TreeView.mjs +191 -141
  407. package/dist/TreeView.mjs.map +1 -1
  408. package/dist/ar-AE.cjs +1 -0
  409. package/dist/ar-AE.cjs.map +1 -1
  410. package/dist/ar-AE.mjs +1 -0
  411. package/dist/ar-AE.mjs.map +1 -1
  412. package/dist/bg-BG.cjs +1 -0
  413. package/dist/bg-BG.cjs.map +1 -1
  414. package/dist/bg-BG.mjs +1 -0
  415. package/dist/bg-BG.mjs.map +1 -1
  416. package/dist/cs-CZ.cjs +1 -0
  417. package/dist/cs-CZ.cjs.map +1 -1
  418. package/dist/cs-CZ.mjs +1 -0
  419. package/dist/cs-CZ.mjs.map +1 -1
  420. package/dist/da-DK.cjs +1 -0
  421. package/dist/da-DK.cjs.map +1 -1
  422. package/dist/da-DK.mjs +1 -0
  423. package/dist/da-DK.mjs.map +1 -1
  424. package/dist/de-DE.cjs +1 -0
  425. package/dist/de-DE.cjs.map +1 -1
  426. package/dist/de-DE.mjs +1 -0
  427. package/dist/de-DE.mjs.map +1 -1
  428. package/dist/el-GR.cjs +1 -0
  429. package/dist/el-GR.cjs.map +1 -1
  430. package/dist/el-GR.mjs +1 -0
  431. package/dist/el-GR.mjs.map +1 -1
  432. package/dist/en-US.cjs +1 -0
  433. package/dist/en-US.cjs.map +1 -1
  434. package/dist/en-US.mjs +1 -0
  435. package/dist/en-US.mjs.map +1 -1
  436. package/dist/es-ES.cjs +1 -0
  437. package/dist/es-ES.cjs.map +1 -1
  438. package/dist/es-ES.mjs +1 -0
  439. package/dist/es-ES.mjs.map +1 -1
  440. package/dist/et-EE.cjs +1 -0
  441. package/dist/et-EE.cjs.map +1 -1
  442. package/dist/et-EE.mjs +1 -0
  443. package/dist/et-EE.mjs.map +1 -1
  444. package/dist/fi-FI.cjs +1 -0
  445. package/dist/fi-FI.cjs.map +1 -1
  446. package/dist/fi-FI.mjs +1 -0
  447. package/dist/fi-FI.mjs.map +1 -1
  448. package/dist/fr-FR.cjs +1 -0
  449. package/dist/fr-FR.cjs.map +1 -1
  450. package/dist/fr-FR.mjs +1 -0
  451. package/dist/fr-FR.mjs.map +1 -1
  452. package/dist/he-IL.cjs +1 -0
  453. package/dist/he-IL.cjs.map +1 -1
  454. package/dist/he-IL.mjs +1 -0
  455. package/dist/he-IL.mjs.map +1 -1
  456. package/dist/hr-HR.cjs +1 -0
  457. package/dist/hr-HR.cjs.map +1 -1
  458. package/dist/hr-HR.mjs +1 -0
  459. package/dist/hr-HR.mjs.map +1 -1
  460. package/dist/hu-HU.cjs +1 -0
  461. package/dist/hu-HU.cjs.map +1 -1
  462. package/dist/hu-HU.mjs +1 -0
  463. package/dist/hu-HU.mjs.map +1 -1
  464. package/dist/it-IT.cjs +1 -0
  465. package/dist/it-IT.cjs.map +1 -1
  466. package/dist/it-IT.mjs +1 -0
  467. package/dist/it-IT.mjs.map +1 -1
  468. package/dist/ja-JP.cjs +1 -0
  469. package/dist/ja-JP.cjs.map +1 -1
  470. package/dist/ja-JP.mjs +1 -0
  471. package/dist/ja-JP.mjs.map +1 -1
  472. package/dist/ko-KR.cjs +1 -0
  473. package/dist/ko-KR.cjs.map +1 -1
  474. package/dist/ko-KR.mjs +1 -0
  475. package/dist/ko-KR.mjs.map +1 -1
  476. package/dist/lt-LT.cjs +1 -0
  477. package/dist/lt-LT.cjs.map +1 -1
  478. package/dist/lt-LT.mjs +1 -0
  479. package/dist/lt-LT.mjs.map +1 -1
  480. package/dist/lv-LV.cjs +1 -0
  481. package/dist/lv-LV.cjs.map +1 -1
  482. package/dist/lv-LV.mjs +1 -0
  483. package/dist/lv-LV.mjs.map +1 -1
  484. package/dist/main.cjs +7 -0
  485. package/dist/main.cjs.map +1 -1
  486. package/dist/module.mjs +5 -3
  487. package/dist/module.mjs.map +1 -1
  488. package/dist/nb-NO.cjs +1 -0
  489. package/dist/nb-NO.cjs.map +1 -1
  490. package/dist/nb-NO.mjs +1 -0
  491. package/dist/nb-NO.mjs.map +1 -1
  492. package/dist/nl-NL.cjs +1 -0
  493. package/dist/nl-NL.cjs.map +1 -1
  494. package/dist/nl-NL.mjs +1 -0
  495. package/dist/nl-NL.mjs.map +1 -1
  496. package/dist/pl-PL.cjs +1 -0
  497. package/dist/pl-PL.cjs.map +1 -1
  498. package/dist/pl-PL.mjs +1 -0
  499. package/dist/pl-PL.mjs.map +1 -1
  500. package/dist/pt-BR.cjs +1 -0
  501. package/dist/pt-BR.cjs.map +1 -1
  502. package/dist/pt-BR.mjs +1 -0
  503. package/dist/pt-BR.mjs.map +1 -1
  504. package/dist/pt-PT.cjs +1 -0
  505. package/dist/pt-PT.cjs.map +1 -1
  506. package/dist/pt-PT.mjs +1 -0
  507. package/dist/pt-PT.mjs.map +1 -1
  508. package/dist/ro-RO.cjs +1 -0
  509. package/dist/ro-RO.cjs.map +1 -1
  510. package/dist/ro-RO.mjs +1 -0
  511. package/dist/ro-RO.mjs.map +1 -1
  512. package/dist/ru-RU.cjs +1 -0
  513. package/dist/ru-RU.cjs.map +1 -1
  514. package/dist/ru-RU.mjs +1 -0
  515. package/dist/ru-RU.mjs.map +1 -1
  516. package/dist/sk-SK.cjs +1 -0
  517. package/dist/sk-SK.cjs.map +1 -1
  518. package/dist/sk-SK.mjs +1 -0
  519. package/dist/sk-SK.mjs.map +1 -1
  520. package/dist/sl-SI.cjs +1 -0
  521. package/dist/sl-SI.cjs.map +1 -1
  522. package/dist/sl-SI.mjs +1 -0
  523. package/dist/sl-SI.mjs.map +1 -1
  524. package/dist/sr-SP.cjs +1 -0
  525. package/dist/sr-SP.cjs.map +1 -1
  526. package/dist/sr-SP.mjs +1 -0
  527. package/dist/sr-SP.mjs.map +1 -1
  528. package/dist/sv-SE.cjs +1 -0
  529. package/dist/sv-SE.cjs.map +1 -1
  530. package/dist/sv-SE.mjs +1 -0
  531. package/dist/sv-SE.mjs.map +1 -1
  532. package/dist/tr-TR.cjs +1 -0
  533. package/dist/tr-TR.cjs.map +1 -1
  534. package/dist/tr-TR.mjs +1 -0
  535. package/dist/tr-TR.mjs.map +1 -1
  536. package/dist/types.d.ts +143 -76
  537. package/dist/types.d.ts.map +1 -1
  538. package/dist/uk-UA.cjs +1 -0
  539. package/dist/uk-UA.cjs.map +1 -1
  540. package/dist/uk-UA.mjs +1 -0
  541. package/dist/uk-UA.mjs.map +1 -1
  542. package/dist/zh-CN.cjs +1 -0
  543. package/dist/zh-CN.cjs.map +1 -1
  544. package/dist/zh-CN.mjs +1 -0
  545. package/dist/zh-CN.mjs.map +1 -1
  546. package/dist/zh-TW.cjs +1 -0
  547. package/dist/zh-TW.cjs.map +1 -1
  548. package/dist/zh-TW.mjs +1 -0
  549. package/dist/zh-TW.mjs.map +1 -1
  550. package/icons/Icon.cjs +12 -12
  551. package/icons/Icon.css +9 -9
  552. package/icons/Icon.mjs +12 -12
  553. package/icons/Skeleton.cjs +2 -2
  554. package/icons/Skeleton.cjs.map +1 -1
  555. package/icons/Skeleton.css +6 -6
  556. package/icons/Skeleton.mjs +2 -2
  557. package/icons/Skeleton.mjs.map +1 -1
  558. package/icons/runtime.cjs +16 -3
  559. package/icons/runtime.cjs.map +1 -1
  560. package/icons/runtime.mjs +16 -3
  561. package/icons/runtime.mjs.map +1 -1
  562. package/package.json +21 -21
  563. package/src/Accordion.tsx +1 -1
  564. package/src/ActionBar.tsx +2 -2
  565. package/src/ActionButton.tsx +1 -1
  566. package/src/Breadcrumbs.tsx +2 -2
  567. package/src/Button.tsx +2 -2
  568. package/src/Calendar.tsx +1 -1
  569. package/src/Card.tsx +1 -1
  570. package/src/CardView.tsx +1 -1
  571. package/src/Checkbox.tsx +2 -1
  572. package/src/CheckboxGroup.tsx +1 -1
  573. package/src/CoachMark.tsx +1 -1
  574. package/src/ColorArea.tsx +1 -1
  575. package/src/ColorField.tsx +1 -1
  576. package/src/ColorSlider.tsx +1 -1
  577. package/src/ColorSwatch.tsx +1 -1
  578. package/src/ColorWheel.tsx +2 -2
  579. package/src/ComboBox.tsx +4 -3
  580. package/src/ContextualHelp.tsx +81 -43
  581. package/src/CustomDialog.tsx +1 -1
  582. package/src/DateField.tsx +1 -1
  583. package/src/DatePicker.tsx +1 -1
  584. package/src/DateRangePicker.tsx +1 -1
  585. package/src/Dialog.tsx +1 -1
  586. package/src/Disclosure.tsx +2 -2
  587. package/src/Divider.tsx +1 -1
  588. package/src/DropZone.tsx +1 -1
  589. package/src/Field.tsx +6 -6
  590. package/src/Form.tsx +1 -1
  591. package/src/FullscreenDialog.tsx +1 -1
  592. package/src/Link.tsx +1 -1
  593. package/src/ListView.tsx +782 -0
  594. package/src/Menu.tsx +111 -29
  595. package/src/Meter.tsx +1 -1
  596. package/src/Modal.tsx +1 -1
  597. package/src/NumberField.tsx +1 -1
  598. package/src/Picker.tsx +75 -14
  599. package/src/Popover.tsx +2 -1
  600. package/src/ProgressBar.tsx +1 -1
  601. package/src/ProgressCircle.tsx +1 -1
  602. package/src/Radio.tsx +1 -1
  603. package/src/RadioGroup.tsx +1 -1
  604. package/src/RangeCalendar.tsx +1 -1
  605. package/src/SearchField.tsx +1 -1
  606. package/src/SelectBoxGroup.tsx +1 -1
  607. package/src/Slider.tsx +1 -1
  608. package/src/Switch.tsx +1 -1
  609. package/src/TableView.tsx +37 -19
  610. package/src/Tabs.tsx +4 -4
  611. package/src/TabsPicker.tsx +2 -2
  612. package/src/TagGroup.tsx +2 -2
  613. package/src/TextField.tsx +1 -1
  614. package/src/TimeField.tsx +1 -1
  615. package/src/Toast.tsx +3 -3
  616. package/src/ToggleButton.tsx +1 -1
  617. package/src/ToggleButtonGroup.tsx +1 -1
  618. package/src/Tooltip.tsx +1 -1
  619. package/src/TreeView.tsx +53 -12
  620. package/src/index.ts +6 -3
  621. package/style/__tests__/mergeStyles.test.ts +68 -0
  622. package/style/__tests__/style-macro.test.js +50 -30
  623. package/style/dist/style-macro.cjs +65 -14
  624. package/style/dist/style-macro.cjs.map +1 -1
  625. package/style/dist/style-macro.mjs +65 -14
  626. package/style/dist/style-macro.mjs.map +1 -1
  627. package/style/runtime.ts +21 -5
  628. package/style/style-macro.ts +81 -16
  629. package/style/__tests__/mergeStyles.test.js +0 -32
package/src/TableView.tsx CHANGED
@@ -17,10 +17,12 @@ import {
17
17
  ButtonContext,
18
18
  CellRenderProps,
19
19
  Collection,
20
+ CollectionRendererContext,
20
21
  ColumnRenderProps,
21
22
  ColumnResizer,
22
23
  ContextValue,
23
24
  DEFAULT_SLOT,
25
+ DefaultCollectionRenderer,
24
26
  Form,
25
27
  Key,
26
28
  OverlayTriggerStateContext,
@@ -59,7 +61,7 @@ import Close from '../s2wf-icons/S2_Icon_Close_20_N.svg';
59
61
  import {ColumnSize} from '@react-types/table';
60
62
  import {CustomDialog, DialogContainer} from '..';
61
63
  import {DOMProps, DOMRef, DOMRefValue, forwardRefType, GlobalDOMAttributes, LinkDOMProps, LoadingState, Node} from '@react-types/shared';
62
- import {getActiveElement, getOwnerDocument, useLayoutEffect, useObjectRef} from '@react-aria/utils';
64
+ import {getActiveElement, getOwnerDocument, isFocusWithin, nodeContains, useLayoutEffect, useObjectRef} from '@react-aria/utils';
63
65
  import {GridNode} from '@react-types/grid';
64
66
  import {IconContext} from './Icon';
65
67
  // @ts-ignore
@@ -120,7 +122,7 @@ interface S2TableProps {
120
122
  }
121
123
 
122
124
  // TODO: Note that loadMore and loadingState are now on the Table instead of on the TableBody
123
- export interface TableViewProps extends Omit<RACTableProps, 'style' | 'className' | 'onRowAction' | 'selectionBehavior' | 'onScroll' | 'onCellAction' | 'dragAndDropHooks' | keyof GlobalDOMAttributes>, DOMProps, UnsafeStyles, S2TableProps {
125
+ export interface TableViewProps extends Omit<RACTableProps, 'style' | 'className' | 'render' | 'onRowAction' | 'selectionBehavior' | 'onScroll' | 'onCellAction' | 'dragAndDropHooks' | keyof GlobalDOMAttributes>, DOMProps, UnsafeStyles, S2TableProps {
124
126
  /** Spectrum-defined styles, returned by the `style()` macro. */
125
127
  styles?: StylesPropWithHeight
126
128
  }
@@ -388,7 +390,7 @@ const centeredWrapper = style({
388
390
  height: 'full'
389
391
  });
390
392
 
391
- export interface TableBodyProps<T> extends Omit<RACTableBodyProps<T>, 'style' | 'className' | keyof GlobalDOMAttributes> {}
393
+ export interface TableBodyProps<T> extends Omit<RACTableBodyProps<T>, 'style' | 'className' | 'render' | keyof GlobalDOMAttributes> {}
392
394
 
393
395
  /**
394
396
  * The body of a `<Table>`, containing the table rows.
@@ -439,7 +441,9 @@ export const TableBody = /*#__PURE__*/ (forwardRef as forwardRefType)(function T
439
441
  if (renderEmptyState != null && !isLoading) {
440
442
  emptyRender = (props: TableBodyRenderProps) => (
441
443
  <div className={centeredWrapper}>
442
- {renderEmptyState(props)}
444
+ <CollectionRendererContext.Provider value={DefaultCollectionRenderer}>
445
+ {renderEmptyState(props)}
446
+ </CollectionRendererContext.Provider>
443
447
  </div>
444
448
  );
445
449
  } else if (loadingState === 'loading') {
@@ -522,7 +526,7 @@ const columnStyles = style({
522
526
  forcedColorAdjust: 'none'
523
527
  });
524
528
 
525
- export interface ColumnProps extends Omit<RACColumnProps, 'style' | 'className' | keyof GlobalDOMAttributes> {
529
+ export interface ColumnProps extends Omit<RACColumnProps, 'style' | 'className' | 'render' | keyof GlobalDOMAttributes> {
526
530
  /** Whether the column should render a divider between it and the next column. */
527
531
  showDivider?: boolean,
528
532
  /** Whether the column allows resizing. */
@@ -885,7 +889,7 @@ const selectAllCheckboxColumn = style({
885
889
  backgroundColor: 'gray-75'
886
890
  });
887
891
 
888
- export interface TableHeaderProps<T> extends Omit<RACTableHeaderProps<T>, 'style' | 'className' | 'onHoverChange' | 'onHoverStart' | 'onHoverEnd' | keyof GlobalDOMAttributes> {}
892
+ export interface TableHeaderProps<T> extends Omit<RACTableHeaderProps<T>, 'style' | 'className' | 'render' | 'onHoverChange' | 'onHoverStart' | 'onHoverEnd' | keyof GlobalDOMAttributes> {}
889
893
 
890
894
  /**
891
895
  * A header within a `<Table>`, containing the table columns.
@@ -943,20 +947,13 @@ const commonCellStyles = {
943
947
  borderXWidth: 0,
944
948
  borderStyle: 'solid',
945
949
  position: 'relative',
946
- color: {
947
- default: 'gray-800',
948
- forcedColors: 'ButtonText'
949
- },
950
+ color: '--rowTextColor',
950
951
  outlineStyle: 'none',
951
952
  paddingX: 16 // table-edge-to-content
952
953
  } as const;
953
954
 
954
955
  const cell = style<CellRenderProps & S2TableProps & {isDivider: boolean}>({
955
956
  ...commonCellStyles,
956
- color: {
957
- default: baseColor('neutral-subdued'),
958
- isSelected: baseColor('neutral')
959
- },
960
957
  paddingY: centerPadding(),
961
958
  minHeight: {
962
959
  default: 40,
@@ -1030,7 +1027,7 @@ const cellContent = style({
1030
1027
  }
1031
1028
  });
1032
1029
 
1033
- export interface CellProps extends Omit<RACCellProps, 'style' | 'className' | keyof GlobalDOMAttributes>, Pick<ColumnProps, 'align' | 'showDivider'> {
1030
+ export interface CellProps extends Omit<RACCellProps, 'style' | 'className' | 'render' | keyof GlobalDOMAttributes>, Pick<ColumnProps, 'align' | 'showDivider'> {
1034
1031
  /** @private */
1035
1032
  isSticky?: boolean,
1036
1033
  /** The content to render as the cell children. */
@@ -1220,7 +1217,7 @@ function EditableCellInner(props: EditableCellProps & {isFocusVisible: boolean,
1220
1217
  if (isOpen) {
1221
1218
  let activeElement = getActiveElement(getOwnerDocument(formRef.current));
1222
1219
  if (activeElement
1223
- && formRef.current?.contains(activeElement)
1220
+ && nodeContains(formRef.current, activeElement)
1224
1221
  // not going to handle contenteditable https://stackoverflow.com/questions/6139107/programmatically-select-text-in-a-contenteditable-html-element
1225
1222
  // seems like an edge case anyways
1226
1223
  && (
@@ -1301,7 +1298,7 @@ function EditableCellInner(props: EditableCellProps & {isFocusVisible: boolean,
1301
1298
  onOpenChange={setIsOpen}
1302
1299
  ref={popoverRef}
1303
1300
  shouldCloseOnInteractOutside={() => {
1304
- if (!popoverRef.current?.contains(document.activeElement)) {
1301
+ if (!isFocusWithin(popoverRef.current)) {
1305
1302
  return false;
1306
1303
  }
1307
1304
  formRef.current?.requestSubmit();
@@ -1393,6 +1390,16 @@ const rowBackgroundColor = {
1393
1390
  }
1394
1391
  } as const;
1395
1392
 
1393
+ const rowTextColor = {
1394
+ default: baseColor('neutral-subdued'),
1395
+ isSelected: baseColor('neutral'),
1396
+ isDisabled: {
1397
+ default: 'disabled',
1398
+ forcedColors: 'GrayText'
1399
+ },
1400
+ forcedColors: 'ButtonText'
1401
+ } as const;
1402
+
1396
1403
  const row = style<RowRenderProps & S2TableProps>({
1397
1404
  height: 'full',
1398
1405
  position: 'relative',
@@ -1402,6 +1409,10 @@ const row = style<RowRenderProps & S2TableProps>({
1402
1409
  type: 'backgroundColor',
1403
1410
  value: rowBackgroundColor
1404
1411
  },
1412
+ '--rowTextColor': {
1413
+ type: 'color',
1414
+ value: rowTextColor
1415
+ },
1405
1416
  '--rowFocusIndicatorColor': {
1406
1417
  type: 'outlineColor',
1407
1418
  value: {
@@ -1446,6 +1457,13 @@ const row = style<RowRenderProps & S2TableProps>({
1446
1457
  forcedColorAdjust: 'none'
1447
1458
  });
1448
1459
 
1460
+ const selectionCheckbox = style({
1461
+ visibility: {
1462
+ default: 'visible',
1463
+ ':is([slot="selection"][data-disabled="true"])': 'hidden'
1464
+ }
1465
+ });
1466
+
1449
1467
  export interface RowProps<T> extends Pick<RACRowProps<T>, 'id' | 'columns' | 'isDisabled' | 'onAction' | 'children' | 'textValue' | 'dependencies' | keyof GlobalDOMAttributes>, LinkDOMProps {}
1450
1468
 
1451
1469
  /**
@@ -1465,14 +1483,14 @@ export const Row = /*#__PURE__*/ (forwardRef as forwardRefType)(function Row<T e
1465
1483
  className={renderProps => row({
1466
1484
  ...renderProps,
1467
1485
  ...tableVisualOptions
1468
- }) + (renderProps.isFocusVisible && ' ' + raw('&:before { content: ""; display: inline-block; position: sticky; inset-inline-start: 0; width: 3px; height: 100%; margin-inline-end: -3px; margin-block-end: 1px; z-index: 3; background-color: var(--rowFocusIndicatorColor)'))}
1486
+ }) + (renderProps.isFocusVisible ? ' ' + raw('&:before { content: ""; display: inline-block; position: sticky; inset-inline-start: 0; width: 3px; height: 100%; margin-inline-end: -3px; margin-block-end: 1px; z-index: 3; background-color: var(--rowFocusIndicatorColor)') : '')}
1469
1487
  {...otherProps}>
1470
1488
  {selectionMode !== 'none' && selectionBehavior === 'toggle' && (
1471
1489
  // Not sure what we want to do with this className, in Cell it currently overrides the className that would have been applied.
1472
1490
  // The `spread` otherProps must be after className in Cell.
1473
1491
  // @ts-ignore
1474
1492
  <Cell isSticky className={checkboxCellStyle}>
1475
- <Checkbox slot="selection" />
1493
+ <Checkbox slot="selection" styles={selectionCheckbox} />
1476
1494
  </Cell>
1477
1495
  )}
1478
1496
  <Collection items={columns} dependencies={[...dependencies, columns]}>
package/src/Tabs.tsx CHANGED
@@ -42,7 +42,7 @@ import {useHasTabbableChild} from '@react-aria/focus';
42
42
  import {useLocale} from '@react-aria/i18n';
43
43
  import {useSpectrumContextProps} from './useSpectrumContextProps';
44
44
 
45
- export interface TabsProps extends Omit<AriaTabsProps, 'className' | 'style' | 'children' | keyof GlobalDOMAttributes>, UnsafeStyles {
45
+ export interface TabsProps extends Omit<AriaTabsProps, 'className' | 'style' | 'render' | 'children' | keyof GlobalDOMAttributes>, UnsafeStyles {
46
46
  /** Spectrum-defined styles, returned by the `style()` macro. */
47
47
  styles?: StylesPropWithHeight,
48
48
  /** The content to display in the tabs. */
@@ -60,17 +60,17 @@ export interface TabsProps extends Omit<AriaTabsProps, 'className' | 'style' | '
60
60
  labelBehavior?: 'show' | 'hide'
61
61
  }
62
62
 
63
- export interface TabProps extends Omit<AriaTabProps, 'children' | 'style' | 'className' | 'onClick' | keyof GlobalDOMAttributes>, StyleProps {
63
+ export interface TabProps extends Omit<AriaTabProps, 'children' | 'style' | 'className' | 'render' | 'onClick' | keyof GlobalDOMAttributes>, StyleProps {
64
64
  /** The content to display in the tab. */
65
65
  children: ReactNode
66
66
  }
67
67
 
68
- export interface TabListProps<T> extends Omit<AriaTabListProps<T>, 'style' | 'className' | 'aria-label' | 'aria-labelledby' | keyof GlobalDOMAttributes>, StyleProps {
68
+ export interface TabListProps<T> extends Omit<AriaTabListProps<T>, 'style' | 'className' | 'render' | 'aria-label' | 'aria-labelledby' | keyof GlobalDOMAttributes>, StyleProps {
69
69
  /** The content to display in the tablist. */
70
70
  children: ReactNode | ((item: T) => ReactNode)
71
71
  }
72
72
 
73
- export interface TabPanelProps extends Omit<AriaTabPanelProps, 'children' | 'style' | 'className' | keyof GlobalDOMAttributes>, UnsafeStyles {
73
+ export interface TabPanelProps extends Omit<AriaTabPanelProps, 'children' | 'style' | 'className' | 'render' | keyof GlobalDOMAttributes>, UnsafeStyles {
74
74
  /** Spectrum-defined styles, returned by the `style()` macro. */
75
75
  styles?: StylesPropWithHeight,
76
76
  /** The content to display in the tab panels. */
@@ -56,7 +56,7 @@ import {useSpectrumContextProps} from './useSpectrumContextProps';
56
56
  export interface PickerStyleProps {
57
57
  }
58
58
  export interface PickerProps<T extends object> extends
59
- Omit<AriaSelectProps<T>, 'children' | 'style' | 'className' | 'placeholder'>,
59
+ Omit<AriaSelectProps<T>, 'children' | 'style' | 'className' | 'render' | 'placeholder'>,
60
60
  PickerStyleProps,
61
61
  StyleProps,
62
62
  SpectrumLabelableProps,
@@ -318,7 +318,7 @@ function TabLine(props: {isDisabled?: boolean}) {
318
318
  }
319
319
 
320
320
 
321
- export interface PickerItemProps extends Omit<ListBoxItemProps, 'children' | 'style' | 'className'>, StyleProps {
321
+ export interface PickerItemProps extends Omit<ListBoxItemProps, 'children' | 'style' | 'className' | 'render'>, StyleProps {
322
322
  children: ReactNode
323
323
  }
324
324
  export function PickerItem(props: PickerItemProps): ReactNode {
package/src/TagGroup.tsx CHANGED
@@ -52,12 +52,12 @@ import {useLocalizedStringFormatter} from '@react-aria/i18n';
52
52
  import {useSpectrumContextProps} from './useSpectrumContextProps';
53
53
 
54
54
  // Get types from RSP and extend those?
55
- export interface TagProps extends Omit<AriaTagProps, 'children' | 'style' | 'className' | 'onClick' | keyof GlobalDOMAttributes>, LabelableProps {
55
+ export interface TagProps extends Omit<AriaTagProps, 'children' | 'style' | 'className' | 'render' | 'onClick' | keyof GlobalDOMAttributes>, LabelableProps {
56
56
  /** The children of the tag. */
57
57
  children: ReactNode
58
58
  }
59
59
 
60
- export interface TagGroupProps<T> extends Omit<AriaTagGroupProps, 'children' | 'style' | 'className' | keyof GlobalDOMAttributes>, Pick<TagListProps<T>, 'items' | 'children' | 'renderEmptyState'>, Omit<SpectrumLabelableProps, 'isRequired' | 'necessityIndicator'>, StyleProps, Omit<HelpTextProps, 'errorMessage'> {
60
+ export interface TagGroupProps<T> extends Omit<AriaTagGroupProps, 'children' | 'style' | 'className' | 'render' | keyof GlobalDOMAttributes>, Pick<TagListProps<T>, 'items' | 'children' | 'renderEmptyState'>, Omit<SpectrumLabelableProps, 'isRequired' | 'necessityIndicator'>, StyleProps, Omit<HelpTextProps, 'errorMessage'> {
61
61
  /** A description for the tag group. */
62
62
  description?: ReactNode,
63
63
  /**
package/src/TextField.tsx CHANGED
@@ -33,7 +33,7 @@ import {StyleString} from '../style/types';
33
33
  import {TextFieldRef} from '@react-types/textfield';
34
34
  import {useSpectrumContextProps} from './useSpectrumContextProps';
35
35
 
36
- export interface TextFieldProps extends Omit<AriaTextFieldProps, 'children' | 'className' | 'style' | keyof GlobalDOMAttributes>, StyleProps, SpectrumLabelableProps, HelpTextProps, Pick<InputProps, 'placeholder'> {
36
+ export interface TextFieldProps extends Omit<AriaTextFieldProps, 'children' | 'className' | 'style' | 'render' | keyof GlobalDOMAttributes>, StyleProps, SpectrumLabelableProps, HelpTextProps, Pick<InputProps, 'placeholder'> {
37
37
  /**
38
38
  * The size of the text field.
39
39
  *
package/src/TimeField.tsx CHANGED
@@ -27,7 +27,7 @@ import {useSpectrumContextProps} from './useSpectrumContextProps';
27
27
 
28
28
 
29
29
  export interface TimeFieldProps<T extends TimeValue> extends
30
- Omit<AriaTimeFieldProps<T>, 'children' | 'className' | 'style' | keyof GlobalDOMAttributes>,
30
+ Omit<AriaTimeFieldProps<T>, 'children' | 'className' | 'style' | 'render' | keyof GlobalDOMAttributes>,
31
31
  StyleProps,
32
32
  SpectrumLabelableProps,
33
33
  HelpTextProps {
package/src/Toast.tsx CHANGED
@@ -19,7 +19,7 @@ import Chevron from '../s2wf-icons/S2_Icon_ChevronDown_20_N.svg';
19
19
  import {CloseButton} from './CloseButton';
20
20
  import {createContext, ReactNode, useContext, useEffect, useMemo, useRef} from 'react';
21
21
  import {DOMProps} from '@react-types/shared';
22
- import {filterDOMProps, isWebKit, useEvent} from '@react-aria/utils';
22
+ import {filterDOMProps, getEventTarget, isWebKit, useEvent} from '@react-aria/utils';
23
23
  import {flushSync} from 'react-dom';
24
24
  import {focusRing, style} from '../style' with {type: 'macro'};
25
25
  import {FocusScope, useModalOverlay} from 'react-aria';
@@ -34,7 +34,7 @@ import {useMediaQuery} from '@react-spectrum/utils';
34
34
  import {useOverlayTriggerState} from 'react-stately';
35
35
 
36
36
  export type ToastPlacement = 'top' | 'top end' | 'bottom' | 'bottom end';
37
- export interface ToastContainerProps extends Omit<ToastRegionProps<SpectrumToastValue>, 'queue' | 'children' | 'style' | 'className'> {
37
+ export interface ToastContainerProps extends Omit<ToastRegionProps<SpectrumToastValue>, 'queue' | 'children' | 'style' | 'className' | 'render'> {
38
38
  /**
39
39
  * Placement of the toast container on the page.
40
40
  * @default "bottom"
@@ -446,7 +446,7 @@ function SpectrumToastList({placement, align, reduceMotion}) {
446
446
  let toastListRef = useRef(null);
447
447
  useEvent(toastListRef, 'click', (e) => {
448
448
  // Have to check if this is a button because stopPropagation in react events doesn't affect native events.
449
- if (!isExpanded && !(e.target as Element)?.closest('button')) {
449
+ if (!isExpanded && !(getEventTarget(e) as Element)?.closest('button')) {
450
450
  toggleExpanded();
451
451
  }
452
452
  });
@@ -26,7 +26,7 @@ import {useFocusableRef} from '@react-spectrum/utils';
26
26
  import {useFormProps} from './Form';
27
27
  import {useSpectrumContextProps} from './useSpectrumContextProps';
28
28
 
29
- export interface ToggleButtonProps extends Omit<RACToggleButtonProps, 'className' | 'style' | 'children' | 'onHover' | 'onHoverStart' | 'onHoverEnd' | 'onHoverChange' | 'onClick' | keyof GlobalDOMAttributes>, StyleProps, ActionButtonStyleProps {
29
+ export interface ToggleButtonProps extends Omit<RACToggleButtonProps, 'className' | 'style' | 'render' | 'children' | 'onHover' | 'onHoverStart' | 'onHoverEnd' | 'onHoverChange' | 'onClick' | keyof GlobalDOMAttributes>, StyleProps, ActionButtonStyleProps {
30
30
  /** The content to display in the button. */
31
31
  children: ReactNode,
32
32
  /** Whether the button should be displayed with an [emphasized style](https://spectrum.adobe.com/page/action-button/#Emphasis). */
@@ -16,7 +16,7 @@ import {createContext, ForwardedRef, forwardRef} from 'react';
16
16
  import {DOMProps, GlobalDOMAttributes} from '@react-types/shared';
17
17
  import {useSpectrumContextProps} from './useSpectrumContextProps';
18
18
 
19
- export interface ToggleButtonGroupProps extends ActionButtonGroupProps, Omit<RACToggleButtonGroupProps, 'children' | 'style' | 'className' | keyof GlobalDOMAttributes>, DOMProps {
19
+ export interface ToggleButtonGroupProps extends ActionButtonGroupProps, Omit<RACToggleButtonGroupProps, 'children' | 'style' | 'className' | 'render' | keyof GlobalDOMAttributes>, DOMProps {
20
20
  /** Whether the button should be displayed with an [emphasized style](https://spectrum.adobe.com/page/action-button/#Emphasis). */
21
21
  isEmphasized?: boolean
22
22
  }
package/src/Tooltip.tsx CHANGED
@@ -38,7 +38,7 @@ export interface TooltipTriggerProps extends Omit<AriaTooltipTriggerComponentPro
38
38
  placement?: 'start' | 'end' | 'right' | 'left' | 'top' | 'bottom'
39
39
  }
40
40
 
41
- export interface TooltipProps extends Omit<AriaTooltipProps, 'children' | 'className' | 'style' | 'triggerRef' | 'UNSTABLE_portalContainer' | 'isEntering' | 'isExiting' | 'placement' | 'containerPadding' | 'offset' | 'crossOffset' | 'shouldFlip' | 'arrowBoundaryOffset' | 'isOpen' | 'defaultOpen' | 'onOpenChange' | keyof GlobalDOMAttributes>, DOMProps, UnsafeStyles {
41
+ export interface TooltipProps extends Omit<AriaTooltipProps, 'children' | 'className' | 'style' | 'render' | 'triggerRef' | 'UNSTABLE_portalContainer' | 'isEntering' | 'isExiting' | 'placement' | 'containerPadding' | 'offset' | 'crossOffset' | 'shouldFlip' | 'arrowBoundaryOffset' | 'isOpen' | 'defaultOpen' | 'onOpenChange' | keyof GlobalDOMAttributes>, DOMProps, UnsafeStyles {
42
42
  /** The content of the tooltip. */
43
43
  children: ReactNode
44
44
  }
package/src/TreeView.tsx CHANGED
@@ -41,21 +41,24 @@ import {ProgressCircle} from './ProgressCircle';
41
41
  import {raw} from '../style/style-macro' with {type: 'macro'};
42
42
  import React, {createContext, forwardRef, JSXElementConstructor, ReactElement, ReactNode, useRef} from 'react';
43
43
  import {Text, TextContext} from './Content';
44
+ import {useActionBarContainer} from './ActionBar';
44
45
  import {useDOMRef} from '@react-spectrum/utils';
45
46
  import {useLocale, useLocalizedStringFormatter} from 'react-aria';
46
47
  import {useScale} from './utils';
47
48
 
48
49
  interface S2TreeProps {
49
50
  /** Handler that is called when a user performs an action on a row. */
50
- onAction?: (key: Key) => void
51
+ onAction?: (key: Key) => void,
52
+ /** Provides the ActionBar to display when items are selected in the TreeView. */
53
+ renderActionBar?: (selectedKeys: 'all' | Set<Key>) => ReactElement
51
54
  }
52
55
 
53
- export interface TreeViewProps<T> extends Omit<RACTreeProps<T>, 'style' | 'className' | 'onRowAction' | 'selectionBehavior' | 'onScroll' | 'onCellAction' | 'dragAndDropHooks' | keyof GlobalDOMAttributes>, UnsafeStyles, S2TreeProps {
56
+ export interface TreeViewProps<T> extends Omit<RACTreeProps<T>, 'style' | 'className' | 'render' | 'onRowAction' | 'selectionBehavior' | 'onScroll' | 'onCellAction' | 'dragAndDropHooks' | keyof GlobalDOMAttributes>, UnsafeStyles, S2TreeProps {
54
57
  /** Spectrum-defined styles, returned by the `style()` macro. */
55
58
  styles?: StylesPropWithHeight
56
59
  }
57
60
 
58
- export interface TreeViewItemProps extends Omit<RACTreeItemProps, 'className' | 'style' | 'onClick' | keyof GlobalDOMAttributes> {
61
+ export interface TreeViewItemProps extends Omit<RACTreeItemProps, 'className' | 'style' | 'render' | 'onClick' | keyof GlobalDOMAttributes> {
59
62
  /** Whether this item has children, even if not loaded yet. */
60
63
  hasChildItems?: boolean
61
64
  }
@@ -71,6 +74,16 @@ interface TreeRendererContextValue {
71
74
  const TreeRendererContext = createContext<TreeRendererContextValue>({});
72
75
 
73
76
 
77
+ const treeViewWrapper = style({
78
+ minHeight: 0,
79
+ minWidth: 0,
80
+ display: 'flex',
81
+ isolation: 'isolate',
82
+ disableTapHighlight: true,
83
+ position: 'relative',
84
+ overflow: 'clip'
85
+ }, getAllowedOverrides({height: true}));
86
+
74
87
  // TODO: the below is needed so the borders of the top and bottom row isn't cut off if the TreeView is wrapped within a container by always reserving the 2px needed for the
75
88
  // keyboard focus ring. Perhaps find a different way of rendering the outlines since the top of the item doesn't
76
89
  // scroll into view due to how the ring is offset. Alternatively, have the tree render the top/bottom outline like it does in Listview
@@ -94,7 +107,7 @@ const tree = style({
94
107
  type: 'width',
95
108
  value: 16
96
109
  }
97
- }, getAllowedOverrides({height: true}));
110
+ });
98
111
 
99
112
  /**
100
113
  * A tree view provides users with a way to navigate nested hierarchical information.
@@ -109,8 +122,11 @@ export const TreeView = /*#__PURE__*/ (forwardRef as forwardRefType)(function Tr
109
122
  }
110
123
 
111
124
  let domRef = useDOMRef(ref);
125
+ let scrollRef = useRef<HTMLElement | null>(null);
112
126
 
113
- return (
127
+ let {selectedKeys, onSelectionChange, actionBar, actionBarHeight} = useActionBarContainer({...props, scrollRef});
128
+
129
+ let treeContent = (
114
130
  <Virtualizer
115
131
  layout={ListLayout}
116
132
  layoutOptions={{
@@ -119,15 +135,36 @@ export const TreeView = /*#__PURE__*/ (forwardRef as forwardRefType)(function Tr
119
135
  <TreeRendererContext.Provider value={{renderer}}>
120
136
  <Tree
121
137
  {...props}
122
- style={UNSAFE_style}
123
- className={renderProps => (UNSAFE_className ?? '') + tree({...renderProps}, props.styles)}
138
+ style={{
139
+ ...(!props.renderActionBar ? UNSAFE_style : {}),
140
+ paddingBottom: actionBarHeight > 0 ? actionBarHeight + 8 : 0,
141
+ scrollPaddingBottom: actionBarHeight > 0 ? actionBarHeight + 8 : 0
142
+ }}
143
+ className={renderProps => (!props.renderActionBar ? (UNSAFE_className ?? '') : '') + tree({...renderProps})}
124
144
  selectionBehavior="toggle"
125
- ref={domRef}>
145
+ selectedKeys={selectedKeys}
146
+ defaultSelectedKeys={undefined}
147
+ onSelectionChange={onSelectionChange}
148
+ ref={props.renderActionBar ? (scrollRef as any) : domRef}>
126
149
  {props.children}
127
150
  </Tree>
128
151
  </TreeRendererContext.Provider>
129
152
  </Virtualizer>
130
153
  );
154
+
155
+ if (props.renderActionBar) {
156
+ return (
157
+ <div
158
+ ref={domRef}
159
+ className={(UNSAFE_className ?? '') + treeViewWrapper(null, props.styles)}
160
+ style={UNSAFE_style}>
161
+ {treeContent}
162
+ {actionBar}
163
+ </div>
164
+ );
165
+ }
166
+
167
+ return treeContent;
131
168
  });
132
169
 
133
170
  const rowBackgroundColor = {
@@ -217,7 +254,11 @@ const treeCheckbox = style({
217
254
  gridArea: 'checkbox',
218
255
  marginStart: 12,
219
256
  marginEnd: 0,
220
- paddingEnd: 0
257
+ paddingEnd: 0,
258
+ visibility: {
259
+ default: 'visible',
260
+ isDisabled: 'hidden'
261
+ }
221
262
  });
222
263
 
223
264
  const treeIcon = style({
@@ -302,7 +343,7 @@ export const TreeViewItemContent = (props: TreeViewItemContentProps): ReactNode
302
343
  <div className={treeCellGrid({isDisabled, isNextSelected, isSelected, isFirst, isNextFocused})}>
303
344
  {selectionMode !== 'none' && selectionBehavior === 'toggle' && (
304
345
  // TODO: add transition?
305
- <div className={treeCheckbox}>
346
+ <div className={treeCheckbox({isDisabled: isDisabled || !state.selectionManager.canSelectItem(id) || state.disabledKeys.has(id)})}>
306
347
  <Checkbox slot="selection" />
307
348
  </div>
308
349
  )}
@@ -319,8 +360,8 @@ export const TreeViewItemContent = (props: TreeViewItemContentProps): ReactNode
319
360
  render: centerBaseline({slot: 'icon', styles: treeIcon}),
320
361
  styles: style({size: fontRelative(20), flexShrink: 0})
321
362
  }],
322
- [ActionButtonGroupContext, {styles: treeActions}],
323
- [ActionMenuContext, {styles: treeActionMenu, isQuiet: true}]
363
+ [ActionButtonGroupContext, {styles: treeActions, isDisabled}],
364
+ [ActionMenuContext, {styles: treeActionMenu, isQuiet: true, isDisabled}]
324
365
  ]}>
325
366
  {typeof children === 'string' ? <Text>{children}</Text> : children}
326
367
  </Provider>
package/src/index.ts CHANGED
@@ -37,7 +37,7 @@ export {ColorSwatch, ColorSwatchContext} from './ColorSwatch';
37
37
  export {ColorSwatchPicker, ColorSwatchPickerContext} from './ColorSwatchPicker';
38
38
  export {ColorWheel, ColorWheelContext} from './ColorWheel';
39
39
  export {ComboBox, ComboBoxItem, ComboBoxSection, ComboBoxContext} from './ComboBox';
40
- export {ContextualHelp, ContextualHelpContext} from './ContextualHelp';
40
+ export {ContextualHelp, ContextualHelpContext, ContextualHelpPopover} from './ContextualHelp';
41
41
  export {DateField, DateFieldContext} from './DateField';
42
42
  export {DatePicker, DatePickerContext} from './DatePicker';
43
43
  export {DateRangePicker, DateRangePickerContext} from './DateRangePicker';
@@ -57,7 +57,8 @@ export {Image, ImageContext} from './Image';
57
57
  export {ImageCoordinator} from './ImageCoordinator';
58
58
  export {InlineAlert, InlineAlertContext} from './InlineAlert';
59
59
  export {Link, LinkContext} from './Link';
60
- export {MenuItem, MenuTrigger, Menu, MenuSection, SubmenuTrigger, MenuContext} from './Menu';
60
+ export {ListView, ListViewContext, ListViewItem} from './ListView';
61
+ export {MenuItem, MenuTrigger, Menu, MenuSection, SubmenuTrigger, UnavailableMenuItemTrigger, MenuContext} from './Menu';
61
62
  export {Meter, MeterContext} from './Meter';
62
63
  export {NotificationBadge, NotificationBadgeContext} from './NotificationBadge';
63
64
  export {NumberField, NumberFieldContext} from './NumberField';
@@ -119,6 +120,7 @@ export type {ColorSwatchProps} from './ColorSwatch';
119
120
  export type {ColorSwatchPickerProps} from './ColorSwatchPicker';
120
121
  export type {ColorWheelProps} from './ColorWheel';
121
122
  export type {ComboBoxProps, ComboBoxItemProps, ComboBoxSectionProps} from './ComboBox';
123
+ export type {ContextualHelpProps, ContextualHelpStyleProps, ContextualHelpPopoverProps} from './ContextualHelp';
122
124
  export type {DateFieldProps} from './DateField';
123
125
  export type {DatePickerProps} from './DatePicker';
124
126
  export type {DateRangePickerProps} from './DateRangePicker';
@@ -136,7 +138,8 @@ export type {InlineAlertProps} from './InlineAlert';
136
138
  export type {ImageProps} from './Image';
137
139
  export type {ImageCoordinatorProps} from './ImageCoordinator';
138
140
  export type {LinkProps} from './Link';
139
- export type {MenuTriggerProps, MenuProps, MenuItemProps, MenuSectionProps, SubmenuTriggerProps} from './Menu';
141
+ export type {ListViewProps, ListViewItemProps} from './ListView';
142
+ export type {MenuTriggerProps, MenuProps, MenuItemProps, MenuSectionProps, SubmenuTriggerProps, UnavailableMenuItemTriggerProps} from './Menu';
140
143
  export type {MeterProps} from './Meter';
141
144
  export type {NotificationBadgeProps} from './NotificationBadge';
142
145
  export type {PickerProps, PickerItemProps, PickerSectionProps} from './Picker';
@@ -0,0 +1,68 @@
1
+ /*
2
+ * Copyright 2024 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 {mergeStyles} from '../runtime';
14
+ import {style} from '../spectrum-theme';
15
+
16
+ function stripMacro(css) {
17
+ return css.replaceAll(/ -macro-static-[0-9a-zA-Z]+/gi, '').replaceAll(/ -macro-dynamic-[0-9a-zA-Z]+/gi, '');
18
+ }
19
+
20
+ describe('mergeStyles', () => {
21
+ it('should merge styles', () => {
22
+ let a = style({backgroundColor: 'red-1000', color: 'pink-100'});
23
+ let b = style({fontSize: 'body-xs', backgroundColor: 'gray-50'});
24
+ let expected = style({backgroundColor: 'gray-50', color: 'pink-100', fontSize: 'body-xs'});
25
+ let merged = mergeStyles(a, b);
26
+ expect(stripMacro(merged)).toBe(stripMacro(expected.toString()));
27
+ });
28
+
29
+ it('should merge with arbitrary values', () => {
30
+ let a = style({backgroundColor: 'red-1000', color: '[hotpink]'});
31
+ let b = style({fontSize: '[15px]', backgroundColor: 'gray-50'});
32
+ let expected = style({backgroundColor: 'gray-50', color: '[hotpink]', fontSize: '[15px]'});
33
+ let merged = mergeStyles(a, b);
34
+ expect(stripMacro(merged)).toBe(stripMacro(expected.toString()));
35
+ });
36
+
37
+ describe('when merging styles with macros', () => {
38
+ it('should not merge multiple static macro classes', () => {
39
+ let a = style({backgroundColor: 'red-1000', color: 'pink-100'});
40
+ let b = style({fontSize: 'body-xs', backgroundColor: 'gray-50'});
41
+ let merged = mergeStyles(a, b);
42
+ // expect the merged styles to include two static different macro classes within the string
43
+ let macroClasses = merged.match(/-macro-static-[0-9a-zA-Z]+/g);
44
+ expect(macroClasses).toHaveLength(2);
45
+ expect(macroClasses![0] !== macroClasses![1]);
46
+ });
47
+
48
+ it('should not merge multiple dynamic macro classes', () => {
49
+ let a = style({backgroundColor: 'red-1000', color: {default: '[hotpink]', isDisabled: 'gray-400'}});
50
+ let b = style({fontSize: '[15px]', backgroundColor: {default: 'gray-50', isDisabled: 'gray-400'}});
51
+ let merged = mergeStyles(a({isDisabled: true}), b({isDisabled: false}));
52
+ let macroClasses = merged.match(/-macro-dynamic-[0-9a-zA-Z]+/g);
53
+ expect(macroClasses).toHaveLength(2);
54
+ expect(macroClasses![0] !== macroClasses![1]);
55
+ });
56
+
57
+ it('should retain both static and dynamic macro classes', () => {
58
+ let a = style({backgroundColor: 'red-1000', color: {default: '[hotpink]', isDisabled: 'gray-400'}});
59
+ let b = style({fontSize: 'body-xs', backgroundColor: 'gray-50'});
60
+ let merged = mergeStyles(a({isDisabled: true}), b);
61
+ let staticMacroClasses = merged.match(/-macro-static-[0-9a-zA-Z]+/g);
62
+ expect(staticMacroClasses).toHaveLength(1);
63
+ let dynamicMacroClasses = merged.match(/-macro-dynamic-[0-9a-zA-Z]+/g);
64
+ expect(dynamicMacroClasses).toHaveLength(1);
65
+ expect(staticMacroClasses![0] !== dynamicMacroClasses![0]);
66
+ });
67
+ });
68
+ });