@wordpress/components 25.13.0 → 25.15.1-next.79a6196f.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 (743) hide show
  1. package/CHANGELOG.md +89 -1
  2. package/CONTRIBUTING.md +57 -115
  3. package/LICENSE.md +1 -1
  4. package/build/base-control/index.js +17 -13
  5. package/build/base-control/index.js.map +1 -1
  6. package/build/border-box-control/border-box-control-linked-button/component.js +1 -1
  7. package/build/border-box-control/border-box-control-linked-button/component.js.map +1 -1
  8. package/build/border-control/border-control-dropdown/component.js +4 -2
  9. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  10. package/build/border-control/border-control-dropdown/hook.js +3 -2
  11. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  12. package/build/border-control/border-control-style-picker/component.js +1 -1
  13. package/build/border-control/border-control-style-picker/component.js.map +1 -1
  14. package/build/border-control/styles.js +17 -17
  15. package/build/border-control/styles.js.map +1 -1
  16. package/build/box-control/index.js +1 -1
  17. package/build/box-control/index.js.map +1 -1
  18. package/build/box-control/linked-button.js +1 -1
  19. package/build/box-control/linked-button.js.map +1 -1
  20. package/build/button/index.js +1 -1
  21. package/build/button/index.js.map +1 -1
  22. package/build/checkbox-control/index.js +1 -1
  23. package/build/checkbox-control/index.js.map +1 -1
  24. package/build/checkbox-control/types.js.map +1 -1
  25. package/build/color-palette/index.native.js +11 -7
  26. package/build/color-palette/index.native.js.map +1 -1
  27. package/build/color-picker/color-copy-button.js +1 -1
  28. package/build/color-picker/color-copy-button.js.map +1 -1
  29. package/build/context/wordpress-component.js.map +1 -1
  30. package/build/custom-select-control-v2/index.js +11 -10
  31. package/build/custom-select-control-v2/index.js.map +1 -1
  32. package/build/date-time/date/styles.js +8 -8
  33. package/build/date-time/date/styles.js.map +1 -1
  34. package/build/date-time/time/timezone.js +11 -2
  35. package/build/date-time/time/timezone.js.map +1 -1
  36. package/build/dimension-control/index.js +2 -0
  37. package/build/dimension-control/index.js.map +1 -1
  38. package/build/dimension-control/types.js.map +1 -1
  39. package/build/dropdown-menu-v2/index.js +205 -159
  40. package/build/dropdown-menu-v2/index.js.map +1 -1
  41. package/build/dropdown-menu-v2/styles.js +86 -77
  42. package/build/dropdown-menu-v2/styles.js.map +1 -1
  43. package/build/dropdown-menu-v2/types.js.map +1 -1
  44. package/build/duotone-picker/duotone-picker.js +4 -3
  45. package/build/duotone-picker/duotone-picker.js.map +1 -1
  46. package/build/focal-point-picker/controls.js +5 -1
  47. package/build/focal-point-picker/controls.js.map +1 -1
  48. package/build/focal-point-picker/index.js +2 -0
  49. package/build/focal-point-picker/index.js.map +1 -1
  50. package/build/focal-point-picker/styles/focal-point-picker-style.js +15 -15
  51. package/build/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  52. package/build/focal-point-picker/types.js.map +1 -1
  53. package/build/font-size-picker/font-size-picker-select.js +2 -0
  54. package/build/font-size-picker/font-size-picker-select.js.map +1 -1
  55. package/build/font-size-picker/font-size-picker-toggle-group.js +2 -0
  56. package/build/font-size-picker/font-size-picker-toggle-group.js.map +1 -1
  57. package/build/font-size-picker/index.js +10 -3
  58. package/build/font-size-picker/index.js.map +1 -1
  59. package/build/font-size-picker/index.native.js +6 -3
  60. package/build/font-size-picker/index.native.js.map +1 -1
  61. package/build/font-size-picker/types.js.map +1 -1
  62. package/build/form-token-field/index.js +10 -5
  63. package/build/form-token-field/index.js.map +1 -1
  64. package/build/form-token-field/token.js +1 -0
  65. package/build/form-token-field/token.js.map +1 -1
  66. package/build/gradient-picker/index.js +3 -2
  67. package/build/gradient-picker/index.js.map +1 -1
  68. package/build/index.native.js +20 -19
  69. package/build/index.native.js.map +1 -1
  70. package/build/input-control/styles/input-control-styles.js +32 -29
  71. package/build/input-control/styles/input-control-styles.js.map +1 -1
  72. package/build/input-control/types.js.map +1 -1
  73. package/build/lock-unlock.js +18 -0
  74. package/build/lock-unlock.js.map +1 -0
  75. package/build/mobile/bottom-sheet/index.native.js +8 -0
  76. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  77. package/build/mobile/color-settings/palette.screen.native.js +8 -4
  78. package/build/mobile/color-settings/palette.screen.native.js.map +1 -1
  79. package/build/mobile/global-styles-context/utils.native.js +39 -13
  80. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  81. package/build/mobile/image/constants.js +12 -0
  82. package/build/mobile/image/constants.js.map +1 -0
  83. package/build/mobile/image/index.native.js +26 -18
  84. package/build/mobile/image/index.native.js.map +1 -1
  85. package/build/mobile/keyboard-aware-flat-list/index.android.js +40 -8
  86. package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  87. package/build/mobile/keyboard-aware-flat-list/index.ios.js +44 -68
  88. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  89. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +39 -0
  90. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js.map +1 -0
  91. package/build/mobile/keyboard-aware-flat-list/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +22 -29
  92. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-section.native.js.map +1 -0
  93. package/build/mobile/keyboard-aware-flat-list/use-scroll.native.js +93 -0
  94. package/build/mobile/keyboard-aware-flat-list/use-scroll.native.js.map +1 -0
  95. package/build/mobile/utils/get-px-from-css-unit.native.js +302 -0
  96. package/build/mobile/utils/get-px-from-css-unit.native.js.map +1 -0
  97. package/build/modal/index.js +18 -13
  98. package/build/modal/index.js.map +1 -1
  99. package/build/navigation/menu/menu-title.js +1 -1
  100. package/build/navigation/menu/menu-title.js.map +1 -1
  101. package/build/navigator/navigator-provider/component.js +13 -15
  102. package/build/navigator/navigator-provider/component.js.map +1 -1
  103. package/build/navigator/navigator-screen/component.js +23 -63
  104. package/build/navigator/navigator-screen/component.js.map +1 -1
  105. package/build/navigator/styles.js +52 -0
  106. package/build/navigator/styles.js.map +1 -0
  107. package/build/number-control/index.js +4 -8
  108. package/build/number-control/index.js.map +1 -1
  109. package/build/number-control/types.js.map +1 -1
  110. package/build/palette-edit/index.js +15 -34
  111. package/build/palette-edit/index.js.map +1 -1
  112. package/build/private-apis.js +11 -26
  113. package/build/private-apis.js.map +1 -1
  114. package/build/private-apis.native.js +21 -0
  115. package/build/private-apis.native.js.map +1 -0
  116. package/build/query-controls/author-select.js +3 -1
  117. package/build/query-controls/author-select.js.map +1 -1
  118. package/build/query-controls/category-select.js +3 -1
  119. package/build/query-controls/category-select.js.map +1 -1
  120. package/build/query-controls/index.js +6 -1
  121. package/build/query-controls/index.js.map +1 -1
  122. package/build/query-controls/types.js.map +1 -1
  123. package/build/radio-control/index.js +1 -0
  124. package/build/radio-control/index.js.map +1 -1
  125. package/build/range-control/index.js +1 -1
  126. package/build/range-control/index.js.map +1 -1
  127. package/build/select-control/styles/select-control-styles.js +15 -25
  128. package/build/select-control/styles/select-control-styles.js.map +1 -1
  129. package/build/slot-fill/index.js +3 -2
  130. package/build/slot-fill/index.js.map +1 -1
  131. package/build/slot-fill/types.js.map +1 -1
  132. package/build/snackbar/types.js.map +1 -1
  133. package/build/tabs/index.js +18 -1
  134. package/build/tabs/index.js.map +1 -1
  135. package/build/tabs/styles.js +3 -3
  136. package/build/tabs/styles.js.map +1 -1
  137. package/build/tabs/tab.js +2 -2
  138. package/build/tabs/tab.js.map +1 -1
  139. package/build/tabs/tabpanel.js +11 -8
  140. package/build/tabs/tabpanel.js.map +1 -1
  141. package/build/tabs/types.js.map +1 -1
  142. package/build/toggle-group-control/toggle-group-control/component.js +4 -4
  143. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  144. package/build/toggle-group-control/toggle-group-control/styles.js +29 -15
  145. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  146. package/build/toggle-group-control/toggle-group-control/utils.js +17 -17
  147. package/build/toggle-group-control/toggle-group-control/utils.js.map +1 -1
  148. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
  149. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  150. package/build/tools-panel/tools-panel/component.js +3 -1
  151. package/build/tools-panel/tools-panel/component.js.map +1 -1
  152. package/build/tools-panel/tools-panel-header/component.js +9 -8
  153. package/build/tools-panel/tools-panel-header/component.js.map +1 -1
  154. package/build/tools-panel/tools-panel-item/hook.js +11 -11
  155. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  156. package/build/tools-panel/types.js.map +1 -1
  157. package/build/tooltip/index.js +34 -10
  158. package/build/tooltip/index.js.map +1 -1
  159. package/build/tooltip/types.js.map +1 -1
  160. package/build/truncate/hook.js +10 -4
  161. package/build/truncate/hook.js.map +1 -1
  162. package/build/truncate/types.js.map +1 -1
  163. package/build/unit-control/index.js +1 -1
  164. package/build/unit-control/index.js.map +1 -1
  165. package/build/utils/strings.js +34 -3
  166. package/build/utils/strings.js.map +1 -1
  167. package/build-module/base-control/index.js +16 -12
  168. package/build-module/base-control/index.js.map +1 -1
  169. package/build-module/border-box-control/border-box-control-linked-button/component.js +1 -1
  170. package/build-module/border-box-control/border-box-control-linked-button/component.js.map +1 -1
  171. package/build-module/border-control/border-control-dropdown/component.js +4 -2
  172. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  173. package/build-module/border-control/border-control-dropdown/hook.js +3 -2
  174. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  175. package/build-module/border-control/border-control-style-picker/component.js +1 -1
  176. package/build-module/border-control/border-control-style-picker/component.js.map +1 -1
  177. package/build-module/border-control/styles.js +17 -17
  178. package/build-module/border-control/styles.js.map +1 -1
  179. package/build-module/box-control/index.js +1 -1
  180. package/build-module/box-control/index.js.map +1 -1
  181. package/build-module/box-control/linked-button.js +1 -1
  182. package/build-module/box-control/linked-button.js.map +1 -1
  183. package/build-module/button/index.js +1 -1
  184. package/build-module/button/index.js.map +1 -1
  185. package/build-module/checkbox-control/index.js +1 -1
  186. package/build-module/checkbox-control/index.js.map +1 -1
  187. package/build-module/checkbox-control/types.js.map +1 -1
  188. package/build-module/color-palette/index.native.js +11 -7
  189. package/build-module/color-palette/index.native.js.map +1 -1
  190. package/build-module/color-picker/color-copy-button.js +1 -1
  191. package/build-module/color-picker/color-copy-button.js.map +1 -1
  192. package/build-module/context/wordpress-component.js.map +1 -1
  193. package/build-module/custom-select-control-v2/index.js +11 -10
  194. package/build-module/custom-select-control-v2/index.js.map +1 -1
  195. package/build-module/date-time/date/styles.js +8 -8
  196. package/build-module/date-time/date/styles.js.map +1 -1
  197. package/build-module/date-time/time/timezone.js +11 -2
  198. package/build-module/date-time/time/timezone.js.map +1 -1
  199. package/build-module/dimension-control/index.js +2 -0
  200. package/build-module/dimension-control/index.js.map +1 -1
  201. package/build-module/dimension-control/types.js.map +1 -1
  202. package/build-module/dropdown-menu-v2/index.js +201 -154
  203. package/build-module/dropdown-menu-v2/index.js.map +1 -1
  204. package/build-module/dropdown-menu-v2/styles.js +68 -61
  205. package/build-module/dropdown-menu-v2/styles.js.map +1 -1
  206. package/build-module/dropdown-menu-v2/types.js.map +1 -1
  207. package/build-module/duotone-picker/duotone-picker.js +4 -3
  208. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  209. package/build-module/focal-point-picker/controls.js +5 -1
  210. package/build-module/focal-point-picker/controls.js.map +1 -1
  211. package/build-module/focal-point-picker/index.js +2 -0
  212. package/build-module/focal-point-picker/index.js.map +1 -1
  213. package/build-module/focal-point-picker/styles/focal-point-picker-style.js +15 -15
  214. package/build-module/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  215. package/build-module/focal-point-picker/types.js.map +1 -1
  216. package/build-module/font-size-picker/font-size-picker-select.js +2 -0
  217. package/build-module/font-size-picker/font-size-picker-select.js.map +1 -1
  218. package/build-module/font-size-picker/font-size-picker-toggle-group.js +2 -0
  219. package/build-module/font-size-picker/font-size-picker-toggle-group.js.map +1 -1
  220. package/build-module/font-size-picker/index.js +10 -3
  221. package/build-module/font-size-picker/index.js.map +1 -1
  222. package/build-module/font-size-picker/index.native.js +5 -2
  223. package/build-module/font-size-picker/index.native.js.map +1 -1
  224. package/build-module/font-size-picker/types.js.map +1 -1
  225. package/build-module/form-token-field/index.js +10 -5
  226. package/build-module/form-token-field/index.js.map +1 -1
  227. package/build-module/form-token-field/token.js +1 -0
  228. package/build-module/form-token-field/token.js.map +1 -1
  229. package/build-module/gradient-picker/index.js +3 -2
  230. package/build-module/gradient-picker/index.js.map +1 -1
  231. package/build-module/index.native.js +6 -3
  232. package/build-module/index.native.js.map +1 -1
  233. package/build-module/input-control/styles/input-control-styles.js +31 -29
  234. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  235. package/build-module/input-control/types.js.map +1 -1
  236. package/build-module/lock-unlock.js +9 -0
  237. package/build-module/lock-unlock.js.map +1 -0
  238. package/build-module/mobile/bottom-sheet/index.native.js +9 -1
  239. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  240. package/build-module/mobile/color-settings/palette.screen.native.js +8 -4
  241. package/build-module/mobile/color-settings/palette.screen.native.js.map +1 -1
  242. package/build-module/mobile/global-styles-context/utils.native.js +38 -13
  243. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  244. package/build-module/mobile/image/constants.js +5 -0
  245. package/build-module/mobile/image/constants.js.map +1 -0
  246. package/build-module/mobile/image/index.native.js +25 -16
  247. package/build-module/mobile/image/index.native.js.map +1 -1
  248. package/build-module/mobile/keyboard-aware-flat-list/index.android.js +40 -6
  249. package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  250. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +46 -68
  251. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  252. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +33 -0
  253. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js.map +1 -0
  254. package/build-module/mobile/keyboard-aware-flat-list/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +21 -27
  255. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-section.native.js.map +1 -0
  256. package/build-module/mobile/keyboard-aware-flat-list/use-scroll.native.js +86 -0
  257. package/build-module/mobile/keyboard-aware-flat-list/use-scroll.native.js.map +1 -0
  258. package/build-module/mobile/utils/get-px-from-css-unit.native.js +294 -0
  259. package/build-module/mobile/utils/get-px-from-css-unit.native.js.map +1 -0
  260. package/build-module/modal/index.js +18 -13
  261. package/build-module/modal/index.js.map +1 -1
  262. package/build-module/navigation/menu/menu-title.js +1 -1
  263. package/build-module/navigation/menu/menu-title.js.map +1 -1
  264. package/build-module/navigator/navigator-provider/component.js +3 -16
  265. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  266. package/build-module/navigator/navigator-screen/component.js +16 -70
  267. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  268. package/build-module/navigator/styles.js +47 -0
  269. package/build-module/navigator/styles.js.map +1 -0
  270. package/build-module/number-control/index.js +4 -8
  271. package/build-module/number-control/index.js.map +1 -1
  272. package/build-module/number-control/types.js.map +1 -1
  273. package/build-module/palette-edit/index.js +14 -33
  274. package/build-module/palette-edit/index.js.map +1 -1
  275. package/build-module/private-apis.js +10 -23
  276. package/build-module/private-apis.js.map +1 -1
  277. package/build-module/private-apis.native.js +14 -0
  278. package/build-module/private-apis.native.js.map +1 -0
  279. package/build-module/query-controls/author-select.js +3 -1
  280. package/build-module/query-controls/author-select.js.map +1 -1
  281. package/build-module/query-controls/category-select.js +3 -1
  282. package/build-module/query-controls/category-select.js.map +1 -1
  283. package/build-module/query-controls/index.js +6 -1
  284. package/build-module/query-controls/index.js.map +1 -1
  285. package/build-module/query-controls/types.js.map +1 -1
  286. package/build-module/radio-control/index.js +1 -0
  287. package/build-module/radio-control/index.js.map +1 -1
  288. package/build-module/range-control/index.js +1 -1
  289. package/build-module/range-control/index.js.map +1 -1
  290. package/build-module/select-control/styles/select-control-styles.js +15 -25
  291. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  292. package/build-module/slot-fill/index.js +3 -2
  293. package/build-module/slot-fill/index.js.map +1 -1
  294. package/build-module/slot-fill/types.js.map +1 -1
  295. package/build-module/snackbar/types.js.map +1 -1
  296. package/build-module/tabs/index.js +18 -1
  297. package/build-module/tabs/index.js.map +1 -1
  298. package/build-module/tabs/styles.js +3 -3
  299. package/build-module/tabs/styles.js.map +1 -1
  300. package/build-module/tabs/tab.js +2 -2
  301. package/build-module/tabs/tab.js.map +1 -1
  302. package/build-module/tabs/tabpanel.js +11 -8
  303. package/build-module/tabs/tabpanel.js.map +1 -1
  304. package/build-module/tabs/types.js.map +1 -1
  305. package/build-module/toggle-group-control/toggle-group-control/component.js +4 -4
  306. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  307. package/build-module/toggle-group-control/toggle-group-control/styles.js +29 -15
  308. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  309. package/build-module/toggle-group-control/toggle-group-control/utils.js +17 -17
  310. package/build-module/toggle-group-control/toggle-group-control/utils.js.map +1 -1
  311. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
  312. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  313. package/build-module/tools-panel/tools-panel/component.js +3 -1
  314. package/build-module/tools-panel/tools-panel/component.js.map +1 -1
  315. package/build-module/tools-panel/tools-panel-header/component.js +9 -8
  316. package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
  317. package/build-module/tools-panel/tools-panel-item/hook.js +11 -11
  318. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  319. package/build-module/tools-panel/types.js.map +1 -1
  320. package/build-module/tooltip/index.js +34 -12
  321. package/build-module/tooltip/index.js.map +1 -1
  322. package/build-module/tooltip/types.js.map +1 -1
  323. package/build-module/truncate/hook.js +10 -4
  324. package/build-module/truncate/hook.js.map +1 -1
  325. package/build-module/truncate/types.js.map +1 -1
  326. package/build-module/unit-control/index.js +1 -1
  327. package/build-module/unit-control/index.js.map +1 -1
  328. package/build-module/utils/strings.js +32 -2
  329. package/build-module/utils/strings.js.map +1 -1
  330. package/build-style/style-rtl.css +30 -6
  331. package/build-style/style.css +30 -6
  332. package/build-types/base-control/index.d.ts +3 -27
  333. package/build-types/base-control/index.d.ts.map +1 -1
  334. package/build-types/base-control/stories/index.story.d.ts +4 -1
  335. package/build-types/base-control/stories/index.story.d.ts.map +1 -1
  336. package/build-types/border-box-control/border-box-control/hook.d.ts +4 -4
  337. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +6 -6
  338. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +4 -4
  339. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +4 -4
  340. package/build-types/border-box-control/stories/index.story.d.ts +1 -1
  341. package/build-types/border-control/border-control/hook.d.ts +4 -4
  342. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  343. package/build-types/border-control/border-control-dropdown/hook.d.ts +5 -4
  344. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  345. package/build-types/border-control/border-control-style-picker/hook.d.ts +4 -4
  346. package/build-types/border-control/stories/index.story.d.ts +6 -6
  347. package/build-types/border-control/styles.d.ts +1 -1
  348. package/build-types/border-control/styles.d.ts.map +1 -1
  349. package/build-types/box-control/stories/index.story.d.ts +42 -42
  350. package/build-types/box-control/styles/box-control-styles.d.ts +1 -1
  351. package/build-types/button/deprecated.d.ts +3 -3
  352. package/build-types/card/card/hook.d.ts +4 -4
  353. package/build-types/card/card-body/hook.d.ts +4 -4
  354. package/build-types/card/card-divider/hook.d.ts +4 -4
  355. package/build-types/card/card-footer/hook.d.ts +4 -4
  356. package/build-types/card/card-header/hook.d.ts +4 -4
  357. package/build-types/card/card-media/hook.d.ts +4 -4
  358. package/build-types/checkbox-control/index.d.ts.map +1 -1
  359. package/build-types/checkbox-control/types.d.ts +3 -2
  360. package/build-types/checkbox-control/types.d.ts.map +1 -1
  361. package/build-types/color-palette/styles.d.ts +2 -2
  362. package/build-types/color-picker/component.d.ts +2 -2
  363. package/build-types/color-picker/stories/index.story.d.ts +1 -1
  364. package/build-types/color-picker/stories/index.story.d.ts.map +1 -1
  365. package/build-types/color-picker/styles.d.ts +3 -3
  366. package/build-types/composite/test/index.d.ts.map +1 -0
  367. package/build-types/context/wordpress-component.d.ts +3 -3
  368. package/build-types/context/wordpress-component.d.ts.map +1 -1
  369. package/build-types/custom-select-control-v2/index.d.ts +3 -2
  370. package/build-types/custom-select-control-v2/index.d.ts.map +1 -1
  371. package/build-types/custom-select-control-v2/stories/index.story.d.ts +4 -3
  372. package/build-types/custom-select-control-v2/stories/index.story.d.ts.map +1 -1
  373. package/build-types/date-time/date/styles.d.ts +3 -3
  374. package/build-types/date-time/date-time/styles.d.ts +1 -1
  375. package/build-types/date-time/time/styles.d.ts +4 -4
  376. package/build-types/date-time/time/timezone.d.ts.map +1 -1
  377. package/build-types/dimension-control/index.d.ts.map +1 -1
  378. package/build-types/dimension-control/types.d.ts +6 -0
  379. package/build-types/dimension-control/types.d.ts.map +1 -1
  380. package/build-types/dropdown/index.d.ts +1 -1
  381. package/build-types/dropdown/index.d.ts.map +1 -1
  382. package/build-types/dropdown/stories/index.story.d.ts +3 -3
  383. package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
  384. package/build-types/dropdown-menu/index.d.ts +1 -1
  385. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  386. package/build-types/dropdown-menu/stories/index.story.d.ts +2 -2
  387. package/build-types/dropdown-menu/stories/index.story.d.ts.map +1 -1
  388. package/build-types/dropdown-menu-v2/index.d.ts +18 -15
  389. package/build-types/dropdown-menu-v2/index.d.ts.map +1 -1
  390. package/build-types/dropdown-menu-v2/stories/index.story.d.ts +7 -2
  391. package/build-types/dropdown-menu-v2/stories/index.story.d.ts.map +1 -1
  392. package/build-types/dropdown-menu-v2/styles.d.ts +77 -23
  393. package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
  394. package/build-types/dropdown-menu-v2/types.d.ts +89 -173
  395. package/build-types/dropdown-menu-v2/types.d.ts.map +1 -1
  396. package/build-types/duotone-picker/duotone-picker.d.ts.map +1 -1
  397. package/build-types/elevation/hook.d.ts +4 -4
  398. package/build-types/flex/flex/hook.d.ts +4 -4
  399. package/build-types/flex/flex-block/hook.d.ts +4 -4
  400. package/build-types/flex/flex-item/hook.d.ts +4 -4
  401. package/build-types/focal-point-picker/controls.d.ts +1 -1
  402. package/build-types/focal-point-picker/controls.d.ts.map +1 -1
  403. package/build-types/focal-point-picker/index.d.ts +1 -1
  404. package/build-types/focal-point-picker/index.d.ts.map +1 -1
  405. package/build-types/focal-point-picker/stories/index.story.d.ts +8 -4
  406. package/build-types/focal-point-picker/stories/index.story.d.ts.map +1 -1
  407. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +1 -1
  408. package/build-types/focal-point-picker/types.d.ts +7 -0
  409. package/build-types/focal-point-picker/types.d.ts.map +1 -1
  410. package/build-types/font-size-picker/font-size-picker-select.d.ts.map +1 -1
  411. package/build-types/font-size-picker/font-size-picker-toggle-group.d.ts.map +1 -1
  412. package/build-types/font-size-picker/index.d.ts.map +1 -1
  413. package/build-types/font-size-picker/styles.d.ts +1 -1
  414. package/build-types/font-size-picker/types.d.ts +8 -1
  415. package/build-types/font-size-picker/types.d.ts.map +1 -1
  416. package/build-types/form-token-field/index.d.ts.map +1 -1
  417. package/build-types/form-token-field/token.d.ts.map +1 -1
  418. package/build-types/grid/hook.d.ts +4 -4
  419. package/build-types/h-stack/hook.d.ts +4 -4
  420. package/build-types/heading/component.d.ts +1 -1
  421. package/build-types/heading/hook.d.ts +4 -4
  422. package/build-types/input-control/styles/input-control-styles.d.ts +11 -0
  423. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  424. package/build-types/input-control/types.d.ts +1 -1
  425. package/build-types/input-control/types.d.ts.map +1 -1
  426. package/build-types/item-group/item/hook.d.ts +4 -4
  427. package/build-types/item-group/item-group/hook.d.ts +4 -4
  428. package/build-types/lock-unlock.d.ts +3 -0
  429. package/build-types/lock-unlock.d.ts.map +1 -0
  430. package/build-types/menu-item/index.d.ts +1 -1
  431. package/build-types/menu-item/stories/index.story.d.ts +4 -4
  432. package/build-types/mobile/image/constants.d.ts +5 -0
  433. package/build-types/mobile/image/constants.d.ts.map +1 -0
  434. package/build-types/modal/index.d.ts.map +1 -1
  435. package/build-types/navigation/styles/navigation-styles.d.ts +3 -3
  436. package/build-types/navigator/navigator-back-button/hook.d.ts +6 -6
  437. package/build-types/navigator/navigator-button/hook.d.ts +6 -6
  438. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  439. package/build-types/navigator/navigator-screen/component.d.ts +1 -7
  440. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  441. package/build-types/navigator/styles.d.ts +9 -0
  442. package/build-types/navigator/styles.d.ts.map +1 -0
  443. package/build-types/number-control/index.d.ts +1 -1
  444. package/build-types/number-control/index.d.ts.map +1 -1
  445. package/build-types/number-control/stories/index.story.d.ts +1 -1
  446. package/build-types/number-control/types.d.ts +1 -1
  447. package/build-types/palette-edit/index.d.ts +2 -2
  448. package/build-types/palette-edit/index.d.ts.map +1 -1
  449. package/build-types/palette-edit/styles.d.ts +3 -3
  450. package/build-types/popover/index.d.ts +1 -1
  451. package/build-types/popover/index.d.ts.map +1 -1
  452. package/build-types/popover/stories/e2e/index.story.d.ts +1 -1
  453. package/build-types/private-apis.d.ts +0 -1
  454. package/build-types/private-apis.d.ts.map +1 -1
  455. package/build-types/query-controls/author-select.d.ts +1 -1
  456. package/build-types/query-controls/author-select.d.ts.map +1 -1
  457. package/build-types/query-controls/category-select.d.ts +1 -1
  458. package/build-types/query-controls/category-select.d.ts.map +1 -1
  459. package/build-types/query-controls/index.d.ts +1 -1
  460. package/build-types/query-controls/index.d.ts.map +1 -1
  461. package/build-types/query-controls/types.d.ts +9 -0
  462. package/build-types/query-controls/types.d.ts.map +1 -1
  463. package/build-types/radio-control/index.d.ts.map +1 -1
  464. package/build-types/range-control/index.d.ts +1 -1
  465. package/build-types/range-control/styles/range-control-styles.d.ts +1 -1
  466. package/build-types/resizable-box/index.d.ts +1 -1
  467. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  468. package/build-types/resizable-box/stories/index.story.d.ts +2 -2
  469. package/build-types/scrollable/hook.d.ts +4 -4
  470. package/build-types/search-control/index.d.ts +1 -1
  471. package/build-types/search-control/stories/index.story.d.ts +2 -2
  472. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  473. package/build-types/slot-fill/index.d.ts +1 -1
  474. package/build-types/slot-fill/index.d.ts.map +1 -1
  475. package/build-types/slot-fill/types.d.ts +4 -0
  476. package/build-types/slot-fill/types.d.ts.map +1 -1
  477. package/build-types/snackbar/index.d.ts +2 -2
  478. package/build-types/snackbar/stories/index.story.d.ts +0 -3
  479. package/build-types/snackbar/stories/index.story.d.ts.map +1 -1
  480. package/build-types/snackbar/types.d.ts +1 -1
  481. package/build-types/snackbar/types.d.ts.map +1 -1
  482. package/build-types/spacer/hook.d.ts +4 -4
  483. package/build-types/surface/hook.d.ts +4 -4
  484. package/build-types/tabs/index.d.ts +2 -2
  485. package/build-types/tabs/index.d.ts.map +1 -1
  486. package/build-types/tabs/styles.d.ts.map +1 -1
  487. package/build-types/tabs/tab.d.ts +2 -1
  488. package/build-types/tabs/tab.d.ts.map +1 -1
  489. package/build-types/tabs/tabpanel.d.ts +3 -2
  490. package/build-types/tabs/tabpanel.d.ts.map +1 -1
  491. package/build-types/tabs/types.d.ts +8 -3
  492. package/build-types/tabs/types.d.ts.map +1 -1
  493. package/build-types/text/hook.d.ts +4 -4
  494. package/build-types/text-control/index.d.ts +1 -1
  495. package/build-types/textarea-control/index.d.ts +1 -1
  496. package/build-types/toggle-control/stories/index.story.d.ts +2 -2
  497. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +1 -1
  498. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +1 -1
  499. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  500. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +2 -2
  501. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  502. package/build-types/toggle-group-control/toggle-group-control/utils.d.ts.map +1 -1
  503. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +1 -1
  504. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts +1 -1
  505. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  506. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  507. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  508. package/build-types/toolbar/toolbar-button/index.d.ts +3 -3
  509. package/build-types/tools-panel/tools-panel/component.d.ts.map +1 -1
  510. package/build-types/tools-panel/tools-panel/hook.d.ts +5 -4
  511. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  512. package/build-types/tools-panel/tools-panel-header/component.d.ts.map +1 -1
  513. package/build-types/tools-panel/tools-panel-header/hook.d.ts +5 -4
  514. package/build-types/tools-panel/tools-panel-header/hook.d.ts.map +1 -1
  515. package/build-types/tools-panel/tools-panel-item/hook.d.ts +4 -4
  516. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  517. package/build-types/tools-panel/types.d.ts +9 -0
  518. package/build-types/tools-panel/types.d.ts.map +1 -1
  519. package/build-types/tooltip/index.d.ts +1 -1
  520. package/build-types/tooltip/index.d.ts.map +1 -1
  521. package/build-types/tooltip/stories/index.story.d.ts +10 -1
  522. package/build-types/tooltip/stories/index.story.d.ts.map +1 -1
  523. package/build-types/tooltip/types.d.ts +3 -0
  524. package/build-types/tooltip/types.d.ts.map +1 -1
  525. package/build-types/truncate/hook.d.ts +5 -5
  526. package/build-types/truncate/hook.d.ts.map +1 -1
  527. package/build-types/truncate/types.d.ts +4 -0
  528. package/build-types/truncate/types.d.ts.map +1 -1
  529. package/build-types/unit-control/index.d.ts +1 -1
  530. package/build-types/unit-control/styles/unit-control-styles.d.ts +1 -1
  531. package/build-types/utils/strings.d.ts +14 -2
  532. package/build-types/utils/strings.d.ts.map +1 -1
  533. package/build-types/v-stack/hook.d.ts +4 -4
  534. package/build-types/v-stack/stories/index.story.d.ts +1 -1
  535. package/package.json +20 -21
  536. package/src/alignment-matrix-control/test/index.tsx +10 -16
  537. package/src/base-control/index.tsx +21 -16
  538. package/src/border-box-control/border-box-control-linked-button/component.tsx +1 -1
  539. package/src/border-control/border-control-dropdown/component.tsx +3 -1
  540. package/src/border-control/border-control-dropdown/hook.ts +3 -2
  541. package/src/border-control/border-control-style-picker/component.tsx +1 -1
  542. package/src/border-control/styles.ts +2 -9
  543. package/src/box-control/index.tsx +1 -1
  544. package/src/box-control/linked-button.tsx +1 -1
  545. package/src/button/README.md +32 -6
  546. package/src/button/index.tsx +1 -1
  547. package/src/button-group/README.md +0 -6
  548. package/src/card/card/README.md +1 -1
  549. package/src/checkbox-control/README.md +3 -10
  550. package/src/checkbox-control/index.tsx +8 -6
  551. package/src/checkbox-control/test/__snapshots__/index.tsx.snap +3 -8
  552. package/src/checkbox-control/test/index.tsx +7 -0
  553. package/src/checkbox-control/types.ts +3 -2
  554. package/src/color-palette/index.native.js +18 -7
  555. package/src/color-picker/color-copy-button.tsx +1 -1
  556. package/src/combobox-control/README.md +0 -6
  557. package/src/composite/test/index.tsx +576 -0
  558. package/src/context/wordpress-component.ts +11 -6
  559. package/src/custom-select-control/README.md +0 -6
  560. package/src/custom-select-control/test/index.js +367 -35
  561. package/src/custom-select-control-v2/index.tsx +13 -12
  562. package/src/date-time/date/styles.ts +3 -3
  563. package/src/date-time/time/timezone.tsx +15 -3
  564. package/src/dimension-control/index.tsx +2 -0
  565. package/src/dimension-control/test/__snapshots__/index.test.js.snap +2 -2
  566. package/src/dimension-control/types.ts +6 -0
  567. package/src/dropdown-menu/README.md +0 -5
  568. package/src/dropdown-menu-v2/README.md +75 -136
  569. package/src/dropdown-menu-v2/index.tsx +321 -231
  570. package/src/dropdown-menu-v2/stories/index.story.tsx +522 -126
  571. package/src/dropdown-menu-v2/styles.ts +226 -151
  572. package/src/dropdown-menu-v2/test/index.tsx +480 -188
  573. package/src/dropdown-menu-v2/types.ts +98 -184
  574. package/src/duotone-picker/duotone-picker.tsx +7 -3
  575. package/src/focal-point-picker/controls.tsx +4 -0
  576. package/src/focal-point-picker/index.tsx +2 -0
  577. package/src/focal-point-picker/styles/focal-point-picker-style.ts +1 -1
  578. package/src/focal-point-picker/types.ts +7 -0
  579. package/src/font-size-picker/font-size-picker-select.tsx +2 -0
  580. package/src/font-size-picker/font-size-picker-toggle-group.tsx +9 -1
  581. package/src/font-size-picker/index.native.js +8 -2
  582. package/src/font-size-picker/index.tsx +15 -5
  583. package/src/font-size-picker/types.ts +8 -1
  584. package/src/form-toggle/README.md +0 -6
  585. package/src/form-toggle/style.scss +4 -2
  586. package/src/form-token-field/index.tsx +11 -7
  587. package/src/form-token-field/test/index.tsx +97 -0
  588. package/src/form-token-field/token.tsx +1 -0
  589. package/src/gradient-picker/index.tsx +2 -2
  590. package/src/index.native.js +6 -3
  591. package/src/input-control/styles/input-control-styles.tsx +10 -8
  592. package/src/input-control/types.ts +1 -1
  593. package/src/lock-unlock.js +10 -0
  594. package/src/menu-group/README.md +0 -8
  595. package/src/menu-items-choice/README.md +0 -7
  596. package/src/mobile/bottom-sheet/index.native.js +15 -1
  597. package/src/mobile/color-settings/palette.screen.native.js +7 -5
  598. package/src/mobile/global-styles-context/test/fixtures/theme.native.js +0 -20
  599. package/src/mobile/global-styles-context/test/utils.native.js +22 -0
  600. package/src/mobile/global-styles-context/utils.native.js +42 -19
  601. package/src/mobile/image/constants.js +1 -0
  602. package/src/mobile/image/index.native.js +55 -18
  603. package/src/mobile/image/style.native.scss +35 -9
  604. package/src/mobile/keyboard-aware-flat-list/index.android.js +50 -5
  605. package/src/mobile/keyboard-aware-flat-list/index.ios.js +65 -91
  606. package/src/mobile/keyboard-aware-flat-list/test/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +27 -25
  607. package/src/mobile/keyboard-aware-flat-list/test/use-scroll.native.js +71 -0
  608. package/src/mobile/keyboard-aware-flat-list/use-scroll-to-element.native.js +41 -0
  609. package/src/mobile/keyboard-aware-flat-list/{use-scroll-to-text-input.native.js → use-scroll-to-section.native.js} +22 -27
  610. package/src/mobile/keyboard-aware-flat-list/use-scroll.native.js +100 -0
  611. package/src/mobile/link-settings/style.native.scss +0 -17
  612. package/src/mobile/utils/get-px-from-css-unit.native.js +329 -0
  613. package/src/mobile/utils/test/get-px-from-css-unit.native.js +172 -0
  614. package/src/modal/README.md +0 -6
  615. package/src/modal/index.tsx +18 -16
  616. package/src/modal/test/index.tsx +90 -1
  617. package/src/navigation/menu/menu-title.tsx +1 -1
  618. package/src/navigator/navigator-provider/component.tsx +3 -4
  619. package/src/navigator/navigator-screen/component.tsx +15 -93
  620. package/src/navigator/styles.ts +71 -0
  621. package/src/navigator/test/index.tsx +0 -64
  622. package/src/notice/README.md +0 -6
  623. package/src/number-control/README.md +2 -2
  624. package/src/number-control/index.tsx +4 -8
  625. package/src/number-control/types.ts +1 -1
  626. package/src/palette-edit/index.tsx +14 -43
  627. package/src/palette-edit/style.scss +2 -2
  628. package/src/panel/README.md +0 -6
  629. package/src/private-apis.native.js +13 -0
  630. package/src/private-apis.ts +12 -37
  631. package/src/query-controls/author-select.tsx +2 -0
  632. package/src/query-controls/category-select.tsx +2 -0
  633. package/src/query-controls/index.tsx +6 -1
  634. package/src/query-controls/types.ts +9 -0
  635. package/src/radio-control/README.md +0 -6
  636. package/src/radio-control/index.tsx +4 -1
  637. package/src/radio-control/style.scss +29 -2
  638. package/src/radio-group/README.md +0 -6
  639. package/src/range-control/README.md +1 -9
  640. package/src/range-control/index.tsx +1 -1
  641. package/src/search-control/README.md +1 -5
  642. package/src/select-control/README.md +0 -6
  643. package/src/select-control/styles/select-control-styles.ts +10 -28
  644. package/src/slot-fill/index.tsx +5 -2
  645. package/src/slot-fill/types.ts +5 -0
  646. package/src/snackbar/README.md +0 -6
  647. package/src/snackbar/stories/index.story.tsx +7 -5
  648. package/src/snackbar/style.scss +4 -3
  649. package/src/snackbar/types.ts +2 -1
  650. package/src/spacer/README.md +0 -2
  651. package/src/spinner/README.md +2 -0
  652. package/src/tab-panel/README.md +0 -5
  653. package/src/tab-panel/test/index.tsx +39 -56
  654. package/src/tabs/README.md +4 -4
  655. package/src/tabs/index.tsx +22 -1
  656. package/src/tabs/stories/index.story.tsx +48 -48
  657. package/src/tabs/styles.ts +7 -1
  658. package/src/tabs/tab.tsx +3 -3
  659. package/src/tabs/tabpanel.tsx +13 -8
  660. package/src/tabs/test/index.tsx +236 -106
  661. package/src/tabs/types.ts +8 -3
  662. package/src/text-control/README.md +0 -6
  663. package/src/textarea-control/README.md +0 -6
  664. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +12 -16
  665. package/src/toggle-group-control/test/index.tsx +107 -41
  666. package/src/toggle-group-control/toggle-group-control/component.tsx +5 -4
  667. package/src/toggle-group-control/toggle-group-control/styles.ts +13 -19
  668. package/src/toggle-group-control/toggle-group-control/utils.ts +15 -20
  669. package/src/toggle-group-control/toggle-group-control-option/README.md +1 -1
  670. package/src/toggle-group-control/toggle-group-control-option-base/README.md +1 -1
  671. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +3 -2
  672. package/src/toggle-group-control/toggle-group-control-option-icon/README.md +1 -1
  673. package/src/toolbar/toolbar/README.md +0 -6
  674. package/src/tools-panel/test/index.tsx +12 -20
  675. package/src/tools-panel/tools-panel/README.md +7 -0
  676. package/src/tools-panel/tools-panel/component.tsx +2 -0
  677. package/src/tools-panel/tools-panel-header/README.md +7 -0
  678. package/src/tools-panel/tools-panel-header/component.tsx +20 -13
  679. package/src/tools-panel/tools-panel-item/hook.ts +10 -21
  680. package/src/tools-panel/types.ts +9 -0
  681. package/src/tooltip/README.md +4 -0
  682. package/src/tooltip/index.tsx +48 -10
  683. package/src/tooltip/stories/index.story.tsx +18 -1
  684. package/src/tooltip/test/index.tsx +404 -254
  685. package/src/tooltip/types.ts +4 -0
  686. package/src/tree-grid/README.md +0 -4
  687. package/src/truncate/README.md +8 -0
  688. package/src/truncate/hook.ts +17 -10
  689. package/src/truncate/test/index.tsx +54 -27
  690. package/src/truncate/types.ts +4 -0
  691. package/src/unit-control/index.tsx +1 -1
  692. package/src/utils/strings.ts +30 -2
  693. package/src/utils/test/strings.js +96 -1
  694. package/tsconfig.tsbuildinfo +1 -1
  695. package/build/dropdown-menu-v2-ariakit/index.js +0 -256
  696. package/build/dropdown-menu-v2-ariakit/index.js.map +0 -1
  697. package/build/dropdown-menu-v2-ariakit/styles.js +0 -180
  698. package/build/dropdown-menu-v2-ariakit/styles.js.map +0 -1
  699. package/build/dropdown-menu-v2-ariakit/types.js +0 -6
  700. package/build/dropdown-menu-v2-ariakit/types.js.map +0 -1
  701. package/build/mobile/inserter-button/index.native.js +0 -98
  702. package/build/mobile/inserter-button/index.native.js.map +0 -1
  703. package/build/mobile/inserter-button/sparkles.js +0 -23
  704. package/build/mobile/inserter-button/sparkles.js.map +0 -1
  705. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +0 -1
  706. package/build/mobile/link-settings/image-link-destinations-screen.native.js +0 -119
  707. package/build/mobile/link-settings/image-link-destinations-screen.native.js.map +0 -1
  708. package/build-module/dropdown-menu-v2-ariakit/index.js +0 -237
  709. package/build-module/dropdown-menu-v2-ariakit/index.js.map +0 -1
  710. package/build-module/dropdown-menu-v2-ariakit/styles.js +0 -165
  711. package/build-module/dropdown-menu-v2-ariakit/styles.js.map +0 -1
  712. package/build-module/dropdown-menu-v2-ariakit/types.js +0 -2
  713. package/build-module/dropdown-menu-v2-ariakit/types.js.map +0 -1
  714. package/build-module/mobile/inserter-button/index.native.js +0 -89
  715. package/build-module/mobile/inserter-button/index.native.js.map +0 -1
  716. package/build-module/mobile/inserter-button/sparkles.js +0 -15
  717. package/build-module/mobile/inserter-button/sparkles.js.map +0 -1
  718. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +0 -1
  719. package/build-module/mobile/link-settings/image-link-destinations-screen.native.js +0 -110
  720. package/build-module/mobile/link-settings/image-link-destinations-screen.native.js.map +0 -1
  721. package/build-types/dropdown-menu-v2-ariakit/index.d.ts +0 -20
  722. package/build-types/dropdown-menu-v2-ariakit/index.d.ts.map +0 -1
  723. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts +0 -16
  724. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts.map +0 -1
  725. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts +0 -96
  726. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts.map +0 -1
  727. package/build-types/dropdown-menu-v2-ariakit/test/index.d.ts.map +0 -1
  728. package/build-types/dropdown-menu-v2-ariakit/types.d.ts +0 -168
  729. package/build-types/dropdown-menu-v2-ariakit/types.d.ts.map +0 -1
  730. package/build-types/mobile/inserter-button/sparkles.d.ts +0 -3
  731. package/build-types/mobile/inserter-button/sparkles.d.ts.map +0 -1
  732. package/src/dropdown-menu-v2-ariakit/README.md +0 -331
  733. package/src/dropdown-menu-v2-ariakit/index.tsx +0 -383
  734. package/src/dropdown-menu-v2-ariakit/stories/index.story.tsx +0 -617
  735. package/src/dropdown-menu-v2-ariakit/styles.ts +0 -333
  736. package/src/dropdown-menu-v2-ariakit/test/index.tsx +0 -1108
  737. package/src/dropdown-menu-v2-ariakit/types.ts +0 -179
  738. package/src/mobile/inserter-button/README.md +0 -62
  739. package/src/mobile/inserter-button/index.native.js +0 -116
  740. package/src/mobile/inserter-button/sparkles.js +0 -15
  741. package/src/mobile/inserter-button/style.native.scss +0 -72
  742. package/src/mobile/link-settings/image-link-destinations-screen.native.js +0 -152
  743. /package/build-types/{dropdown-menu-v2-ariakit → composite}/test/index.d.ts +0 -0
@@ -1,1108 +0,0 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { render, screen, waitFor } from '@testing-library/react';
5
- import { press, click, hover, type } from '@ariakit/test';
6
-
7
- /**
8
- * WordPress dependencies
9
- */
10
- import { useState } from '@wordpress/element';
11
-
12
- /**
13
- * Internal dependencies
14
- */
15
- import {
16
- DropdownMenu,
17
- DropdownMenuCheckboxItem,
18
- DropdownMenuItem,
19
- DropdownMenuRadioItem,
20
- DropdownMenuSeparator,
21
- DropdownMenuGroup,
22
- } from '..';
23
-
24
- const delay = ( delayInMs: number ) => {
25
- return new Promise( ( resolve ) => setTimeout( resolve, delayInMs ) );
26
- };
27
-
28
- describe( 'DropdownMenu', () => {
29
- // See https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/
30
- it( 'should follow the WAI-ARIA spec', async () => {
31
- render(
32
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
33
- <DropdownMenuItem>Dropdown menu item</DropdownMenuItem>
34
- <DropdownMenuSeparator />
35
- <DropdownMenu
36
- trigger={
37
- <DropdownMenuItem>Dropdown submenu</DropdownMenuItem>
38
- }
39
- >
40
- <DropdownMenuItem>Dropdown submenu item 1</DropdownMenuItem>
41
- <DropdownMenuItem>Dropdown submenu item 2</DropdownMenuItem>
42
- </DropdownMenu>
43
- </DropdownMenu>
44
- );
45
-
46
- const toggleButton = screen.getByRole( 'button', {
47
- name: 'Open dropdown',
48
- } );
49
-
50
- expect( toggleButton ).toHaveAttribute( 'aria-haspopup', 'menu' );
51
- expect( toggleButton ).toHaveAttribute( 'aria-expanded', 'false' );
52
-
53
- await click( toggleButton );
54
-
55
- expect( toggleButton ).toHaveAttribute( 'aria-expanded', 'true' );
56
-
57
- expect(
58
- screen.getByRole( 'menu', { name: toggleButton.textContent ?? '' } )
59
- ).toHaveFocus();
60
- expect( screen.getByRole( 'separator' ) ).toHaveAttribute(
61
- 'aria-orientation',
62
- 'horizontal'
63
- );
64
- expect( screen.getAllByRole( 'menuitem' ) ).toHaveLength( 2 );
65
-
66
- const submenuTrigger = screen.getByRole( 'menuitem', {
67
- name: 'Dropdown submenu',
68
- } );
69
- expect( submenuTrigger ).toHaveAttribute( 'aria-haspopup', 'menu' );
70
- expect( submenuTrigger ).toHaveAttribute( 'aria-expanded', 'false' );
71
-
72
- await hover( submenuTrigger );
73
-
74
- // Wait for the open animation after hovering
75
- await waitFor( () =>
76
- expect(
77
- screen.getByRole( 'menu', {
78
- name: submenuTrigger.textContent ?? '',
79
- } )
80
- ).toBeVisible()
81
- );
82
-
83
- expect( submenuTrigger ).toHaveAttribute( 'aria-expanded', 'true' );
84
- expect( submenuTrigger ).toHaveAttribute(
85
- 'aria-controls',
86
- screen.getAllByRole( 'menu' )[ 1 ].id
87
- );
88
- } );
89
-
90
- describe( 'pointer and keyboard interactions', () => {
91
- it( 'should open and focus the menu when clicking the trigger', async () => {
92
- render(
93
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
94
- <DropdownMenuItem>Dropdown menu item</DropdownMenuItem>
95
- </DropdownMenu>
96
- );
97
-
98
- const toggleButton = screen.getByRole( 'button', {
99
- name: 'Open dropdown',
100
- } );
101
-
102
- // DropdownMenu closed
103
- expect( screen.queryByRole( 'menu' ) ).not.toBeInTheDocument();
104
-
105
- // Click to open the menu
106
- await click( toggleButton );
107
-
108
- // DropdownMenu open, focus is on the menu wrapper
109
- expect( screen.getByRole( 'menu' ) ).toHaveFocus();
110
- } );
111
-
112
- it( 'should open and focus the first item when pressing the arrow down key on the trigger', async () => {
113
- render(
114
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
115
- <DropdownMenuItem disabled>First item</DropdownMenuItem>
116
- <DropdownMenuItem>Second item</DropdownMenuItem>
117
- <DropdownMenuItem>Third item</DropdownMenuItem>
118
- </DropdownMenu>
119
- );
120
-
121
- const toggleButton = screen.getByRole( 'button', {
122
- name: 'Open dropdown',
123
- } );
124
-
125
- // Move focus on the toggle
126
- await press.Tab();
127
-
128
- expect( toggleButton ).toHaveFocus();
129
-
130
- // DropdownMenu closed
131
- expect( screen.queryByRole( 'menuitem' ) ).not.toBeInTheDocument();
132
-
133
- await press.ArrowDown();
134
-
135
- // DropdownMenu open, focus is on the first focusable item
136
- // (disabled items are still focusable and accessible)
137
- expect(
138
- screen.getByRole( 'menuitem', { name: 'First item' } )
139
- ).toHaveFocus();
140
- } );
141
-
142
- it( 'should open and focus the first item when pressing the space key on the trigger', async () => {
143
- render(
144
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
145
- <DropdownMenuItem disabled>First item</DropdownMenuItem>
146
- <DropdownMenuItem>Second item</DropdownMenuItem>
147
- <DropdownMenuItem>Third item</DropdownMenuItem>
148
- </DropdownMenu>
149
- );
150
-
151
- const toggleButton = screen.getByRole( 'button', {
152
- name: 'Open dropdown',
153
- } );
154
-
155
- // Move focus on the toggle
156
- await press.Tab();
157
-
158
- expect( toggleButton ).toHaveFocus();
159
-
160
- // DropdownMenu closed
161
- expect( screen.queryByRole( 'menuitem' ) ).not.toBeInTheDocument();
162
-
163
- await press.Space();
164
-
165
- // DropdownMenu open, focus is on the first focusable item
166
- // (disabled items are still focusable and accessible
167
- expect(
168
- screen.getByRole( 'menuitem', { name: 'First item' } )
169
- ).toHaveFocus();
170
- } );
171
-
172
- it( 'should close when pressing the escape key', async () => {
173
- render(
174
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
175
- <DropdownMenuItem>Dropdown menu item</DropdownMenuItem>
176
- </DropdownMenu>
177
- );
178
-
179
- const trigger = screen.getByRole( 'button', {
180
- name: 'Open dropdown',
181
- } );
182
-
183
- await click( trigger );
184
-
185
- // Focuses menu on mouse click, focuses first item on keyboard press
186
- // Can be changed with a custom useEffect
187
- expect( screen.getByRole( 'menu' ) ).toHaveFocus();
188
-
189
- // Pressing esc will close the menu and move focus to the toggle
190
- await press.Escape();
191
-
192
- expect( screen.queryByRole( 'menu' ) ).not.toBeInTheDocument();
193
-
194
- await waitFor( () =>
195
- expect(
196
- screen.getByRole( 'button', { name: 'Open dropdown' } )
197
- ).toHaveFocus()
198
- );
199
- } );
200
-
201
- it( 'should close when clicking outside of the content', async () => {
202
- render(
203
- <DropdownMenu
204
- defaultOpen
205
- trigger={ <button>Open dropdown</button> }
206
- >
207
- <DropdownMenuItem>Dropdown menu item</DropdownMenuItem>
208
- </DropdownMenu>
209
- );
210
-
211
- expect( screen.getByRole( 'menu' ) ).toBeInTheDocument();
212
-
213
- // Click on the body (ie. outside of the dropdown menu)
214
- await click( document.body );
215
-
216
- expect( screen.queryByRole( 'menu' ) ).not.toBeInTheDocument();
217
- } );
218
-
219
- it( 'should close when clicking on a menu item', async () => {
220
- render(
221
- <DropdownMenu
222
- defaultOpen
223
- trigger={ <button>Open dropdown</button> }
224
- >
225
- <DropdownMenuItem>Dropdown menu item</DropdownMenuItem>
226
- </DropdownMenu>
227
- );
228
-
229
- expect( screen.getByRole( 'menu' ) ).toBeInTheDocument();
230
-
231
- // Clicking a menu item will close the menu
232
- await click( screen.getByRole( 'menuitem' ) );
233
-
234
- expect( screen.queryByRole( 'menu' ) ).not.toBeInTheDocument();
235
- } );
236
-
237
- it( 'should not close when clicking on a menu item when the `hideOnClick` prop is set to `false`', async () => {
238
- render(
239
- <DropdownMenu
240
- defaultOpen
241
- trigger={ <button>Open dropdown</button> }
242
- >
243
- <DropdownMenuItem hideOnClick={ false }>
244
- Dropdown menu item
245
- </DropdownMenuItem>
246
- </DropdownMenu>
247
- );
248
-
249
- expect( screen.getByRole( 'menu' ) ).toBeVisible();
250
-
251
- // Clicking a menu item will close the menu
252
- await click( screen.getByRole( 'menuitem' ) );
253
-
254
- expect( screen.getByRole( 'menu' ) ).toBeVisible();
255
- } );
256
-
257
- it( 'should not close when clicking on a disabled menu item', async () => {
258
- render(
259
- <DropdownMenu
260
- defaultOpen
261
- trigger={ <button>Open dropdown</button> }
262
- >
263
- <DropdownMenuItem disabled>
264
- Dropdown menu item
265
- </DropdownMenuItem>
266
- </DropdownMenu>
267
- );
268
-
269
- expect( screen.getByRole( 'menu' ) ).toBeInTheDocument();
270
-
271
- // Clicking a disabled menu item won't close the menu
272
- await click( screen.getByRole( 'menuitem' ) );
273
-
274
- expect( screen.getByRole( 'menu' ) ).toBeInTheDocument();
275
- } );
276
-
277
- it( 'should reveal submenu content when hovering over the submenu trigger', async () => {
278
- render(
279
- <DropdownMenu
280
- defaultOpen
281
- trigger={ <button>Open dropdown</button> }
282
- >
283
- <DropdownMenuItem>Dropdown menu item 1</DropdownMenuItem>
284
- <DropdownMenuItem>Dropdown menu item 2</DropdownMenuItem>
285
- <DropdownMenu
286
- trigger={
287
- <DropdownMenuItem>
288
- Dropdown submenu
289
- </DropdownMenuItem>
290
- }
291
- >
292
- <DropdownMenuItem>
293
- Dropdown submenu item 1
294
- </DropdownMenuItem>
295
- <DropdownMenuItem>
296
- Dropdown submenu item 2
297
- </DropdownMenuItem>
298
- </DropdownMenu>
299
- <DropdownMenuItem>Dropdown menu item 3</DropdownMenuItem>
300
- </DropdownMenu>
301
- );
302
-
303
- // Before hover, submenu items are not rendered
304
- expect(
305
- screen.queryByRole( 'menuitem', {
306
- name: 'Dropdown submenu item 1',
307
- } )
308
- ).not.toBeInTheDocument();
309
-
310
- await hover(
311
- screen.getByRole( 'menuitem', { name: 'Dropdown submenu' } )
312
- );
313
-
314
- // After hover, submenu items are rendered
315
- // Reason for `findByRole`: due to the animation, we've got to wait
316
- // a short amount of time for the submenu to appear
317
- await screen.findByRole( 'menuitem', {
318
- name: 'Dropdown submenu item 1',
319
- } );
320
- } );
321
-
322
- it( 'should navigate menu items and subitems using the arrow, spacebar and enter keys', async () => {
323
- render(
324
- <DropdownMenu
325
- defaultOpen
326
- trigger={ <button>Open dropdown</button> }
327
- >
328
- <DropdownMenuItem>Dropdown menu item 1</DropdownMenuItem>
329
- <DropdownMenuItem>Dropdown menu item 2</DropdownMenuItem>
330
- <DropdownMenu
331
- trigger={
332
- <DropdownMenuItem>
333
- Dropdown submenu
334
- </DropdownMenuItem>
335
- }
336
- >
337
- <DropdownMenuItem>
338
- Dropdown submenu item 1
339
- </DropdownMenuItem>
340
- <DropdownMenuItem>
341
- Dropdown submenu item 2
342
- </DropdownMenuItem>
343
- </DropdownMenu>
344
- <DropdownMenuItem>Dropdown menu item 3</DropdownMenuItem>
345
- </DropdownMenu>
346
- );
347
-
348
- // The menu is focused automatically when `defaultOpen` is set.
349
- await waitFor( () =>
350
- expect( screen.getByRole( 'menu' ) ).toHaveFocus()
351
- );
352
-
353
- // Arrow up/down selects menu items
354
- // The selection wraps around from last to first and viceversa
355
- await press.ArrowDown();
356
- expect(
357
- screen.getByRole( 'menuitem', { name: 'Dropdown menu item 1' } )
358
- ).toHaveFocus();
359
-
360
- await press.ArrowDown();
361
- expect(
362
- screen.getByRole( 'menuitem', { name: 'Dropdown menu item 2' } )
363
- ).toHaveFocus();
364
-
365
- await press.ArrowDown();
366
- expect(
367
- screen.getByRole( 'menuitem', { name: 'Dropdown submenu' } )
368
- ).toHaveFocus();
369
-
370
- await press.ArrowDown();
371
- expect(
372
- screen.getByRole( 'menuitem', { name: 'Dropdown menu item 3' } )
373
- ).toHaveFocus();
374
-
375
- await press.ArrowDown();
376
- expect(
377
- screen.getByRole( 'menuitem', { name: 'Dropdown menu item 1' } )
378
- ).toHaveFocus();
379
-
380
- await press.ArrowUp();
381
- expect(
382
- screen.getByRole( 'menuitem', { name: 'Dropdown menu item 3' } )
383
- ).toHaveFocus();
384
-
385
- await press.ArrowUp();
386
- expect(
387
- screen.getByRole( 'menuitem', { name: 'Dropdown submenu' } )
388
- ).toHaveFocus();
389
-
390
- // Arrow right/left can be used to enter/leave submenus
391
- await press.ArrowRight();
392
- expect(
393
- screen.getByRole( 'menuitem', {
394
- name: 'Dropdown submenu item 1',
395
- } )
396
- ).toHaveFocus();
397
-
398
- await press.ArrowDown();
399
- expect(
400
- screen.getByRole( 'menuitem', {
401
- name: 'Dropdown submenu item 2',
402
- } )
403
- ).toHaveFocus();
404
-
405
- await press.ArrowLeft();
406
- expect(
407
- screen.getByRole( 'menuitem', {
408
- name: 'Dropdown submenu',
409
- } )
410
- ).toHaveFocus();
411
-
412
- // Spacebar or enter key can also be used to enter a submenu
413
- await press.Enter();
414
- expect(
415
- screen.getByRole( 'menuitem', {
416
- name: 'Dropdown submenu item 1',
417
- } )
418
- ).toHaveFocus();
419
-
420
- await press.ArrowLeft();
421
- expect(
422
- screen.getByRole( 'menuitem', {
423
- name: 'Dropdown submenu',
424
- } )
425
- ).toHaveFocus();
426
-
427
- await press.Space();
428
- expect(
429
- screen.getByRole( 'menuitem', {
430
- name: 'Dropdown submenu item 1',
431
- } )
432
- ).toHaveFocus();
433
-
434
- await press.ArrowLeft();
435
- expect(
436
- screen.getByRole( 'menuitem', {
437
- name: 'Dropdown submenu',
438
- } )
439
- ).toHaveFocus();
440
- } );
441
-
442
- it( 'should check radio items and keep the menu open when clicking (controlled)', async () => {
443
- const onRadioValueChangeSpy = jest.fn();
444
-
445
- const ControlledRadioGroup = () => {
446
- const [ radioValue, setRadioValue ] = useState( 'two' );
447
- const onRadioChange: React.ComponentProps<
448
- typeof DropdownMenuRadioItem
449
- >[ 'onChange' ] = ( e ) => {
450
- onRadioValueChangeSpy( e.target.value );
451
- setRadioValue( e.target.value );
452
- };
453
- return (
454
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
455
- <DropdownMenuGroup>
456
- <DropdownMenuRadioItem
457
- name="radio-test"
458
- value="radio-one"
459
- checked={ radioValue === 'radio-one' }
460
- onChange={ onRadioChange }
461
- >
462
- Radio item one
463
- </DropdownMenuRadioItem>
464
- <DropdownMenuRadioItem
465
- name="radio-test"
466
- value="radio-two"
467
- checked={ radioValue === 'radio-two' }
468
- onChange={ onRadioChange }
469
- >
470
- Radio item two
471
- </DropdownMenuRadioItem>
472
- </DropdownMenuGroup>
473
- </DropdownMenu>
474
- );
475
- };
476
-
477
- render( <ControlledRadioGroup /> );
478
-
479
- // Open dropdown
480
- await click(
481
- screen.getByRole( 'button', { name: 'Open dropdown' } )
482
- );
483
-
484
- // No radios should be checked at this point
485
- expect( screen.getAllByRole( 'menuitemradio' ) ).toHaveLength( 2 );
486
- expect(
487
- screen.getByRole( 'menuitemradio', { name: 'Radio item one' } )
488
- ).not.toBeChecked();
489
- expect(
490
- screen.getByRole( 'menuitemradio', { name: 'Radio item two' } )
491
- ).not.toBeChecked();
492
-
493
- // Click first radio item, make sure that the callback fires
494
- await click(
495
- screen.getByRole( 'menuitemradio', { name: 'Radio item one' } )
496
- );
497
- expect( onRadioValueChangeSpy ).toHaveBeenCalledTimes( 1 );
498
- expect( onRadioValueChangeSpy ).toHaveBeenLastCalledWith(
499
- 'radio-one'
500
- );
501
-
502
- // Make sure that first radio is checked
503
- expect(
504
- screen.getByRole( 'menuitemradio', { name: 'Radio item one' } )
505
- ).toBeChecked();
506
- expect(
507
- screen.getByRole( 'menuitemradio', { name: 'Radio item two' } )
508
- ).not.toBeChecked();
509
-
510
- // Click second radio item, make sure that the callback fires
511
- await click(
512
- screen.getByRole( 'menuitemradio', { name: 'Radio item two' } )
513
- );
514
- expect( onRadioValueChangeSpy ).toHaveBeenCalledTimes( 2 );
515
- expect( onRadioValueChangeSpy ).toHaveBeenLastCalledWith(
516
- 'radio-two'
517
- );
518
-
519
- // Make sure that second radio is selected
520
- expect(
521
- screen.getByRole( 'menuitemradio', { name: 'Radio item one' } )
522
- ).not.toBeChecked();
523
- expect(
524
- screen.getByRole( 'menuitemradio', { name: 'Radio item two' } )
525
- ).toBeChecked();
526
- } );
527
-
528
- it( 'should check radio items and keep the menu open when clicking (uncontrolled)', async () => {
529
- const onRadioValueChangeSpy = jest.fn();
530
- render(
531
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
532
- <DropdownMenuGroup>
533
- <DropdownMenuRadioItem
534
- name="radio-test"
535
- value="radio-one"
536
- onChange={ ( e ) =>
537
- onRadioValueChangeSpy( e.target.value )
538
- }
539
- >
540
- Radio item one
541
- </DropdownMenuRadioItem>
542
- <DropdownMenuRadioItem
543
- name="radio-test"
544
- value="radio-two"
545
- defaultChecked
546
- onChange={ ( e ) =>
547
- onRadioValueChangeSpy( e.target.value )
548
- }
549
- >
550
- Radio item two
551
- </DropdownMenuRadioItem>
552
- </DropdownMenuGroup>
553
- </DropdownMenu>
554
- );
555
-
556
- // Open dropdown
557
- await click(
558
- screen.getByRole( 'button', { name: 'Open dropdown' } )
559
- );
560
-
561
- // Radio item two should be checked (`defaultChecked` prop)
562
- expect( screen.getAllByRole( 'menuitemradio' ) ).toHaveLength( 2 );
563
- expect(
564
- screen.getByRole( 'menuitemradio', { name: 'Radio item one' } )
565
- ).not.toBeChecked();
566
- expect(
567
- screen.getByRole( 'menuitemradio', { name: 'Radio item two' } )
568
- ).toBeChecked();
569
-
570
- // Click first radio item, make sure that the callback fires
571
- await click(
572
- screen.getByRole( 'menuitemradio', { name: 'Radio item one' } )
573
- );
574
- expect( onRadioValueChangeSpy ).toHaveBeenCalledTimes( 1 );
575
- expect( onRadioValueChangeSpy ).toHaveBeenLastCalledWith(
576
- 'radio-one'
577
- );
578
-
579
- // Make sure that first radio is checked
580
- expect(
581
- screen.getByRole( 'menuitemradio', { name: 'Radio item one' } )
582
- ).toBeChecked();
583
- expect(
584
- screen.getByRole( 'menuitemradio', { name: 'Radio item two' } )
585
- ).not.toBeChecked();
586
-
587
- // Click second radio item, make sure that the callback fires
588
- await click(
589
- screen.getByRole( 'menuitemradio', { name: 'Radio item two' } )
590
- );
591
- expect( onRadioValueChangeSpy ).toHaveBeenCalledTimes( 2 );
592
- expect( onRadioValueChangeSpy ).toHaveBeenLastCalledWith(
593
- 'radio-two'
594
- );
595
-
596
- // Make sure that second radio is selected
597
- expect(
598
- screen.getByRole( 'menuitemradio', { name: 'Radio item one' } )
599
- ).not.toBeChecked();
600
- expect(
601
- screen.getByRole( 'menuitemradio', { name: 'Radio item two' } )
602
- ).toBeChecked();
603
- } );
604
-
605
- it( 'should check checkbox items and keep the menu open when clicking (controlled)', async () => {
606
- const onCheckboxValueChangeSpy = jest.fn();
607
-
608
- const ControlledRadioGroup = () => {
609
- const [ itemOneChecked, setItemOneChecked ] =
610
- useState< boolean >();
611
- const [ itemTwoChecked, setItemTwoChecked ] =
612
- useState< boolean >();
613
-
614
- return (
615
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
616
- <DropdownMenuCheckboxItem
617
- name="item-one"
618
- value="item-one-value"
619
- checked={ itemOneChecked }
620
- onChange={ ( e ) => {
621
- onCheckboxValueChangeSpy(
622
- e.target.name,
623
- e.target.value,
624
- e.target.checked
625
- );
626
- setItemOneChecked( e.target.checked );
627
- } }
628
- >
629
- Checkbox item one
630
- </DropdownMenuCheckboxItem>
631
-
632
- <DropdownMenuCheckboxItem
633
- name="item-two"
634
- value="item-two-value"
635
- checked={ itemTwoChecked }
636
- onChange={ ( e ) => {
637
- onCheckboxValueChangeSpy(
638
- e.target.name,
639
- e.target.value,
640
- e.target.checked
641
- );
642
- setItemTwoChecked( e.target.checked );
643
- } }
644
- >
645
- Checkbox item two
646
- </DropdownMenuCheckboxItem>
647
- </DropdownMenu>
648
- );
649
- };
650
-
651
- render( <ControlledRadioGroup /> );
652
-
653
- // Open dropdown
654
- await click(
655
- screen.getByRole( 'button', { name: 'Open dropdown' } )
656
- );
657
-
658
- // No checkboxes should be checked at this point
659
- expect( screen.getAllByRole( 'menuitemcheckbox' ) ).toHaveLength(
660
- 2
661
- );
662
- expect(
663
- screen.getByRole( 'menuitemcheckbox', {
664
- name: 'Checkbox item one',
665
- } )
666
- ).not.toBeChecked();
667
- expect(
668
- screen.getByRole( 'menuitemcheckbox', {
669
- name: 'Checkbox item two',
670
- } )
671
- ).not.toBeChecked();
672
-
673
- // Click first checkbox item, make sure that the callback fires
674
- await click(
675
- screen.getByRole( 'menuitemcheckbox', {
676
- name: 'Checkbox item one',
677
- } )
678
- );
679
- expect( onCheckboxValueChangeSpy ).toHaveBeenCalledTimes( 1 );
680
- expect( onCheckboxValueChangeSpy ).toHaveBeenLastCalledWith(
681
- 'item-one',
682
- 'item-one-value',
683
- true
684
- );
685
-
686
- // Make sure that first checkbox is checked
687
- expect(
688
- screen.getByRole( 'menuitemcheckbox', {
689
- name: 'Checkbox item one',
690
- } )
691
- ).toBeChecked();
692
-
693
- // Click second checkbox item, make sure that the callback fires
694
- await click(
695
- screen.getByRole( 'menuitemcheckbox', {
696
- name: 'Checkbox item two',
697
- } )
698
- );
699
- expect( onCheckboxValueChangeSpy ).toHaveBeenCalledTimes( 2 );
700
- expect( onCheckboxValueChangeSpy ).toHaveBeenLastCalledWith(
701
- 'item-two',
702
- 'item-two-value',
703
- true
704
- );
705
-
706
- // Make sure that second checkbox is selected
707
- expect(
708
- screen.getByRole( 'menuitemcheckbox', {
709
- name: 'Checkbox item two',
710
- } )
711
- ).toBeChecked();
712
-
713
- // Click second checkbox item, make sure that the callback fires
714
- await click(
715
- screen.getByRole( 'menuitemcheckbox', {
716
- name: 'Checkbox item two',
717
- } )
718
- );
719
- expect( onCheckboxValueChangeSpy ).toHaveBeenCalledTimes( 3 );
720
- expect( onCheckboxValueChangeSpy ).toHaveBeenLastCalledWith(
721
- 'item-two',
722
- 'item-two-value',
723
- false
724
- );
725
-
726
- // Make sure that second checkbox is unselected
727
- expect(
728
- screen.getByRole( 'menuitemcheckbox', {
729
- name: 'Checkbox item two',
730
- } )
731
- ).not.toBeChecked();
732
- } );
733
-
734
- it( 'should check checkbox items and keep the menu open when clicking (uncontrolled)', async () => {
735
- const onCheckboxValueChangeSpy = jest.fn();
736
-
737
- render(
738
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
739
- <DropdownMenuCheckboxItem
740
- name="item-one"
741
- value="item-one-value"
742
- onChange={ ( e ) => {
743
- onCheckboxValueChangeSpy(
744
- e.target.name,
745
- e.target.value,
746
- e.target.checked
747
- );
748
- } }
749
- >
750
- Checkbox item one
751
- </DropdownMenuCheckboxItem>
752
-
753
- <DropdownMenuCheckboxItem
754
- name="item-two"
755
- value="item-two-value"
756
- defaultChecked
757
- onChange={ ( e ) => {
758
- onCheckboxValueChangeSpy(
759
- e.target.name,
760
- e.target.value,
761
- e.target.checked
762
- );
763
- } }
764
- >
765
- Checkbox item two
766
- </DropdownMenuCheckboxItem>
767
- </DropdownMenu>
768
- );
769
-
770
- // Open dropdown
771
- await click(
772
- screen.getByRole( 'button', { name: 'Open dropdown' } )
773
- );
774
-
775
- // Checkbox item two should be checked (`defaultChecked`)
776
- expect( screen.getAllByRole( 'menuitemcheckbox' ) ).toHaveLength(
777
- 2
778
- );
779
- expect(
780
- screen.getByRole( 'menuitemcheckbox', {
781
- name: 'Checkbox item one',
782
- } )
783
- ).not.toBeChecked();
784
- expect(
785
- screen.getByRole( 'menuitemcheckbox', {
786
- name: 'Checkbox item two',
787
- } )
788
- ).toBeChecked();
789
-
790
- // Click first checkbox item, make sure that the callback fires
791
- await click(
792
- screen.getByRole( 'menuitemcheckbox', {
793
- name: 'Checkbox item one',
794
- } )
795
- );
796
- expect( onCheckboxValueChangeSpy ).toHaveBeenCalledTimes( 1 );
797
- expect( onCheckboxValueChangeSpy ).toHaveBeenLastCalledWith(
798
- 'item-one',
799
- 'item-one-value',
800
- true
801
- );
802
-
803
- // Make sure that first checkbox is checked
804
- expect(
805
- screen.getByRole( 'menuitemcheckbox', {
806
- name: 'Checkbox item one',
807
- } )
808
- ).toBeChecked();
809
-
810
- // Click second checkbox item, make sure that the callback fires
811
- await click(
812
- screen.getByRole( 'menuitemcheckbox', {
813
- name: 'Checkbox item two',
814
- } )
815
- );
816
- expect( onCheckboxValueChangeSpy ).toHaveBeenCalledTimes( 2 );
817
- expect( onCheckboxValueChangeSpy ).toHaveBeenLastCalledWith(
818
- 'item-two',
819
- 'item-two-value',
820
- false
821
- );
822
-
823
- // Make sure that second checkbox is unchecked
824
- expect(
825
- screen.getByRole( 'menuitemcheckbox', {
826
- name: 'Checkbox item two',
827
- } )
828
- ).not.toBeChecked();
829
-
830
- // Click second checkbox item, make sure that the callback fires
831
- await click(
832
- screen.getByRole( 'menuitemcheckbox', {
833
- name: 'Checkbox item two',
834
- } )
835
- );
836
- expect( onCheckboxValueChangeSpy ).toHaveBeenCalledTimes( 3 );
837
- expect( onCheckboxValueChangeSpy ).toHaveBeenLastCalledWith(
838
- 'item-two',
839
- 'item-two-value',
840
- true
841
- );
842
-
843
- // Make sure that second checkbox is unselected
844
- expect(
845
- screen.getByRole( 'menuitemcheckbox', {
846
- name: 'Checkbox item two',
847
- } )
848
- ).toBeChecked();
849
- } );
850
- } );
851
-
852
- describe( 'modality', () => {
853
- it( 'should be modal by default', async () => {
854
- render(
855
- <>
856
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
857
- <DropdownMenuItem>Dropdown menu item</DropdownMenuItem>
858
- </DropdownMenu>
859
- <button>Button outside of dropdown</button>
860
- </>
861
- );
862
-
863
- // Click to open the menu
864
- await click(
865
- screen.getByRole( 'button', {
866
- name: 'Open dropdown',
867
- } )
868
- );
869
-
870
- // DropdownMenu open, focus is on the menu wrapper
871
- expect( screen.getByRole( 'menu' ) ).toHaveFocus();
872
-
873
- expect(
874
- screen.queryByRole( 'button', {
875
- name: 'Button outside of dropdown',
876
- } )
877
- ).not.toBeInTheDocument();
878
- } );
879
-
880
- it( 'should not be modal when the `modal` prop is set to `false`', async () => {
881
- render(
882
- <>
883
- <DropdownMenu
884
- trigger={ <button>Open dropdown</button> }
885
- modal={ false }
886
- >
887
- <DropdownMenuItem>Dropdown menu item</DropdownMenuItem>
888
- </DropdownMenu>
889
- <button>Button outside of dropdown</button>
890
- </>
891
- );
892
-
893
- // Click to open the menu
894
- await click(
895
- screen.getByRole( 'button', {
896
- name: 'Open dropdown',
897
- } )
898
- );
899
-
900
- // DropdownMenu open, focus is on the menu wrapper
901
- expect( screen.getByRole( 'menu' ) ).toHaveFocus();
902
-
903
- // DropdownMenu is not modal, therefore the outer button is part of the
904
- // accessibility tree and can be found.
905
- const outerButton = screen.getByRole( 'button', {
906
- name: 'Button outside of dropdown',
907
- } );
908
-
909
- // The outer button can be focused by pressing tab. Doing so will cause
910
- // the DropdownMenu to close.
911
- await press.Tab();
912
- expect( outerButton ).toBeInTheDocument();
913
- expect( screen.queryByRole( 'menu' ) ).not.toBeInTheDocument();
914
- } );
915
- } );
916
-
917
- describe( 'items prefix and suffix', () => {
918
- it( 'should display a prefix on regular items', async () => {
919
- render(
920
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
921
- <DropdownMenuItem prefix={ <>Item prefix</> }>
922
- Dropdown menu item
923
- </DropdownMenuItem>
924
- </DropdownMenu>
925
- );
926
-
927
- // Click to open the menu
928
- await click(
929
- screen.getByRole( 'button', {
930
- name: 'Open dropdown',
931
- } )
932
- );
933
-
934
- // The contents of the prefix are rendered before the item's children
935
- expect(
936
- screen.getByRole( 'menuitem', {
937
- name: 'Item prefix Dropdown menu item',
938
- } )
939
- ).toBeInTheDocument();
940
- } );
941
-
942
- it( 'should display a suffix on regular items', async () => {
943
- render(
944
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
945
- <DropdownMenuItem suffix={ <>Item suffix</> }>
946
- Dropdown menu item
947
- </DropdownMenuItem>
948
- </DropdownMenu>
949
- );
950
-
951
- // Click to open the menu
952
- await click(
953
- screen.getByRole( 'button', {
954
- name: 'Open dropdown',
955
- } )
956
- );
957
-
958
- // The contents of the suffix are rendered after the item's children
959
- expect(
960
- screen.getByRole( 'menuitem', {
961
- name: 'Dropdown menu item Item suffix',
962
- } )
963
- ).toBeInTheDocument();
964
- } );
965
-
966
- it( 'should display a suffix on radio items', async () => {
967
- render(
968
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
969
- <DropdownMenuRadioItem
970
- name="radio-test"
971
- value="radio-one"
972
- suffix="Radio suffix"
973
- >
974
- Radio item one
975
- </DropdownMenuRadioItem>
976
- </DropdownMenu>
977
- );
978
-
979
- // Click to open the menu
980
- await click(
981
- screen.getByRole( 'button', {
982
- name: 'Open dropdown',
983
- } )
984
- );
985
-
986
- // The contents of the suffix are rendered after the item's children
987
- expect(
988
- screen.getByRole( 'menuitemradio', {
989
- name: 'Radio item one Radio suffix',
990
- } )
991
- ).toBeInTheDocument();
992
- } );
993
-
994
- it( 'should display a suffix on checkbox items', async () => {
995
- render(
996
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
997
- <DropdownMenuCheckboxItem
998
- name="checkbox-test"
999
- value="checkbox-one"
1000
- suffix="Checkbox suffix"
1001
- >
1002
- Checkbox item one
1003
- </DropdownMenuCheckboxItem>
1004
- </DropdownMenu>
1005
- );
1006
-
1007
- // Click to open the menu
1008
- await click(
1009
- screen.getByRole( 'button', {
1010
- name: 'Open dropdown',
1011
- } )
1012
- );
1013
-
1014
- // The contents of the suffix are rendered after the item's children
1015
- expect(
1016
- screen.getByRole( 'menuitemcheckbox', {
1017
- name: 'Checkbox item one Checkbox suffix',
1018
- } )
1019
- ).toBeInTheDocument();
1020
- } );
1021
- } );
1022
-
1023
- describe( 'typeahead', () => {
1024
- it( 'should highlight matching item', async () => {
1025
- render(
1026
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
1027
- <DropdownMenuItem>One</DropdownMenuItem>
1028
- <DropdownMenuItem>Two</DropdownMenuItem>
1029
- </DropdownMenu>
1030
- );
1031
-
1032
- // Click to open the menu
1033
- await click(
1034
- screen.getByRole( 'button', {
1035
- name: 'Open dropdown',
1036
- } )
1037
- );
1038
- expect( screen.getByRole( 'menu' ) ).toHaveFocus();
1039
-
1040
- // Type "tw", it should match and focus the item with content "Two"
1041
- await type( 'tw' );
1042
- expect(
1043
- screen.getByRole( 'menuitem', { name: 'Two' } )
1044
- ).toHaveFocus();
1045
-
1046
- // Wait for the typeahead timer to reset and interpret
1047
- // the next keystrokes as a new search
1048
- await delay( 500 );
1049
-
1050
- // Type "on", it should match and focus the item with content "One"
1051
- await type( 'on' );
1052
- expect(
1053
- screen.getByRole( 'menuitem', { name: 'One' } )
1054
- ).toHaveFocus();
1055
- } );
1056
-
1057
- it( 'should keep previous focus when no matches are found', async () => {
1058
- render(
1059
- <DropdownMenu trigger={ <button>Open dropdown</button> }>
1060
- <DropdownMenuItem>One</DropdownMenuItem>
1061
- <DropdownMenuItem>Two</DropdownMenuItem>
1062
- </DropdownMenu>
1063
- );
1064
-
1065
- // Click to open the menu
1066
- await click(
1067
- screen.getByRole( 'button', {
1068
- name: 'Open dropdown',
1069
- } )
1070
- );
1071
- expect( screen.getByRole( 'menu' ) ).toHaveFocus();
1072
-
1073
- // Type a string that doesn't match any items. Focus shouldn't move.
1074
- await type( 'abc' );
1075
- expect( screen.getByRole( 'menu' ) ).toHaveFocus();
1076
-
1077
- // Wait for the typeahead timer to reset and interpret
1078
- // the next keystrokes as a new search
1079
- await delay( 500 );
1080
-
1081
- // Type "on", it should match and focus the item with content "One"
1082
- await type( 'on' );
1083
- expect(
1084
- screen.getByRole( 'menuitem', { name: 'One' } )
1085
- ).toHaveFocus();
1086
-
1087
- // Wait for the typeahead timer to reset and interpret
1088
- // the next keystrokes as a new search
1089
- await delay( 500 );
1090
-
1091
- // Type a string that doesn't match any items. Focus shouldn't move.
1092
- await type( 'abc' );
1093
- expect(
1094
- screen.getByRole( 'menuitem', { name: 'One' } )
1095
- ).toHaveFocus();
1096
-
1097
- // Wait for the typeahead timer to reset and interpret
1098
- // the next keystrokes as a new search
1099
- await delay( 500 );
1100
-
1101
- // Type "tw", it should match and focus the item with content "Two"
1102
- await type( 'tw' );
1103
- expect(
1104
- screen.getByRole( 'menuitem', { name: 'Two' } )
1105
- ).toHaveFocus();
1106
- } );
1107
- } );
1108
- } );