@wordpress/components 25.7.0 → 25.8.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 (607) hide show
  1. package/CHANGELOG.md +55 -1
  2. package/build/animation/index.js +6 -0
  3. package/build/animation/index.js.map +1 -1
  4. package/build/border-control/border-control-dropdown/component.js +1 -1
  5. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  6. package/build/border-control/styles.js +20 -20
  7. package/build/border-control/styles.js.map +1 -1
  8. package/build/box-control/unit-control.js +1 -1
  9. package/build/box-control/unit-control.js.map +1 -1
  10. package/build/button/index.js +9 -1
  11. package/build/button/index.js.map +1 -1
  12. package/build/button/types.js.map +1 -1
  13. package/build/circular-option-picker/circular-option-picker-actions.js +53 -0
  14. package/build/circular-option-picker/circular-option-picker-actions.js.map +1 -0
  15. package/build/circular-option-picker/circular-option-picker-context.js +14 -0
  16. package/build/circular-option-picker/circular-option-picker-context.js.map +1 -0
  17. package/build/circular-option-picker/circular-option-picker-option-group.js +26 -0
  18. package/build/circular-option-picker/circular-option-picker-option-group.js.map +1 -0
  19. package/build/circular-option-picker/circular-option-picker-option.js +122 -0
  20. package/build/circular-option-picker/circular-option-picker-option.js.map +1 -0
  21. package/build/circular-option-picker/circular-option-picker.js +172 -0
  22. package/build/circular-option-picker/circular-option-picker.js.map +1 -0
  23. package/build/circular-option-picker/index.js +29 -137
  24. package/build/circular-option-picker/index.js.map +1 -1
  25. package/build/circular-option-picker/types.js.map +1 -1
  26. package/build/color-palette/index.js +58 -19
  27. package/build/color-palette/index.js.map +1 -1
  28. package/build/color-palette/types.js.map +1 -1
  29. package/build/combobox-control/index.js +0 -3
  30. package/build/combobox-control/index.js.map +1 -1
  31. package/build/composite/index.js.map +1 -1
  32. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  33. package/build/date-time/time/timezone.js +1 -1
  34. package/build/date-time/time/timezone.js.map +1 -1
  35. package/build/dropdown/index.js +11 -23
  36. package/build/dropdown/index.js.map +1 -1
  37. package/build/dropdown/types.js.map +1 -1
  38. package/build/dropdown-menu/index.js +7 -1
  39. package/build/dropdown-menu/index.js.map +1 -1
  40. package/build/dropdown-menu/types.js.map +1 -1
  41. package/build/dropdown-menu-v2/styles.js +16 -16
  42. package/build/dropdown-menu-v2/styles.js.map +1 -1
  43. package/build/duotone-picker/color-list-picker/index.js +18 -3
  44. package/build/duotone-picker/color-list-picker/index.js.map +1 -1
  45. package/build/duotone-picker/duotone-picker.js +33 -1
  46. package/build/duotone-picker/duotone-picker.js.map +1 -1
  47. package/build/duotone-picker/types.js.map +1 -1
  48. package/build/focusable-iframe/index.js +0 -4
  49. package/build/focusable-iframe/index.js.map +1 -1
  50. package/build/focusable-iframe/types.js +6 -0
  51. package/build/focusable-iframe/types.js.map +1 -0
  52. package/build/form-token-field/index.js +6 -2
  53. package/build/form-token-field/index.js.map +1 -1
  54. package/build/form-token-field/types.js.map +1 -1
  55. package/build/gradient-picker/index.js +57 -15
  56. package/build/gradient-picker/index.js.map +1 -1
  57. package/build/gradient-picker/types.js.map +1 -1
  58. package/build/higher-order/navigate-regions/index.js.map +1 -1
  59. package/build/higher-order/with-focus-outside/index.js +1 -2
  60. package/build/higher-order/with-focus-outside/index.js.map +1 -1
  61. package/build/higher-order/with-spoken-messages/index.js.map +1 -1
  62. package/build/index.js +6 -0
  63. package/build/index.js.map +1 -1
  64. package/build/input-control/styles/input-control-styles.js +22 -22
  65. package/build/input-control/styles/input-control-styles.js.map +1 -1
  66. package/build/mobile/bottom-sheet/index.native.js +1 -0
  67. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  68. package/build/mobile/global-styles-context/index.native.js.map +1 -1
  69. package/build/navigation/use-navigation-tree-nodes.js.map +1 -1
  70. package/build/notice/index.js +19 -7
  71. package/build/notice/index.js.map +1 -1
  72. package/build/palette-edit/styles.js +10 -10
  73. package/build/palette-edit/styles.js.map +1 -1
  74. package/build/placeholder/index.js.map +1 -1
  75. package/build/popover/index.js +37 -83
  76. package/build/popover/index.js.map +1 -1
  77. package/build/popover/types.js.map +1 -1
  78. package/build/popover/utils.js +9 -41
  79. package/build/popover/utils.js.map +1 -1
  80. package/build/search-control/index.js +12 -3
  81. package/build/search-control/index.js.map +1 -1
  82. package/build/search-control/types.js.map +1 -1
  83. package/build/text/styles.js +7 -7
  84. package/build/text/styles.js.map +1 -1
  85. package/build/toggle-group-control/toggle-group-control/as-button-group.js +30 -45
  86. package/build/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -1
  87. package/build/toggle-group-control/toggle-group-control/as-radio-group.js +40 -41
  88. package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  89. package/build/toggle-group-control/toggle-group-control/component.js +10 -5
  90. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  91. package/build/toggle-group-control/toggle-group-control/styles.js +9 -16
  92. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  93. package/build/toggle-group-control/toggle-group-control/utils.js +44 -0
  94. package/build/toggle-group-control/toggle-group-control/utils.js.map +1 -0
  95. package/build/toggle-group-control/toggle-group-control-option-base/component.js +36 -17
  96. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  97. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +10 -8
  98. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  99. package/build/toggle-group-control/types.js.map +1 -1
  100. package/build/toolbar/toolbar/index.js +7 -1
  101. package/build/toolbar/toolbar/index.js.map +1 -1
  102. package/build/toolbar/toolbar-dropdown-menu/index.js +1 -3
  103. package/build/toolbar/toolbar-dropdown-menu/index.js.map +1 -1
  104. package/build/toolbar/toolbar-group/index.js +16 -12
  105. package/build/toolbar/toolbar-group/index.js.map +1 -1
  106. package/build/toolbar/toolbar-group/toolbar-group-collapsed.js +0 -2
  107. package/build/toolbar/toolbar-group/toolbar-group-collapsed.js.map +1 -1
  108. package/build/toolbar/toolbar-group/toolbar-group-container.js +3 -1
  109. package/build/toolbar/toolbar-group/toolbar-group-container.js.map +1 -1
  110. package/build/toolbar/toolbar-group/types.js +6 -0
  111. package/build/toolbar/toolbar-group/types.js.map +1 -0
  112. package/build/toolbar/toolbar-item/index.js +1 -1
  113. package/build/toolbar/toolbar-item/index.js.map +1 -1
  114. package/build/tooltip/index.js +51 -225
  115. package/build/tooltip/index.js.map +1 -1
  116. package/build/tooltip/types.js +6 -0
  117. package/build/tooltip/types.js.map +1 -0
  118. package/build/ui/context/context-connect.js.map +1 -1
  119. package/build/ui/context/wordpress-component.js.map +1 -1
  120. package/build/unit-control/index.js.map +1 -1
  121. package/build/unit-control/styles/unit-control-styles.js +7 -7
  122. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  123. package/build/utils/colors-values.js +1 -1
  124. package/build/utils/colors-values.js.map +1 -1
  125. package/build/utils/use-deprecated-props.js.map +1 -1
  126. package/build-module/animation/index.js +1 -1
  127. package/build-module/animation/index.js.map +1 -1
  128. package/build-module/border-control/border-control-dropdown/component.js +1 -1
  129. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  130. package/build-module/border-control/styles.js +20 -20
  131. package/build-module/border-control/styles.js.map +1 -1
  132. package/build-module/box-control/unit-control.js +1 -1
  133. package/build-module/box-control/unit-control.js.map +1 -1
  134. package/build-module/button/index.js +9 -1
  135. package/build-module/button/index.js.map +1 -1
  136. package/build-module/button/types.js.map +1 -1
  137. package/build-module/circular-option-picker/circular-option-picker-actions.js +44 -0
  138. package/build-module/circular-option-picker/circular-option-picker-actions.js.map +1 -0
  139. package/build-module/circular-option-picker/circular-option-picker-context.js +11 -0
  140. package/build-module/circular-option-picker/circular-option-picker-context.js.map +1 -0
  141. package/build-module/circular-option-picker/circular-option-picker-option-group.js +23 -0
  142. package/build-module/circular-option-picker/circular-option-picker-option-group.js.map +1 -0
  143. package/build-module/circular-option-picker/circular-option-picker-option.js +114 -0
  144. package/build-module/circular-option-picker/circular-option-picker-option.js.map +1 -0
  145. package/build-module/circular-option-picker/circular-option-picker.js +165 -0
  146. package/build-module/circular-option-picker/circular-option-picker.js.map +1 -0
  147. package/build-module/circular-option-picker/index.js +4 -132
  148. package/build-module/circular-option-picker/index.js.map +1 -1
  149. package/build-module/circular-option-picker/types.js.map +1 -1
  150. package/build-module/color-palette/index.js +58 -19
  151. package/build-module/color-palette/index.js.map +1 -1
  152. package/build-module/color-palette/types.js.map +1 -1
  153. package/build-module/combobox-control/index.js +0 -3
  154. package/build-module/combobox-control/index.js.map +1 -1
  155. package/build-module/composite/index.js +2 -0
  156. package/build-module/composite/index.js.map +1 -1
  157. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  158. package/build-module/date-time/time/timezone.js +1 -1
  159. package/build-module/date-time/time/timezone.js.map +1 -1
  160. package/build-module/dropdown/index.js +12 -24
  161. package/build-module/dropdown/index.js.map +1 -1
  162. package/build-module/dropdown/types.js.map +1 -1
  163. package/build-module/dropdown-menu/index.js +7 -1
  164. package/build-module/dropdown-menu/index.js.map +1 -1
  165. package/build-module/dropdown-menu/types.js.map +1 -1
  166. package/build-module/dropdown-menu-v2/styles.js +16 -16
  167. package/build-module/dropdown-menu-v2/styles.js.map +1 -1
  168. package/build-module/duotone-picker/color-list-picker/index.js +18 -3
  169. package/build-module/duotone-picker/color-list-picker/index.js.map +1 -1
  170. package/build-module/duotone-picker/duotone-picker.js +33 -1
  171. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  172. package/build-module/duotone-picker/types.js.map +1 -1
  173. package/build-module/focusable-iframe/index.js +2 -3
  174. package/build-module/focusable-iframe/index.js.map +1 -1
  175. package/build-module/focusable-iframe/types.js +2 -0
  176. package/build-module/focusable-iframe/types.js.map +1 -0
  177. package/build-module/form-token-field/index.js +6 -2
  178. package/build-module/form-token-field/index.js.map +1 -1
  179. package/build-module/form-token-field/types.js.map +1 -1
  180. package/build-module/gradient-picker/index.js +57 -15
  181. package/build-module/gradient-picker/index.js.map +1 -1
  182. package/build-module/gradient-picker/types.js.map +1 -1
  183. package/build-module/higher-order/navigate-regions/index.js.map +1 -1
  184. package/build-module/higher-order/with-focus-outside/index.js +1 -3
  185. package/build-module/higher-order/with-focus-outside/index.js.map +1 -1
  186. package/build-module/higher-order/with-spoken-messages/index.js.map +1 -1
  187. package/build-module/index.js +1 -1
  188. package/build-module/index.js.map +1 -1
  189. package/build-module/input-control/styles/input-control-styles.js +23 -23
  190. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  191. package/build-module/mobile/bottom-sheet/index.native.js +1 -0
  192. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  193. package/build-module/mobile/global-styles-context/index.native.js.map +1 -1
  194. package/build-module/navigation/use-navigation-tree-nodes.js.map +1 -1
  195. package/build-module/notice/index.js +19 -7
  196. package/build-module/notice/index.js.map +1 -1
  197. package/build-module/palette-edit/styles.js +10 -10
  198. package/build-module/palette-edit/styles.js.map +1 -1
  199. package/build-module/placeholder/index.js.map +1 -1
  200. package/build-module/popover/index.js +38 -84
  201. package/build-module/popover/index.js.map +1 -1
  202. package/build-module/popover/types.js.map +1 -1
  203. package/build-module/popover/utils.js +8 -39
  204. package/build-module/popover/utils.js.map +1 -1
  205. package/build-module/search-control/index.js +12 -3
  206. package/build-module/search-control/index.js.map +1 -1
  207. package/build-module/search-control/types.js.map +1 -1
  208. package/build-module/text/styles.js +7 -7
  209. package/build-module/text/styles.js.map +1 -1
  210. package/build-module/toggle-group-control/toggle-group-control/as-button-group.js +32 -47
  211. package/build-module/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -1
  212. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +41 -42
  213. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  214. package/build-module/toggle-group-control/toggle-group-control/component.js +10 -6
  215. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  216. package/build-module/toggle-group-control/toggle-group-control/styles.js +8 -14
  217. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  218. package/build-module/toggle-group-control/toggle-group-control/utils.js +42 -0
  219. package/build-module/toggle-group-control/toggle-group-control/utils.js.map +1 -0
  220. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +35 -16
  221. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  222. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +8 -7
  223. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  224. package/build-module/toggle-group-control/types.js.map +1 -1
  225. package/build-module/toolbar/toolbar/index.js +7 -1
  226. package/build-module/toolbar/toolbar/index.js.map +1 -1
  227. package/build-module/toolbar/toolbar-dropdown-menu/index.js +5 -3
  228. package/build-module/toolbar/toolbar-dropdown-menu/index.js.map +1 -1
  229. package/build-module/toolbar/toolbar-group/index.js +15 -12
  230. package/build-module/toolbar/toolbar-group/index.js.map +1 -1
  231. package/build-module/toolbar/toolbar-group/toolbar-group-collapsed.js +0 -2
  232. package/build-module/toolbar/toolbar-group/toolbar-group-collapsed.js.map +1 -1
  233. package/build-module/toolbar/toolbar-group/toolbar-group-container.js +3 -1
  234. package/build-module/toolbar/toolbar-group/toolbar-group-container.js.map +1 -1
  235. package/build-module/toolbar/toolbar-group/types.js +2 -0
  236. package/build-module/toolbar/toolbar-group/types.js.map +1 -0
  237. package/build-module/toolbar/toolbar-item/index.js +1 -1
  238. package/build-module/toolbar/toolbar-item/index.js.map +1 -1
  239. package/build-module/tooltip/index.js +53 -224
  240. package/build-module/tooltip/index.js.map +1 -1
  241. package/build-module/tooltip/types.js +2 -0
  242. package/build-module/tooltip/types.js.map +1 -0
  243. package/build-module/ui/context/context-connect.js.map +1 -1
  244. package/build-module/ui/context/wordpress-component.js.map +1 -1
  245. package/build-module/unit-control/index.js.map +1 -1
  246. package/build-module/unit-control/styles/unit-control-styles.js +7 -7
  247. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  248. package/build-module/utils/colors-values.js +1 -1
  249. package/build-module/utils/colors-values.js.map +1 -1
  250. package/build-module/utils/use-deprecated-props.js.map +1 -1
  251. package/build-style/style-rtl.css +35 -63
  252. package/build-style/style.css +35 -63
  253. package/build-types/animation/index.d.ts +1 -1
  254. package/build-types/animation/index.d.ts.map +1 -1
  255. package/build-types/base-control/hooks.d.ts +1 -1
  256. package/build-types/border-box-control/border-box-control/component.d.ts +1 -1
  257. package/build-types/border-box-control/border-box-control/hook.d.ts +46 -46
  258. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +51 -51
  259. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +1 -1
  260. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +46 -46
  261. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +46 -46
  262. package/build-types/border-box-control/stories/index.story.d.ts +2 -2
  263. package/build-types/border-control/border-control/hook.d.ts +45 -45
  264. package/build-types/border-control/border-control-dropdown/hook.d.ts +45 -45
  265. package/build-types/border-control/border-control-style-picker/hook.d.ts +45 -45
  266. package/build-types/border-control/stories/index.story.d.ts +6 -6
  267. package/build-types/box-control/styles/box-control-styles.d.ts +1 -1
  268. package/build-types/button/deprecated.d.ts +16 -22
  269. package/build-types/button/deprecated.d.ts.map +1 -1
  270. package/build-types/button/index.d.ts.map +1 -1
  271. package/build-types/button/types.d.ts +0 -4
  272. package/build-types/button/types.d.ts.map +1 -1
  273. package/build-types/card/card/hook.d.ts +46 -46
  274. package/build-types/card/card-body/hook.d.ts +46 -46
  275. package/build-types/card/card-divider/hook.d.ts +47 -47
  276. package/build-types/card/card-footer/hook.d.ts +46 -46
  277. package/build-types/card/card-header/hook.d.ts +46 -46
  278. package/build-types/card/card-media/hook.d.ts +46 -46
  279. package/build-types/card/stories/index.story.d.ts +2 -2
  280. package/build-types/circular-option-picker/circular-option-picker-actions.d.ts +7 -0
  281. package/build-types/circular-option-picker/circular-option-picker-actions.d.ts.map +1 -0
  282. package/build-types/circular-option-picker/circular-option-picker-context.d.ts +7 -0
  283. package/build-types/circular-option-picker/circular-option-picker-context.d.ts.map +1 -0
  284. package/build-types/circular-option-picker/circular-option-picker-option-group.d.ts +7 -0
  285. package/build-types/circular-option-picker/circular-option-picker-option-group.d.ts.map +1 -0
  286. package/build-types/circular-option-picker/circular-option-picker-option.d.ts +4 -0
  287. package/build-types/circular-option-picker/circular-option-picker-option.d.ts.map +1 -0
  288. package/build-types/circular-option-picker/circular-option-picker.d.ts +11 -0
  289. package/build-types/circular-option-picker/circular-option-picker.d.ts.map +1 -0
  290. package/build-types/circular-option-picker/index.d.ts +5 -56
  291. package/build-types/circular-option-picker/index.d.ts.map +1 -1
  292. package/build-types/circular-option-picker/stories/index.story.d.ts +3 -1
  293. package/build-types/circular-option-picker/stories/index.story.d.ts.map +1 -1
  294. package/build-types/circular-option-picker/test/index.d.ts +2 -0
  295. package/build-types/circular-option-picker/test/index.d.ts.map +1 -0
  296. package/build-types/circular-option-picker/types.d.ts +53 -1
  297. package/build-types/circular-option-picker/types.d.ts.map +1 -1
  298. package/build-types/color-palette/index.d.ts +3 -19
  299. package/build-types/color-palette/index.d.ts.map +1 -1
  300. package/build-types/color-palette/stories/index.story.d.ts +3 -36
  301. package/build-types/color-palette/stories/index.story.d.ts.map +1 -1
  302. package/build-types/color-palette/styles.d.ts +1 -1
  303. package/build-types/color-palette/types.d.ts +31 -1
  304. package/build-types/color-palette/types.d.ts.map +1 -1
  305. package/build-types/color-picker/component.d.ts +1 -1
  306. package/build-types/color-picker/stories/index.story.d.ts +1 -1
  307. package/build-types/color-picker/styles.d.ts +6 -6
  308. package/build-types/combobox-control/index.d.ts.map +1 -1
  309. package/build-types/combobox-control/stories/index.story.d.ts +2 -2
  310. package/build-types/composite/index.d.ts +14 -1
  311. package/build-types/composite/index.d.ts.map +1 -1
  312. package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts +2 -2
  313. package/build-types/date-time/date/styles.d.ts +3 -3
  314. package/build-types/date-time/date-time/styles.d.ts +2 -2
  315. package/build-types/date-time/time/styles.d.ts +12 -12
  316. package/build-types/dropdown/index.d.ts.map +1 -1
  317. package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
  318. package/build-types/dropdown/types.d.ts +12 -4
  319. package/build-types/dropdown/types.d.ts.map +1 -1
  320. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  321. package/build-types/dropdown-menu/stories/index.story.d.ts.map +1 -1
  322. package/build-types/dropdown-menu/types.d.ts +22 -5
  323. package/build-types/dropdown-menu/types.d.ts.map +1 -1
  324. package/build-types/duotone-picker/color-list-picker/index.d.ts.map +1 -1
  325. package/build-types/duotone-picker/duotone-picker.d.ts +1 -1
  326. package/build-types/duotone-picker/duotone-picker.d.ts.map +1 -1
  327. package/build-types/duotone-picker/types.d.ts +31 -1
  328. package/build-types/duotone-picker/types.d.ts.map +1 -1
  329. package/build-types/elevation/hook.d.ts +46 -46
  330. package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
  331. package/build-types/flex/flex/hook.d.ts +46 -46
  332. package/build-types/flex/flex-block/hook.d.ts +46 -46
  333. package/build-types/flex/flex-item/hook.d.ts +46 -46
  334. package/build-types/focal-point-picker/stories/index.story.d.ts +8 -8
  335. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +1 -1
  336. package/build-types/focusable-iframe/index.d.ts +4 -5
  337. package/build-types/focusable-iframe/index.d.ts.map +1 -1
  338. package/build-types/focusable-iframe/types.d.ts +8 -0
  339. package/build-types/focusable-iframe/types.d.ts.map +1 -0
  340. package/build-types/font-size-picker/styles.d.ts +2 -2
  341. package/build-types/form-token-field/index.d.ts.map +1 -1
  342. package/build-types/form-token-field/types.d.ts +6 -0
  343. package/build-types/form-token-field/types.d.ts.map +1 -1
  344. package/build-types/gradient-picker/index.d.ts +1 -1
  345. package/build-types/gradient-picker/index.d.ts.map +1 -1
  346. package/build-types/gradient-picker/stories/index.story.d.ts +3 -36
  347. package/build-types/gradient-picker/stories/index.story.d.ts.map +1 -1
  348. package/build-types/gradient-picker/types.d.ts +31 -1
  349. package/build-types/gradient-picker/types.d.ts.map +1 -1
  350. package/build-types/grid/hook.d.ts +46 -46
  351. package/build-types/h-stack/component.d.ts +1 -1
  352. package/build-types/h-stack/hook.d.ts +46 -46
  353. package/build-types/heading/hook.d.ts +45 -45
  354. package/build-types/higher-order/navigate-regions/index.d.ts.map +1 -1
  355. package/build-types/higher-order/with-focus-outside/index.d.ts +1 -0
  356. package/build-types/higher-order/with-focus-outside/index.d.ts.map +1 -1
  357. package/build-types/higher-order/with-focus-outside/test/index.d.ts +2 -0
  358. package/build-types/higher-order/with-focus-outside/test/index.d.ts.map +1 -0
  359. package/build-types/higher-order/with-spoken-messages/index.d.ts.map +1 -1
  360. package/build-types/index.d.ts +1 -1
  361. package/build-types/index.d.ts.map +1 -1
  362. package/build-types/isolated-event-container/test/index.d.ts +2 -0
  363. package/build-types/isolated-event-container/test/index.d.ts.map +1 -0
  364. package/build-types/item-group/item/hook.d.ts +46 -46
  365. package/build-types/item-group/item-group/hook.d.ts +46 -46
  366. package/build-types/menu-item/index.d.ts +1 -1
  367. package/build-types/menu-item/stories/index.story.d.ts +4 -4
  368. package/build-types/navigable-container/menu.d.ts +1 -1
  369. package/build-types/navigation/back-button/index.d.ts +1 -1
  370. package/build-types/navigation/styles/navigation-styles.d.ts +5 -3
  371. package/build-types/navigation/styles/navigation-styles.d.ts.map +1 -1
  372. package/build-types/navigator/navigator-back-button/component.d.ts +2 -3
  373. package/build-types/navigator/navigator-back-button/component.d.ts.map +1 -1
  374. package/build-types/navigator/navigator-back-button/hook.d.ts +53 -54
  375. package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
  376. package/build-types/navigator/navigator-button/component.d.ts +2 -3
  377. package/build-types/navigator/navigator-button/component.d.ts.map +1 -1
  378. package/build-types/navigator/navigator-button/hook.d.ts +53 -54
  379. package/build-types/navigator/navigator-button/hook.d.ts.map +1 -1
  380. package/build-types/navigator/navigator-to-parent-button/component.d.ts +2 -3
  381. package/build-types/navigator/navigator-to-parent-button/component.d.ts.map +1 -1
  382. package/build-types/notice/index.d.ts.map +1 -1
  383. package/build-types/number-control/index.d.ts +3 -3
  384. package/build-types/number-control/stories/index.story.d.ts +3 -3
  385. package/build-types/palette-edit/styles.d.ts +4 -4
  386. package/build-types/palette-edit/styles.d.ts.map +1 -1
  387. package/build-types/placeholder/index.d.ts.map +1 -1
  388. package/build-types/popover/index.d.ts +1 -1
  389. package/build-types/popover/index.d.ts.map +1 -1
  390. package/build-types/popover/overlay-middlewares.d.ts +1 -1
  391. package/build-types/popover/stories/e2e/index.story.d.ts +1 -1
  392. package/build-types/popover/types.d.ts +0 -4
  393. package/build-types/popover/types.d.ts.map +1 -1
  394. package/build-types/popover/utils.d.ts +2 -6
  395. package/build-types/popover/utils.d.ts.map +1 -1
  396. package/build-types/range-control/index.d.ts +1 -1
  397. package/build-types/range-control/styles/range-control-styles.d.ts +3 -3
  398. package/build-types/resizable-box/index.d.ts +1 -1
  399. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  400. package/build-types/resizable-box/resize-tooltip/label.d.ts +1 -1
  401. package/build-types/resizable-box/stories/index.story.d.ts +2 -2
  402. package/build-types/scrollable/hook.d.ts +46 -46
  403. package/build-types/search-control/index.d.ts +4 -2
  404. package/build-types/search-control/index.d.ts.map +1 -1
  405. package/build-types/search-control/stories/index.story.d.ts +8 -4
  406. package/build-types/search-control/stories/index.story.d.ts.map +1 -1
  407. package/build-types/search-control/types.d.ts +12 -0
  408. package/build-types/search-control/types.d.ts.map +1 -1
  409. package/build-types/spacer/hook.d.ts +46 -46
  410. package/build-types/spinner/index.d.ts +1 -1
  411. package/build-types/surface/hook.d.ts +46 -46
  412. package/build-types/text/hook.d.ts +46 -46
  413. package/build-types/text/styles.d.ts.map +1 -1
  414. package/build-types/text-control/index.d.ts +3 -3
  415. package/build-types/toggle-control/stories/index.story.d.ts +2 -2
  416. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +2 -4
  417. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts.map +1 -1
  418. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +2 -4
  419. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
  420. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +2 -2
  421. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  422. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +1 -5
  423. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  424. package/build-types/toggle-group-control/toggle-group-control/utils.d.ts +18 -0
  425. package/build-types/toggle-group-control/toggle-group-control/utils.d.ts.map +1 -0
  426. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +1 -1
  427. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts +5 -1
  428. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  429. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +1 -0
  430. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  431. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  432. package/build-types/toggle-group-control/types.d.ts +13 -24
  433. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  434. package/build-types/toolbar/stories/index.story.d.ts.map +1 -1
  435. package/build-types/toolbar/toolbar/index.d.ts.map +1 -1
  436. package/build-types/toolbar/toolbar-button/index.d.ts +16 -22
  437. package/build-types/toolbar/toolbar-button/index.d.ts.map +1 -1
  438. package/build-types/toolbar/toolbar-dropdown-menu/index.d.ts +3 -1
  439. package/build-types/toolbar/toolbar-dropdown-menu/index.d.ts.map +1 -1
  440. package/build-types/toolbar/toolbar-group/index.d.ts +10 -14
  441. package/build-types/toolbar/toolbar-group/index.d.ts.map +1 -1
  442. package/build-types/toolbar/toolbar-group/toolbar-group-collapsed.d.ts +3 -5
  443. package/build-types/toolbar/toolbar-group/toolbar-group-collapsed.d.ts.map +1 -1
  444. package/build-types/toolbar/toolbar-group/toolbar-group-container.d.ts +7 -5
  445. package/build-types/toolbar/toolbar-group/toolbar-group-container.d.ts.map +1 -1
  446. package/build-types/toolbar/toolbar-group/types.d.ts +77 -0
  447. package/build-types/toolbar/toolbar-group/types.d.ts.map +1 -0
  448. package/build-types/toolbar/toolbar-item/index.d.ts.map +1 -1
  449. package/build-types/tools-panel/tools-panel/hook.d.ts +46 -46
  450. package/build-types/tools-panel/tools-panel-header/hook.d.ts +46 -46
  451. package/build-types/tools-panel/tools-panel-item/hook.d.ts +46 -46
  452. package/build-types/tooltip/index.d.ts +8 -5
  453. package/build-types/tooltip/index.d.ts.map +1 -1
  454. package/build-types/tooltip/stories/index.story.d.ts +13 -0
  455. package/build-types/tooltip/stories/index.story.d.ts.map +1 -0
  456. package/build-types/tooltip/test/index.d.ts +2 -0
  457. package/build-types/tooltip/test/index.d.ts.map +1 -0
  458. package/build-types/tooltip/test/utils/index.d.ts +11 -0
  459. package/build-types/tooltip/test/utils/index.d.ts.map +1 -0
  460. package/build-types/tooltip/types.d.ts +61 -0
  461. package/build-types/tooltip/types.d.ts.map +1 -0
  462. package/build-types/truncate/hook.d.ts +46 -46
  463. package/build-types/ui/tooltip/content.d.ts +1 -1
  464. package/build-types/unit-control/index.d.ts +1 -1
  465. package/build-types/unit-control/index.d.ts.map +1 -1
  466. package/build-types/unit-control/styles/unit-control-styles.d.ts +3 -3
  467. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  468. package/build-types/unit-control/unit-select-control.d.ts +1 -1
  469. package/build-types/utils/use-deprecated-props.d.ts +1 -1
  470. package/build-types/v-stack/component.d.ts +1 -1
  471. package/build-types/v-stack/hook.d.ts +46 -46
  472. package/build-types/v-stack/stories/index.story.d.ts +2 -2
  473. package/package.json +19 -19
  474. package/src/animation/index.tsx +1 -0
  475. package/src/border-control/border-control/README.md +2 -2
  476. package/src/border-control/border-control-dropdown/component.tsx +1 -1
  477. package/src/border-control/styles.ts +7 -7
  478. package/src/border-control/test/index.js +79 -69
  479. package/src/box-control/unit-control.tsx +1 -1
  480. package/src/button/README.md +0 -6
  481. package/src/button/index.tsx +9 -1
  482. package/src/button/test/index.tsx +19 -0
  483. package/src/button/types.ts +0 -4
  484. package/src/circular-option-picker/README.md +14 -0
  485. package/src/circular-option-picker/circular-option-picker-actions.tsx +60 -0
  486. package/src/circular-option-picker/circular-option-picker-context.tsx +12 -0
  487. package/src/circular-option-picker/circular-option-picker-option-group.tsx +34 -0
  488. package/src/circular-option-picker/circular-option-picker-option.tsx +139 -0
  489. package/src/circular-option-picker/circular-option-picker.tsx +202 -0
  490. package/src/circular-option-picker/index.tsx +7 -174
  491. package/src/circular-option-picker/stories/index.story.tsx +34 -9
  492. package/src/circular-option-picker/style.scss +11 -7
  493. package/src/circular-option-picker/test/index.tsx +133 -0
  494. package/src/circular-option-picker/types.ts +64 -1
  495. package/src/color-palette/README.md +14 -0
  496. package/src/color-palette/index.tsx +69 -28
  497. package/src/color-palette/stories/index.story.tsx +16 -2
  498. package/src/color-palette/test/index.tsx +32 -30
  499. package/src/color-palette/types.ts +34 -1
  500. package/src/combobox-control/index.tsx +7 -5
  501. package/src/composite/{index.js → index.ts} +3 -0
  502. package/src/confirm-dialog/stories/index.story.js +13 -14
  503. package/src/confirm-dialog/test/index.js +10 -18
  504. package/src/custom-gradient-picker/gradient-bar/control-points.tsx +1 -1
  505. package/src/custom-gradient-picker/gradient-bar/test/utils.ts +5 -5
  506. package/src/date-time/time/timezone.tsx +1 -1
  507. package/src/dropdown/README.md +13 -3
  508. package/src/dropdown/index.tsx +16 -34
  509. package/src/dropdown/stories/index.story.tsx +10 -7
  510. package/src/dropdown/types.ts +12 -4
  511. package/src/dropdown-menu/README.md +18 -0
  512. package/src/dropdown-menu/index.tsx +8 -1
  513. package/src/dropdown-menu/stories/index.story.tsx +5 -0
  514. package/src/dropdown-menu/types.ts +23 -6
  515. package/src/dropdown-menu-v2/styles.ts +1 -1
  516. package/src/duotone-picker/README.md +14 -0
  517. package/src/duotone-picker/color-list-picker/index.tsx +28 -12
  518. package/src/duotone-picker/duotone-picker.tsx +33 -0
  519. package/src/duotone-picker/types.ts +34 -1
  520. package/src/focusable-iframe/{index.js → index.tsx} +7 -4
  521. package/src/focusable-iframe/types.ts +9 -0
  522. package/src/form-token-field/README.md +1 -0
  523. package/src/form-token-field/index.tsx +5 -1
  524. package/src/form-token-field/style.scss +5 -9
  525. package/src/form-token-field/test/index.tsx +36 -1
  526. package/src/form-token-field/types.ts +7 -1
  527. package/src/gradient-picker/README.md +14 -0
  528. package/src/gradient-picker/index.tsx +60 -11
  529. package/src/gradient-picker/types.ts +34 -1
  530. package/src/higher-order/navigate-regions/index.tsx +5 -6
  531. package/src/higher-order/with-filters/test/index.tsx +36 -43
  532. package/src/higher-order/with-focus-outside/{index.js → index.tsx} +8 -5
  533. package/src/higher-order/with-focus-outside/test/{index.js → index.tsx} +13 -11
  534. package/src/higher-order/with-notices/test/index.tsx +1 -1
  535. package/src/higher-order/with-spoken-messages/index.tsx +7 -8
  536. package/src/index.ts +5 -1
  537. package/src/input-control/styles/input-control-styles.tsx +2 -2
  538. package/src/isolated-event-container/test/{index.js → index.tsx} +1 -1
  539. package/src/mobile/bottom-sheet/index.native.js +1 -0
  540. package/src/mobile/global-styles-context/index.native.js +7 -8
  541. package/src/modal/test/index.tsx +107 -0
  542. package/src/navigation/use-navigation-tree-nodes.tsx +1 -1
  543. package/src/notice/index.tsx +18 -6
  544. package/src/notice/style.scss +0 -1
  545. package/src/notice/test/__snapshots__/index.tsx.snap +9 -1
  546. package/src/palette-edit/styles.js +2 -1
  547. package/src/placeholder/index.tsx +1 -0
  548. package/src/placeholder/style.scss +2 -4
  549. package/src/popover/index.tsx +47 -110
  550. package/src/popover/test/index.tsx +3 -3
  551. package/src/popover/types.ts +0 -5
  552. package/src/popover/utils.ts +19 -67
  553. package/src/search-control/README.md +7 -0
  554. package/src/search-control/index.tsx +10 -1
  555. package/src/search-control/style.scss +14 -7
  556. package/src/search-control/types.ts +12 -0
  557. package/src/tab-panel/test/index.tsx +5 -0
  558. package/src/text/styles.js +2 -1
  559. package/src/theme/README.md +5 -5
  560. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +567 -59
  561. package/src/toggle-group-control/test/index.tsx +110 -56
  562. package/src/toggle-group-control/toggle-group-control/README.md +0 -1
  563. package/src/toggle-group-control/toggle-group-control/as-button-group.tsx +39 -57
  564. package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +52 -48
  565. package/src/toggle-group-control/toggle-group-control/component.tsx +12 -6
  566. package/src/toggle-group-control/toggle-group-control/styles.ts +2 -19
  567. package/src/toggle-group-control/toggle-group-control/utils.ts +50 -0
  568. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +70 -20
  569. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +17 -3
  570. package/src/toggle-group-control/types.ts +14 -32
  571. package/src/toolbar/stories/index.story.tsx +3 -5
  572. package/src/toolbar/test/toolbar-group.tsx +13 -7
  573. package/src/toolbar/toolbar/index.tsx +9 -1
  574. package/src/toolbar/toolbar-dropdown-menu/{index.js → index.tsx} +11 -4
  575. package/src/toolbar/toolbar-group/README.md +2 -2
  576. package/src/toolbar/toolbar-group/{index.js → index.tsx} +19 -14
  577. package/src/toolbar/toolbar-group/{toolbar-group-collapsed.js → toolbar-group-collapsed.tsx} +10 -4
  578. package/src/toolbar/toolbar-group/toolbar-group-container.tsx +16 -0
  579. package/src/toolbar/toolbar-group/types.ts +92 -0
  580. package/src/toolbar/toolbar-item/index.tsx +3 -1
  581. package/src/tooltip/README.md +31 -28
  582. package/src/tooltip/index.tsx +106 -0
  583. package/src/tooltip/stories/index.story.tsx +59 -0
  584. package/src/tooltip/style.scss +2 -27
  585. package/src/tooltip/test/index.tsx +335 -0
  586. package/src/tooltip/test/utils/index.tsx +20 -0
  587. package/src/tooltip/types.ts +61 -0
  588. package/src/ui/context/context-connect.ts +3 -3
  589. package/src/ui/context/wordpress-component.ts +4 -4
  590. package/src/unit-control/index.tsx +9 -4
  591. package/src/unit-control/styles/unit-control-styles.ts +3 -1
  592. package/src/unit-control/test/utils.ts +1 -1
  593. package/src/utils/colors-values.js +1 -1
  594. package/src/utils/use-deprecated-props.ts +1 -1
  595. package/tsconfig.tsbuildinfo +1 -1
  596. package/build/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js +0 -78
  597. package/build/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js.map +0 -1
  598. package/build-module/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js +0 -76
  599. package/build-module/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js.map +0 -1
  600. package/build-types/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.d.ts +0 -9
  601. package/build-types/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.d.ts.map +0 -1
  602. package/src/color-palette/test/__snapshots__/index.tsx.snap +0 -288
  603. package/src/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.tsx +0 -84
  604. package/src/toolbar/toolbar-group/toolbar-group-container.js +0 -8
  605. package/src/tooltip/index.js +0 -293
  606. package/src/tooltip/stories/index.story.js +0 -85
  607. package/src/tooltip/test/index.js +0 -323
@@ -39,7 +39,40 @@ export type DuotonePickerProps = {
39
39
  * Callback which is called when the duotone colors change.
40
40
  */
41
41
  onChange: ( value: DuotonePickerProps[ 'value' ] | undefined ) => void;
42
- };
42
+ /**
43
+ * Whether the control should present as a set of buttons,
44
+ * each with its own tab stop.
45
+ *
46
+ * @default false
47
+ */
48
+ asButtons?: boolean;
49
+ /**
50
+ * Prevents keyboard interaction from wrapping around.
51
+ * Only used when `asButtons` is not true.
52
+ *
53
+ * @default true
54
+ */
55
+ loop?: boolean;
56
+ } & (
57
+ | {
58
+ /**
59
+ * A label to identify the purpose of the control.
60
+ *
61
+ * @todo [#54055] Either this or `aria-labelledby` should be required
62
+ */
63
+ 'aria-label'?: string;
64
+ 'aria-labelledby'?: never;
65
+ }
66
+ | {
67
+ /**
68
+ * An ID of an element to provide a label for the control.
69
+ *
70
+ * @todo [#54055] Either this or `aria-label` should be required
71
+ */
72
+ 'aria-labelledby'?: string;
73
+ 'aria-label'?: never;
74
+ }
75
+ );
43
76
 
44
77
  type Color = {
45
78
  color: string;
@@ -3,12 +3,15 @@
3
3
  */
4
4
  import { useMergeRefs, useFocusableIframe } from '@wordpress/compose';
5
5
  import deprecated from '@wordpress/deprecated';
6
-
7
6
  /**
8
- * @param {Object} props
9
- * @param {import('react').Ref<HTMLIFrameElement>} props.iframeRef
7
+ * Internal dependencies
10
8
  */
11
- export default function FocusableIframe( { iframeRef, ...props } ) {
9
+ import type { FocusableIframeProps } from './types';
10
+
11
+ export default function FocusableIframe( {
12
+ iframeRef,
13
+ ...props
14
+ }: FocusableIframeProps ) {
12
15
  const ref = useMergeRefs( [ iframeRef, useFocusableIframe() ] );
13
16
  deprecated( 'wp.components.FocusableIframe', {
14
17
  since: '5.9',
@@ -0,0 +1,9 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ComponentPropsWithoutRef } from 'react';
5
+
6
+ export interface FocusableIframeProps
7
+ extends ComponentPropsWithoutRef< 'iframe' > {
8
+ iframeRef: React.Ref< HTMLIFrameElement >;
9
+ }
@@ -62,6 +62,7 @@ The `value` property is handled in a manner similar to controlled form component
62
62
  - `__experimentalValidateInput` - If passed, all introduced values will be validated before being added as tokens.
63
63
  - `__experimentalAutoSelectFirstMatch` - If true, the select the first matching suggestion when the user presses the Enter key (or space when tokenizeOnSpace is true).
64
64
  - `__nextHasNoMarginBottom` - Start opting into the new margin-free styles that will become the default in a future version, currently scheduled to be WordPress 6.5. (The prop can be safely removed once this happens.)
65
+ - `tokenizeOnBlur` - If true, add any incompleteTokenValue as a new token when the field loses focus.
65
66
 
66
67
  ## Usage
67
68
 
@@ -73,6 +73,7 @@ export function FormTokenField( props: FormTokenFieldProps ) {
73
73
  __next40pxDefaultSize = false,
74
74
  __experimentalAutoSelectFirstMatch = false,
75
75
  __nextHasNoMarginBottom = false,
76
+ tokenizeOnBlur = false,
76
77
  } = useDeprecated36pxDefaultSizeProp< FormTokenFieldProps >(
77
78
  props,
78
79
  'wp.components.FormTokenField'
@@ -167,6 +168,9 @@ export function FormTokenField( props: FormTokenFieldProps ) {
167
168
  __experimentalValidateInput( incompleteTokenValue )
168
169
  ) {
169
170
  setIsActive( false );
171
+ if ( tokenizeOnBlur && inputHasValidValue() ) {
172
+ addNewToken( incompleteTokenValue );
173
+ }
170
174
  } else {
171
175
  // Reset to initial state
172
176
  setIncompleteTokenValue( '' );
@@ -451,7 +455,7 @@ export function FormTokenField( props: FormTokenFieldProps ) {
451
455
  setSelectedSuggestionScroll( false );
452
456
  setIsExpanded( ! __experimentalExpandOnFocus );
453
457
 
454
- if ( isActive ) {
458
+ if ( isActive && ! tokenizeOnBlur ) {
455
459
  focus();
456
460
  }
457
461
  }
@@ -157,21 +157,21 @@
157
157
  .components-form-token-field__suggestions-list {
158
158
  flex: 1 0 100%;
159
159
  min-width: 100%;
160
- max-height: 9em;
160
+ max-height: $grid-unit-80 * 2;
161
161
  overflow-y: auto;
162
162
  transition: all 0.15s ease-in-out;
163
163
  @include reduce-motion("transition");
164
164
  list-style: none;
165
- border-top: $border-width solid $components-color-border;
165
+ box-shadow: inset 0 $border-width 0 0 $gray-600; // Matches the border color of the input.
166
166
  margin: 0;
167
- padding: 0;
168
167
  }
169
168
 
170
169
  .components-form-token-field__suggestion {
171
- color: $gray-700;
170
+ color: $gray-900;
172
171
  display: block;
173
172
  font-size: $default-font-size;
174
- padding: 4px 8px;
173
+ padding: $grid-unit-10 $grid-unit-15;
174
+ min-height: $button-size-compact;
175
175
  margin: 0;
176
176
  cursor: pointer;
177
177
 
@@ -180,7 +180,3 @@
180
180
  color: $white;
181
181
  }
182
182
  }
183
-
184
- .components-form-token-field__suggestion-match {
185
- text-decoration: underline;
186
- }
@@ -205,7 +205,42 @@ describe( 'FormTokenField', () => {
205
205
  ] );
206
206
  } );
207
207
 
208
- it( "should not add a token with the input's value when pressing the tab key", async () => {
208
+ it( 'should add a token with the input value with onBlur when `tokenizeOnBlur` prop is `true`', async () => {
209
+ const user = userEvent.setup();
210
+
211
+ const onChangeSpy = jest.fn();
212
+
213
+ const { rerender } = render(
214
+ <FormTokenFieldWithState onChange={ onChangeSpy } />
215
+ );
216
+
217
+ const input = screen.getByRole( 'combobox' );
218
+
219
+ // Add 'grapefruit' token by typing it and check blur of field does not tokenize it.
220
+ await user.type( input, 'grapefruit' );
221
+ await user.click( document.body );
222
+ expect( onChangeSpy ).toHaveBeenCalledTimes( 0 );
223
+ expectTokensNotToBeInTheDocument( [ 'grapefruit' ] );
224
+
225
+ rerender(
226
+ <FormTokenFieldWithState
227
+ onChange={ onChangeSpy }
228
+ tokenizeOnBlur
229
+ />
230
+ );
231
+ await user.clear( input );
232
+
233
+ // Add 'grapefruit' token by typing it and check blur of field tokenizes it.
234
+ await user.type( input, 'grapefruit' );
235
+
236
+ await user.click( document.body );
237
+ expect( onChangeSpy ).toHaveBeenNthCalledWith( 1, [
238
+ 'grapefruit',
239
+ ] );
240
+ expectTokensToBeInTheDocument( [ 'grapefruit' ] );
241
+ } );
242
+
243
+ it( "should not add a token with the input's value when tokenizeOnBlur is not set and pressing the tab key", async () => {
209
244
  const user = userEvent.setup();
210
245
 
211
246
  const onChangeSpy = jest.fn();
@@ -182,13 +182,19 @@ export interface FormTokenFieldProps
182
182
  * @default false
183
183
  */
184
184
  __nextHasNoMarginBottom?: boolean;
185
+ /**
186
+ * If true, add any incompleteTokenValue as a new token when the field loses focus.
187
+ *
188
+ * @default false
189
+ */
190
+ tokenizeOnBlur?: boolean;
185
191
  }
186
192
 
187
193
  /**
188
194
  * `T` can be either a `string` or an object which must have a `value` prop as a string.
189
195
  */
190
196
  export interface SuggestionsListProps<
191
- T = string | ( Record< string, unknown > & { value: string } )
197
+ T = string | ( Record< string, unknown > & { value: string } ),
192
198
  > {
193
199
  selectedIndex: number;
194
200
  scrollIntoView: boolean;
@@ -102,3 +102,17 @@ The heading level. Only applies in cases where gradients are provided from multi
102
102
 
103
103
  - Required: No
104
104
  - Default: `2`
105
+
106
+ ### `asButtons`: `boolean`
107
+
108
+ Whether the control should present as a set of buttons, each with its own tab stop.
109
+
110
+ - Required: No
111
+ - Default: `false`
112
+
113
+ ### `loop`: `boolean`
114
+
115
+ Prevents keyboard interaction from wrapping around. Only used when `asButtons` is not true.
116
+
117
+ - Required: No
118
+ - Default: `true`
@@ -2,6 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __, sprintf } from '@wordpress/i18n';
5
+ import { useInstanceId } from '@wordpress/compose';
5
6
  import { useCallback, useMemo } from '@wordpress/element';
6
7
  import deprecated from '@wordpress/deprecated';
7
8
 
@@ -40,7 +41,7 @@ function SingleOrigin( {
40
41
  gradients,
41
42
  onChange,
42
43
  value,
43
- actions,
44
+ ...additionalProps
44
45
  }: PickerProps< GradientObject > ) {
45
46
  const gradientOptions = useMemo( () => {
46
47
  return gradients.map( ( { gradient, name }, index ) => (
@@ -70,10 +71,10 @@ function SingleOrigin( {
70
71
  ) );
71
72
  }, [ gradients, value, onChange, clearGradient ] );
72
73
  return (
73
- <CircularOptionPicker
74
+ <CircularOptionPicker.OptionGroup
74
75
  className={ className }
75
76
  options={ gradientOptions }
76
- actions={ actions }
77
+ { ...additionalProps }
77
78
  />
78
79
  );
79
80
  }
@@ -84,15 +85,17 @@ function MultipleOrigin( {
84
85
  gradients,
85
86
  onChange,
86
87
  value,
87
- actions,
88
88
  headingLevel,
89
89
  }: PickerProps< OriginObject > ) {
90
+ const instanceId = useInstanceId( MultipleOrigin );
91
+
90
92
  return (
91
93
  <VStack spacing={ 3 } className={ className }>
92
94
  { gradients.map( ( { name, gradients: gradientSet }, index ) => {
95
+ const id = `color-palette-${ instanceId }-${ index }`;
93
96
  return (
94
97
  <VStack spacing={ 2 } key={ index }>
95
- <ColorHeading level={ headingLevel }>
98
+ <ColorHeading level={ headingLevel } id={ id }>
96
99
  { name }
97
100
  </ColorHeading>
98
101
  <SingleOrigin
@@ -102,9 +105,7 @@ function MultipleOrigin( {
102
105
  onChange( gradient, index )
103
106
  }
104
107
  value={ value }
105
- { ...( gradients.length === index + 1
106
- ? { actions }
107
- : {} ) }
108
+ aria-labelledby={ id }
108
109
  />
109
110
  </VStack>
110
111
  );
@@ -114,10 +115,56 @@ function MultipleOrigin( {
114
115
  }
115
116
 
116
117
  function Component( props: PickerProps< any > ) {
117
- if ( isMultipleOriginArray( props.gradients ) ) {
118
- return <MultipleOrigin { ...props } />;
118
+ const {
119
+ asButtons,
120
+ loop,
121
+ actions,
122
+ headingLevel,
123
+ 'aria-label': ariaLabel,
124
+ 'aria-labelledby': ariaLabelledby,
125
+ ...additionalProps
126
+ } = props;
127
+ const options = isMultipleOriginArray( props.gradients ) ? (
128
+ <MultipleOrigin headingLevel={ headingLevel } { ...additionalProps } />
129
+ ) : (
130
+ <SingleOrigin { ...additionalProps } />
131
+ );
132
+
133
+ let metaProps:
134
+ | { asButtons: false; loop?: boolean; 'aria-label': string }
135
+ | { asButtons: false; loop?: boolean; 'aria-labelledby': string }
136
+ | { asButtons: true };
137
+
138
+ if ( asButtons ) {
139
+ metaProps = { asButtons: true };
140
+ } else {
141
+ const _metaProps: { asButtons: false; loop?: boolean } = {
142
+ asButtons: false,
143
+ loop,
144
+ };
145
+
146
+ if ( ariaLabel ) {
147
+ metaProps = { ..._metaProps, 'aria-label': ariaLabel };
148
+ } else if ( ariaLabelledby ) {
149
+ metaProps = {
150
+ ..._metaProps,
151
+ 'aria-labelledby': ariaLabelledby,
152
+ };
153
+ } else {
154
+ metaProps = {
155
+ ..._metaProps,
156
+ 'aria-label': __( 'Custom color picker.' ),
157
+ };
158
+ }
119
159
  }
120
- return <SingleOrigin { ...props } />;
160
+
161
+ return (
162
+ <CircularOptionPicker
163
+ { ...metaProps }
164
+ actions={ actions }
165
+ options={ options }
166
+ />
167
+ );
121
168
  }
122
169
 
123
170
  /**
@@ -174,6 +221,7 @@ export function GradientPicker( {
174
221
  disableCustomGradients = false,
175
222
  __experimentalIsRenderedInSidebar,
176
223
  headingLevel = 2,
224
+ ...additionalProps
177
225
  }: GradientPickerComponentProps ) {
178
226
  const clearGradient = useCallback(
179
227
  () => onChange( undefined ),
@@ -211,6 +259,7 @@ export function GradientPicker( {
211
259
  ) }
212
260
  { ( gradients.length || clearable ) && (
213
261
  <Component
262
+ { ...additionalProps }
214
263
  className={ className }
215
264
  clearGradient={ clearGradient }
216
265
  gradients={ gradients }
@@ -42,7 +42,40 @@ type GradientPickerBaseProps = {
42
42
  * @default 2
43
43
  */
44
44
  headingLevel?: HeadingSize;
45
- };
45
+ /**
46
+ * Whether the control should present as a set of buttons,
47
+ * each with its own tab stop.
48
+ *
49
+ * @default false
50
+ */
51
+ asButtons?: boolean;
52
+ /**
53
+ * Prevents keyboard interaction from wrapping around.
54
+ * Only used when `asButtons` is not true.
55
+ *
56
+ * @default true
57
+ */
58
+ loop?: boolean;
59
+ } & (
60
+ | {
61
+ /**
62
+ * A label to identify the purpose of the control.
63
+ *
64
+ * @todo [#54055] Either this or `aria-labelledby` should be required
65
+ */
66
+ 'aria-label'?: string;
67
+ 'aria-labelledby'?: never;
68
+ }
69
+ | {
70
+ /**
71
+ * An ID of an element to provide a label for the control.
72
+ *
73
+ * @todo [#54055] Either this or `aria-label` should be required
74
+ */
75
+ 'aria-labelledby'?: string;
76
+ 'aria-label'?: never;
77
+ }
78
+ );
46
79
 
47
80
  export type GradientPickerComponentProps = GradientPickerBaseProps & {
48
81
  /**
@@ -139,11 +139,10 @@ export function useNavigateRegions( shortcuts: Shortcuts = defaultShortcuts ) {
139
139
  */
140
140
  export default createHigherOrderComponent(
141
141
  ( Component ) =>
142
- ( { shortcuts, ...props } ) =>
143
- (
144
- <div { ...useNavigateRegions( shortcuts ) }>
145
- <Component { ...props } />
146
- </div>
147
- ),
142
+ ( { shortcuts, ...props } ) => (
143
+ <div { ...useNavigateRegions( shortcuts ) }>
144
+ <Component { ...props } />
145
+ </div>
146
+ ),
148
147
  'navigateRegions'
149
148
  );
@@ -52,13 +52,12 @@ describe( 'withFilters', () => {
52
52
  addFilter(
53
53
  hookName,
54
54
  'test/enhanced-component-compose',
55
- ( FilteredComponent ) => () =>
56
- (
57
- <div>
58
- <FilteredComponent />
59
- <ComposedComponent />
60
- </div>
61
- )
55
+ ( FilteredComponent ) => () => (
56
+ <div>
57
+ <FilteredComponent />
58
+ <ComposedComponent />
59
+ </div>
60
+ )
62
61
  );
63
62
  const EnhancedComponent = withFilters( hookName )( MyComponent );
64
63
 
@@ -72,12 +71,11 @@ describe( 'withFilters', () => {
72
71
  addFilter(
73
72
  hookName,
74
73
  'test/enhanced-component-spy-1',
75
- ( FilteredComponent ) => () =>
76
- (
77
- <blockquote>
78
- <FilteredComponent />
79
- </blockquote>
80
- )
74
+ ( FilteredComponent ) => () => (
75
+ <blockquote>
76
+ <FilteredComponent />
77
+ </blockquote>
78
+ )
81
79
  );
82
80
  const EnhancedComponent = withFilters( hookName )( SpiedComponent );
83
81
 
@@ -100,12 +98,11 @@ describe( 'withFilters', () => {
100
98
  addFilter(
101
99
  hookName,
102
100
  'test/enhanced-component-spy-1',
103
- ( FilteredComponent ) => () =>
104
- (
105
- <blockquote>
106
- <FilteredComponent />
107
- </blockquote>
108
- )
101
+ ( FilteredComponent ) => () => (
102
+ <blockquote>
103
+ <FilteredComponent />
104
+ </blockquote>
105
+ )
109
106
  );
110
107
 
111
108
  await waitFor( () =>
@@ -125,22 +122,20 @@ describe( 'withFilters', () => {
125
122
  addFilter(
126
123
  hookName,
127
124
  'test/enhanced-component-spy-1',
128
- ( FilteredComponent ) => () =>
129
- (
130
- <blockquote>
131
- <FilteredComponent />
132
- </blockquote>
133
- )
125
+ ( FilteredComponent ) => () => (
126
+ <blockquote>
127
+ <FilteredComponent />
128
+ </blockquote>
129
+ )
134
130
  );
135
131
  addFilter(
136
132
  hookName,
137
133
  'test/enhanced-component-spy-2',
138
- ( FilteredComponent ) => () =>
139
- (
140
- <section>
141
- <FilteredComponent />
142
- </section>
143
- )
134
+ ( FilteredComponent ) => () => (
135
+ <section>
136
+ <FilteredComponent />
137
+ </section>
138
+ )
144
139
  );
145
140
 
146
141
  await waitFor( () =>
@@ -159,12 +154,11 @@ describe( 'withFilters', () => {
159
154
  addFilter(
160
155
  hookName,
161
156
  'test/enhanced-component-spy',
162
- ( FilteredComponent ) => () =>
163
- (
164
- <div>
165
- <FilteredComponent />
166
- </div>
167
- )
157
+ ( FilteredComponent ) => () => (
158
+ <div>
159
+ <FilteredComponent />
160
+ </div>
161
+ )
168
162
  );
169
163
 
170
164
  await waitFor( () =>
@@ -196,12 +190,11 @@ describe( 'withFilters', () => {
196
190
  addFilter(
197
191
  hookName,
198
192
  'test/enhanced-component-spy-1',
199
- ( FilteredComponent ) => () =>
200
- (
201
- <blockquote>
202
- <FilteredComponent />
203
- </blockquote>
204
- )
193
+ ( FilteredComponent ) => () => (
194
+ <blockquote>
195
+ <FilteredComponent />
196
+ </blockquote>
197
+ )
205
198
  );
206
199
 
207
200
  await waitFor( () =>
@@ -1,5 +1,3 @@
1
- //@ts-nocheck
2
-
3
1
  /**
4
2
  * WordPress dependencies
5
3
  */
@@ -11,9 +9,14 @@ import {
11
9
 
12
10
  export default createHigherOrderComponent(
13
11
  ( WrappedComponent ) => ( props ) => {
14
- const [ handleFocusOutside, setHandleFocusOutside ] = useState();
15
- const bindFocusOutsideHandler = useCallback(
16
- ( node ) =>
12
+ const [ handleFocusOutside, setHandleFocusOutside ] = useState<
13
+ undefined | ( ( event: React.FocusEvent ) => void )
14
+ >( undefined );
15
+
16
+ const bindFocusOutsideHandler = useCallback<
17
+ ( node: React.FocusEvent ) => void
18
+ >(
19
+ ( node: any ) =>
17
20
  setHandleFocusOutside( () =>
18
21
  node?.handleFocusOutside
19
22
  ? node.handleFocusOutside.bind( node )
@@ -12,17 +12,21 @@ import { Component } from '@wordpress/element';
12
12
  /**
13
13
  * Internal dependencies
14
14
  */
15
- import withFocusOutside from '../';
15
+ import withFocusOutside from '..';
16
16
 
17
- let onFocusOutside;
17
+ interface TestComponentProps {
18
+ onFocusOutside: ( event: FocusEvent ) => void;
19
+ }
20
+
21
+ let onFocusOutside: () => void;
18
22
 
19
23
  describe( 'withFocusOutside', () => {
20
- let origHasFocus;
24
+ let origHasFocus: typeof document.hasFocus;
21
25
 
22
26
  const EnhancedComponent = withFocusOutside(
23
- class extends Component {
27
+ class extends Component< TestComponentProps > {
24
28
  handleFocusOutside() {
25
- this.props.onFocusOutside();
29
+ this.props.onFocusOutside( new FocusEvent( 'blur' ) );
26
30
  }
27
31
 
28
32
  render() {
@@ -36,15 +40,13 @@ describe( 'withFocusOutside', () => {
36
40
  }
37
41
  );
38
42
 
39
- class TestComponent extends Component {
40
- render() {
41
- return <EnhancedComponent { ...this.props } />;
42
- }
43
- }
43
+ const TestComponent: React.FC< TestComponentProps > = ( props ) => {
44
+ return <EnhancedComponent { ...props } />;
45
+ };
44
46
 
45
47
  beforeEach( () => {
46
48
  // Mock document.hasFocus() to always be true for testing
47
- // note: we overide this for some tests.
49
+ // note: we override this for some tests.
48
50
  origHasFocus = document.hasFocus;
49
51
  document.hasFocus = () => true;
50
52
 
@@ -27,7 +27,7 @@ import withNotices from '..';
27
27
  import type { WithNoticeProps } from '../types';
28
28
 
29
29
  // Implementation detail of Notice component used to query the dismissal button.
30
- const stockDismissText = 'Dismiss this notice';
30
+ const stockDismissText = 'Close';
31
31
 
32
32
  function noticesFrom( list: string[] ) {
33
33
  return list.map( ( item ) => ( { id: item, content: item } ) );
@@ -17,13 +17,12 @@ import { speak } from '@wordpress/a11y';
17
17
  * @return {WPComponent} The wrapped component.
18
18
  */
19
19
  export default createHigherOrderComponent(
20
- ( Component ) => ( props ) =>
21
- (
22
- <Component
23
- { ...props }
24
- speak={ speak }
25
- debouncedSpeak={ useDebounce( speak, 500 ) }
26
- />
27
- ),
20
+ ( Component ) => ( props ) => (
21
+ <Component
22
+ { ...props }
23
+ speak={ speak }
24
+ debouncedSpeak={ useDebounce( speak, 500 ) }
25
+ />
26
+ ),
28
27
  'withSpokenMessages'
29
28
  );
package/src/index.ts CHANGED
@@ -17,7 +17,11 @@ export {
17
17
  default as Animate,
18
18
  getAnimateClassName as __unstableGetAnimateClassName,
19
19
  } from './animate';
20
- export { __unstableMotion, __unstableAnimatePresence } from './animation';
20
+ export {
21
+ __unstableMotion,
22
+ __unstableAnimatePresence,
23
+ __unstableMotionContext,
24
+ } from './animation';
21
25
  export { default as AnglePickerControl } from './angle-picker-control';
22
26
  export {
23
27
  default as Autocomplete,