@wordpress/components 29.0.0 → 29.1.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 (469) hide show
  1. package/CHANGELOG.md +39 -1
  2. package/LICENSE.md +1 -1
  3. package/build/badge/index.js +64 -0
  4. package/build/badge/index.js.map +1 -0
  5. package/build/badge/types.js +6 -0
  6. package/build/badge/types.js.map +1 -0
  7. package/build/box-control/index.js +5 -1
  8. package/build/box-control/index.js.map +1 -1
  9. package/build/box-control/input-control.js +90 -29
  10. package/build/box-control/input-control.js.map +1 -1
  11. package/build/box-control/types.js.map +1 -1
  12. package/build/box-control/utils.js +50 -0
  13. package/build/box-control/utils.js.map +1 -1
  14. package/build/button-group/index.js +10 -0
  15. package/build/button-group/index.js.map +1 -1
  16. package/build/button-group/types.js.map +1 -1
  17. package/build/custom-select-control/index.js +3 -5
  18. package/build/custom-select-control/index.js.map +1 -1
  19. package/build/custom-select-control-v2/custom-select.js +2 -3
  20. package/build/custom-select-control-v2/custom-select.js.map +1 -1
  21. package/build/date-time/date/index.js +1 -0
  22. package/build/date-time/date/index.js.map +1 -1
  23. package/build/dimension-control/index.js +1 -0
  24. package/build/dimension-control/index.js.map +1 -1
  25. package/build/font-size-picker/styles.js +9 -9
  26. package/build/font-size-picker/styles.js.map +1 -1
  27. package/build/heading/hook.js +1 -1
  28. package/build/heading/hook.js.map +1 -1
  29. package/build/input-control/index.js +9 -0
  30. package/build/input-control/index.js.map +1 -1
  31. package/build/input-control/types.js.map +1 -1
  32. package/build/menu/checkbox-item.js +2 -0
  33. package/build/menu/checkbox-item.js.map +1 -1
  34. package/build/menu/index.js +25 -94
  35. package/build/menu/index.js.map +1 -1
  36. package/build/menu/item.js +10 -1
  37. package/build/menu/item.js.map +1 -1
  38. package/build/menu/popover.js +89 -0
  39. package/build/menu/popover.js.map +1 -0
  40. package/build/menu/radio-item.js +2 -0
  41. package/build/menu/radio-item.js.map +1 -1
  42. package/build/menu/submenu-trigger-item.js +58 -0
  43. package/build/menu/submenu-trigger-item.js.map +1 -0
  44. package/build/menu/trigger-button.js +45 -0
  45. package/build/menu/trigger-button.js.map +1 -0
  46. package/build/menu/types.js.map +1 -1
  47. package/build/navigation/back-button/index.js +1 -0
  48. package/build/navigation/back-button/index.js.map +1 -1
  49. package/build/navigation/index.js +6 -0
  50. package/build/navigation/index.js.map +1 -1
  51. package/build/navigation/item/index.js +1 -0
  52. package/build/navigation/item/index.js.map +1 -1
  53. package/build/number-control/index.js +1 -0
  54. package/build/number-control/index.js.map +1 -1
  55. package/build/palette-edit/index.js +1 -0
  56. package/build/palette-edit/index.js.map +1 -1
  57. package/build/private-apis.js +3 -1
  58. package/build/private-apis.js.map +1 -1
  59. package/build/radio-group/index.js +6 -0
  60. package/build/radio-group/index.js.map +1 -1
  61. package/build/radio-group/radio.js +2 -3
  62. package/build/radio-group/radio.js.map +1 -1
  63. package/build/range-control/styles/range-control-styles.js +28 -28
  64. package/build/range-control/styles/range-control-styles.js.map +1 -1
  65. package/build/select-control/index.js +9 -0
  66. package/build/select-control/index.js.map +1 -1
  67. package/build/select-control/types.js.map +1 -1
  68. package/build/slot-fill/context.js +4 -3
  69. package/build/slot-fill/context.js.map +1 -1
  70. package/build/slot-fill/fill.js +10 -15
  71. package/build/slot-fill/fill.js.map +1 -1
  72. package/build/slot-fill/provider.js +41 -55
  73. package/build/slot-fill/provider.js.map +1 -1
  74. package/build/slot-fill/slot.js +31 -23
  75. package/build/slot-fill/slot.js.map +1 -1
  76. package/build/slot-fill/types.js.map +1 -1
  77. package/build/tab-panel/index.js +2 -3
  78. package/build/tab-panel/index.js.map +1 -1
  79. package/build/tabs/index.js +21 -4
  80. package/build/tabs/index.js.map +1 -1
  81. package/build/tabs/types.js.map +1 -1
  82. package/build/text/hook.js +6 -6
  83. package/build/text/hook.js.map +1 -1
  84. package/build/text/styles.js +7 -7
  85. package/build/text/styles.js.map +1 -1
  86. package/build/toggle-group-control/toggle-group-control/as-radio-group.js +2 -3
  87. package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  88. package/build/tooltip/index.js +2 -3
  89. package/build/tooltip/index.js.map +1 -1
  90. package/build/tree-select/index.js +10 -2
  91. package/build/tree-select/index.js.map +1 -1
  92. package/build/tree-select/types.js.map +1 -1
  93. package/build-module/badge/index.js +57 -0
  94. package/build-module/badge/index.js.map +1 -0
  95. package/build-module/badge/types.js +2 -0
  96. package/build-module/badge/types.js.map +1 -0
  97. package/build-module/box-control/index.js +5 -1
  98. package/build-module/box-control/index.js.map +1 -1
  99. package/build-module/box-control/input-control.js +92 -31
  100. package/build-module/box-control/input-control.js.map +1 -1
  101. package/build-module/box-control/types.js.map +1 -1
  102. package/build-module/box-control/utils.js +47 -0
  103. package/build-module/box-control/utils.js.map +1 -1
  104. package/build-module/button-group/index.js +10 -0
  105. package/build-module/button-group/index.js.map +1 -1
  106. package/build-module/button-group/types.js.map +1 -1
  107. package/build-module/custom-select-control/index.js +3 -5
  108. package/build-module/custom-select-control/index.js.map +1 -1
  109. package/build-module/custom-select-control-v2/custom-select.js +1 -2
  110. package/build-module/custom-select-control-v2/custom-select.js.map +1 -1
  111. package/build-module/date-time/date/index.js +1 -0
  112. package/build-module/date-time/date/index.js.map +1 -1
  113. package/build-module/dimension-control/index.js +1 -0
  114. package/build-module/dimension-control/index.js.map +1 -1
  115. package/build-module/font-size-picker/styles.js +9 -9
  116. package/build-module/font-size-picker/styles.js.map +1 -1
  117. package/build-module/heading/hook.js +1 -1
  118. package/build-module/heading/hook.js.map +1 -1
  119. package/build-module/input-control/index.js +9 -0
  120. package/build-module/input-control/index.js.map +1 -1
  121. package/build-module/input-control/types.js.map +1 -1
  122. package/build-module/menu/checkbox-item.js +2 -0
  123. package/build-module/menu/checkbox-item.js.map +1 -1
  124. package/build-module/menu/index.js +28 -97
  125. package/build-module/menu/index.js.map +1 -1
  126. package/build-module/menu/item.js +10 -1
  127. package/build-module/menu/item.js.map +1 -1
  128. package/build-module/menu/popover.js +81 -0
  129. package/build-module/menu/popover.js.map +1 -0
  130. package/build-module/menu/radio-item.js +2 -0
  131. package/build-module/menu/radio-item.js.map +1 -1
  132. package/build-module/menu/submenu-trigger-item.js +50 -0
  133. package/build-module/menu/submenu-trigger-item.js.map +1 -0
  134. package/build-module/menu/trigger-button.js +37 -0
  135. package/build-module/menu/trigger-button.js.map +1 -0
  136. package/build-module/menu/types.js.map +1 -1
  137. package/build-module/navigation/back-button/index.js +1 -0
  138. package/build-module/navigation/back-button/index.js.map +1 -1
  139. package/build-module/navigation/index.js +6 -0
  140. package/build-module/navigation/index.js.map +1 -1
  141. package/build-module/navigation/item/index.js +1 -0
  142. package/build-module/navigation/item/index.js.map +1 -1
  143. package/build-module/number-control/index.js +1 -0
  144. package/build-module/number-control/index.js.map +1 -1
  145. package/build-module/palette-edit/index.js +1 -0
  146. package/build-module/palette-edit/index.js.map +1 -1
  147. package/build-module/private-apis.js +3 -1
  148. package/build-module/private-apis.js.map +1 -1
  149. package/build-module/radio-group/index.js +6 -0
  150. package/build-module/radio-group/index.js.map +1 -1
  151. package/build-module/radio-group/radio.js +1 -2
  152. package/build-module/radio-group/radio.js.map +1 -1
  153. package/build-module/range-control/styles/range-control-styles.js +28 -28
  154. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  155. package/build-module/select-control/index.js +9 -0
  156. package/build-module/select-control/index.js.map +1 -1
  157. package/build-module/select-control/types.js.map +1 -1
  158. package/build-module/slot-fill/context.js +5 -3
  159. package/build-module/slot-fill/context.js.map +1 -1
  160. package/build-module/slot-fill/fill.js +10 -15
  161. package/build-module/slot-fill/fill.js.map +1 -1
  162. package/build-module/slot-fill/provider.js +41 -55
  163. package/build-module/slot-fill/provider.js.map +1 -1
  164. package/build-module/slot-fill/slot.js +32 -24
  165. package/build-module/slot-fill/slot.js.map +1 -1
  166. package/build-module/slot-fill/types.js.map +1 -1
  167. package/build-module/tab-panel/index.js +1 -2
  168. package/build-module/tab-panel/index.js.map +1 -1
  169. package/build-module/tabs/index.js +21 -4
  170. package/build-module/tabs/index.js.map +1 -1
  171. package/build-module/tabs/types.js.map +1 -1
  172. package/build-module/text/hook.js +6 -6
  173. package/build-module/text/hook.js.map +1 -1
  174. package/build-module/text/styles.js +7 -7
  175. package/build-module/text/styles.js.map +1 -1
  176. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +1 -2
  177. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  178. package/build-module/tooltip/index.js +1 -2
  179. package/build-module/tooltip/index.js.map +1 -1
  180. package/build-module/tree-select/index.js +10 -2
  181. package/build-module/tree-select/index.js.map +1 -1
  182. package/build-module/tree-select/types.js.map +1 -1
  183. package/build-style/style-rtl.css +60 -13
  184. package/build-style/style.css +60 -13
  185. package/build-types/alignment-matrix-control/stories/index.story.d.ts +1 -1
  186. package/build-types/alignment-matrix-control/stories/index.story.d.ts.map +1 -1
  187. package/build-types/angle-picker-control/stories/index.story.d.ts +1 -1
  188. package/build-types/animate/stories/index.story.d.ts +7 -7
  189. package/build-types/animate/stories/index.story.d.ts.map +1 -1
  190. package/build-types/badge/index.d.ts +8 -0
  191. package/build-types/badge/index.d.ts.map +1 -0
  192. package/build-types/badge/stories/index.story.d.ts +17 -0
  193. package/build-types/badge/stories/index.story.d.ts.map +1 -0
  194. package/build-types/badge/test/index.d.ts +2 -0
  195. package/build-types/badge/test/index.d.ts.map +1 -0
  196. package/build-types/badge/types.d.ts +13 -0
  197. package/build-types/badge/types.d.ts.map +1 -0
  198. package/build-types/base-control/stories/index.story.d.ts +1 -1
  199. package/build-types/border-box-control/stories/index.story.d.ts +1 -1
  200. package/build-types/border-control/stories/index.story.d.ts +5 -5
  201. package/build-types/box-control/index.d.ts +1 -1
  202. package/build-types/box-control/index.d.ts.map +1 -1
  203. package/build-types/box-control/input-control.d.ts +1 -1
  204. package/build-types/box-control/input-control.d.ts.map +1 -1
  205. package/build-types/box-control/stories/index.story.d.ts +356 -11
  206. package/build-types/box-control/stories/index.story.d.ts.map +1 -1
  207. package/build-types/box-control/styles/box-control-styles.d.ts +2 -2
  208. package/build-types/box-control/types.d.ts +17 -0
  209. package/build-types/box-control/types.d.ts.map +1 -1
  210. package/build-types/box-control/utils.d.ts +27 -1
  211. package/build-types/box-control/utils.d.ts.map +1 -1
  212. package/build-types/button/stories/e2e/index.story.d.ts +1 -1
  213. package/build-types/button/stories/e2e/index.story.d.ts.map +1 -1
  214. package/build-types/button/stories/index.story.d.ts +7 -7
  215. package/build-types/button/stories/index.story.d.ts.map +1 -1
  216. package/build-types/button-group/index.d.ts +3 -1
  217. package/build-types/button-group/index.d.ts.map +1 -1
  218. package/build-types/button-group/stories/index.story.d.ts +6 -0
  219. package/build-types/button-group/stories/index.story.d.ts.map +1 -1
  220. package/build-types/button-group/types.d.ts +7 -0
  221. package/build-types/button-group/types.d.ts.map +1 -1
  222. package/build-types/circular-option-picker/stories/index.story.d.ts +5 -5
  223. package/build-types/circular-option-picker/stories/index.story.d.ts.map +1 -1
  224. package/build-types/color-palette/stories/index.story.d.ts +3 -3
  225. package/build-types/color-palette/stories/index.story.d.ts.map +1 -1
  226. package/build-types/color-picker/styles.d.ts +2 -2
  227. package/build-types/color-picker/styles.d.ts.map +1 -1
  228. package/build-types/combobox-control/stories/index.story.d.ts +4 -4
  229. package/build-types/confirm-dialog/stories/index.story.d.ts +2 -2
  230. package/build-types/confirm-dialog/stories/index.story.d.ts.map +1 -1
  231. package/build-types/custom-gradient-picker/stories/index.story.d.ts +1 -1
  232. package/build-types/custom-gradient-picker/stories/index.story.d.ts.map +1 -1
  233. package/build-types/custom-select-control/stories/index.story.d.ts +3 -3
  234. package/build-types/custom-select-control/stories/index.story.d.ts.map +1 -1
  235. package/build-types/custom-select-control-v2/custom-select.d.ts.map +1 -1
  236. package/build-types/custom-select-control-v2/stories/index.story.d.ts +3 -3
  237. package/build-types/custom-select-control-v2/stories/index.story.d.ts.map +1 -1
  238. package/build-types/date-time/date/index.d.ts.map +1 -1
  239. package/build-types/date-time/stories/time.story.d.ts +1 -1
  240. package/build-types/date-time/stories/time.story.d.ts.map +1 -1
  241. package/build-types/date-time/time/styles.d.ts +4 -4
  242. package/build-types/dimension-control/index.d.ts.map +1 -1
  243. package/build-types/dimension-control/stories/index.story.d.ts +1 -1
  244. package/build-types/disabled/stories/index.story.d.ts.map +1 -1
  245. package/build-types/drop-zone/stories/index.story.d.ts +1 -1
  246. package/build-types/drop-zone/stories/index.story.d.ts.map +1 -1
  247. package/build-types/duotone-picker/stories/duotone-picker.story.d.ts +1 -1
  248. package/build-types/duotone-picker/stories/duotone-picker.story.d.ts.map +1 -1
  249. package/build-types/duotone-picker/stories/duotone-swatch.story.d.ts +3 -3
  250. package/build-types/duotone-picker/stories/duotone-swatch.story.d.ts.map +1 -1
  251. package/build-types/focal-point-picker/stories/index.story.d.ts +4 -4
  252. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +1 -1
  253. package/build-types/font-size-picker/styles.d.ts.map +1 -1
  254. package/build-types/form-file-upload/stories/index.story.d.ts +5 -5
  255. package/build-types/form-file-upload/stories/index.story.d.ts.map +1 -1
  256. package/build-types/gradient-picker/stories/index.story.d.ts +3 -3
  257. package/build-types/gradient-picker/stories/index.story.d.ts.map +1 -1
  258. package/build-types/guide/stories/index.story.d.ts +1 -1
  259. package/build-types/guide/stories/index.story.d.ts.map +1 -1
  260. package/build-types/icon/stories/index.story.d.ts +4 -4
  261. package/build-types/icon/stories/index.story.d.ts.map +1 -1
  262. package/build-types/input-control/index.d.ts +1 -0
  263. package/build-types/input-control/index.d.ts.map +1 -1
  264. package/build-types/input-control/stories/index.story.d.ts +7 -7
  265. package/build-types/input-control/stories/index.story.d.ts.map +1 -1
  266. package/build-types/input-control/types.d.ts +11 -2
  267. package/build-types/input-control/types.d.ts.map +1 -1
  268. package/build-types/keyboard-shortcuts/stories/index.story.d.ts +1 -1
  269. package/build-types/keyboard-shortcuts/stories/index.story.d.ts.map +1 -1
  270. package/build-types/menu/checkbox-item.d.ts.map +1 -1
  271. package/build-types/menu/index.d.ts +10 -1
  272. package/build-types/menu/index.d.ts.map +1 -1
  273. package/build-types/menu/item.d.ts.map +1 -1
  274. package/build-types/menu/popover.d.ts +3 -0
  275. package/build-types/menu/popover.d.ts.map +1 -0
  276. package/build-types/menu/radio-item.d.ts.map +1 -1
  277. package/build-types/menu/stories/index.story.d.ts +9 -9
  278. package/build-types/menu/stories/index.story.d.ts.map +1 -1
  279. package/build-types/menu/submenu-trigger-item.d.ts +3 -0
  280. package/build-types/menu/submenu-trigger-item.d.ts.map +1 -0
  281. package/build-types/menu/trigger-button.d.ts +3 -0
  282. package/build-types/menu/trigger-button.d.ts.map +1 -0
  283. package/build-types/menu/types.d.ts +208 -57
  284. package/build-types/menu/types.d.ts.map +1 -1
  285. package/build-types/menu-group/stories/index.story.d.ts +1 -1
  286. package/build-types/menu-group/stories/index.story.d.ts.map +1 -1
  287. package/build-types/menu-item/stories/index.story.d.ts +4 -4
  288. package/build-types/modal/stories/index.story.d.ts.map +1 -1
  289. package/build-types/navigation/back-button/index.d.ts.map +1 -1
  290. package/build-types/navigation/index.d.ts.map +1 -1
  291. package/build-types/navigation/item/index.d.ts.map +1 -1
  292. package/build-types/navigation/stories/index.story.d.ts +6 -6
  293. package/build-types/navigation/stories/index.story.d.ts.map +1 -1
  294. package/build-types/notice/stories/index.story.d.ts +4 -4
  295. package/build-types/notice/stories/index.story.d.ts.map +1 -1
  296. package/build-types/number-control/index.d.ts +1 -1
  297. package/build-types/number-control/index.d.ts.map +1 -1
  298. package/build-types/number-control/stories/index.story.d.ts +2 -2
  299. package/build-types/palette-edit/index.d.ts.map +1 -1
  300. package/build-types/palette-edit/stories/index.story.d.ts +2 -2
  301. package/build-types/palette-edit/stories/index.story.d.ts.map +1 -1
  302. package/build-types/private-apis.d.ts.map +1 -1
  303. package/build-types/progress-bar/stories/index.story.d.ts +1 -1
  304. package/build-types/progress-bar/stories/index.story.d.ts.map +1 -1
  305. package/build-types/query-controls/stories/index.story.d.ts +1 -1
  306. package/build-types/query-controls/stories/index.story.d.ts.map +1 -1
  307. package/build-types/radio-group/index.d.ts.map +1 -1
  308. package/build-types/radio-group/radio.d.ts.map +1 -1
  309. package/build-types/range-control/index.d.ts +1 -1
  310. package/build-types/range-control/styles/range-control-styles.d.ts +1 -1
  311. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  312. package/build-types/resizable-box/stories/index.story.d.ts +2 -2
  313. package/build-types/responsive-wrapper/stories/index.story.d.ts +1 -1
  314. package/build-types/responsive-wrapper/stories/index.story.d.ts.map +1 -1
  315. package/build-types/sandbox/stories/index.story.d.ts +1 -1
  316. package/build-types/sandbox/stories/index.story.d.ts.map +1 -1
  317. package/build-types/search-control/stories/index.story.d.ts +1 -1
  318. package/build-types/search-control/stories/index.story.d.ts.map +1 -1
  319. package/build-types/select-control/index.d.ts +1 -0
  320. package/build-types/select-control/index.d.ts.map +1 -1
  321. package/build-types/select-control/stories/index.story.d.ts +5 -5
  322. package/build-types/select-control/stories/index.story.d.ts.map +1 -1
  323. package/build-types/select-control/types.d.ts +1 -1
  324. package/build-types/select-control/types.d.ts.map +1 -1
  325. package/build-types/shortcut/stories/index.story.d.ts +1 -1
  326. package/build-types/shortcut/stories/index.story.d.ts.map +1 -1
  327. package/build-types/slot-fill/context.d.ts.map +1 -1
  328. package/build-types/slot-fill/fill.d.ts.map +1 -1
  329. package/build-types/slot-fill/provider.d.ts.map +1 -1
  330. package/build-types/slot-fill/slot.d.ts.map +1 -1
  331. package/build-types/slot-fill/types.d.ts +13 -11
  332. package/build-types/slot-fill/types.d.ts.map +1 -1
  333. package/build-types/tab-panel/index.d.ts.map +1 -1
  334. package/build-types/tab-panel/stories/index.story.d.ts +4 -4
  335. package/build-types/tab-panel/stories/index.story.d.ts.map +1 -1
  336. package/build-types/tabs/index.d.ts +21 -4
  337. package/build-types/tabs/index.d.ts.map +1 -1
  338. package/build-types/tabs/stories/index.story.d.ts +10 -10
  339. package/build-types/tabs/stories/index.story.d.ts.map +1 -1
  340. package/build-types/tabs/types.d.ts +13 -13
  341. package/build-types/tabs/types.d.ts.map +1 -1
  342. package/build-types/text/stories/index.story.d.ts +3 -3
  343. package/build-types/theme/stories/index.story.d.ts +1 -1
  344. package/build-types/toggle-control/stories/index.story.d.ts +2 -2
  345. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
  346. package/build-types/toolbar/stories/index.story.d.ts +3 -3
  347. package/build-types/toolbar/stories/index.story.d.ts.map +1 -1
  348. package/build-types/tooltip/index.d.ts.map +1 -1
  349. package/build-types/tooltip/stories/index.story.d.ts +1 -1
  350. package/build-types/tooltip/stories/index.story.d.ts.map +1 -1
  351. package/build-types/tree-grid/stories/index.story.d.ts +1 -1
  352. package/build-types/tree-grid/stories/index.story.d.ts.map +1 -1
  353. package/build-types/tree-select/index.d.ts +3 -2
  354. package/build-types/tree-select/index.d.ts.map +1 -1
  355. package/build-types/tree-select/stories/index.story.d.ts +1 -1
  356. package/build-types/tree-select/stories/index.story.d.ts.map +1 -1
  357. package/build-types/tree-select/types.d.ts +5 -1
  358. package/build-types/tree-select/types.d.ts.map +1 -1
  359. package/build-types/unit-control/index.d.ts +1 -1
  360. package/build-types/unit-control/styles/unit-control-styles.d.ts +1 -1
  361. package/build-types/v-stack/stories/index.story.d.ts +1 -1
  362. package/package.json +19 -19
  363. package/src/alignment-matrix-control/README.md +16 -15
  364. package/src/angle-picker-control/README.md +10 -9
  365. package/src/badge/README.md +24 -0
  366. package/src/badge/docs-manifest.json +5 -0
  367. package/src/badge/index.tsx +67 -0
  368. package/src/badge/stories/index.story.tsx +54 -0
  369. package/src/badge/styles.scss +49 -0
  370. package/src/badge/test/index.tsx +45 -0
  371. package/src/badge/types.ts +12 -0
  372. package/src/base-control/README.md +22 -21
  373. package/src/box-control/README.md +41 -24
  374. package/src/box-control/index.tsx +4 -0
  375. package/src/box-control/input-control.tsx +142 -40
  376. package/src/box-control/stories/index.story.tsx +12 -0
  377. package/src/box-control/types.ts +18 -0
  378. package/src/box-control/utils.ts +60 -0
  379. package/src/button/README.md +51 -50
  380. package/src/button/style.scss +9 -10
  381. package/src/button/test/index.tsx +9 -2
  382. package/src/button-group/README.md +4 -0
  383. package/src/button-group/index.tsx +11 -1
  384. package/src/button-group/stories/index.story.tsx +8 -1
  385. package/src/button-group/types.ts +7 -0
  386. package/src/custom-select-control/index.tsx +3 -3
  387. package/src/custom-select-control-v2/custom-select.tsx +1 -2
  388. package/src/custom-select-control-v2/stories/index.story.tsx +4 -0
  389. package/src/date-time/date/index.tsx +1 -0
  390. package/src/dimension-control/index.tsx +1 -0
  391. package/src/dimension-control/test/__snapshots__/index.test.js.snap +4 -4
  392. package/src/disabled/stories/index.story.tsx +1 -0
  393. package/src/drop-zone/stories/index.story.tsx +7 -1
  394. package/src/font-size-picker/styles.ts +1 -0
  395. package/src/form-file-upload/README.md +22 -21
  396. package/src/gradient-picker/README.md +36 -35
  397. package/src/heading/hook.ts +1 -1
  398. package/src/heading/test/__snapshots__/index.tsx.snap +4 -4
  399. package/src/icon/README.md +9 -8
  400. package/src/input-control/README.md +1 -0
  401. package/src/input-control/index.tsx +10 -0
  402. package/src/input-control/stories/index.story.tsx +6 -1
  403. package/src/input-control/test/index.js +9 -3
  404. package/src/input-control/types.ts +11 -2
  405. package/src/menu/checkbox-item.tsx +2 -1
  406. package/src/menu/index.tsx +61 -165
  407. package/src/menu/item.tsx +17 -2
  408. package/src/menu/popover.tsx +103 -0
  409. package/src/menu/radio-item.tsx +2 -1
  410. package/src/menu/stories/index.story.tsx +533 -381
  411. package/src/menu/submenu-trigger-item.tsx +61 -0
  412. package/src/menu/test/index.tsx +266 -182
  413. package/src/menu/trigger-button.tsx +46 -0
  414. package/src/menu/types.ts +210 -63
  415. package/src/modal/stories/index.story.tsx +4 -1
  416. package/src/navigation/back-button/index.tsx +1 -0
  417. package/src/navigation/index.tsx +7 -0
  418. package/src/navigation/item/index.tsx +2 -0
  419. package/src/navigation/test/index.tsx +4 -0
  420. package/src/navigator/test/index.tsx +4 -0
  421. package/src/number-control/index.tsx +1 -0
  422. package/src/palette-edit/index.tsx +1 -0
  423. package/src/panel/stories/index.story.tsx +3 -3
  424. package/src/private-apis.ts +2 -0
  425. package/src/radio-group/index.tsx +12 -1
  426. package/src/radio-group/radio.tsx +1 -2
  427. package/src/range-control/styles/range-control-styles.ts +8 -4
  428. package/src/select-control/README.md +3 -0
  429. package/src/select-control/index.tsx +10 -0
  430. package/src/select-control/stories/index.story.tsx +2 -0
  431. package/src/select-control/test/select-control.tsx +7 -1
  432. package/src/select-control/types.ts +1 -0
  433. package/src/slot-fill/context.ts +5 -3
  434. package/src/slot-fill/fill.ts +10 -15
  435. package/src/slot-fill/provider.tsx +63 -64
  436. package/src/slot-fill/slot.tsx +40 -27
  437. package/src/slot-fill/types.ts +23 -11
  438. package/src/style.scss +1 -0
  439. package/src/tab-panel/index.tsx +1 -2
  440. package/src/tab-panel/stories/index.story.tsx +4 -0
  441. package/src/tabs/README.md +151 -187
  442. package/src/tabs/docs-manifest.json +22 -0
  443. package/src/tabs/index.tsx +21 -4
  444. package/src/tabs/stories/best-practices.mdx +99 -0
  445. package/src/tabs/stories/index.story.tsx +5 -0
  446. package/src/tabs/types.ts +13 -14
  447. package/src/text/hook.ts +2 -2
  448. package/src/text/styles.ts +1 -1
  449. package/src/text/test/__snapshots__/index.tsx.snap +3 -3
  450. package/src/text/test/index.tsx +1 -1
  451. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +2 -2
  452. package/src/toggle-group-control/test/index.tsx +7 -1
  453. package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +1 -2
  454. package/src/tooltip/index.tsx +1 -2
  455. package/src/tree-grid/stories/index.story.tsx +2 -0
  456. package/src/tree-select/README.md +144 -28
  457. package/src/tree-select/docs-manifest.json +5 -0
  458. package/src/tree-select/index.tsx +11 -2
  459. package/src/tree-select/stories/index.story.tsx +1 -0
  460. package/src/tree-select/types.ts +8 -1
  461. package/tsconfig.json +0 -3
  462. package/tsconfig.tsbuildinfo +1 -1
  463. package/build/slot-fill/use-slot.js +0 -32
  464. package/build/slot-fill/use-slot.js.map +0 -1
  465. package/build-module/slot-fill/use-slot.js +0 -24
  466. package/build-module/slot-fill/use-slot.js.map +0 -1
  467. package/build-types/slot-fill/use-slot.d.ts +0 -10
  468. package/build-types/slot-fill/use-slot.d.ts.map +0 -1
  469. package/src/slot-fill/use-slot.ts +0 -27
@@ -0,0 +1,61 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import * as Ariakit from '@ariakit/react';
5
+
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { forwardRef, useContext } from '@wordpress/element';
10
+ import { chevronRightSmall } from '@wordpress/icons';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import type { WordPressComponentProps } from '../context';
16
+ import type { MenuItemProps } from './types';
17
+ import { MenuContext } from './context';
18
+ import { MenuItem } from './item';
19
+ import * as Styled from './styles';
20
+
21
+ export const MenuSubmenuTriggerItem = forwardRef<
22
+ HTMLDivElement,
23
+ WordPressComponentProps< MenuItemProps, 'div', false >
24
+ >( function MenuSubmenuTriggerItem( { suffix, ...otherProps }, ref ) {
25
+ const menuContext = useContext( MenuContext );
26
+
27
+ if ( ! menuContext?.store.parent ) {
28
+ throw new Error(
29
+ 'Menu.SubmenuTriggerItem can only be rendered inside a nested Menu component'
30
+ );
31
+ }
32
+
33
+ return (
34
+ <Ariakit.MenuButton
35
+ ref={ ref }
36
+ accessibleWhenDisabled
37
+ store={ menuContext.store }
38
+ render={
39
+ <MenuItem
40
+ { ...otherProps }
41
+ // The menu item needs to register and be part of the parent menu.
42
+ // Without specifying the store explicitly, the `MenuItem` component
43
+ // would otherwise read the store via context and pick up the one from
44
+ // the sub-menu `Menu` component.
45
+ store={ menuContext.store.parent }
46
+ suffix={
47
+ <>
48
+ { suffix }
49
+ <Styled.SubmenuChevronIcon
50
+ aria-hidden="true"
51
+ icon={ chevronRightSmall }
52
+ size={ 24 }
53
+ preserveAspectRatio="xMidYMid slice"
54
+ />
55
+ </>
56
+ }
57
+ />
58
+ }
59
+ />
60
+ );
61
+ } );
@@ -18,17 +18,28 @@ const delay = ( delayInMs: number ) => {
18
18
  return new Promise( ( resolve ) => setTimeout( resolve, delayInMs ) );
19
19
  };
20
20
 
21
+ // Open dropdown => open menu
22
+ // Submenu trigger item => open submenu
23
+
21
24
  describe( 'Menu', () => {
22
25
  // See https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/
23
26
  it( 'should follow the WAI-ARIA spec', async () => {
24
27
  render(
25
- <Menu trigger={ <button>Open dropdown</button> }>
26
- <Menu.Item>Menu item</Menu.Item>
27
- <Menu.Separator />
28
- <Menu trigger={ <Menu.Item>Submenu trigger item</Menu.Item> }>
29
- <Menu.Item>Submenu item 1</Menu.Item>
30
- <Menu.Item>Submenu item 2</Menu.Item>
31
- </Menu>
28
+ <Menu>
29
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
30
+ <Menu.Popover>
31
+ <Menu.Item>Menu item</Menu.Item>
32
+ <Menu.Separator />
33
+ <Menu>
34
+ <Menu.SubmenuTriggerItem>
35
+ Submenu trigger item
36
+ </Menu.SubmenuTriggerItem>
37
+ <Menu.Popover>
38
+ <Menu.Item>Submenu item 1</Menu.Item>
39
+ <Menu.Item>Submenu item 2</Menu.Item>
40
+ </Menu.Popover>
41
+ </Menu>
42
+ </Menu.Popover>
32
43
  </Menu>
33
44
  );
34
45
 
@@ -84,8 +95,11 @@ describe( 'Menu', () => {
84
95
  describe( 'pointer and keyboard interactions', () => {
85
96
  it( 'should open and focus the menu when clicking the trigger', async () => {
86
97
  render(
87
- <Menu trigger={ <button>Open dropdown</button> }>
88
- <Menu.Item>Menu item</Menu.Item>
98
+ <Menu>
99
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
100
+ <Menu.Popover>
101
+ <Menu.Item>Menu item</Menu.Item>
102
+ </Menu.Popover>
89
103
  </Menu>
90
104
  );
91
105
 
@@ -105,10 +119,13 @@ describe( 'Menu', () => {
105
119
 
106
120
  it( 'should open and focus the first item when pressing the arrow down key on the trigger', async () => {
107
121
  render(
108
- <Menu trigger={ <button>Open dropdown</button> }>
109
- <Menu.Item disabled>First item</Menu.Item>
110
- <Menu.Item>Second item</Menu.Item>
111
- <Menu.Item>Third item</Menu.Item>
122
+ <Menu>
123
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
124
+ <Menu.Popover>
125
+ <Menu.Item disabled>First item</Menu.Item>
126
+ <Menu.Item>Second item</Menu.Item>
127
+ <Menu.Item>Third item</Menu.Item>
128
+ </Menu.Popover>
112
129
  </Menu>
113
130
  );
114
131
 
@@ -135,10 +152,13 @@ describe( 'Menu', () => {
135
152
 
136
153
  it( 'should open and focus the first item when pressing the space key on the trigger', async () => {
137
154
  render(
138
- <Menu trigger={ <button>Open dropdown</button> }>
139
- <Menu.Item disabled>First item</Menu.Item>
140
- <Menu.Item>Second item</Menu.Item>
141
- <Menu.Item>Third item</Menu.Item>
155
+ <Menu>
156
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
157
+ <Menu.Popover>
158
+ <Menu.Item disabled>First item</Menu.Item>
159
+ <Menu.Item>Second item</Menu.Item>
160
+ <Menu.Item>Third item</Menu.Item>
161
+ </Menu.Popover>
142
162
  </Menu>
143
163
  );
144
164
 
@@ -165,8 +185,11 @@ describe( 'Menu', () => {
165
185
 
166
186
  it( 'should close when pressing the escape key', async () => {
167
187
  render(
168
- <Menu trigger={ <button>Open dropdown</button> }>
169
- <Menu.Item>Menu item</Menu.Item>
188
+ <Menu>
189
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
190
+ <Menu.Popover>
191
+ <Menu.Item>Menu item</Menu.Item>
192
+ </Menu.Popover>
170
193
  </Menu>
171
194
  );
172
195
 
@@ -194,8 +217,11 @@ describe( 'Menu', () => {
194
217
 
195
218
  it( 'should close when clicking outside of the content', async () => {
196
219
  render(
197
- <Menu defaultOpen trigger={ <button>Open dropdown</button> }>
198
- <Menu.Item>Menu item</Menu.Item>
220
+ <Menu defaultOpen>
221
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
222
+ <Menu.Popover>
223
+ <Menu.Item>Menu item</Menu.Item>
224
+ </Menu.Popover>
199
225
  </Menu>
200
226
  );
201
227
 
@@ -209,8 +235,11 @@ describe( 'Menu', () => {
209
235
 
210
236
  it( 'should close when clicking on a menu item', async () => {
211
237
  render(
212
- <Menu defaultOpen trigger={ <button>Open dropdown</button> }>
213
- <Menu.Item>Menu item</Menu.Item>
238
+ <Menu defaultOpen>
239
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
240
+ <Menu.Popover>
241
+ <Menu.Item>Menu item</Menu.Item>
242
+ </Menu.Popover>
214
243
  </Menu>
215
244
  );
216
245
 
@@ -224,8 +253,11 @@ describe( 'Menu', () => {
224
253
 
225
254
  it( 'should not close when clicking on a menu item when the `hideOnClick` prop is set to `false`', async () => {
226
255
  render(
227
- <Menu defaultOpen trigger={ <button>Open dropdown</button> }>
228
- <Menu.Item hideOnClick={ false }>Menu item</Menu.Item>
256
+ <Menu defaultOpen>
257
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
258
+ <Menu.Popover>
259
+ <Menu.Item hideOnClick={ false }>Menu item</Menu.Item>
260
+ </Menu.Popover>
229
261
  </Menu>
230
262
  );
231
263
 
@@ -239,8 +271,11 @@ describe( 'Menu', () => {
239
271
 
240
272
  it( 'should not close when clicking on a disabled menu item', async () => {
241
273
  render(
242
- <Menu defaultOpen trigger={ <button>Open dropdown</button> }>
243
- <Menu.Item disabled>Menu item</Menu.Item>
274
+ <Menu defaultOpen>
275
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
276
+ <Menu.Popover>
277
+ <Menu.Item disabled>Menu item</Menu.Item>
278
+ </Menu.Popover>
244
279
  </Menu>
245
280
  );
246
281
 
@@ -254,16 +289,22 @@ describe( 'Menu', () => {
254
289
 
255
290
  it( 'should reveal submenu content when hovering over the submenu trigger', async () => {
256
291
  render(
257
- <Menu defaultOpen trigger={ <button>Open dropdown</button> }>
258
- <Menu.Item>Menu item 1</Menu.Item>
259
- <Menu.Item>Menu item 2</Menu.Item>
260
- <Menu
261
- trigger={ <Menu.Item>Submenu trigger item</Menu.Item> }
262
- >
263
- <Menu.Item>Submenu item 1</Menu.Item>
264
- <Menu.Item>Submenu item 2</Menu.Item>
265
- </Menu>
266
- <Menu.Item>Menu item 3</Menu.Item>
292
+ <Menu defaultOpen>
293
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
294
+ <Menu.Popover>
295
+ <Menu.Item>Menu item 1</Menu.Item>
296
+ <Menu.Item>Menu item 2</Menu.Item>
297
+ <Menu>
298
+ <Menu.SubmenuTriggerItem>
299
+ Submenu trigger item
300
+ </Menu.SubmenuTriggerItem>
301
+ <Menu.Popover>
302
+ <Menu.Item>Submenu item 1</Menu.Item>
303
+ <Menu.Item>Submenu item 2</Menu.Item>
304
+ </Menu.Popover>
305
+ </Menu>
306
+ <Menu.Item>Menu item 3</Menu.Item>
307
+ </Menu.Popover>
267
308
  </Menu>
268
309
  );
269
310
 
@@ -288,16 +329,22 @@ describe( 'Menu', () => {
288
329
 
289
330
  it( 'should navigate menu items and subitems using the arrow, spacebar and enter keys', async () => {
290
331
  render(
291
- <Menu defaultOpen trigger={ <button>Open dropdown</button> }>
292
- <Menu.Item>Menu item 1</Menu.Item>
293
- <Menu.Item>Menu item 2</Menu.Item>
294
- <Menu
295
- trigger={ <Menu.Item>Submenu trigger item</Menu.Item> }
296
- >
297
- <Menu.Item>Submenu item 1</Menu.Item>
298
- <Menu.Item>Submenu item 2</Menu.Item>
299
- </Menu>
300
- <Menu.Item>Menu item 3</Menu.Item>
332
+ <Menu defaultOpen>
333
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
334
+ <Menu.Popover>
335
+ <Menu.Item>Menu item 1</Menu.Item>
336
+ <Menu.Item>Menu item 2</Menu.Item>
337
+ <Menu>
338
+ <Menu.SubmenuTriggerItem>
339
+ Submenu trigger item
340
+ </Menu.SubmenuTriggerItem>
341
+ <Menu.Popover>
342
+ <Menu.Item>Submenu item 1</Menu.Item>
343
+ <Menu.Item>Submenu item 2</Menu.Item>
344
+ </Menu.Popover>
345
+ </Menu>
346
+ <Menu.Item>Menu item 3</Menu.Item>
347
+ </Menu.Popover>
301
348
  </Menu>
302
349
  );
303
350
 
@@ -407,25 +454,28 @@ describe( 'Menu', () => {
407
454
  setRadioValue( e.target.value );
408
455
  };
409
456
  return (
410
- <Menu trigger={ <button>Open dropdown</button> }>
411
- <Menu.Group>
412
- <Menu.RadioItem
413
- name="radio-test"
414
- value="radio-one"
415
- checked={ radioValue === 'radio-one' }
416
- onChange={ onRadioChange }
417
- >
418
- Radio item one
419
- </Menu.RadioItem>
420
- <Menu.RadioItem
421
- name="radio-test"
422
- value="radio-two"
423
- checked={ radioValue === 'radio-two' }
424
- onChange={ onRadioChange }
425
- >
426
- Radio item two
427
- </Menu.RadioItem>
428
- </Menu.Group>
457
+ <Menu>
458
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
459
+ <Menu.Popover>
460
+ <Menu.Group>
461
+ <Menu.RadioItem
462
+ name="radio-test"
463
+ value="radio-one"
464
+ checked={ radioValue === 'radio-one' }
465
+ onChange={ onRadioChange }
466
+ >
467
+ Radio item one
468
+ </Menu.RadioItem>
469
+ <Menu.RadioItem
470
+ name="radio-test"
471
+ value="radio-two"
472
+ checked={ radioValue === 'radio-two' }
473
+ onChange={ onRadioChange }
474
+ >
475
+ Radio item two
476
+ </Menu.RadioItem>
477
+ </Menu.Group>
478
+ </Menu.Popover>
429
479
  </Menu>
430
480
  );
431
481
  };
@@ -484,28 +534,31 @@ describe( 'Menu', () => {
484
534
  it( 'should check radio items and keep the menu open when clicking (uncontrolled)', async () => {
485
535
  const onRadioValueChangeSpy = jest.fn();
486
536
  render(
487
- <Menu trigger={ <button>Open dropdown</button> }>
488
- <Menu.Group>
489
- <Menu.RadioItem
490
- name="radio-test"
491
- value="radio-one"
492
- onChange={ ( e ) =>
493
- onRadioValueChangeSpy( e.target.value )
494
- }
495
- >
496
- Radio item one
497
- </Menu.RadioItem>
498
- <Menu.RadioItem
499
- name="radio-test"
500
- value="radio-two"
501
- defaultChecked
502
- onChange={ ( e ) =>
503
- onRadioValueChangeSpy( e.target.value )
504
- }
505
- >
506
- Radio item two
507
- </Menu.RadioItem>
508
- </Menu.Group>
537
+ <Menu>
538
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
539
+ <Menu.Popover>
540
+ <Menu.Group>
541
+ <Menu.RadioItem
542
+ name="radio-test"
543
+ value="radio-one"
544
+ onChange={ ( e ) =>
545
+ onRadioValueChangeSpy( e.target.value )
546
+ }
547
+ >
548
+ Radio item one
549
+ </Menu.RadioItem>
550
+ <Menu.RadioItem
551
+ name="radio-test"
552
+ value="radio-two"
553
+ defaultChecked
554
+ onChange={ ( e ) =>
555
+ onRadioValueChangeSpy( e.target.value )
556
+ }
557
+ >
558
+ Radio item two
559
+ </Menu.RadioItem>
560
+ </Menu.Group>
561
+ </Menu.Popover>
509
562
  </Menu>
510
563
  );
511
564
 
@@ -568,38 +621,41 @@ describe( 'Menu', () => {
568
621
  useState< boolean >();
569
622
 
570
623
  return (
571
- <Menu trigger={ <button>Open dropdown</button> }>
572
- <Menu.CheckboxItem
573
- name="item-one"
574
- value="item-one-value"
575
- checked={ itemOneChecked }
576
- onChange={ ( e ) => {
577
- onCheckboxValueChangeSpy(
578
- e.target.name,
579
- e.target.value,
580
- e.target.checked
581
- );
582
- setItemOneChecked( e.target.checked );
583
- } }
584
- >
585
- Checkbox item one
586
- </Menu.CheckboxItem>
587
-
588
- <Menu.CheckboxItem
589
- name="item-two"
590
- value="item-two-value"
591
- checked={ itemTwoChecked }
592
- onChange={ ( e ) => {
593
- onCheckboxValueChangeSpy(
594
- e.target.name,
595
- e.target.value,
596
- e.target.checked
597
- );
598
- setItemTwoChecked( e.target.checked );
599
- } }
600
- >
601
- Checkbox item two
602
- </Menu.CheckboxItem>
624
+ <Menu>
625
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
626
+ <Menu.Popover>
627
+ <Menu.CheckboxItem
628
+ name="item-one"
629
+ value="item-one-value"
630
+ checked={ itemOneChecked }
631
+ onChange={ ( e ) => {
632
+ onCheckboxValueChangeSpy(
633
+ e.target.name,
634
+ e.target.value,
635
+ e.target.checked
636
+ );
637
+ setItemOneChecked( e.target.checked );
638
+ } }
639
+ >
640
+ Checkbox item one
641
+ </Menu.CheckboxItem>
642
+
643
+ <Menu.CheckboxItem
644
+ name="item-two"
645
+ value="item-two-value"
646
+ checked={ itemTwoChecked }
647
+ onChange={ ( e ) => {
648
+ onCheckboxValueChangeSpy(
649
+ e.target.name,
650
+ e.target.value,
651
+ e.target.checked
652
+ );
653
+ setItemTwoChecked( e.target.checked );
654
+ } }
655
+ >
656
+ Checkbox item two
657
+ </Menu.CheckboxItem>
658
+ </Menu.Popover>
603
659
  </Menu>
604
660
  );
605
661
  };
@@ -691,35 +747,38 @@ describe( 'Menu', () => {
691
747
  const onCheckboxValueChangeSpy = jest.fn();
692
748
 
693
749
  render(
694
- <Menu trigger={ <button>Open dropdown</button> }>
695
- <Menu.CheckboxItem
696
- name="item-one"
697
- value="item-one-value"
698
- onChange={ ( e ) => {
699
- onCheckboxValueChangeSpy(
700
- e.target.name,
701
- e.target.value,
702
- e.target.checked
703
- );
704
- } }
705
- >
706
- Checkbox item one
707
- </Menu.CheckboxItem>
708
-
709
- <Menu.CheckboxItem
710
- name="item-two"
711
- value="item-two-value"
712
- defaultChecked
713
- onChange={ ( e ) => {
714
- onCheckboxValueChangeSpy(
715
- e.target.name,
716
- e.target.value,
717
- e.target.checked
718
- );
719
- } }
720
- >
721
- Checkbox item two
722
- </Menu.CheckboxItem>
750
+ <Menu>
751
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
752
+ <Menu.Popover>
753
+ <Menu.CheckboxItem
754
+ name="item-one"
755
+ value="item-one-value"
756
+ onChange={ ( e ) => {
757
+ onCheckboxValueChangeSpy(
758
+ e.target.name,
759
+ e.target.value,
760
+ e.target.checked
761
+ );
762
+ } }
763
+ >
764
+ Checkbox item one
765
+ </Menu.CheckboxItem>
766
+
767
+ <Menu.CheckboxItem
768
+ name="item-two"
769
+ value="item-two-value"
770
+ defaultChecked
771
+ onChange={ ( e ) => {
772
+ onCheckboxValueChangeSpy(
773
+ e.target.name,
774
+ e.target.value,
775
+ e.target.checked
776
+ );
777
+ } }
778
+ >
779
+ Checkbox item two
780
+ </Menu.CheckboxItem>
781
+ </Menu.Popover>
723
782
  </Menu>
724
783
  );
725
784
 
@@ -809,8 +868,11 @@ describe( 'Menu', () => {
809
868
  it( 'should be modal by default', async () => {
810
869
  render(
811
870
  <>
812
- <Menu trigger={ <button>Open dropdown</button> }>
813
- <Menu.Item>Menu item</Menu.Item>
871
+ <Menu>
872
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
873
+ <Menu.Popover>
874
+ <Menu.Item>Menu item</Menu.Item>
875
+ </Menu.Popover>
814
876
  </Menu>
815
877
  <button>Button outside of dropdown</button>
816
878
  </>
@@ -836,11 +898,11 @@ describe( 'Menu', () => {
836
898
  it( 'should not be modal when the `modal` prop is set to `false`', async () => {
837
899
  render(
838
900
  <>
839
- <Menu
840
- trigger={ <button>Open dropdown</button> }
841
- modal={ false }
842
- >
843
- <Menu.Item>Menu item</Menu.Item>
901
+ <Menu>
902
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
903
+ <Menu.Popover modal={ false }>
904
+ <Menu.Item>Menu item</Menu.Item>
905
+ </Menu.Popover>
844
906
  </Menu>
845
907
  <button>Button outside of dropdown</button>
846
908
  </>
@@ -873,8 +935,13 @@ describe( 'Menu', () => {
873
935
  describe( 'items prefix and suffix', () => {
874
936
  it( 'should display a prefix on regular items', async () => {
875
937
  render(
876
- <Menu trigger={ <button>Open dropdown</button> }>
877
- <Menu.Item prefix={ <>Item prefix</> }>Menu item</Menu.Item>
938
+ <Menu>
939
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
940
+ <Menu.Popover>
941
+ <Menu.Item prefix={ <>Item prefix</> }>
942
+ Menu item
943
+ </Menu.Item>
944
+ </Menu.Popover>
878
945
  </Menu>
879
946
  );
880
947
 
@@ -895,8 +962,13 @@ describe( 'Menu', () => {
895
962
 
896
963
  it( 'should display a suffix on regular items', async () => {
897
964
  render(
898
- <Menu trigger={ <button>Open dropdown</button> }>
899
- <Menu.Item suffix={ <>Item suffix</> }>Menu item</Menu.Item>
965
+ <Menu>
966
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
967
+ <Menu.Popover>
968
+ <Menu.Item suffix={ <>Item suffix</> }>
969
+ Menu item
970
+ </Menu.Item>
971
+ </Menu.Popover>
900
972
  </Menu>
901
973
  );
902
974
 
@@ -917,14 +989,17 @@ describe( 'Menu', () => {
917
989
 
918
990
  it( 'should display a suffix on radio items', async () => {
919
991
  render(
920
- <Menu trigger={ <button>Open dropdown</button> }>
921
- <Menu.RadioItem
922
- name="radio-test"
923
- value="radio-one"
924
- suffix="Radio suffix"
925
- >
926
- Radio item one
927
- </Menu.RadioItem>
992
+ <Menu>
993
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
994
+ <Menu.Popover>
995
+ <Menu.RadioItem
996
+ name="radio-test"
997
+ value="radio-one"
998
+ suffix="Radio suffix"
999
+ >
1000
+ Radio item one
1001
+ </Menu.RadioItem>
1002
+ </Menu.Popover>
928
1003
  </Menu>
929
1004
  );
930
1005
 
@@ -945,14 +1020,17 @@ describe( 'Menu', () => {
945
1020
 
946
1021
  it( 'should display a suffix on checkbox items', async () => {
947
1022
  render(
948
- <Menu trigger={ <button>Open dropdown</button> }>
949
- <Menu.CheckboxItem
950
- name="checkbox-test"
951
- value="checkbox-one"
952
- suffix="Checkbox suffix"
953
- >
954
- Checkbox item one
955
- </Menu.CheckboxItem>
1023
+ <Menu>
1024
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
1025
+ <Menu.Popover>
1026
+ <Menu.CheckboxItem
1027
+ name="checkbox-test"
1028
+ value="checkbox-one"
1029
+ suffix="Checkbox suffix"
1030
+ >
1031
+ Checkbox item one
1032
+ </Menu.CheckboxItem>
1033
+ </Menu.Popover>
956
1034
  </Menu>
957
1035
  );
958
1036
 
@@ -975,9 +1053,12 @@ describe( 'Menu', () => {
975
1053
  describe( 'typeahead', () => {
976
1054
  it( 'should highlight matching item', async () => {
977
1055
  render(
978
- <Menu trigger={ <button>Open dropdown</button> }>
979
- <Menu.Item>One</Menu.Item>
980
- <Menu.Item>Two</Menu.Item>
1056
+ <Menu>
1057
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
1058
+ <Menu.Popover>
1059
+ <Menu.Item>One</Menu.Item>
1060
+ <Menu.Item>Two</Menu.Item>
1061
+ </Menu.Popover>
981
1062
  </Menu>
982
1063
  );
983
1064
 
@@ -1008,9 +1089,12 @@ describe( 'Menu', () => {
1008
1089
 
1009
1090
  it( 'should keep previous focus when no matches are found', async () => {
1010
1091
  render(
1011
- <Menu trigger={ <button>Open dropdown</button> }>
1012
- <Menu.Item>One</Menu.Item>
1013
- <Menu.Item>Two</Menu.Item>
1092
+ <Menu>
1093
+ <Menu.TriggerButton>Open dropdown</Menu.TriggerButton>
1094
+ <Menu.Popover>
1095
+ <Menu.Item>One</Menu.Item>
1096
+ <Menu.Item>Two</Menu.Item>
1097
+ </Menu.Popover>
1014
1098
  </Menu>
1015
1099
  );
1016
1100