@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
@@ -357,6 +357,13 @@ exports[`ColorPalette Dropdown should render it correctly 1`] = `
357
357
 
358
358
  <Dropdown
359
359
  contentClassName="components-color-palette__custom-color-dropdown-content"
360
+ popoverProps={
361
+ Object {
362
+ "__unstableShift": true,
363
+ "offset": 8,
364
+ "placement": "bottom",
365
+ }
366
+ }
360
367
  renderContent={[Function]}
361
368
  renderToggle={[Function]}
362
369
  >
@@ -728,6 +735,13 @@ exports[`ColorPalette should render a dynamic toolbar of colors 1`] = `
728
735
  >
729
736
  <Dropdown
730
737
  contentClassName="components-color-palette__custom-color-dropdown-content"
738
+ popoverProps={
739
+ Object {
740
+ "__unstableShift": true,
741
+ "offset": 8,
742
+ "placement": "bottom",
743
+ }
744
+ }
731
745
  renderContent={[Function]}
732
746
  renderToggle={[Function]}
733
747
  >
@@ -957,7 +971,7 @@ exports[`ColorPalette should render a dynamic toolbar of colors 1`] = `
957
971
  <Option
958
972
  aria-label="Color: red"
959
973
  isSelected={true}
960
- key="#f00"
974
+ key="#f00-0"
961
975
  onClick={[Function]}
962
976
  selectedIconProps={
963
977
  Object {
@@ -1060,7 +1074,7 @@ exports[`ColorPalette should render a dynamic toolbar of colors 1`] = `
1060
1074
  <Option
1061
1075
  aria-label="Color: white"
1062
1076
  isSelected={false}
1063
- key="#fff"
1077
+ key="#fff-1"
1064
1078
  onClick={[Function]}
1065
1079
  selectedIconProps={Object {}}
1066
1080
  style={
@@ -1120,7 +1134,7 @@ exports[`ColorPalette should render a dynamic toolbar of colors 1`] = `
1120
1134
  <Option
1121
1135
  aria-label="Color: blue"
1122
1136
  isSelected={false}
1123
- key="#00f"
1137
+ key="#00f-2"
1124
1138
  onClick={[Function]}
1125
1139
  selectedIconProps={Object {}}
1126
1140
  style={
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
- import removeAccents from 'remove-accents';
6
5
 
7
6
  /**
8
7
  * WordPress dependencies
@@ -30,6 +29,7 @@ import Button from '../button';
30
29
  import { FlexBlock, FlexItem } from '../flex';
31
30
  import withFocusOutside from '../higher-order/with-focus-outside';
32
31
  import { useControlledValue } from '../utils/hooks';
32
+ import { normalizeTextString } from '../utils/strings';
33
33
 
34
34
  const noop = () => {};
35
35
 
@@ -46,6 +46,8 @@ const DetectOutside = withFocusOutside(
46
46
  );
47
47
 
48
48
  function ComboboxControl( {
49
+ /** Start opting into the new margin-free styles that will become the default in a future version. */
50
+ __nextHasNoMarginBottom = false,
49
51
  __next36pxDefaultSize,
50
52
  value: valueProp,
51
53
  label,
@@ -83,11 +85,9 @@ function ComboboxControl( {
83
85
  const matchingSuggestions = useMemo( () => {
84
86
  const startsWithMatch = [];
85
87
  const containsMatch = [];
86
- const match = removeAccents( inputValue.toLocaleLowerCase() );
88
+ const match = normalizeTextString( inputValue );
87
89
  options.forEach( ( option ) => {
88
- const index = removeAccents( option.label )
89
- .toLocaleLowerCase()
90
- .indexOf( match );
90
+ const index = normalizeTextString( option.label ).indexOf( match );
91
91
  if ( index === 0 ) {
92
92
  startsWithMatch.push( option );
93
93
  } else if ( index > 0 ) {
@@ -222,6 +222,7 @@ function ComboboxControl( {
222
222
  return (
223
223
  <DetectOutside onFocusOutside={ onFocusOutside }>
224
224
  <BaseControl
225
+ __nextHasNoMarginBottom={ __nextHasNoMarginBottom }
225
226
  className={ classnames(
226
227
  className,
227
228
  'components-combobox-control'
@@ -257,6 +257,10 @@ const countries = [
257
257
  export default {
258
258
  title: 'Components/ComboboxControl',
259
259
  component: ComboboxControl,
260
+ argTypes: {
261
+ __nextHasNoMarginBottom: { control: { type: 'boolean' } },
262
+ onChange: { action: 'onChange' },
263
+ },
260
264
  };
261
265
 
262
266
  const mapCountryOption = ( country ) => ( {
@@ -266,7 +270,7 @@ const mapCountryOption = ( country ) => ( {
266
270
 
267
271
  const countryOptions = countries.map( mapCountryOption );
268
272
 
269
- function Template( args ) {
273
+ function Template( { onChange, ...args } ) {
270
274
  const [ value, setValue ] = useState( null );
271
275
 
272
276
  return (
@@ -274,9 +278,11 @@ function Template( args ) {
274
278
  <ComboboxControl
275
279
  { ...args }
276
280
  value={ value }
277
- onChange={ setValue }
281
+ onChange={ ( ...changeArgs ) => {
282
+ setValue( ...changeArgs );
283
+ onChange?.( ...changeArgs );
284
+ } }
278
285
  />
279
- <p>Value: { value }</p>
280
286
  </>
281
287
  );
282
288
  }
@@ -31,7 +31,6 @@ input.components-combobox-control__input[type="text"] {
31
31
  flex-wrap: wrap;
32
32
  align-items: flex-start;
33
33
  width: 100%;
34
- margin: 0 0 $grid-unit-10 0;
35
34
  padding: 0;
36
35
 
37
36
  &:focus-within {
@@ -6,7 +6,9 @@ import {
6
6
  screen,
7
7
  fireEvent,
8
8
  waitForElementToBeRemoved,
9
+ waitFor,
9
10
  } from '@testing-library/react';
11
+ import userEvent from '@testing-library/user-event';
10
12
 
11
13
  /**
12
14
  * Internal dependencies
@@ -19,19 +21,19 @@ describe( 'Confirm', () => {
19
21
  describe( 'Confirm component', () => {
20
22
  describe( 'Structure', () => {
21
23
  it( 'should render correctly', () => {
22
- const wrapper = render(
24
+ render(
23
25
  <ConfirmDialog onConfirm={ noop } onCancel={ noop }>
24
26
  Are you sure?
25
27
  </ConfirmDialog>
26
28
  );
27
29
 
28
- const dialog = wrapper.getByRole( 'dialog' );
30
+ const dialog = screen.getByRole( 'dialog' );
29
31
  const elementsTexts = [ 'Are you sure?', 'OK', 'Cancel' ];
30
32
 
31
33
  expect( dialog ).toBeInTheDocument();
32
34
 
33
35
  elementsTexts.forEach( ( txt ) => {
34
- const el = wrapper.getByText( txt );
36
+ const el = screen.getByText( txt );
35
37
  expect( el ).toBeInTheDocument();
36
38
  } );
37
39
  } );
@@ -66,64 +68,76 @@ describe( 'Confirm', () => {
66
68
 
67
69
  describe( 'When uncontrolled', () => {
68
70
  it( 'should render', () => {
69
- const wrapper = render(
71
+ render(
70
72
  <ConfirmDialog onConfirm={ noop } onCancel={ noop }>
71
73
  Are you sure?
72
74
  </ConfirmDialog>
73
75
  );
74
76
 
75
- const confirmDialog = wrapper.getByRole( 'dialog' );
77
+ const confirmDialog = screen.getByRole( 'dialog' );
76
78
 
77
79
  expect( confirmDialog ).toBeInTheDocument();
78
80
  } );
79
81
 
80
82
  it( 'should not render if closed by clicking `OK`, and the `onConfirm` callback should be called', async () => {
83
+ const user = userEvent.setup( {
84
+ advanceTimers: jest.advanceTimersByTime,
85
+ } );
86
+
81
87
  const onConfirm = jest.fn().mockName( 'onConfirm()' );
82
88
 
83
- const wrapper = render(
89
+ render(
84
90
  <ConfirmDialog onConfirm={ onConfirm }>
85
91
  Are you sure?
86
92
  </ConfirmDialog>
87
93
  );
88
94
 
89
- const confirmDialog = wrapper.getByRole( 'dialog' );
90
- const button = wrapper.getByText( 'OK' );
95
+ const confirmDialog = screen.getByRole( 'dialog' );
96
+ const button = screen.getByText( 'OK' );
91
97
 
92
- fireEvent.click( button );
98
+ await user.click( button );
93
99
 
94
100
  expect( confirmDialog ).not.toBeInTheDocument();
95
101
  expect( onConfirm ).toHaveBeenCalled();
96
102
  } );
97
103
 
98
104
  it( 'should not render if closed by clicking `Cancel`, and the `onCancel` callback should be called', async () => {
105
+ const user = userEvent.setup( {
106
+ advanceTimers: jest.advanceTimersByTime,
107
+ } );
108
+
99
109
  const onCancel = jest.fn().mockName( 'onCancel()' );
100
110
 
101
- const wrapper = render(
111
+ render(
102
112
  <ConfirmDialog onConfirm={ noop } onCancel={ onCancel }>
103
113
  Are you sure?
104
114
  </ConfirmDialog>
105
115
  );
106
116
 
107
- const confirmDialog = wrapper.getByRole( 'dialog' );
108
- const button = wrapper.getByText( 'Cancel' );
117
+ const confirmDialog = screen.getByRole( 'dialog' );
118
+ const button = screen.getByText( 'Cancel' );
109
119
 
110
- fireEvent.click( button );
120
+ await user.click( button );
111
121
 
112
122
  expect( confirmDialog ).not.toBeInTheDocument();
113
123
  expect( onCancel ).toHaveBeenCalled();
114
124
  } );
115
125
 
116
126
  it( 'should be dismissable even if an `onCancel` callback is not provided', async () => {
117
- const wrapper = render(
127
+ const user = userEvent.setup( {
128
+ advanceTimers: jest.advanceTimersByTime,
129
+ } );
130
+
131
+ render(
118
132
  <ConfirmDialog onConfirm={ noop }>
119
133
  Are you sure?
120
134
  </ConfirmDialog>
121
135
  );
122
136
 
123
- const confirmDialog = wrapper.getByRole( 'dialog' );
124
- const button = wrapper.getByText( 'Cancel' );
137
+ const confirmDialog = screen.getByRole( 'dialog' );
138
+ const button = screen.getByText( 'Cancel' );
125
139
 
126
- fireEvent.click( button );
140
+ await user.click( button );
127
141
 
128
142
  expect( confirmDialog ).not.toBeInTheDocument();
129
143
  } );
@@ -131,15 +145,16 @@ describe( 'Confirm', () => {
131
145
  it( 'should not render if dialog is closed by clicking the overlay, and the `onCancel` callback should be called', async () => {
132
146
  const onCancel = jest.fn().mockName( 'onCancel()' );
133
147
 
134
- const wrapper = render(
148
+ render(
135
149
  <ConfirmDialog onConfirm={ noop } onCancel={ onCancel }>
136
150
  Are you sure?
137
151
  </ConfirmDialog>
138
152
  );
139
153
 
140
- const confirmDialog = wrapper.getByRole( 'dialog' );
154
+ const confirmDialog = screen.getByRole( 'dialog' );
141
155
 
142
156
  //The overlay click is handled by detecting an onBlur from the modal frame.
157
+ // TODO: replace with `@testing-library/user-event`
143
158
  fireEvent.blur( confirmDialog );
144
159
 
145
160
  await waitForElementToBeRemoved( confirmDialog );
@@ -149,34 +164,42 @@ describe( 'Confirm', () => {
149
164
  } );
150
165
 
151
166
  it( 'should not render if dialog is closed by pressing `Escape`, and the `onCancel` callback should be called', async () => {
167
+ const user = userEvent.setup( {
168
+ advanceTimers: jest.advanceTimersByTime,
169
+ } );
170
+
152
171
  const onCancel = jest.fn().mockName( 'onCancel()' );
153
172
 
154
- const wrapper = render(
173
+ render(
155
174
  <ConfirmDialog onConfirm={ noop } onCancel={ onCancel }>
156
175
  Are you sure?
157
176
  </ConfirmDialog>
158
177
  );
159
178
 
160
- const confirmDialog = wrapper.getByRole( 'dialog' );
179
+ const confirmDialog = screen.getByRole( 'dialog' );
161
180
 
162
- fireEvent.keyDown( confirmDialog, { keyCode: 27 } );
181
+ await user.keyboard( '[Escape]' );
163
182
 
164
183
  expect( confirmDialog ).not.toBeInTheDocument();
165
184
  expect( onCancel ).toHaveBeenCalled();
166
185
  } );
167
186
 
168
187
  it( 'should not render if dialog is closed by pressing `Enter`, and the `onConfirm` callback should be called', async () => {
188
+ const user = userEvent.setup( {
189
+ advanceTimers: jest.advanceTimersByTime,
190
+ } );
191
+
169
192
  const onConfirm = jest.fn().mockName( 'onConfirm()' );
170
193
 
171
- const wrapper = render(
194
+ render(
172
195
  <ConfirmDialog onConfirm={ onConfirm }>
173
196
  Are you sure?
174
197
  </ConfirmDialog>
175
198
  );
176
199
 
177
- const confirmDialog = wrapper.getByRole( 'dialog' );
200
+ const confirmDialog = screen.getByRole( 'dialog' );
178
201
 
179
- fireEvent.keyDown( confirmDialog, { keyCode: 13 } );
202
+ await user.keyboard( '[Enter]' );
180
203
 
181
204
  expect( confirmDialog ).not.toBeInTheDocument();
182
205
  expect( onConfirm ).toHaveBeenCalled();
@@ -186,7 +209,7 @@ describe( 'Confirm', () => {
186
209
 
187
210
  describe( 'When controlled (isOpen is not `undefined`)', () => {
188
211
  it( 'should render when `isOpen` is set to `true`', async () => {
189
- const wrapper = render(
212
+ render(
190
213
  <ConfirmDialog
191
214
  isOpen={ true }
192
215
  onConfirm={ noop }
@@ -196,13 +219,13 @@ describe( 'Confirm', () => {
196
219
  </ConfirmDialog>
197
220
  );
198
221
 
199
- const confirmDialog = wrapper.getByRole( 'dialog' );
222
+ const confirmDialog = screen.getByRole( 'dialog' );
200
223
 
201
224
  expect( confirmDialog ).toBeInTheDocument();
202
225
  } );
203
226
 
204
227
  it( 'should not render if `isOpen` is set to false', async () => {
205
- const wrapper = render(
228
+ render(
206
229
  <ConfirmDialog
207
230
  isOpen={ false }
208
231
  onConfirm={ noop }
@@ -214,31 +237,39 @@ describe( 'Confirm', () => {
214
237
 
215
238
  // `queryByRole` needs to be used here because in this scenario the
216
239
  // dialog is never rendered.
217
- const confirmDialog = wrapper.queryByRole( 'dialog' );
240
+ const confirmDialog = screen.queryByRole( 'dialog' );
218
241
 
219
242
  expect( confirmDialog ).not.toBeInTheDocument();
220
243
  } );
221
244
 
222
245
  it( 'should call the `onConfirm` callback if `OK`', async () => {
246
+ const user = userEvent.setup( {
247
+ advanceTimers: jest.advanceTimersByTime,
248
+ } );
249
+
223
250
  const onConfirm = jest.fn().mockName( 'onConfirm()' );
224
251
 
225
- const wrapper = render(
252
+ render(
226
253
  <ConfirmDialog isOpen={ true } onConfirm={ onConfirm }>
227
254
  Are you sure?
228
255
  </ConfirmDialog>
229
256
  );
230
257
 
231
- const button = wrapper.getByText( 'OK' );
258
+ const button = screen.getByText( 'OK' );
232
259
 
233
- fireEvent.click( button );
260
+ await user.click( button );
234
261
 
235
262
  expect( onConfirm ).toHaveBeenCalled();
236
263
  } );
237
264
 
238
265
  it( 'should call the `onCancel` callback if `Cancel` is clicked', async () => {
266
+ const user = userEvent.setup( {
267
+ advanceTimers: jest.advanceTimersByTime,
268
+ } );
269
+
239
270
  const onCancel = jest.fn().mockName( 'onCancel()' );
240
271
 
241
- const wrapper = render(
272
+ render(
242
273
  <ConfirmDialog
243
274
  isOpen={ true }
244
275
  onConfirm={ noop }
@@ -248,19 +279,17 @@ describe( 'Confirm', () => {
248
279
  </ConfirmDialog>
249
280
  );
250
281
 
251
- const button = wrapper.getByText( 'Cancel' );
282
+ const button = screen.getByText( 'Cancel' );
252
283
 
253
- fireEvent.click( button );
284
+ await user.click( button );
254
285
 
255
286
  expect( onCancel ).toHaveBeenCalled();
256
287
  } );
257
288
 
258
289
  it( 'should call the `onCancel` callback if the overlay is clicked', async () => {
259
- jest.useFakeTimers();
260
-
261
290
  const onCancel = jest.fn().mockName( 'onCancel()' );
262
291
 
263
- const wrapper = render(
292
+ render(
264
293
  <ConfirmDialog
265
294
  isOpen={ true }
266
295
  onConfirm={ noop }
@@ -270,45 +299,43 @@ describe( 'Confirm', () => {
270
299
  </ConfirmDialog>
271
300
  );
272
301
 
273
- const frame = wrapper.baseElement.querySelector(
274
- '.components-modal__frame'
275
- );
302
+ const confirmDialog = screen.getByRole( 'dialog' );
276
303
 
277
304
  //The overlay click is handled by detecting an onBlur from the modal frame.
278
- fireEvent.blur( frame );
279
-
280
- // We don't wait for a DOM side effect here, so we need to fake the timers
281
- // and "advance" it so that the `queueBlurCheck` in the `useFocusOutside` hook
282
- // properly executes its timeout task.
283
- jest.advanceTimersByTime( 0 );
284
-
285
- expect( onCancel ).toHaveBeenCalled();
305
+ // TODO: replace with `@testing-library/user-event`
306
+ fireEvent.blur( confirmDialog );
286
307
 
287
- jest.useRealTimers();
308
+ // Wait for a DOM side effect here, so that the `queueBlurCheck` in the
309
+ // `useFocusOutside` hook properly executes its timeout task.
310
+ await waitFor( () => expect( onCancel ).toHaveBeenCalled() );
288
311
  } );
289
312
 
290
313
  it( 'should call the `onCancel` callback if the `Escape` key is pressed', async () => {
314
+ const user = userEvent.setup( {
315
+ advanceTimers: jest.advanceTimersByTime,
316
+ } );
317
+
291
318
  const onCancel = jest.fn().mockName( 'onCancel()' );
292
319
 
293
- const wrapper = render(
320
+ render(
294
321
  <ConfirmDialog onConfirm={ noop } onCancel={ onCancel }>
295
322
  Are you sure?
296
323
  </ConfirmDialog>
297
324
  );
298
325
 
299
- const frame = wrapper.baseElement.querySelector(
300
- '.components-modal__frame'
301
- );
302
-
303
- fireEvent.keyDown( frame, { keyCode: 27 } );
326
+ await user.keyboard( '[Escape]' );
304
327
 
305
328
  expect( onCancel ).toHaveBeenCalled();
306
329
  } );
307
330
 
308
331
  it( 'should call the `onConfirm` callback if the `Enter` key is pressed', async () => {
332
+ const user = userEvent.setup( {
333
+ advanceTimers: jest.advanceTimersByTime,
334
+ } );
335
+
309
336
  const onConfirm = jest.fn().mockName( 'onConfirm()' );
310
337
 
311
- const wrapper = render(
338
+ render(
312
339
  <ConfirmDialog
313
340
  isOpen={ true }
314
341
  onConfirm={ onConfirm }
@@ -318,11 +345,7 @@ describe( 'Confirm', () => {
318
345
  </ConfirmDialog>
319
346
  );
320
347
 
321
- const frame = wrapper.baseElement.querySelector(
322
- '.components-modal__frame'
323
- );
324
-
325
- fireEvent.keyDown( frame, { keyCode: 13 } );
348
+ await user.keyboard( '[Enter]' );
326
349
 
327
350
  expect( onConfirm ).toHaveBeenCalled();
328
351
  } );
@@ -11,15 +11,15 @@ import { useInstanceId } from '@wordpress/compose';
11
11
  import { useEffect, useRef, useState, useMemo } from '@wordpress/element';
12
12
  import { __, sprintf } from '@wordpress/i18n';
13
13
  import { plus } from '@wordpress/icons';
14
- import { LEFT, RIGHT } from '@wordpress/keycodes';
15
14
 
16
15
  /**
17
16
  * Internal dependencies
18
17
  */
19
- import Button from '../button';
20
- import { ColorPicker } from '../color-picker';
21
- import { VisuallyHidden } from '../visually-hidden';
22
- import { CustomColorPickerDropdown } from '../color-palette';
18
+ import Button from '../../button';
19
+ import { HStack } from '../../h-stack';
20
+ import { ColorPicker } from '../../color-picker';
21
+ import { VisuallyHidden } from '../../visually-hidden';
22
+ import { CustomColorPickerDropdown } from '../../color-palette';
23
23
 
24
24
  import {
25
25
  addControlPoint,
@@ -58,10 +58,6 @@ function ControlPointButton( { isOpen, position, color, ...additionalProps } ) {
58
58
  'is-active': isOpen,
59
59
  }
60
60
  ) }
61
- style={ {
62
- left: `${ position }%`,
63
- transform: 'translateX( -50% )',
64
- } }
65
61
  { ...additionalProps }
66
62
  />
67
63
  <VisuallyHidden id={ descriptionId }>
@@ -75,25 +71,28 @@ function ControlPointButton( { isOpen, position, color, ...additionalProps } ) {
75
71
 
76
72
  function GradientColorPickerDropdown( {
77
73
  isRenderedInSidebar,
78
- gradientPickerDomRef,
74
+ className,
79
75
  ...props
80
76
  } ) {
81
- const popoverProps = useMemo( () => {
82
- const result = {
83
- className:
84
- 'components-custom-gradient-picker__color-picker-popover',
85
- position: 'top',
86
- };
87
- if ( isRenderedInSidebar ) {
88
- result.anchorRef = gradientPickerDomRef.current;
89
- result.position = 'bottom left';
90
- }
91
- return result;
92
- }, [ gradientPickerDomRef, isRenderedInSidebar ] );
77
+ // Open the popover below the gradient control/insertion point
78
+ const popoverProps = useMemo(
79
+ () => ( {
80
+ placement: 'bottom',
81
+ offset: 8,
82
+ } ),
83
+ []
84
+ );
85
+
86
+ const mergedClassName = classnames(
87
+ 'components-custom-gradient-picker__control-point-dropdown',
88
+ className
89
+ );
90
+
93
91
  return (
94
92
  <CustomColorPickerDropdown
95
93
  isRenderedInSidebar={ isRenderedInSidebar }
96
94
  popoverProps={ popoverProps }
95
+ className={ mergedClassName }
97
96
  { ...props }
98
97
  />
99
98
  );
@@ -163,7 +162,6 @@ function ControlPoints( {
163
162
  return (
164
163
  ignoreMarkerPosition !== initialPosition && (
165
164
  <GradientColorPickerDropdown
166
- gradientPickerDomRef={ gradientPickerDomRef }
167
165
  isRenderedInSidebar={ __experimentalIsRenderedInSidebar }
168
166
  key={ index }
169
167
  onClose={ onStopControlPointChange }
@@ -205,7 +203,7 @@ function ControlPoints( {
205
203
  }
206
204
  } }
207
205
  onKeyDown={ ( event ) => {
208
- if ( event.keyCode === LEFT ) {
206
+ if ( event.code === 'ArrowLeft' ) {
209
207
  // Stop propagation of the key press event to avoid focus moving
210
208
  // to another editor area.
211
209
  event.stopPropagation();
@@ -219,7 +217,7 @@ function ControlPoints( {
219
217
  )
220
218
  )
221
219
  );
222
- } else if ( event.keyCode === RIGHT ) {
220
+ } else if ( event.code === 'ArrowRight' ) {
223
221
  // Stop propagation of the key press event to avoid focus moving
224
222
  // to another editor area.
225
223
  event.stopPropagation();
@@ -256,24 +254,32 @@ function ControlPoints( {
256
254
  } }
257
255
  />
258
256
  { ! disableRemove && controlPoints.length > 2 && (
259
- <Button
260
- className="components-custom-gradient-picker__remove-control-point"
261
- onClick={ () => {
262
- onChange(
263
- removeControlPoint(
264
- controlPoints,
265
- index
266
- )
267
- );
268
- onClose();
269
- } }
270
- variant="link"
257
+ <HStack
258
+ className="components-custom-gradient-picker__remove-control-point-wrapper"
259
+ alignment="center"
271
260
  >
272
- { __( 'Remove Control Point' ) }
273
- </Button>
261
+ <Button
262
+ onClick={ () => {
263
+ onChange(
264
+ removeControlPoint(
265
+ controlPoints,
266
+ index
267
+ )
268
+ );
269
+ onClose();
270
+ } }
271
+ variant="link"
272
+ >
273
+ { __( 'Remove Control Point' ) }
274
+ </Button>
275
+ </HStack>
274
276
  ) }
275
277
  </>
276
278
  ) }
279
+ style={ {
280
+ left: `${ point.position }%`,
281
+ transform: 'translateX( -50% )',
282
+ } }
277
283
  />
278
284
  )
279
285
  );
@@ -288,12 +294,10 @@ function InsertPoint( {
288
294
  insertPosition,
289
295
  disableAlpha,
290
296
  __experimentalIsRenderedInSidebar,
291
- gradientPickerDomRef,
292
297
  } ) {
293
298
  const [ alreadyInsertedPoint, setAlreadyInsertedPoint ] = useState( false );
294
299
  return (
295
300
  <GradientColorPickerDropdown
296
- gradientPickerDomRef={ gradientPickerDomRef }
297
301
  isRenderedInSidebar={ __experimentalIsRenderedInSidebar }
298
302
  className="components-custom-gradient-picker__inserter"
299
303
  onClose={ () => {
@@ -312,16 +316,8 @@ function InsertPoint( {
312
316
  }
313
317
  onToggle();
314
318
  } }
315
- className="components-custom-gradient-picker__insert-point"
319
+ className="components-custom-gradient-picker__insert-point-dropdown"
316
320
  icon={ plus }
317
- style={
318
- insertPosition !== null
319
- ? {
320
- left: `${ insertPosition }%`,
321
- transform: 'translateX( -50% )',
322
- }
323
- : undefined
324
- }
325
321
  />
326
322
  ) }
327
323
  renderContent={ () => (
@@ -349,6 +345,14 @@ function InsertPoint( {
349
345
  } }
350
346
  />
351
347
  ) }
348
+ style={
349
+ insertPosition !== null
350
+ ? {
351
+ left: `${ insertPosition }%`,
352
+ transform: 'translateX( -50% )',
353
+ }
354
+ : undefined
355
+ }
352
356
  />
353
357
  );
354
358
  }