@wordpress/components 19.17.0 → 20.0.1-next.d6164808d3.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 (599) hide show
  1. package/CHANGELOG.md +68 -1
  2. package/build/alignment-matrix-control/index.js +1 -1
  3. package/build/alignment-matrix-control/index.js.map +1 -1
  4. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +9 -9
  5. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  6. package/build/angle-picker-control/index.js +3 -0
  7. package/build/angle-picker-control/index.js.map +1 -1
  8. package/build/angle-picker-control/styles/angle-picker-control-styles.js +14 -4
  9. package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  10. package/build/autocomplete/index.js +9 -11
  11. package/build/autocomplete/index.js.map +1 -1
  12. package/build/base-control/styles/base-control-styles.js +8 -8
  13. package/build/base-control/styles/base-control-styles.js.map +1 -1
  14. package/build/base-field/styles.js +5 -5
  15. package/build/base-field/styles.js.map +1 -1
  16. package/build/box-control/styles/box-control-visualizer-styles.js +8 -8
  17. package/build/box-control/styles/box-control-visualizer-styles.js.map +1 -1
  18. package/build/color-list-picker/index.js +16 -5
  19. package/build/color-list-picker/index.js.map +1 -1
  20. package/build/color-palette/index.js +22 -12
  21. package/build/color-palette/index.js.map +1 -1
  22. package/build/color-palette/index.native.js +3 -3
  23. package/build/color-palette/index.native.js.map +1 -1
  24. package/build/combobox-control/index.js +7 -4
  25. package/build/combobox-control/index.js.map +1 -1
  26. package/build/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/constants.js +0 -0
  27. package/build/custom-gradient-picker/gradient-bar/constants.js.map +1 -0
  28. package/build/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/control-points.js +34 -41
  29. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -0
  30. package/build/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/index.js +0 -1
  31. package/build/custom-gradient-picker/gradient-bar/index.js.map +1 -0
  32. package/build/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/utils.js +0 -0
  33. package/build/custom-gradient-picker/gradient-bar/utils.js.map +1 -0
  34. package/build/custom-gradient-picker/index.js +19 -4
  35. package/build/custom-gradient-picker/index.js.map +1 -1
  36. package/build/custom-select-control/index.js +21 -11
  37. package/build/custom-select-control/index.js.map +1 -1
  38. package/build/custom-select-control/styles.js +34 -0
  39. package/build/custom-select-control/styles.js.map +1 -0
  40. package/build/date-time/constants.js +9 -0
  41. package/build/date-time/constants.js.map +1 -0
  42. package/build/date-time/date/index.js +175 -186
  43. package/build/date-time/date/index.js.map +1 -1
  44. package/build/date-time/date/styles.js +59 -40
  45. package/build/date-time/date/styles.js.map +1 -1
  46. package/build/date-time/date-time/index.js +5 -2
  47. package/build/date-time/date-time/index.js.map +1 -1
  48. package/build/date-time/time/index.js +22 -17
  49. package/build/date-time/time/index.js.map +1 -1
  50. package/build/date-time/utils.js +27 -0
  51. package/build/date-time/utils.js.map +1 -0
  52. package/build/dimension-control/index.js +2 -6
  53. package/build/dimension-control/index.js.map +1 -1
  54. package/build/disabled/index.js +28 -11
  55. package/build/disabled/index.js.map +1 -1
  56. package/build/disabled/styles/disabled-styles.js +3 -3
  57. package/build/disabled/styles/disabled-styles.js.map +1 -1
  58. package/build/{swatch → disabled}/types.js +0 -0
  59. package/build/{swatch → disabled}/types.js.map +0 -0
  60. package/build/dropdown/index.js +5 -6
  61. package/build/dropdown/index.js.map +1 -1
  62. package/build/duotone-picker/custom-duotone-bar.js +2 -2
  63. package/build/duotone-picker/custom-duotone-bar.js.map +1 -1
  64. package/build/duotone-picker/duotone-picker.js +9 -1
  65. package/build/duotone-picker/duotone-picker.js.map +1 -1
  66. package/build/duotone-picker/duotone-swatch.js +13 -3
  67. package/build/duotone-picker/duotone-swatch.js.map +1 -1
  68. package/build/focal-point-picker/index.js +4 -6
  69. package/build/focal-point-picker/index.js.map +1 -1
  70. package/build/focal-point-picker/styles/focal-point-style.js +4 -4
  71. package/build/focal-point-picker/styles/focal-point-style.js.map +1 -1
  72. package/build/font-size-picker/index.js +43 -14
  73. package/build/font-size-picker/index.js.map +1 -1
  74. package/build/font-size-picker/utils.js +32 -22
  75. package/build/font-size-picker/utils.js.map +1 -1
  76. package/build/form-token-field/index.js +11 -5
  77. package/build/form-token-field/index.js.map +1 -1
  78. package/build/gradient-picker/index.js +15 -3
  79. package/build/gradient-picker/index.js.map +1 -1
  80. package/build/guide/index.js +5 -3
  81. package/build/guide/index.js.map +1 -1
  82. package/build/guide/page-control.js +3 -7
  83. package/build/guide/page-control.js.map +1 -1
  84. package/build/item-group/styles.js +10 -10
  85. package/build/item-group/styles.js.map +1 -1
  86. package/build/mobile/bottom-sheet/index.native.js +3 -6
  87. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  88. package/build/mobile/global-styles-context/utils.native.js +3 -1
  89. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  90. package/build/mobile/image/index.native.js +6 -26
  91. package/build/mobile/image/index.native.js.map +1 -1
  92. package/build/mobile/picker/index.android.js +3 -3
  93. package/build/mobile/picker/index.android.js.map +1 -1
  94. package/build/modal/index.js +1 -3
  95. package/build/modal/index.js.map +1 -1
  96. package/build/navigable-container/container.js +9 -8
  97. package/build/navigable-container/container.js.map +1 -1
  98. package/build/navigator/navigator-back-button/hook.js +0 -4
  99. package/build/navigator/navigator-back-button/hook.js.map +1 -1
  100. package/build/navigator/navigator-button/hook.js +0 -4
  101. package/build/navigator/navigator-button/hook.js.map +1 -1
  102. package/build/notice/list.js +10 -6
  103. package/build/notice/list.js.map +1 -1
  104. package/build/palette-edit/index.js +1 -0
  105. package/build/palette-edit/index.js.map +1 -1
  106. package/build/palette-edit/styles.js +10 -10
  107. package/build/palette-edit/styles.js.map +1 -1
  108. package/build/popover/index.js +100 -97
  109. package/build/popover/index.js.map +1 -1
  110. package/build/popover/utils.js +178 -0
  111. package/build/popover/utils.js.map +1 -0
  112. package/build/range-control/index.js +3 -0
  113. package/build/range-control/index.js.map +1 -1
  114. package/build/range-control/styles/range-control-styles.js +43 -37
  115. package/build/range-control/styles/range-control-styles.js.map +1 -1
  116. package/build/select-control/chevron-down.js +30 -0
  117. package/build/select-control/chevron-down.js.map +1 -0
  118. package/build/select-control/index.js +7 -7
  119. package/build/select-control/index.js.map +1 -1
  120. package/build/select-control/styles/select-control-styles.js +30 -15
  121. package/build/select-control/styles/select-control-styles.js.map +1 -1
  122. package/build/snackbar/list.js +5 -3
  123. package/build/snackbar/list.js.map +1 -1
  124. package/build/spinner/index.js +2 -0
  125. package/build/spinner/index.js.map +1 -1
  126. package/build/text/styles.js +7 -7
  127. package/build/text/styles.js.map +1 -1
  128. package/build/toggle-group-control/toggle-group-control/component.js +16 -8
  129. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  130. package/build/toggle-group-control/toggle-group-control/styles.js +7 -5
  131. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  132. package/build/toggle-group-control/toggle-group-control-option/component.js +15 -5
  133. package/build/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  134. package/build/toggle-group-control/toggle-group-control-option-base/component.js +5 -1
  135. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  136. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +20 -7
  137. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  138. package/build/toggle-group-control/toggle-group-control-option-icon/component.js +26 -7
  139. package/build/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  140. package/build/tools-panel/styles.js +11 -11
  141. package/build/tools-panel/styles.js.map +1 -1
  142. package/build/ui/context/context-connect.js +1 -3
  143. package/build/ui/context/context-connect.js.map +1 -1
  144. package/build/unit-control/index.js +2 -3
  145. package/build/unit-control/index.js.map +1 -1
  146. package/build/utils/colors-values.js +52 -142
  147. package/build/utils/colors-values.js.map +1 -1
  148. package/build/utils/config-values.js +1 -1
  149. package/build/utils/config-values.js.map +1 -1
  150. package/build/utils/input/input-control.js +1 -1
  151. package/build/utils/input/input-control.js.map +1 -1
  152. package/build/utils/rtl.js +6 -5
  153. package/build/utils/rtl.js.map +1 -1
  154. package/build/utils/strings.js +50 -0
  155. package/build/utils/strings.js.map +1 -0
  156. package/build-module/alignment-matrix-control/index.js +1 -1
  157. package/build-module/alignment-matrix-control/index.js.map +1 -1
  158. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +9 -9
  159. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  160. package/build-module/angle-picker-control/index.js +3 -0
  161. package/build-module/angle-picker-control/index.js.map +1 -1
  162. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +13 -4
  163. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  164. package/build-module/autocomplete/index.js +9 -10
  165. package/build-module/autocomplete/index.js.map +1 -1
  166. package/build-module/base-control/styles/base-control-styles.js +8 -8
  167. package/build-module/base-control/styles/base-control-styles.js.map +1 -1
  168. package/build-module/base-field/styles.js +5 -5
  169. package/build-module/base-field/styles.js.map +1 -1
  170. package/build-module/box-control/styles/box-control-visualizer-styles.js +8 -8
  171. package/build-module/box-control/styles/box-control-visualizer-styles.js.map +1 -1
  172. package/build-module/color-list-picker/index.js +13 -5
  173. package/build-module/color-list-picker/index.js.map +1 -1
  174. package/build-module/color-palette/index.js +22 -11
  175. package/build-module/color-palette/index.js.map +1 -1
  176. package/build-module/color-palette/index.native.js +4 -4
  177. package/build-module/color-palette/index.native.js.map +1 -1
  178. package/build-module/combobox-control/index.js +6 -3
  179. package/build-module/combobox-control/index.js.map +1 -1
  180. package/build-module/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/constants.js +0 -0
  181. package/build-module/custom-gradient-picker/gradient-bar/constants.js.map +1 -0
  182. package/build-module/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/control-points.js +34 -41
  183. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -0
  184. package/build-module/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/index.js +0 -1
  185. package/build-module/custom-gradient-picker/gradient-bar/index.js.map +1 -0
  186. package/build-module/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/utils.js +0 -0
  187. package/build-module/custom-gradient-picker/gradient-bar/utils.js.map +1 -0
  188. package/build-module/custom-gradient-picker/index.js +16 -3
  189. package/build-module/custom-gradient-picker/index.js.map +1 -1
  190. package/build-module/custom-select-control/index.js +20 -12
  191. package/build-module/custom-select-control/index.js.map +1 -1
  192. package/build-module/custom-select-control/styles.js +22 -0
  193. package/build-module/custom-select-control/styles.js.map +1 -0
  194. package/build-module/date-time/constants.js +2 -0
  195. package/build-module/date-time/constants.js.map +1 -0
  196. package/build-module/date-time/date/index.js +178 -184
  197. package/build-module/date-time/date/index.js.map +1 -1
  198. package/build-module/date-time/date/styles.js +47 -38
  199. package/build-module/date-time/date/styles.js.map +1 -1
  200. package/build-module/date-time/date-time/index.js +4 -2
  201. package/build-module/date-time/date-time/index.js.map +1 -1
  202. package/build-module/date-time/time/index.js +20 -16
  203. package/build-module/date-time/time/index.js.map +1 -1
  204. package/build-module/date-time/utils.js +19 -0
  205. package/build-module/date-time/utils.js.map +1 -0
  206. package/build-module/dimension-control/index.js +1 -5
  207. package/build-module/dimension-control/index.js.map +1 -1
  208. package/build-module/disabled/index.js +28 -11
  209. package/build-module/disabled/index.js.map +1 -1
  210. package/build-module/disabled/styles/disabled-styles.js +3 -3
  211. package/build-module/disabled/styles/disabled-styles.js.map +1 -1
  212. package/build-module/{swatch → disabled}/types.js +0 -0
  213. package/build-module/{swatch → disabled}/types.js.map +0 -0
  214. package/build-module/dropdown/index.js +5 -6
  215. package/build-module/dropdown/index.js.map +1 -1
  216. package/build-module/duotone-picker/custom-duotone-bar.js +1 -1
  217. package/build-module/duotone-picker/custom-duotone-bar.js.map +1 -1
  218. package/build-module/duotone-picker/duotone-picker.js +7 -1
  219. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  220. package/build-module/duotone-picker/duotone-swatch.js +11 -3
  221. package/build-module/duotone-picker/duotone-swatch.js.map +1 -1
  222. package/build-module/focal-point-picker/index.js +4 -5
  223. package/build-module/focal-point-picker/index.js.map +1 -1
  224. package/build-module/focal-point-picker/styles/focal-point-style.js +4 -4
  225. package/build-module/focal-point-picker/styles/focal-point-style.js.map +1 -1
  226. package/build-module/font-size-picker/index.js +39 -14
  227. package/build-module/font-size-picker/index.js.map +1 -1
  228. package/build-module/font-size-picker/utils.js +31 -23
  229. package/build-module/font-size-picker/utils.js.map +1 -1
  230. package/build-module/form-token-field/index.js +12 -6
  231. package/build-module/form-token-field/index.js.map +1 -1
  232. package/build-module/gradient-picker/index.js +14 -3
  233. package/build-module/gradient-picker/index.js.map +1 -1
  234. package/build-module/guide/index.js +5 -3
  235. package/build-module/guide/index.js.map +1 -1
  236. package/build-module/guide/page-control.js +3 -6
  237. package/build-module/guide/page-control.js.map +1 -1
  238. package/build-module/item-group/styles.js +10 -10
  239. package/build-module/item-group/styles.js.map +1 -1
  240. package/build-module/mobile/bottom-sheet/index.native.js +3 -5
  241. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  242. package/build-module/mobile/global-styles-context/utils.native.js +2 -1
  243. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  244. package/build-module/mobile/image/index.native.js +8 -28
  245. package/build-module/mobile/image/index.native.js.map +1 -1
  246. package/build-module/mobile/picker/index.android.js +3 -3
  247. package/build-module/mobile/picker/index.android.js.map +1 -1
  248. package/build-module/modal/index.js +1 -2
  249. package/build-module/modal/index.js.map +1 -1
  250. package/build-module/navigable-container/container.js +9 -7
  251. package/build-module/navigable-container/container.js.map +1 -1
  252. package/build-module/navigator/navigator-back-button/hook.js +0 -4
  253. package/build-module/navigator/navigator-back-button/hook.js.map +1 -1
  254. package/build-module/navigator/navigator-button/hook.js +0 -4
  255. package/build-module/navigator/navigator-button/hook.js.map +1 -1
  256. package/build-module/notice/list.js +10 -5
  257. package/build-module/notice/list.js.map +1 -1
  258. package/build-module/palette-edit/index.js +1 -0
  259. package/build-module/palette-edit/index.js.map +1 -1
  260. package/build-module/palette-edit/styles.js +10 -10
  261. package/build-module/palette-edit/styles.js.map +1 -1
  262. package/build-module/popover/index.js +100 -98
  263. package/build-module/popover/index.js.map +1 -1
  264. package/build-module/popover/utils.js +164 -0
  265. package/build-module/popover/utils.js.map +1 -0
  266. package/build-module/range-control/index.js +3 -0
  267. package/build-module/range-control/index.js.map +1 -1
  268. package/build-module/range-control/styles/range-control-styles.js +43 -37
  269. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  270. package/build-module/select-control/chevron-down.js +21 -0
  271. package/build-module/select-control/chevron-down.js.map +1 -0
  272. package/build-module/select-control/index.js +7 -7
  273. package/build-module/select-control/index.js.map +1 -1
  274. package/build-module/select-control/styles/select-control-styles.js +24 -13
  275. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  276. package/build-module/snackbar/list.js +5 -2
  277. package/build-module/snackbar/list.js.map +1 -1
  278. package/build-module/spinner/index.js +2 -0
  279. package/build-module/spinner/index.js.map +1 -1
  280. package/build-module/text/styles.js +7 -7
  281. package/build-module/text/styles.js.map +1 -1
  282. package/build-module/toggle-group-control/toggle-group-control/component.js +14 -7
  283. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  284. package/build-module/toggle-group-control/toggle-group-control/styles.js +5 -4
  285. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  286. package/build-module/toggle-group-control/toggle-group-control-option/component.js +17 -3
  287. package/build-module/toggle-group-control/toggle-group-control-option/component.js.map +1 -1
  288. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +5 -1
  289. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  290. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +16 -6
  291. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  292. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js +27 -5
  293. package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
  294. package/build-module/tools-panel/styles.js +11 -11
  295. package/build-module/tools-panel/styles.js.map +1 -1
  296. package/build-module/ui/context/context-connect.js +1 -2
  297. package/build-module/ui/context/context-connect.js.map +1 -1
  298. package/build-module/unit-control/index.js +2 -2
  299. package/build-module/unit-control/index.js.map +1 -1
  300. package/build-module/utils/colors-values.js +52 -141
  301. package/build-module/utils/colors-values.js.map +1 -1
  302. package/build-module/utils/config-values.js +1 -1
  303. package/build-module/utils/config-values.js.map +1 -1
  304. package/build-module/utils/input/input-control.js +1 -1
  305. package/build-module/utils/input/input-control.js.map +1 -1
  306. package/build-module/utils/rtl.js +6 -4
  307. package/build-module/utils/rtl.js.map +1 -1
  308. package/build-module/utils/strings.js +37 -0
  309. package/build-module/utils/strings.js.map +1 -0
  310. package/build-style/style-rtl.css +176 -1227
  311. package/build-style/style.css +171 -1225
  312. package/build-types/color-palette/index.d.ts +2 -1
  313. package/build-types/color-palette/index.d.ts.map +1 -1
  314. package/build-types/color-picker/styles.d.ts +2 -2
  315. package/build-types/date-time/constants.d.ts +2 -0
  316. package/build-types/date-time/constants.d.ts.map +1 -0
  317. package/build-types/date-time/date/index.d.ts +3 -1
  318. package/build-types/date-time/date/index.d.ts.map +1 -1
  319. package/build-types/date-time/date/styles.d.ts +22 -8
  320. package/build-types/date-time/date/styles.d.ts.map +1 -1
  321. package/build-types/date-time/date/test/index.d.ts +1 -1
  322. package/build-types/date-time/date/test/index.d.ts.map +1 -1
  323. package/build-types/date-time/date-time/index.d.ts.map +1 -1
  324. package/build-types/date-time/time/index.d.ts.map +1 -1
  325. package/build-types/date-time/utils.d.ts +8 -0
  326. package/build-types/date-time/utils.d.ts.map +1 -0
  327. package/build-types/disabled/index.d.ts +35 -28
  328. package/build-types/disabled/index.d.ts.map +1 -1
  329. package/build-types/disabled/stories/index.d.ts +13 -0
  330. package/build-types/disabled/stories/index.d.ts.map +1 -0
  331. package/build-types/disabled/styles/disabled-styles.d.ts +2 -1
  332. package/build-types/disabled/styles/disabled-styles.d.ts.map +1 -1
  333. package/build-types/disabled/test/index.d.ts +2 -0
  334. package/build-types/{flyout/flyout → disabled/test}/index.d.ts.map +1 -1
  335. package/build-types/disabled/types.d.ts +14 -0
  336. package/build-types/disabled/types.d.ts.map +1 -0
  337. package/build-types/dropdown/index.d.ts.map +1 -1
  338. package/build-types/form-token-field/index.d.ts.map +1 -1
  339. package/build-types/form-token-field/stories/index.d.ts +1 -0
  340. package/build-types/form-token-field/stories/index.d.ts.map +1 -1
  341. package/build-types/form-token-field/types.d.ts +7 -0
  342. package/build-types/form-token-field/types.d.ts.map +1 -1
  343. package/build-types/navigator/navigator-back-button/hook.d.ts +0 -3
  344. package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
  345. package/build-types/navigator/navigator-button/hook.d.ts +0 -3
  346. package/build-types/navigator/navigator-button/hook.d.ts.map +1 -1
  347. package/build-types/placeholder/test/index.d.ts +2 -0
  348. package/build-types/{flyout → placeholder/test}/index.d.ts.map +1 -1
  349. package/build-types/popover/index.d.ts +1 -1
  350. package/build-types/popover/index.d.ts.map +1 -1
  351. package/build-types/popover/utils.d.ts +26 -69
  352. package/build-types/popover/utils.d.ts.map +1 -1
  353. package/build-types/range-control/index.d.ts +2 -2
  354. package/build-types/range-control/index.d.ts.map +1 -1
  355. package/build-types/range-control/styles/range-control-styles.d.ts +5 -2
  356. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  357. package/build-types/range-control/types.d.ts +2 -2
  358. package/build-types/range-control/types.d.ts.map +1 -1
  359. package/build-types/select-control/chevron-down.d.ts +4 -0
  360. package/build-types/select-control/chevron-down.d.ts.map +1 -0
  361. package/build-types/select-control/index.d.ts.map +1 -1
  362. package/build-types/select-control/styles/select-control-styles.d.ts +8 -0
  363. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  364. package/build-types/spinner/index.d.ts.map +1 -1
  365. package/build-types/toggle-group-control/stories/index.d.ts +25 -0
  366. package/build-types/toggle-group-control/stories/index.d.ts.map +1 -0
  367. package/build-types/toggle-group-control/test/index.d.ts +2 -0
  368. package/build-types/toggle-group-control/test/index.d.ts.map +1 -0
  369. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +6 -3
  370. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  371. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +1 -0
  372. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  373. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +6 -7
  374. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts.map +1 -1
  375. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  376. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +4 -0
  377. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  378. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +11 -9
  379. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts.map +1 -1
  380. package/build-types/toggle-group-control/types.d.ts +23 -10
  381. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  382. package/build-types/ui/context/context-connect.d.ts +3 -0
  383. package/build-types/ui/context/context-connect.d.ts.map +1 -1
  384. package/build-types/ui/form-group/use-form-group.d.ts +2 -2
  385. package/build-types/unit-control/index.d.ts +2 -1
  386. package/build-types/unit-control/index.d.ts.map +1 -1
  387. package/build-types/unit-control/types.d.ts +5 -1
  388. package/build-types/unit-control/types.d.ts.map +1 -1
  389. package/build-types/utils/colors-values.d.ts +18 -97
  390. package/build-types/utils/colors-values.d.ts.map +1 -1
  391. package/build-types/utils/rtl.d.ts.map +1 -1
  392. package/build-types/utils/strings.d.ts +2 -0
  393. package/build-types/utils/strings.d.ts.map +1 -0
  394. package/package.json +22 -21
  395. package/src/alignment-matrix-control/index.js +1 -1
  396. package/src/alignment-matrix-control/stories/index.js +49 -24
  397. package/src/alignment-matrix-control/styles/alignment-matrix-control-styles.js +1 -3
  398. package/src/angle-picker-control/index.js +7 -1
  399. package/src/angle-picker-control/stories/index.js +8 -5
  400. package/src/angle-picker-control/styles/angle-picker-control-styles.js +12 -3
  401. package/src/autocomplete/index.js +9 -18
  402. package/src/base-control/styles/base-control-styles.ts +1 -1
  403. package/src/base-field/styles.js +1 -1
  404. package/src/base-field/test/__snapshots__/index.js.snap +2 -2
  405. package/src/box-control/styles/box-control-visualizer-styles.js +0 -1
  406. package/src/box-control/test/index.js +8 -8
  407. package/src/button/test/index.js +188 -146
  408. package/src/color-list-picker/index.js +15 -3
  409. package/src/color-list-picker/style.scss +11 -0
  410. package/src/color-palette/index.js +32 -16
  411. package/src/color-palette/index.native.js +10 -6
  412. package/src/color-palette/stories/index.js +1 -1
  413. package/src/color-palette/test/__snapshots__/index.js.snap +17 -3
  414. package/src/combobox-control/index.js +6 -5
  415. package/src/combobox-control/stories/index.js +9 -3
  416. package/src/combobox-control/style.scss +0 -1
  417. package/src/confirm-dialog/test/index.js +85 -62
  418. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/constants.js +0 -0
  419. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/control-points.js +54 -50
  420. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/index.js +0 -3
  421. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/test/utils.js +0 -0
  422. package/src/{custom-gradient-bar → custom-gradient-picker/gradient-bar}/utils.js +0 -0
  423. package/src/custom-gradient-picker/index.js +18 -3
  424. package/src/custom-gradient-picker/stories/index.js +4 -3
  425. package/src/custom-gradient-picker/style.scss +30 -27
  426. package/src/custom-select-control/README.md +10 -0
  427. package/src/custom-select-control/index.js +22 -16
  428. package/src/custom-select-control/stories/index.js +1 -1
  429. package/src/custom-select-control/style.scss +0 -12
  430. package/src/custom-select-control/styles.ts +28 -0
  431. package/src/custom-select-control/test/index.js +4 -1
  432. package/src/date-time/constants.ts +1 -0
  433. package/src/date-time/date/index.tsx +289 -184
  434. package/src/date-time/date/styles.ts +86 -27
  435. package/src/date-time/date/test/index.tsx +18 -28
  436. package/src/date-time/date-time/index.tsx +3 -2
  437. package/src/date-time/time/index.tsx +23 -19
  438. package/src/date-time/utils.ts +17 -0
  439. package/src/dimension-control/index.js +1 -5
  440. package/src/disabled/index.tsx +80 -0
  441. package/src/disabled/stories/index.tsx +87 -0
  442. package/src/disabled/styles/{disabled-styles.js → disabled-styles.tsx} +0 -0
  443. package/src/disabled/test/index.tsx +174 -0
  444. package/src/disabled/types.ts +13 -0
  445. package/src/dropdown/index.js +3 -5
  446. package/src/dropdown-menu/stories/index.js +13 -2
  447. package/src/duotone-picker/custom-duotone-bar.js +1 -1
  448. package/src/duotone-picker/duotone-picker.js +34 -26
  449. package/src/duotone-picker/duotone-swatch.js +12 -5
  450. package/src/duotone-picker/stories/duotone-picker.js +66 -0
  451. package/src/duotone-picker/stories/duotone-swatch.js +32 -0
  452. package/src/focal-point-picker/index.js +10 -5
  453. package/src/focal-point-picker/styles/focal-point-style.js +0 -1
  454. package/src/focal-point-picker/test/index.js +78 -45
  455. package/src/font-size-picker/index.js +161 -144
  456. package/src/font-size-picker/stories/index.js +1 -0
  457. package/src/font-size-picker/style.scss +8 -5
  458. package/src/font-size-picker/test/index.js +13 -6
  459. package/src/font-size-picker/test/{util.js → utils.js} +77 -1
  460. package/src/font-size-picker/utils.js +38 -23
  461. package/src/form-token-field/README.md +1 -0
  462. package/src/form-token-field/index.tsx +24 -10
  463. package/src/form-token-field/stories/index.tsx +8 -0
  464. package/src/form-token-field/test/index.js +31 -0
  465. package/src/form-token-field/types.ts +7 -0
  466. package/src/gradient-picker/index.js +22 -7
  467. package/src/gradient-picker/stories/index.js +56 -81
  468. package/src/guide/index.js +3 -1
  469. package/src/guide/page-control.js +1 -6
  470. package/src/guide/stories/index.js +12 -11
  471. package/src/guide/test/index.js +54 -37
  472. package/src/guide/test/page-control.js +14 -17
  473. package/src/higher-order/with-notices/test/index.js +4 -2
  474. package/src/higher-order/with-spoken-messages/test/index.js +1 -1
  475. package/src/item-group/styles.ts +3 -3
  476. package/src/menu-group/test/index.js +18 -7
  477. package/src/mobile/bottom-sheet/index.native.js +2 -4
  478. package/src/mobile/global-styles-context/utils.native.js +2 -1
  479. package/src/mobile/image/index.native.js +9 -30
  480. package/src/mobile/picker/index.android.js +10 -4
  481. package/src/mobile/picker/styles.native.scss +4 -4
  482. package/src/modal/index.js +1 -2
  483. package/src/modal/test/index.js +11 -9
  484. package/src/navigable-container/container.js +12 -18
  485. package/src/navigable-container/test/menu.js +14 -11
  486. package/src/navigator/navigator-back-button/hook.ts +0 -3
  487. package/src/navigator/navigator-button/hook.ts +0 -3
  488. package/src/notice/list.js +12 -10
  489. package/src/palette-edit/index.js +1 -0
  490. package/src/palette-edit/styles.js +6 -5
  491. package/src/placeholder/README.md +1 -1
  492. package/src/placeholder/style.scss +65 -20
  493. package/src/placeholder/test/index.tsx +174 -0
  494. package/src/popover/index.js +133 -112
  495. package/src/popover/stories/index.js +17 -3
  496. package/src/popover/test/__snapshots__/index.js.snap +6 -6
  497. package/src/popover/test/index.js +129 -36
  498. package/src/popover/utils.js +107 -0
  499. package/src/range-control/index.tsx +3 -0
  500. package/src/range-control/styles/range-control-styles.ts +9 -4
  501. package/src/range-control/types.ts +5 -2
  502. package/src/select-control/chevron-down.tsx +25 -0
  503. package/src/select-control/index.tsx +6 -9
  504. package/src/select-control/styles/select-control-styles.ts +23 -14
  505. package/src/slot-fill/test/slot.js +5 -5
  506. package/src/snackbar/list.js +3 -2
  507. package/src/spinner/index.tsx +2 -0
  508. package/src/style.scss +0 -2
  509. package/src/text/styles.js +1 -1
  510. package/src/text/test/index.tsx +1 -1
  511. package/src/toggle-group-control/stories/index.tsx +127 -0
  512. package/src/toggle-group-control/test/__snapshots__/{index.js.snap → index.tsx.snap} +28 -22
  513. package/src/toggle-group-control/test/{index.js → index.tsx} +2 -4
  514. package/src/toggle-group-control/toggle-group-control/README.md +2 -0
  515. package/src/toggle-group-control/toggle-group-control/component.tsx +18 -9
  516. package/src/toggle-group-control/toggle-group-control/styles.ts +9 -6
  517. package/src/toggle-group-control/toggle-group-control-option/component.tsx +19 -3
  518. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +3 -0
  519. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +18 -0
  520. package/src/toggle-group-control/toggle-group-control-option-icon/README.md +6 -8
  521. package/src/toggle-group-control/toggle-group-control-option-icon/component.tsx +30 -7
  522. package/src/toggle-group-control/types.ts +74 -59
  523. package/src/toolbar/test/index.js +4 -4
  524. package/src/toolbar-group/test/index.js +9 -15
  525. package/src/tools-panel/styles.ts +2 -2
  526. package/src/tools-panel/test/index.js +3 -2
  527. package/src/tooltip/test/index.js +188 -172
  528. package/src/ui/context/context-connect.ts +3 -2
  529. package/src/unit-control/index.tsx +2 -2
  530. package/src/unit-control/types.ts +10 -1
  531. package/src/utils/colors-values.js +42 -137
  532. package/src/utils/config-values.js +1 -1
  533. package/src/utils/input/input-control.js +6 -6
  534. package/src/utils/rtl.js +6 -2
  535. package/src/utils/strings.ts +72 -0
  536. package/src/utils/test/strings.js +15 -0
  537. package/tsconfig.json +0 -1
  538. package/tsconfig.tsbuildinfo +1 -1
  539. package/build/custom-gradient-bar/constants.js.map +0 -1
  540. package/build/custom-gradient-bar/control-points.js.map +0 -1
  541. package/build/custom-gradient-bar/index.js.map +0 -1
  542. package/build/custom-gradient-bar/utils.js.map +0 -1
  543. package/build/date-time/date/utils.js +0 -34
  544. package/build/date-time/date/utils.js.map +0 -1
  545. package/build/swatch/index.js +0 -41
  546. package/build/swatch/index.js.map +0 -1
  547. package/build-module/custom-gradient-bar/constants.js.map +0 -1
  548. package/build-module/custom-gradient-bar/control-points.js.map +0 -1
  549. package/build-module/custom-gradient-bar/index.js.map +0 -1
  550. package/build-module/custom-gradient-bar/utils.js.map +0 -1
  551. package/build-module/date-time/date/utils.js +0 -22
  552. package/build-module/date-time/date/utils.js.map +0 -1
  553. package/build-module/swatch/index.js +0 -30
  554. package/build-module/swatch/index.js.map +0 -1
  555. package/build-types/color-picker/color-display.d.ts +0 -13
  556. package/build-types/color-picker/color-display.d.ts.map +0 -1
  557. package/build-types/date-time/date/test/utils.d.ts +0 -2
  558. package/build-types/date-time/date/test/utils.d.ts.map +0 -1
  559. package/build-types/date-time/date/utils.d.ts +0 -15
  560. package/build-types/date-time/date/utils.d.ts.map +0 -1
  561. package/build-types/flyout/context.d.ts +0 -6
  562. package/build-types/flyout/context.d.ts.map +0 -1
  563. package/build-types/flyout/flyout/component.d.ts +0 -21
  564. package/build-types/flyout/flyout/component.d.ts.map +0 -1
  565. package/build-types/flyout/flyout/hook.d.ts +0 -270
  566. package/build-types/flyout/flyout/hook.d.ts.map +0 -1
  567. package/build-types/flyout/flyout/index.d.ts +0 -3
  568. package/build-types/flyout/flyout-content/component.d.ts +0 -3
  569. package/build-types/flyout/flyout-content/component.d.ts.map +0 -1
  570. package/build-types/flyout/flyout-content/index.d.ts +0 -2
  571. package/build-types/flyout/flyout-content/index.d.ts.map +0 -1
  572. package/build-types/flyout/index.d.ts +0 -2
  573. package/build-types/flyout/styles.d.ts +0 -22
  574. package/build-types/flyout/styles.d.ts.map +0 -1
  575. package/build-types/flyout/types.d.ts +0 -80
  576. package/build-types/flyout/types.d.ts.map +0 -1
  577. package/build-types/flyout/utils.d.ts +0 -8
  578. package/build-types/flyout/utils.d.ts.map +0 -1
  579. package/build-types/swatch/index.d.ts +0 -5
  580. package/build-types/swatch/index.d.ts.map +0 -1
  581. package/build-types/swatch/types.d.ts +0 -11
  582. package/build-types/swatch/types.d.ts.map +0 -1
  583. package/build-types/utils/hooks/use-combined-ref.d.ts +0 -8
  584. package/build-types/utils/hooks/use-combined-ref.d.ts.map +0 -1
  585. package/src/date-time/date/datepicker.scss +0 -863
  586. package/src/date-time/date/style.scss +0 -85
  587. package/src/date-time/date/test/utils.ts +0 -32
  588. package/src/date-time/date/utils.ts +0 -20
  589. package/src/date-time/style.scss +0 -1
  590. package/src/disabled/index.js +0 -55
  591. package/src/disabled/stories/index.js +0 -61
  592. package/src/disabled/test/index.js +0 -240
  593. package/src/menu-group/test/__snapshots__/index.js.snap +0 -23
  594. package/src/placeholder/test/index.js +0 -163
  595. package/src/swatch/index.tsx +0 -22
  596. package/src/swatch/style.scss +0 -21
  597. package/src/swatch/types.ts +0 -11
  598. package/src/toggle-group-control/stories/index.js +0 -203
  599. package/src/tools-panel/test/__snapshots__/index.js.snap +0 -210
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { shallow, mount } from 'enzyme';
4
+ import { render, screen, act } from '@testing-library/react';
5
+ import userEvent from '@testing-library/user-event';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
@@ -11,254 +12,269 @@ import Tooltip from '../';
11
12
  * WordPress dependencies
12
13
  */
13
14
  import { TOOLTIP_DELAY } from '../index.js';
14
- import { act } from '@testing-library/react';
15
15
 
16
16
  describe( 'Tooltip', () => {
17
17
  describe( '#render()', () => {
18
- it( 'should render children (abort) if multiple children passed', () => {
19
- // Mount: Enzyme shallow does not support wrapping multiple nodes.
20
- const wrapper = mount(
21
- <Tooltip>
22
- <div />
23
- <div />
18
+ it( 'should not render the tooltip if multiple children are passed', () => {
19
+ render(
20
+ <Tooltip text="Help text">
21
+ <button>Button 1</button>
22
+ <button>Button 2</button>
24
23
  </Tooltip>
25
24
  );
26
25
 
27
- expect( wrapper.children() ).toHaveLength( 2 );
26
+ const button = screen.getByText( 'Button 1' );
27
+ button.focus();
28
+ expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
28
29
  } );
29
30
 
30
31
  it( 'should render children', () => {
31
- const wrapper = shallow(
32
- <Tooltip position="bottom right" text="Help text">
32
+ render(
33
+ <Tooltip text="Help text">
33
34
  <button>Hover Me!</button>
34
35
  </Tooltip>
35
36
  );
36
37
 
37
- const button = wrapper.find( 'button' );
38
- expect( wrapper.type() ).toBe( 'button' );
39
- expect( button.children() ).toHaveLength( 1 );
40
- expect( button.childAt( 0 ).text() ).toBe( 'Hover Me!' );
38
+ expect(
39
+ screen.getByRole( 'button', { name: 'Hover Me!' } )
40
+ ).toBeInTheDocument();
41
+ expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
41
42
  } );
42
43
 
43
- it( 'should render children with additional popover when over', () => {
44
- const wrapper = shallow(
45
- <Tooltip position="bottom right" text="Help text">
46
- <button>Hover Me!</button>
44
+ it( 'should render children with additional tooltip when focused', () => {
45
+ const mockOnFocus = jest.fn();
46
+
47
+ render(
48
+ <Tooltip text="Help text">
49
+ <button onFocus={ mockOnFocus }>Hover Me!</button>
47
50
  </Tooltip>
48
51
  );
49
52
 
50
- const event = { type: 'focus', currentTarget: {} };
51
- wrapper.simulate( 'focus', event );
52
-
53
- const button = wrapper.find( 'button' );
54
- const popover = wrapper.find( 'ForwardRef(Popover)' );
55
- expect( wrapper.type() ).toBe( 'button' );
56
- expect( button.children() ).toHaveLength( 2 );
57
- expect( button.childAt( 0 ).text() ).toBe( 'Hover Me!' );
58
- expect( button.childAt( 1 ).name() ).toBe( 'ForwardRef(Popover)' );
59
- expect( popover.prop( 'focusOnMount' ) ).toBe( false );
60
- expect( popover.prop( 'position' ) ).toBe( 'bottom right' );
61
- expect( popover.children().first().text() ).toBe( 'Help text' );
53
+ const button = screen.getByRole( 'button', { name: 'Hover Me!' } );
54
+ expect( button ).toBeInTheDocument();
55
+
56
+ // Before focus, the tooltip is not shown.
57
+ expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
58
+
59
+ button.focus();
60
+
61
+ // Tooltip is shown after focusing the anchor.
62
+ expect( screen.getByText( 'Help text' ) ).toBeInTheDocument();
63
+ expect( mockOnFocus ).toHaveBeenCalledWith(
64
+ expect.objectContaining( {
65
+ type: 'focus',
66
+ } )
67
+ );
62
68
  } );
63
69
 
64
- it( 'should show popover on focus', () => {
65
- const originalFocus = jest.fn();
66
- const event = { type: 'focus', currentTarget: {} };
67
- const wrapper = shallow(
70
+ it( 'should render children with additional tooltip when hovered', async () => {
71
+ const user = userEvent.setup( {
72
+ advanceTimers: jest.advanceTimersByTime,
73
+ } );
74
+
75
+ render(
68
76
  <Tooltip text="Help text">
69
- <button
70
- onMouseEnter={ originalFocus }
71
- onFocus={ originalFocus }
72
- >
73
- Hover Me!
74
- </button>
77
+ <button>Hover Me!</button>
75
78
  </Tooltip>
76
79
  );
77
80
 
78
- const button = wrapper.find( 'button' );
79
- button.simulate( 'focus', event );
81
+ const button = screen.getByRole( 'button', { name: 'Hover Me!' } );
82
+ expect( button ).toBeInTheDocument();
80
83
 
81
- const popover = wrapper.find( 'ForwardRef(Popover)' );
82
- expect( originalFocus ).toHaveBeenCalledWith( event );
83
- expect( popover ).toHaveLength( 1 );
84
+ await user.hover( button );
85
+
86
+ // Tooltip hasn't appeared yet
87
+ expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
88
+
89
+ act( () => jest.advanceTimersByTime( TOOLTIP_DELAY ) );
90
+
91
+ // Tooltip shows after the delay
92
+ expect( screen.getByText( 'Help text' ) ).toBeInTheDocument();
84
93
  } );
85
94
 
86
- it( 'should show not popover on focus as result of mousedown', async () => {
87
- const originalOnMouseDown = jest.fn();
88
- const originalOnMouseUp = jest.fn();
89
- const wrapper = mount(
95
+ it( 'should not show tooltip on focus as result of mouse click', async () => {
96
+ const user = userEvent.setup( {
97
+ advanceTimers: jest.advanceTimersByTime,
98
+ } );
99
+ const mockOnFocus = jest.fn();
100
+
101
+ render(
90
102
  <Tooltip text="Help text">
91
- <button
92
- onMouseDown={ originalOnMouseDown }
93
- onMouseUp={ originalOnMouseUp }
94
- >
95
- Hover Me!
96
- </button>
103
+ <button onFocus={ mockOnFocus }>Hover Me!</button>
97
104
  </Tooltip>
98
105
  );
99
106
 
100
- const button = wrapper.find( 'button' );
107
+ const button = screen.getByRole( 'button', { text: 'Hover Me!' } );
108
+ expect( button ).toBeInTheDocument();
101
109
 
102
- let event;
110
+ await user.click( button );
103
111
 
104
- event = { type: 'mousedown' };
105
- button.simulate( event.type, event );
106
- expect( originalOnMouseDown ).toHaveBeenCalledWith(
107
- expect.objectContaining( {
108
- type: event.type,
109
- } )
110
- );
112
+ // Tooltip hasn't appeared yet
113
+ expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
111
114
 
112
- event = { type: 'focus', currentTarget: {} };
113
- button.simulate( event.type, event );
115
+ act( () => jest.advanceTimersByTime( TOOLTIP_DELAY ) );
114
116
 
115
- const popover = wrapper.find( 'Popover' );
116
- expect( popover ).toHaveLength( 0 );
117
-
118
- event = new window.MouseEvent( 'mouseup' );
119
- await act( async () => document.dispatchEvent( event ) );
120
- expect( originalOnMouseUp ).toHaveBeenCalledWith(
117
+ // Tooltip still hasn't appeared yet, even though the component was focused
118
+ expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
119
+ expect( mockOnFocus ).toHaveBeenCalledWith(
121
120
  expect.objectContaining( {
122
- type: event.type,
121
+ type: 'focus',
123
122
  } )
124
123
  );
125
124
  } );
126
125
 
127
- it( 'should show popover on delayed mouseenter', () => {
128
- const originalMouseEnter = jest.fn();
129
- jest.useFakeTimers();
130
- const wrapper = mount(
131
- <Tooltip text="Help text">
126
+ it( 'should respect custom delay prop when showing tooltip', async () => {
127
+ const user = userEvent.setup( {
128
+ advanceTimers: jest.advanceTimersByTime,
129
+ } );
130
+
131
+ const TEST_DELAY = TOOLTIP_DELAY * 2;
132
+ const mockOnMouseEnter = jest.fn();
133
+ const mockOnFocus = jest.fn();
134
+
135
+ render(
136
+ <Tooltip text="Help text" delay={ TEST_DELAY }>
132
137
  <button
133
- onMouseEnter={ originalMouseEnter }
134
- onFocus={ originalMouseEnter }
138
+ onMouseEnter={ mockOnMouseEnter }
139
+ onFocus={ mockOnFocus }
135
140
  >
136
141
  <span>Hover Me!</span>
137
142
  </button>
138
143
  </Tooltip>
139
144
  );
140
145
 
141
- const button = wrapper.find( 'button' );
142
- button.simulate( 'mouseenter', { type: 'mouseenter' } );
146
+ const button = screen.getByRole( 'button', { name: 'Hover Me!' } );
147
+ expect( button ).toBeInTheDocument();
143
148
 
144
- const popoverBeforeTimeout = wrapper.find( 'Popover' );
145
- expect( popoverBeforeTimeout ).toHaveLength( 0 );
146
- expect( originalMouseEnter ).toHaveBeenCalledTimes( 1 );
149
+ await user.hover( button );
147
150
 
148
- // Force delayedSetIsOver to be called.
149
- setTimeout( () => {
150
- const popoverAfterTimeout = wrapper.find( 'Popover' );
151
- expect( popoverAfterTimeout ).toHaveLength( 1 );
151
+ // Tooltip hasn't appeared yet
152
+ expect( mockOnMouseEnter ).toHaveBeenCalledTimes( 1 );
152
153
 
153
- jest.runOnlyPendingTimers();
154
- jest.useRealTimers();
155
- }, TOOLTIP_DELAY );
156
- } );
154
+ // Advance by the usual TOOLTIP_DELAY
155
+ act( () => jest.advanceTimersByTime( TOOLTIP_DELAY ) );
157
156
 
158
- it( 'should respect custom delay prop when showing popover', () => {
159
- const originalMouseEnter = jest.fn();
160
- jest.useFakeTimers();
161
- const wrapper = mount(
162
- <Tooltip text="Help text" delay={ 2000 }>
163
- <button
164
- onMouseEnter={ originalMouseEnter }
165
- onFocus={ originalMouseEnter }
166
- >
167
- <span>Hover Me!</span>
168
- </button>
169
- </Tooltip>
170
- );
171
-
172
- const button = wrapper.find( 'button' );
173
- button.simulate( 'mouseenter', { type: 'mouseenter' } );
157
+ // Tooltip hasn't appeared yet after the usual delay
158
+ expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
174
159
 
175
- const popoverBeforeTimeout = wrapper.find( 'Popover' );
176
- expect( popoverBeforeTimeout ).toHaveLength( 0 );
177
- expect( originalMouseEnter ).toHaveBeenCalledTimes( 1 );
160
+ // Advance time again, so that we reach the full TEST_DELAY time
161
+ act( () => jest.advanceTimersByTime( TEST_DELAY - TOOLTIP_DELAY ) );
178
162
 
179
- // Popover does not yet exist after default delay, because custom delay is passed.
180
- setTimeout( () => {
181
- const popoverBetweenTimeout = wrapper.find( 'Popover' );
182
- expect( popoverBetweenTimeout ).toHaveLength( 0 );
183
- }, TOOLTIP_DELAY );
163
+ // Tooltip shows after TEST_DELAY time
164
+ expect( screen.getByText( 'Help text' ) ).toBeInTheDocument();
184
165
 
185
- // Popover appears after custom delay.
186
- setTimeout( () => {
187
- const popoverAfterTimeout = wrapper.find( 'Popover' );
188
- expect( popoverAfterTimeout ).toHaveLength( 1 );
189
-
190
- jest.runOnlyPendingTimers();
191
- jest.useRealTimers();
192
- }, 2000 );
166
+ expect( mockOnFocus ).not.toHaveBeenCalled();
193
167
  } );
194
168
 
195
- it( 'should show tooltip when an element is disabled', () => {
196
- const wrapper = mount(
169
+ it( 'should show tooltip when an element is disabled', async () => {
170
+ const user = userEvent.setup( {
171
+ advanceTimers: jest.advanceTimersByTime,
172
+ } );
173
+
174
+ const { container } = render(
197
175
  <Tooltip text="Show helpful text here">
198
176
  <button disabled>Click me</button>
199
177
  </Tooltip>
200
178
  );
201
- const button = wrapper.find( 'button[disabled]' );
202
- const buttonNode = button.at( 0 ).getDOMNode();
203
- const buttonRect = buttonNode.getBoundingClientRect();
204
- const eventCatcher = wrapper.find( '.event-catcher' );
205
- const eventCatcherNode = eventCatcher.at( 0 ).getDOMNode();
206
- const eventCatcherRect = eventCatcherNode.getBoundingClientRect();
179
+
180
+ const button = screen.getByRole( 'button', { name: 'Click me' } );
181
+ expect( button ).toBeInTheDocument();
182
+ expect( button ).toBeDisabled();
183
+
184
+ // Note: this is testing for implementation details,
185
+ // but couldn't find a better way.
186
+ const buttonRect = button.getBoundingClientRect();
187
+ const eventCatcher = container.querySelector( '.event-catcher' );
188
+ const eventCatcherRect = eventCatcher.getBoundingClientRect();
207
189
  expect( buttonRect ).toEqual( eventCatcherRect );
208
190
 
209
- eventCatcher.simulate( 'mouseenter', {
210
- type: 'mouseenter',
211
- currentTarget: {},
212
- } );
191
+ await user.hover( eventCatcher );
213
192
 
214
- setTimeout( () => {
215
- const popover = wrapper.find( 'Popover' );
216
- expect( popover ).toHaveLength( 1 );
217
- }, TOOLTIP_DELAY );
193
+ // Tooltip hasn't appeared yet
194
+ expect(
195
+ screen.queryByText( 'Show helpful text here' )
196
+ ).not.toBeInTheDocument();
197
+
198
+ act( () => jest.advanceTimersByTime( TOOLTIP_DELAY ) );
199
+
200
+ // Tooltip shows after the delay
201
+ expect(
202
+ screen.getByText( 'Show helpful text here' )
203
+ ).toBeInTheDocument();
218
204
  } );
219
205
 
220
- it( 'should not emit events back to children when they are disabled', () => {
221
- const handleClick = jest.fn();
206
+ it( 'should not emit events back to children when they are disabled', async () => {
207
+ const user = userEvent.setup( {
208
+ advanceTimers: jest.advanceTimersByTime,
209
+ } );
222
210
 
223
- const wrapper = mount(
211
+ const onClickMock = jest.fn();
212
+ const { container } = render(
224
213
  <Tooltip text="Show helpful text here">
225
- <button disabled onClick={ handleClick }>
214
+ <button disabled onClick={ onClickMock }>
226
215
  Click me
227
216
  </button>
228
217
  </Tooltip>
229
218
  );
230
219
 
231
- const eventCatcher = wrapper.find( '.event-catcher' );
232
- eventCatcher.simulate( 'click', {
233
- type: 'click',
234
- currentTarget: {},
235
- } );
236
-
237
- expect( handleClick ).toHaveBeenCalledTimes( 0 );
220
+ const eventCatcher =
221
+ container.getElementsByClassName( 'event-catcher' )[ 0 ];
222
+ await user.click( eventCatcher );
223
+ expect( onClickMock ).not.toHaveBeenCalled();
238
224
  } );
239
225
 
240
- it( 'should cancel pending setIsOver on mouseleave', () => {
241
- // Mount: Issues with using `setState` asynchronously with shallow-
242
- // rendered components: https://github.com/airbnb/enzyme/issues/450
243
- const originalMouseEnter = jest.fn();
244
- const wrapper = mount(
245
- <Tooltip text="Help text">
246
- <button
247
- onMouseEnter={ originalMouseEnter }
248
- onFocus={ originalMouseEnter }
249
- >
250
- Hover Me!
251
- </button>
252
- </Tooltip>
226
+ it( 'should not show tooltip if the mouse leaves the anchor before the tooltip has shown', async () => {
227
+ const user = userEvent.setup( {
228
+ advanceTimers: jest.advanceTimersByTime,
229
+ } );
230
+
231
+ const MOUSE_LEAVE_DELAY = TOOLTIP_DELAY - 200;
232
+ const onMouseEnterMock = jest.fn();
233
+ const onMouseLeaveMock = jest.fn();
234
+
235
+ render(
236
+ <>
237
+ <Tooltip text="Help text">
238
+ <button
239
+ onMouseEnter={ onMouseEnterMock }
240
+ onMouseLeave={ onMouseLeaveMock }
241
+ >
242
+ Hover Me!
243
+ </button>
244
+ </Tooltip>
245
+ <button>Hover me instead!</button>
246
+ </>
253
247
  );
254
248
 
255
- const button = wrapper.find( 'button' );
256
- button.simulate( 'mouseenter' );
249
+ const externalButton = screen.getByRole( 'button', {
250
+ name: 'Hover me instead!',
251
+ } );
252
+ const tooltipButton = screen.getByRole( 'button', {
253
+ name: 'Hover Me!',
254
+ } );
255
+
256
+ await user.hover( tooltipButton );
257
+
258
+ // Tooltip hasn't appeared yet
259
+ expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
260
+ expect( onMouseEnterMock ).toHaveBeenCalledTimes( 1 );
261
+
262
+ // Advance time by MOUSE_LEAVE_DELAY time
263
+ act( () => jest.advanceTimersByTime( MOUSE_LEAVE_DELAY ) );
264
+
265
+ // Hover the other button, meaning that the mouse will leave the tooltip anchor
266
+ await user.hover( externalButton );
267
+
268
+ // Tooltip still hasn't appeared yet
269
+ expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
270
+ expect( onMouseEnterMock ).toHaveBeenCalledTimes( 1 );
271
+ expect( onMouseLeaveMock ).toHaveBeenCalledTimes( 1 );
272
+
273
+ // Advance time again, so that we reach the full TOOLTIP_DELAY time
274
+ act( () => jest.advanceTimersByTime( TOOLTIP_DELAY ) );
257
275
 
258
- setTimeout( () => {
259
- const popover = wrapper.find( 'Popover' );
260
- expect( popover ).toHaveLength( 0 );
261
- }, TOOLTIP_DELAY );
276
+ // Tooltip won't show, since the mouse has left the anchor
277
+ expect( screen.queryByText( 'Help text' ) ).not.toBeInTheDocument();
262
278
  } );
263
279
  } );
264
280
  } );
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { uniq } from 'lodash';
5
4
  import type { ForwardedRef, ReactChild, ReactNode } from 'react';
6
5
 
7
6
  /**
@@ -70,7 +69,9 @@ export function contextConnect< P >(
70
69
  WrappedComponent.displayName = namespace;
71
70
 
72
71
  // @ts-ignore internal property
73
- WrappedComponent[ CONNECT_STATIC_NAMESPACE ] = uniq( mergedNamespace );
72
+ WrappedComponent[ CONNECT_STATIC_NAMESPACE ] = [
73
+ ...new Set( mergedNamespace ),
74
+ ];
74
75
 
75
76
  // @ts-ignore WordPressComponent property
76
77
  WrappedComponent.selector = `.${ getStyledClassNameFromKey( namespace ) }`;
@@ -9,7 +9,6 @@ import type {
9
9
  ChangeEvent,
10
10
  PointerEvent,
11
11
  } from 'react';
12
- import { omit } from 'lodash';
13
12
  import classnames from 'classnames';
14
13
 
15
14
  /**
@@ -47,6 +46,7 @@ function UnforwardedUnitControl(
47
46
  const {
48
47
  __unstableStateReducer: stateReducerProp,
49
48
  autoComplete = 'off',
49
+ children,
50
50
  className,
51
51
  disabled = false,
52
52
  disableUnits = false,
@@ -261,7 +261,7 @@ function UnforwardedUnitControl(
261
261
  <ValueInput
262
262
  aria-label={ label }
263
263
  type={ isPressEnterToChange ? 'text' : 'number' }
264
- { ...omit( props, [ 'children' ] ) }
264
+ { ...props }
265
265
  autoComplete={ autoComplete }
266
266
  className={ classes }
267
267
  disabled={ disabled }
@@ -1,7 +1,12 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { CSSProperties, FocusEventHandler, SyntheticEvent } from 'react';
4
+ import type {
5
+ CSSProperties,
6
+ FocusEventHandler,
7
+ ReactNode,
8
+ SyntheticEvent,
9
+ } from 'react';
5
10
 
6
11
  /**
7
12
  * Internal dependencies
@@ -74,6 +79,10 @@ export type UnitControlProps = Omit< UnitSelectControlProps, 'unit' > &
74
79
  > & {
75
80
  __unstableStateReducer?: StateReducer;
76
81
  __unstableInputWidth?: CSSProperties[ 'width' ];
82
+ /**
83
+ * The children elements.
84
+ */
85
+ children?: ReactNode;
77
86
  /**
78
87
  * If `true`, the unit `<select>` is hidden.
79
88
  *