@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
@@ -0,0 +1,335 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import { render, screen, waitFor } from '@testing-library/react';
5
+ import userEvent from '@testing-library/user-event';
6
+
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+ import { shortcutAriaLabel } from '@wordpress/keycodes';
11
+
12
+ /**
13
+ * Internal dependencies
14
+ */
15
+ import Button from '../../button';
16
+ import Modal from '../../modal';
17
+ import Tooltip, { TOOLTIP_DELAY } from '..';
18
+ import cleanupTooltip from './utils/';
19
+
20
+ const props = {
21
+ children: <Button>Button</Button>,
22
+ text: 'tooltip text',
23
+ };
24
+
25
+ describe( 'Tooltip', () => {
26
+ it( 'should not render the tooltip if multiple children are passed', async () => {
27
+ render(
28
+ // expected TS error since Tooltip cannot have more than one child element
29
+ // @ts-expect-error
30
+ <Tooltip { ...props }>
31
+ <Button>This is a button</Button>
32
+ <Button>This is another button</Button>
33
+ </Tooltip>
34
+ );
35
+
36
+ expect(
37
+ screen.queryByRole( 'tooltip', { name: /tooltip text/i } )
38
+ ).not.toBeInTheDocument();
39
+ } );
40
+
41
+ it( 'should not render the tooltip if there is no focus', () => {
42
+ render( <Tooltip { ...props } /> );
43
+
44
+ expect(
45
+ screen.getByRole( 'button', { name: /Button/i } )
46
+ ).toBeVisible();
47
+
48
+ expect(
49
+ screen.queryByRole( 'tooltip', { name: /tooltip text/i } )
50
+ ).not.toBeInTheDocument();
51
+ } );
52
+
53
+ it( 'should render the tooltip when focusing on the tooltip anchor via tab', async () => {
54
+ const user = userEvent.setup();
55
+
56
+ render( <Tooltip { ...props } /> );
57
+
58
+ await user.tab();
59
+
60
+ expect(
61
+ screen.getByRole( 'button', { name: /Button/i } )
62
+ ).toHaveFocus();
63
+
64
+ expect(
65
+ await screen.findByRole( 'tooltip', { name: /tooltip text/i } )
66
+ ).toBeVisible();
67
+
68
+ await cleanupTooltip( user );
69
+ } );
70
+
71
+ it( 'should render the tooltip when the tooltip anchor is hovered', async () => {
72
+ const user = userEvent.setup();
73
+
74
+ render( <Tooltip { ...props } /> );
75
+
76
+ await user.hover( screen.getByRole( 'button', { name: /Button/i } ) );
77
+
78
+ expect(
79
+ await screen.findByRole( 'tooltip', { name: /tooltip text/i } )
80
+ ).toBeVisible();
81
+
82
+ await cleanupTooltip( user );
83
+ } );
84
+
85
+ it( 'should not show tooltip on focus as result of mouse click', async () => {
86
+ const user = userEvent.setup();
87
+
88
+ render( <Tooltip { ...props } /> );
89
+
90
+ await user.click( screen.getByRole( 'button', { name: /Button/i } ) );
91
+
92
+ expect(
93
+ screen.queryByRole( 'tooltip', { name: /tooltip text/i } )
94
+ ).not.toBeInTheDocument();
95
+
96
+ await cleanupTooltip( user );
97
+ } );
98
+
99
+ it( 'should respect custom delay prop when showing tooltip', async () => {
100
+ const user = userEvent.setup();
101
+ const ADDITIONAL_DELAY = 100;
102
+
103
+ render(
104
+ <Tooltip { ...props } delay={ TOOLTIP_DELAY + ADDITIONAL_DELAY } />
105
+ );
106
+
107
+ await user.hover( screen.getByRole( 'button', { name: /Button/i } ) );
108
+
109
+ // Advance time by default delay
110
+ await new Promise( ( resolve ) =>
111
+ setTimeout( resolve, TOOLTIP_DELAY )
112
+ );
113
+
114
+ // Tooltip hasn't appeared yet
115
+ expect(
116
+ screen.queryByRole( 'tooltip', { name: /tooltip text/i } )
117
+ ).not.toBeInTheDocument();
118
+
119
+ // wait for additional delay for tooltip to appear
120
+ await waitFor(
121
+ () =>
122
+ new Promise( ( resolve ) =>
123
+ setTimeout( resolve, ADDITIONAL_DELAY )
124
+ )
125
+ );
126
+
127
+ expect(
128
+ screen.getByRole( 'tooltip', { name: /tooltip text/i } )
129
+ ).toBeVisible();
130
+
131
+ await cleanupTooltip( user );
132
+ } );
133
+
134
+ it( 'should show tooltip when an element is disabled', async () => {
135
+ const user = userEvent.setup();
136
+
137
+ render(
138
+ <Tooltip { ...props }>
139
+ <Button aria-disabled>Button</Button>
140
+ </Tooltip>
141
+ );
142
+
143
+ const button = screen.getByRole( 'button', { name: /Button/i } );
144
+
145
+ expect( button ).toBeVisible();
146
+ expect( button ).toHaveAttribute( 'aria-disabled' );
147
+
148
+ await user.hover( button );
149
+
150
+ expect(
151
+ await screen.findByRole( 'tooltip', { name: /tooltip text/i } )
152
+ ).toBeVisible();
153
+
154
+ await cleanupTooltip( user );
155
+ } );
156
+
157
+ it( 'should not show tooltip if the mouse leaves the tooltip anchor before set delay', async () => {
158
+ const user = userEvent.setup();
159
+ const onMouseEnterMock = jest.fn();
160
+ const onMouseLeaveMock = jest.fn();
161
+ const MOUSE_LEAVE_DELAY = TOOLTIP_DELAY - 200;
162
+
163
+ render(
164
+ <>
165
+ <Tooltip { ...props }>
166
+ <Button
167
+ onMouseEnter={ onMouseEnterMock }
168
+ onMouseLeave={ onMouseLeaveMock }
169
+ >
170
+ Button 1
171
+ </Button>
172
+ </Tooltip>
173
+ <Button>Button 2</Button>
174
+ </>
175
+ );
176
+
177
+ await user.hover(
178
+ screen.getByRole( 'button', {
179
+ name: 'Button 1',
180
+ } )
181
+ );
182
+
183
+ // Tooltip hasn't appeared yet
184
+ expect(
185
+ screen.queryByRole( 'tooltip', { name: /tooltip text/i } )
186
+ ).not.toBeInTheDocument();
187
+ expect( onMouseEnterMock ).toHaveBeenCalledTimes( 1 );
188
+
189
+ // Advance time by MOUSE_LEAVE_DELAY time
190
+ await new Promise( ( resolve ) =>
191
+ setTimeout( resolve, MOUSE_LEAVE_DELAY )
192
+ );
193
+
194
+ expect(
195
+ screen.queryByRole( 'tooltip', { name: /tooltip text/i } )
196
+ ).not.toBeInTheDocument();
197
+
198
+ // Hover the other button, meaning that the mouse will leave the tooltip anchor
199
+ await user.hover(
200
+ screen.getByRole( 'button', {
201
+ name: 'Button 2',
202
+ } )
203
+ );
204
+
205
+ // Tooltip still hasn't appeared yet
206
+ expect(
207
+ screen.queryByRole( 'tooltip', { name: /tooltip text/i } )
208
+ ).not.toBeInTheDocument();
209
+ expect( onMouseEnterMock ).toHaveBeenCalledTimes( 1 );
210
+ expect( onMouseLeaveMock ).toHaveBeenCalledTimes( 1 );
211
+
212
+ // Advance time again, so that we reach the full TOOLTIP_DELAY time
213
+ await new Promise( ( resolve ) =>
214
+ setTimeout( resolve, TOOLTIP_DELAY )
215
+ );
216
+
217
+ // Tooltip won't show, since the mouse has left the tooltip anchor
218
+ expect(
219
+ screen.queryByRole( 'tooltip', { name: /tooltip text/i } )
220
+ ).not.toBeInTheDocument();
221
+
222
+ await cleanupTooltip( user );
223
+ } );
224
+
225
+ it( 'should render the shortcut display text when a string is passed as the shortcut', async () => {
226
+ const user = userEvent.setup();
227
+
228
+ render( <Tooltip { ...props } shortcut="shortcut text" /> );
229
+
230
+ await user.hover( screen.getByRole( 'button', { name: /Button/i } ) );
231
+
232
+ await waitFor( () =>
233
+ expect( screen.getByText( 'shortcut text' ) ).toBeVisible()
234
+ );
235
+
236
+ await cleanupTooltip( user );
237
+ } );
238
+
239
+ it( 'should render the keyboard shortcut display text and aria-label when an object is passed as the shortcut', async () => {
240
+ const user = userEvent.setup();
241
+
242
+ render(
243
+ <Tooltip
244
+ { ...props }
245
+ shortcut={ {
246
+ display: '⇧⌘,',
247
+ ariaLabel: shortcutAriaLabel.primaryShift( ',' ),
248
+ } }
249
+ />
250
+ );
251
+
252
+ await user.hover( screen.getByRole( 'button', { name: /Button/i } ) );
253
+
254
+ await waitFor( () =>
255
+ expect( screen.getByText( '⇧⌘,' ) ).toBeVisible()
256
+ );
257
+
258
+ expect( screen.getByText( '⇧⌘,' ) ).toHaveAttribute(
259
+ 'aria-label',
260
+ 'Control + Shift + Comma'
261
+ );
262
+
263
+ await cleanupTooltip( user );
264
+ } );
265
+
266
+ it( 'esc should close modal even when tooltip is visible', async () => {
267
+ const user = userEvent.setup();
268
+ const onRequestClose = jest.fn();
269
+ render(
270
+ <Modal onRequestClose={ onRequestClose }>
271
+ <p>Modal content</p>
272
+ </Modal>
273
+ );
274
+
275
+ expect(
276
+ screen.queryByRole( 'tooltip', { name: /close/i } )
277
+ ).not.toBeInTheDocument();
278
+
279
+ await user.hover(
280
+ screen.getByRole( 'button', {
281
+ name: /Close/i,
282
+ } )
283
+ );
284
+
285
+ await waitFor( () =>
286
+ expect(
287
+ screen.getByRole( 'tooltip', { name: /close/i } )
288
+ ).toBeVisible()
289
+ );
290
+
291
+ await user.keyboard( '[Escape]' );
292
+
293
+ expect( onRequestClose ).toHaveBeenCalled();
294
+
295
+ await cleanupTooltip( user );
296
+ } );
297
+
298
+ it( 'should associate the tooltip text with its anchor via the accessible description when visible', async () => {
299
+ const user = userEvent.setup();
300
+
301
+ render( <Tooltip { ...props } /> );
302
+
303
+ await user.hover(
304
+ screen.getByRole( 'button', {
305
+ name: /Button/i,
306
+ } )
307
+ );
308
+
309
+ expect(
310
+ await screen.findByRole( 'button', { description: 'tooltip text' } )
311
+ ).toBeInTheDocument();
312
+ } );
313
+
314
+ it( 'should not hide tooltip when the anchor is clicked if hideOnClick is false', async () => {
315
+ const user = userEvent.setup();
316
+
317
+ render( <Tooltip { ...props } hideOnClick={ false } /> );
318
+
319
+ const button = screen.getByRole( 'button', { name: /Button/i } );
320
+
321
+ await user.hover( button );
322
+
323
+ expect(
324
+ await screen.findByRole( 'tooltip', { name: /tooltip text/i } )
325
+ ).toBeVisible();
326
+
327
+ await user.click( button );
328
+
329
+ expect(
330
+ screen.getByRole( 'tooltip', { name: /tooltip text/i } )
331
+ ).toBeVisible();
332
+
333
+ await cleanupTooltip( user );
334
+ } );
335
+ } );
@@ -0,0 +1,20 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { UserEvent } from '@testing-library/user-event/dist/types/setup/setup';
5
+
6
+ // TODO: may need to be tested with Playwright; further context:
7
+ // https://github.com/WordPress/gutenberg/pull/52133#issuecomment-1613691258
8
+ // below workaround ensures tooltip is umounted after each test to prevent leaking
9
+ // similarly to ariakit tooltip tests: https://github.com/ariakit/ariakit/blob/249d376e41115e6d4ceba244e231a95fa457bd04/examples/tooltip/test.ts#L12-L14
10
+
11
+ /**
12
+ * Ensures the async behaviors and animations in tooltip complete
13
+ * to avoid leaking into other tests
14
+ *
15
+ */
16
+ export default async function cleanupTooltip( user: UserEvent ) {
17
+ await user.tab();
18
+ await user.tab();
19
+ await user.click( document.body );
20
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { Placement } from '@floating-ui/react-dom';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import type { PopoverProps } from '../popover/types';
10
+ import type { ShortcutProps } from '../shortcut/types';
11
+
12
+ export type TooltipProps = {
13
+ /**
14
+ * The anchor for the tooltip.
15
+ *
16
+ * **Note**: Accepts only one child element.
17
+ */
18
+ children: React.ReactElement;
19
+ /**
20
+ * Option to hide the tooltip when the anchor is clicked.
21
+ *
22
+ * @default true
23
+ */
24
+ hideOnClick?: boolean;
25
+ /**
26
+ * The amount of time in milliseconds to wait before showing the tooltip.
27
+ *
28
+ * @default 700
29
+ */
30
+ delay?: number;
31
+ /**
32
+ * Where the tooltip should be positioned relative to its parent.
33
+ *
34
+ * @default bottom
35
+ */
36
+ placement?: Placement;
37
+ /**
38
+ * _Note: this prop is deprecated. Please use the `placement` prop instead._
39
+ *
40
+ * Legacy way of specifying the tooltip's position relative to its parent.
41
+ *
42
+ * Specify y- and x-axis as a space-separated string. Supports `"top"`,
43
+ * `"bottom"` y axis, and `"left"`, `"center"`, `"right"` x axis.
44
+ *
45
+ * @deprecated
46
+ * @default bottom
47
+ */
48
+ position?: PopoverProps[ 'position' ];
49
+ /**
50
+ * An option for adding accessible keyboard shortcuts.
51
+ *
52
+ * If shortcut is a string, it is expecting the display text. If shortcut is an
53
+ * object, it will accept the properties of `display` (string) and `ariaLabel`
54
+ * (string).
55
+ */
56
+ shortcut?: ShortcutProps[ 'shortcut' ];
57
+ /**
58
+ * The text shown in the tooltip when anchor element is focused or hovered.
59
+ */
60
+ text?: string;
61
+ };
@@ -18,7 +18,7 @@ import type { WordPressComponentFromProps } from '.';
18
18
 
19
19
  type AcceptsTwoArgs<
20
20
  F extends ( ...args: any ) => any,
21
- ErrorMessage = never
21
+ ErrorMessage = never,
22
22
  > = Parameters< F >[ 'length' ] extends 2 ? {} : ErrorMessage;
23
23
 
24
24
  type ContextConnectOptions = {
@@ -34,7 +34,7 @@ type ContextConnectOptions = {
34
34
  * @return The connected WordPressComponent
35
35
  */
36
36
  export function contextConnect<
37
- C extends ( props: any, ref: ForwardedRef< any > ) => JSX.Element | null
37
+ C extends ( props: any, ref: ForwardedRef< any > ) => JSX.Element | null,
38
38
  >(
39
39
  Component: C &
40
40
  AcceptsTwoArgs<
@@ -66,7 +66,7 @@ export function contextConnectWithoutRef< P >(
66
66
  // component wrappers.
67
67
  function _contextConnect<
68
68
  C extends ( props: any, ref: ForwardedRef< any > ) => JSX.Element | null,
69
- O extends ContextConnectOptions
69
+ O extends ContextConnectOptions,
70
70
  >(
71
71
  Component: C,
72
72
  namespace: string,
@@ -10,11 +10,11 @@ export type WordPressComponentProps<
10
10
  /** The HTML element to inherit props from. */
11
11
  T extends React.ElementType,
12
12
  /** Supports polymorphism through the `as` prop. */
13
- IsPolymorphic extends boolean = true
13
+ IsPolymorphic extends boolean = true,
14
14
  > = P &
15
15
  // The `children` prop is being explicitly omitted since it is otherwise implicitly added
16
16
  // by `ComponentPropsWithRef`. The context is that components should require the `children`
17
- // prop explicitely when needed (see https://github.com/WordPress/gutenberg/pull/31817).
17
+ // prop explicitly when needed (see https://github.com/WordPress/gutenberg/pull/31817).
18
18
  Omit< React.ComponentPropsWithoutRef< T >, 'as' | keyof P | 'children' > &
19
19
  ( IsPolymorphic extends true
20
20
  ? {
@@ -26,7 +26,7 @@ export type WordPressComponentProps<
26
26
  export type WordPressComponent<
27
27
  T extends React.ElementType,
28
28
  O,
29
- IsPolymorphic extends boolean
29
+ IsPolymorphic extends boolean,
30
30
  > = {
31
31
  < TT extends React.ElementType >(
32
32
  props: WordPressComponentProps< O, TT, IsPolymorphic > &
@@ -49,7 +49,7 @@ export type WordPressComponent<
49
49
 
50
50
  export type WordPressComponentFromProps<
51
51
  Props,
52
- ForwardsRef extends boolean = true
52
+ ForwardsRef extends boolean = true,
53
53
  > = Props extends WordPressComponentProps< infer P, infer T, infer I >
54
54
  ? WordPressComponent<
55
55
  T,
@@ -76,10 +76,15 @@ function UnforwardedUnitControl(
76
76
  unitsProp
77
77
  );
78
78
  const [ { value: firstUnitValue = '' } = {}, ...rest ] = list;
79
- const firstCharacters = rest.reduce( ( carry, { value } ) => {
80
- const first = escapeRegExp( value?.substring( 0, 1 ) || '' );
81
- return carry.includes( first ) ? carry : `${ carry }|${ first }`;
82
- }, escapeRegExp( firstUnitValue.substring( 0, 1 ) ) );
79
+ const firstCharacters = rest.reduce(
80
+ ( carry, { value } ) => {
81
+ const first = escapeRegExp( value?.substring( 0, 1 ) || '' );
82
+ return carry.includes( first )
83
+ ? carry
84
+ : `${ carry }|${ first }`;
85
+ },
86
+ escapeRegExp( firstUnitValue.substring( 0, 1 ) )
87
+ );
83
88
  return [ list, new RegExp( `^(?:${ firstCharacters })$`, 'i' ) ];
84
89
  }, [ nonNullValueProp, unitProp, unitsProp ] );
85
90
  const [ parsedQuantity, parsedUnit ] = getParsedQuantityAndUnit(
@@ -82,7 +82,9 @@ const unitSelectSizes = ( { selectSize = 'default' }: SelectProps ) => {
82
82
  default: css`
83
83
  height: 100%;
84
84
  border: 1px solid transparent;
85
- transition: box-shadow 0.1s linear, border 0.1s linear;
85
+ transition:
86
+ box-shadow 0.1s linear,
87
+ border 0.1s linear;
86
88
 
87
89
  ${ rtl( { borderTopLeftRadius: 0, borderBottomLeftRadius: 0 } )() }
88
90
 
@@ -248,7 +248,7 @@ describe( 'UnitControl utils', () => {
248
248
  const cases: [
249
249
  number | string | undefined,
250
250
  number | undefined,
251
- string | undefined
251
+ string | undefined,
252
252
  ][] = [
253
253
  // Test undefined.
254
254
  [ undefined, undefined, undefined ],
@@ -41,7 +41,7 @@ const UI = {
41
41
  backgroundDisabled: GRAY[ 100 ],
42
42
  border: GRAY[ 600 ],
43
43
  borderHover: GRAY[ 700 ],
44
- borderFocus: ADMIN.themeDark10,
44
+ borderFocus: ADMIN.theme,
45
45
  borderDisabled: GRAY[ 400 ],
46
46
  textDisabled: GRAY[ 600 ],
47
47
  textDark: white,
@@ -7,7 +7,7 @@ export function useDeprecated36pxDefaultSizeProp<
7
7
  P extends Record< string, any > & {
8
8
  __next36pxDefaultSize?: boolean;
9
9
  __next40pxDefaultSize?: boolean;
10
- }
10
+ },
11
11
  >(
12
12
  props: P,
13
13
  /** The component identifier in dot notation, e.g. `wp.components.ComponentName`. */