@wordpress/components 22.1.0 → 23.1.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 (660) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/CONTRIBUTING.md +0 -21
  3. package/build/alignment-matrix-control/cell.js.map +1 -1
  4. package/build/alignment-matrix-control/icon.js +4 -2
  5. package/build/alignment-matrix-control/icon.js.map +1 -1
  6. package/build/alignment-matrix-control/index.js +25 -1
  7. package/build/alignment-matrix-control/index.js.map +1 -1
  8. package/build/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js +13 -13
  9. package/build/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js.map +1 -1
  10. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +16 -16
  11. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  12. package/build/alignment-matrix-control/types.js +6 -0
  13. package/build/alignment-matrix-control/types.js.map +1 -0
  14. package/build/alignment-matrix-control/utils.js +9 -8
  15. package/build/alignment-matrix-control/utils.js.map +1 -1
  16. package/build/angle-picker-control/styles/angle-picker-control-styles.js +9 -9
  17. package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  18. package/build/autocomplete/index.js +39 -12
  19. package/build/autocomplete/index.js.map +1 -1
  20. package/build/base-control/hooks.js +52 -0
  21. package/build/base-control/hooks.js.map +1 -0
  22. package/build/base-control/index.js +24 -7
  23. package/build/base-control/index.js.map +1 -1
  24. package/build/base-field/hook.js +0 -14
  25. package/build/base-field/hook.js.map +1 -1
  26. package/build/base-field/index.js.map +1 -1
  27. package/build/base-field/styles.js +5 -5
  28. package/build/base-field/styles.js.map +1 -1
  29. package/build/base-field/types.js +6 -0
  30. package/build/base-field/types.js.map +1 -0
  31. package/build/border-box-control/border-box-control/component.js +0 -3
  32. package/build/border-box-control/border-box-control/component.js.map +1 -1
  33. package/build/border-box-control/border-box-control/hook.js +0 -2
  34. package/build/border-box-control/border-box-control/hook.js.map +1 -1
  35. package/build/border-box-control/border-box-control-split-controls/component.js +0 -2
  36. package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  37. package/build/border-box-control/border-box-control-split-controls/hook.js +0 -2
  38. package/build/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  39. package/build/border-control/border-control/component.js +1 -2
  40. package/build/border-control/border-control/component.js.map +1 -1
  41. package/build/border-control/border-control/hook.js +0 -2
  42. package/build/border-control/border-control/hook.js.map +1 -1
  43. package/build/border-control/border-control-dropdown/component.js +6 -11
  44. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  45. package/build/border-control/border-control-dropdown/hook.js +0 -2
  46. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  47. package/build/border-control/styles.js +16 -16
  48. package/build/border-control/styles.js.map +1 -1
  49. package/build/box-control/linked-button.js +3 -4
  50. package/build/box-control/linked-button.js.map +1 -1
  51. package/build/color-palette/index.js +7 -15
  52. package/build/color-palette/index.js.map +1 -1
  53. package/build/color-picker/input-with-slider.js +1 -0
  54. package/build/color-picker/input-with-slider.js.map +1 -1
  55. package/build/color-picker/styles.js +8 -8
  56. package/build/color-picker/styles.js.map +1 -1
  57. package/build/custom-select-control/index.js +14 -2
  58. package/build/custom-select-control/index.js.map +1 -1
  59. package/build/dashicon/index.js +1 -4
  60. package/build/dashicon/index.js.map +1 -1
  61. package/build/date-time/date-time/index.js +4 -4
  62. package/build/date-time/date-time/index.js.map +1 -1
  63. package/build/dimension-control/index.js.map +1 -1
  64. package/build/dropdown/index.js +45 -10
  65. package/build/dropdown/index.js.map +1 -1
  66. package/build/duotone-picker/duotone-picker.js +2 -2
  67. package/build/duotone-picker/duotone-picker.js.map +1 -1
  68. package/build/gradient-picker/index.js +4 -11
  69. package/build/gradient-picker/index.js.map +1 -1
  70. package/build/higher-order/navigate-regions/index.js +4 -3
  71. package/build/higher-order/navigate-regions/index.js.map +1 -1
  72. package/build/higher-order/with-fallback-styles/index.js +2 -2
  73. package/build/higher-order/with-fallback-styles/index.js.map +1 -1
  74. package/build/index.js +13 -9
  75. package/build/index.js.map +1 -1
  76. package/build/input-control/index.js +17 -5
  77. package/build/input-control/index.js.map +1 -1
  78. package/build/input-control/input-base.js +2 -0
  79. package/build/input-control/input-base.js.map +1 -1
  80. package/build/mobile/bottom-sheet/cell.native.js +1 -1
  81. package/build/mobile/bottom-sheet/cell.native.js.map +1 -1
  82. package/build/mobile/bottom-sheet/picker-cell.native.js +1 -9
  83. package/build/mobile/bottom-sheet/picker-cell.native.js.map +1 -1
  84. package/build/mobile/bottom-sheet/switch-cell.native.js +1 -3
  85. package/build/mobile/bottom-sheet/switch-cell.native.js.map +1 -1
  86. package/build/mobile/global-styles-context/index.native.js +8 -8
  87. package/build/mobile/global-styles-context/index.native.js.map +1 -1
  88. package/build/mobile/global-styles-context/utils.native.js +30 -12
  89. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  90. package/build/mobile/keyboard-aware-flat-list/index.ios.js +4 -2
  91. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  92. package/build/modal/index.js +8 -0
  93. package/build/modal/index.js.map +1 -1
  94. package/build/navigator/navigator-provider/component.js +12 -8
  95. package/build/navigator/navigator-provider/component.js.map +1 -1
  96. package/build/number-control/styles/number-control-styles.js +8 -8
  97. package/build/number-control/styles/number-control-styles.js.map +1 -1
  98. package/build/palette-edit/index.js +72 -33
  99. package/build/palette-edit/index.js.map +1 -1
  100. package/build/popover/index.js +10 -2
  101. package/build/popover/index.js.map +1 -1
  102. package/build/query-controls/index.js +1 -0
  103. package/build/query-controls/index.js.map +1 -1
  104. package/build/snackbar/index.js +35 -24
  105. package/build/snackbar/index.js.map +1 -1
  106. package/build/snackbar/list.js +14 -19
  107. package/build/snackbar/list.js.map +1 -1
  108. package/build/snackbar/types.js +6 -0
  109. package/build/snackbar/types.js.map +1 -0
  110. package/build/tab-panel/index.js +15 -9
  111. package/build/tab-panel/index.js.map +1 -1
  112. package/build/theme/color-algorithms.js +118 -0
  113. package/build/theme/color-algorithms.js.map +1 -0
  114. package/build/theme/index.js +21 -18
  115. package/build/theme/index.js.map +1 -1
  116. package/build/theme/styles.js +10 -7
  117. package/build/theme/styles.js.map +1 -1
  118. package/build/toggle-control/index.js +5 -2
  119. package/build/toggle-control/index.js.map +1 -1
  120. package/build/ui/context/context-system-provider.js +3 -1
  121. package/build/ui/context/context-system-provider.js.map +1 -1
  122. package/build/unit-control/index.js +5 -2
  123. package/build/unit-control/index.js.map +1 -1
  124. package/build/utils/colors-values.js +1 -1
  125. package/build/utils/colors-values.js.map +1 -1
  126. package/build/utils/config-values.js +0 -2
  127. package/build/utils/config-values.js.map +1 -1
  128. package/build/utils/hooks/use-controlled-value.js.map +1 -1
  129. package/build-module/alignment-matrix-control/cell.js.map +1 -1
  130. package/build-module/alignment-matrix-control/icon.js +4 -2
  131. package/build-module/alignment-matrix-control/icon.js.map +1 -1
  132. package/build-module/alignment-matrix-control/index.js +23 -1
  133. package/build-module/alignment-matrix-control/index.js.map +1 -1
  134. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js +13 -13
  135. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js.map +1 -1
  136. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +16 -16
  137. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  138. package/build-module/alignment-matrix-control/types.js +2 -0
  139. package/build-module/alignment-matrix-control/types.js.map +1 -0
  140. package/build-module/alignment-matrix-control/utils.js +13 -8
  141. package/build-module/alignment-matrix-control/utils.js.map +1 -1
  142. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +9 -9
  143. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  144. package/build-module/autocomplete/index.js +39 -11
  145. package/build-module/autocomplete/index.js.map +1 -1
  146. package/build-module/base-control/hooks.js +41 -0
  147. package/build-module/base-control/hooks.js.map +1 -0
  148. package/build-module/base-control/index.js +18 -8
  149. package/build-module/base-control/index.js.map +1 -1
  150. package/build-module/base-field/hook.js +0 -14
  151. package/build-module/base-field/hook.js.map +1 -1
  152. package/build-module/base-field/index.js.map +1 -1
  153. package/build-module/base-field/styles.js +5 -5
  154. package/build-module/base-field/styles.js.map +1 -1
  155. package/build-module/base-field/types.js +2 -0
  156. package/build-module/base-field/types.js.map +1 -0
  157. package/build-module/border-box-control/border-box-control/component.js +0 -3
  158. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  159. package/build-module/border-box-control/border-box-control/hook.js +0 -2
  160. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  161. package/build-module/border-box-control/border-box-control-split-controls/component.js +0 -2
  162. package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  163. package/build-module/border-box-control/border-box-control-split-controls/hook.js +0 -2
  164. package/build-module/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  165. package/build-module/border-control/border-control/component.js +1 -2
  166. package/build-module/border-control/border-control/component.js.map +1 -1
  167. package/build-module/border-control/border-control/hook.js +0 -2
  168. package/build-module/border-control/border-control/hook.js.map +1 -1
  169. package/build-module/border-control/border-control-dropdown/component.js +6 -11
  170. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  171. package/build-module/border-control/border-control-dropdown/hook.js +0 -2
  172. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  173. package/build-module/border-control/styles.js +17 -17
  174. package/build-module/border-control/styles.js.map +1 -1
  175. package/build-module/box-control/linked-button.js +3 -4
  176. package/build-module/box-control/linked-button.js.map +1 -1
  177. package/build-module/color-palette/index.js +7 -15
  178. package/build-module/color-palette/index.js.map +1 -1
  179. package/build-module/color-picker/input-with-slider.js +1 -0
  180. package/build-module/color-picker/input-with-slider.js.map +1 -1
  181. package/build-module/color-picker/styles.js +8 -8
  182. package/build-module/color-picker/styles.js.map +1 -1
  183. package/build-module/custom-select-control/index.js +14 -2
  184. package/build-module/custom-select-control/index.js.map +1 -1
  185. package/build-module/dashicon/index.js +1 -4
  186. package/build-module/dashicon/index.js.map +1 -1
  187. package/build-module/date-time/date-time/index.js +4 -4
  188. package/build-module/date-time/date-time/index.js.map +1 -1
  189. package/build-module/dimension-control/index.js +1 -2
  190. package/build-module/dimension-control/index.js.map +1 -1
  191. package/build-module/dropdown/index.js +44 -10
  192. package/build-module/dropdown/index.js.map +1 -1
  193. package/build-module/duotone-picker/duotone-picker.js +2 -2
  194. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  195. package/build-module/gradient-picker/index.js +4 -10
  196. package/build-module/gradient-picker/index.js.map +1 -1
  197. package/build-module/higher-order/navigate-regions/index.js +4 -3
  198. package/build-module/higher-order/navigate-regions/index.js.map +1 -1
  199. package/build-module/higher-order/with-fallback-styles/index.js +2 -2
  200. package/build-module/higher-order/with-fallback-styles/index.js.map +1 -1
  201. package/build-module/index.js +2 -3
  202. package/build-module/index.js.map +1 -1
  203. package/build-module/input-control/index.js +16 -5
  204. package/build-module/input-control/index.js.map +1 -1
  205. package/build-module/input-control/input-base.js +2 -0
  206. package/build-module/input-control/input-base.js.map +1 -1
  207. package/build-module/mobile/bottom-sheet/cell.native.js +1 -1
  208. package/build-module/mobile/bottom-sheet/cell.native.js.map +1 -1
  209. package/build-module/mobile/bottom-sheet/picker-cell.native.js +1 -8
  210. package/build-module/mobile/bottom-sheet/picker-cell.native.js.map +1 -1
  211. package/build-module/mobile/bottom-sheet/switch-cell.native.js +1 -2
  212. package/build-module/mobile/bottom-sheet/switch-cell.native.js.map +1 -1
  213. package/build-module/mobile/global-styles-context/index.native.js +8 -7
  214. package/build-module/mobile/global-styles-context/index.native.js.map +1 -1
  215. package/build-module/mobile/global-styles-context/utils.native.js +31 -13
  216. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  217. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +2 -2
  218. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  219. package/build-module/modal/index.js +8 -0
  220. package/build-module/modal/index.js.map +1 -1
  221. package/build-module/navigator/navigator-provider/component.js +12 -8
  222. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  223. package/build-module/number-control/styles/number-control-styles.js +8 -10
  224. package/build-module/number-control/styles/number-control-styles.js.map +1 -1
  225. package/build-module/palette-edit/index.js +73 -34
  226. package/build-module/palette-edit/index.js.map +1 -1
  227. package/build-module/popover/index.js +10 -2
  228. package/build-module/popover/index.js.map +1 -1
  229. package/build-module/query-controls/index.js +1 -0
  230. package/build-module/query-controls/index.js.map +1 -1
  231. package/build-module/snackbar/index.js +33 -23
  232. package/build-module/snackbar/index.js.map +1 -1
  233. package/build-module/snackbar/list.js +14 -22
  234. package/build-module/snackbar/list.js.map +1 -1
  235. package/build-module/snackbar/types.js +2 -0
  236. package/build-module/snackbar/types.js.map +1 -0
  237. package/build-module/tab-panel/index.js +15 -8
  238. package/build-module/tab-panel/index.js.map +1 -1
  239. package/build-module/theme/color-algorithms.js +105 -0
  240. package/build-module/theme/color-algorithms.js.map +1 -0
  241. package/build-module/theme/index.js +21 -17
  242. package/build-module/theme/index.js.map +1 -1
  243. package/build-module/theme/styles.js +8 -6
  244. package/build-module/theme/styles.js.map +1 -1
  245. package/build-module/toggle-control/index.js +4 -2
  246. package/build-module/toggle-control/index.js.map +1 -1
  247. package/build-module/ui/context/context-system-provider.js +3 -2
  248. package/build-module/ui/context/context-system-provider.js.map +1 -1
  249. package/build-module/unit-control/index.js +5 -2
  250. package/build-module/unit-control/index.js.map +1 -1
  251. package/build-module/utils/colors-values.js +1 -1
  252. package/build-module/utils/colors-values.js.map +1 -1
  253. package/build-module/utils/config-values.js +0 -2
  254. package/build-module/utils/config-values.js.map +1 -1
  255. package/build-module/utils/hooks/use-controlled-value.js.map +1 -1
  256. package/build-style/style-rtl.css +108 -104
  257. package/build-style/style.css +108 -104
  258. package/build-types/alignment-matrix-control/cell.d.ts +5 -0
  259. package/build-types/alignment-matrix-control/cell.d.ts.map +1 -0
  260. package/build-types/alignment-matrix-control/icon.d.ts +6 -0
  261. package/build-types/alignment-matrix-control/icon.d.ts.map +1 -0
  262. package/build-types/alignment-matrix-control/index.d.ts +30 -0
  263. package/build-types/alignment-matrix-control/index.d.ts.map +1 -0
  264. package/build-types/alignment-matrix-control/stories/index.d.ts +14 -0
  265. package/build-types/alignment-matrix-control/stories/index.d.ts.map +1 -0
  266. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts +19 -0
  267. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts.map +1 -0
  268. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts +23 -0
  269. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts.map +1 -0
  270. package/build-types/alignment-matrix-control/test/index.d.ts +2 -0
  271. package/build-types/alignment-matrix-control/test/index.d.ts.map +1 -0
  272. package/build-types/alignment-matrix-control/types.d.ts +39 -0
  273. package/build-types/alignment-matrix-control/types.d.ts.map +1 -0
  274. package/build-types/alignment-matrix-control/utils.d.ts +33 -0
  275. package/build-types/alignment-matrix-control/utils.d.ts.map +1 -0
  276. package/build-types/base-control/hooks.d.ts +23 -0
  277. package/build-types/base-control/hooks.d.ts.map +1 -0
  278. package/build-types/base-control/index.d.ts +17 -7
  279. package/build-types/base-control/index.d.ts.map +1 -1
  280. package/build-types/base-control/stories/index.d.ts.map +1 -1
  281. package/build-types/base-control/test/index.d.ts +2 -0
  282. package/build-types/base-control/test/index.d.ts.map +1 -0
  283. package/build-types/base-control/types.d.ts +8 -2
  284. package/build-types/base-control/types.d.ts.map +1 -1
  285. package/build-types/base-field/hook.d.ts +7 -31
  286. package/build-types/base-field/hook.d.ts.map +1 -1
  287. package/build-types/base-field/index.d.ts +1 -1
  288. package/build-types/base-field/index.d.ts.map +1 -1
  289. package/build-types/base-field/styles.d.ts +5 -5
  290. package/build-types/base-field/styles.d.ts.map +1 -1
  291. package/build-types/base-field/test/index.d.ts +2 -0
  292. package/build-types/base-field/test/index.d.ts.map +1 -0
  293. package/build-types/base-field/types.d.ts +29 -0
  294. package/build-types/base-field/types.d.ts.map +1 -0
  295. package/build-types/border-box-control/border-box-control/component.d.ts +1 -1
  296. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  297. package/build-types/border-box-control/border-box-control/hook.d.ts +2 -3
  298. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  299. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +2 -2
  300. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +1 -1
  301. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
  302. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +2 -3
  303. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  304. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +2 -2
  305. package/build-types/border-box-control/stories/index.d.ts +1 -1
  306. package/build-types/border-control/border-control/component.d.ts +1 -1
  307. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  308. package/build-types/border-control/border-control/hook.d.ts +2 -3
  309. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  310. package/build-types/border-control/border-control-dropdown/component.d.ts +1 -1
  311. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  312. package/build-types/border-control/border-control-dropdown/hook.d.ts +2 -3
  313. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  314. package/build-types/border-control/border-control-style-picker/hook.d.ts +2 -2
  315. package/build-types/border-control/stories/index.d.ts +6 -6
  316. package/build-types/border-control/stories/index.d.ts.map +1 -1
  317. package/build-types/border-control/styles.d.ts.map +1 -1
  318. package/build-types/border-control/types.d.ts +1 -1
  319. package/build-types/border-control/types.d.ts.map +1 -1
  320. package/build-types/card/card/hook.d.ts +2 -2
  321. package/build-types/card/card-body/hook.d.ts +2 -2
  322. package/build-types/card/card-divider/hook.d.ts +2 -2
  323. package/build-types/card/card-footer/hook.d.ts +2 -2
  324. package/build-types/card/card-header/hook.d.ts +2 -2
  325. package/build-types/card/card-media/hook.d.ts +2 -2
  326. package/build-types/color-palette/index.d.ts +3 -4
  327. package/build-types/color-palette/index.d.ts.map +1 -1
  328. package/build-types/color-palette/stories/index.d.ts +6 -14
  329. package/build-types/color-palette/stories/index.d.ts.map +1 -1
  330. package/build-types/color-palette/styles.d.ts +1 -1
  331. package/build-types/color-palette/types.d.ts +4 -17
  332. package/build-types/color-palette/types.d.ts.map +1 -1
  333. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  334. package/build-types/color-picker/styles.d.ts +5 -5
  335. package/build-types/color-picker/styles.d.ts.map +1 -1
  336. package/build-types/custom-select-control/index.d.ts.map +1 -1
  337. package/build-types/dashicon/index.d.ts +6 -20
  338. package/build-types/dashicon/index.d.ts.map +1 -1
  339. package/build-types/dashicon/types.d.ts +14 -0
  340. package/build-types/dashicon/types.d.ts.map +1 -1
  341. package/build-types/date-time/date/styles.d.ts +3 -3
  342. package/build-types/date-time/date-time/styles.d.ts +3 -3
  343. package/build-types/date-time/time/styles.d.ts +8 -8
  344. package/build-types/disabled/stories/index.d.ts.map +1 -1
  345. package/build-types/dropdown/index.d.ts +29 -1
  346. package/build-types/dropdown/index.d.ts.map +1 -1
  347. package/build-types/dropdown/stories/index.d.ts +23 -0
  348. package/build-types/dropdown/stories/index.d.ts.map +1 -0
  349. package/build-types/dropdown/test/index.d.ts +2 -0
  350. package/build-types/dropdown/test/index.d.ts.map +1 -0
  351. package/build-types/dropdown/types.d.ts +101 -0
  352. package/build-types/dropdown/types.d.ts.map +1 -1
  353. package/build-types/elevation/hook.d.ts +2 -2
  354. package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
  355. package/build-types/flex/flex/hook.d.ts +2 -2
  356. package/build-types/flex/flex-block/hook.d.ts +2 -2
  357. package/build-types/flex/flex-item/hook.d.ts +2 -2
  358. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -5
  359. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts.map +1 -1
  360. package/build-types/grid/hook.d.ts +2 -2
  361. package/build-types/h-stack/component.d.ts +1 -1
  362. package/build-types/h-stack/hook.d.ts +2 -2
  363. package/build-types/heading/hook.d.ts +2 -2
  364. package/build-types/icon/stories/index.d.ts +22 -0
  365. package/build-types/icon/stories/index.d.ts.map +1 -0
  366. package/build-types/input-control/index.d.ts +1 -1
  367. package/build-types/input-control/index.d.ts.map +1 -1
  368. package/build-types/input-control/input-base.d.ts.map +1 -1
  369. package/build-types/input-control/stories/index.d.ts +1 -0
  370. package/build-types/input-control/stories/index.d.ts.map +1 -1
  371. package/build-types/input-control/types.d.ts +2 -1
  372. package/build-types/input-control/types.d.ts.map +1 -1
  373. package/build-types/item-group/item/hook.d.ts +2 -2
  374. package/build-types/item-group/item-group/hook.d.ts +2 -2
  375. package/build-types/modal/index.d.ts.map +1 -1
  376. package/build-types/modal/stories/index.d.ts.map +1 -1
  377. package/build-types/navigator/navigator-back-button/hook.d.ts +3 -3
  378. package/build-types/navigator/navigator-button/hook.d.ts +3 -3
  379. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  380. package/build-types/number-control/index.d.ts +2 -2
  381. package/build-types/number-control/index.d.ts.map +1 -1
  382. package/build-types/number-control/stories/index.d.ts +25 -0
  383. package/build-types/number-control/stories/index.d.ts.map +1 -0
  384. package/build-types/number-control/styles/number-control-styles.d.ts +6 -6
  385. package/build-types/number-control/styles/number-control-styles.d.ts.map +1 -1
  386. package/build-types/number-control/test/index.d.ts +2 -0
  387. package/build-types/number-control/test/index.d.ts.map +1 -0
  388. package/build-types/popover/index.d.ts +1 -1
  389. package/build-types/popover/index.d.ts.map +1 -1
  390. package/build-types/popover/stories/e2e/index.d.ts +1 -1
  391. package/build-types/range-control/index.d.ts +1 -1
  392. package/build-types/range-control/styles/range-control-styles.d.ts +2 -2
  393. package/build-types/resizable-box/resize-tooltip/index.d.ts +15 -19
  394. package/build-types/resizable-box/resize-tooltip/index.d.ts.map +1 -1
  395. package/build-types/resizable-box/resize-tooltip/label.d.ts +4 -3
  396. package/build-types/resizable-box/resize-tooltip/label.d.ts.map +1 -1
  397. package/build-types/scrollable/hook.d.ts +2 -2
  398. package/build-types/search-control/index.d.ts +1 -1
  399. package/build-types/search-control/stories/index.d.ts +2 -2
  400. package/build-types/snackbar/index.d.ts +19 -0
  401. package/build-types/snackbar/index.d.ts.map +1 -0
  402. package/build-types/snackbar/list.d.ts +18 -0
  403. package/build-types/snackbar/list.d.ts.map +1 -0
  404. package/build-types/snackbar/stories/index.d.ts +16 -0
  405. package/build-types/snackbar/stories/index.d.ts.map +1 -0
  406. package/build-types/snackbar/stories/list.d.ts +12 -0
  407. package/build-types/snackbar/stories/list.d.ts.map +1 -0
  408. package/build-types/snackbar/types.d.ts +111 -0
  409. package/build-types/snackbar/types.d.ts.map +1 -0
  410. package/build-types/spacer/hook.d.ts +2 -2
  411. package/build-types/spinner/index.d.ts +1 -1
  412. package/build-types/surface/hook.d.ts +2 -2
  413. package/build-types/tab-panel/index.d.ts +1 -1
  414. package/build-types/tab-panel/index.d.ts.map +1 -1
  415. package/build-types/tab-panel/types.d.ts +19 -1
  416. package/build-types/tab-panel/types.d.ts.map +1 -1
  417. package/build-types/text/hook.d.ts +2 -2
  418. package/build-types/text-control/index.d.ts +2 -2
  419. package/build-types/text-control/stories/index.d.ts.map +1 -1
  420. package/build-types/text-control/types.d.ts +1 -5
  421. package/build-types/text-control/types.d.ts.map +1 -1
  422. package/build-types/theme/color-algorithms.d.ts +20 -0
  423. package/build-types/theme/color-algorithms.d.ts.map +1 -0
  424. package/build-types/theme/index.d.ts +1 -1
  425. package/build-types/theme/index.d.ts.map +1 -1
  426. package/build-types/theme/stories/index.d.ts +4 -0
  427. package/build-types/theme/stories/index.d.ts.map +1 -1
  428. package/build-types/theme/styles.d.ts +3 -2
  429. package/build-types/theme/styles.d.ts.map +1 -1
  430. package/build-types/theme/test/color-algorithms.d.ts +2 -0
  431. package/build-types/theme/test/color-algorithms.d.ts.map +1 -0
  432. package/build-types/theme/types.d.ts +41 -3
  433. package/build-types/theme/types.d.ts.map +1 -1
  434. package/build-types/toggle-control/index.d.ts.map +1 -1
  435. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +2 -2
  436. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +2 -2
  437. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +1 -1
  438. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  439. package/build-types/tools-panel/tools-panel/hook.d.ts +2 -2
  440. package/build-types/tools-panel/tools-panel-header/hook.d.ts +2 -2
  441. package/build-types/tools-panel/tools-panel-item/hook.d.ts +2 -2
  442. package/build-types/truncate/hook.d.ts +2 -2
  443. package/build-types/ui/context/context-system-provider.d.ts.map +1 -1
  444. package/build-types/ui/control-group/hook.d.ts +2 -2
  445. package/build-types/ui/control-label/hook.d.ts +2 -2
  446. package/build-types/ui/form-group/form-group.d.ts +2 -2
  447. package/build-types/ui/form-group/use-form-group.d.ts +5 -5
  448. package/build-types/unit-control/index.d.ts +2 -1
  449. package/build-types/unit-control/index.d.ts.map +1 -1
  450. package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -2
  451. package/build-types/unit-control/types.d.ts +4 -0
  452. package/build-types/unit-control/types.d.ts.map +1 -1
  453. package/build-types/utils/config-values.d.ts +0 -2
  454. package/build-types/utils/hooks/use-controlled-value.d.ts +2 -1
  455. package/build-types/utils/hooks/use-controlled-value.d.ts.map +1 -1
  456. package/build-types/v-stack/component.d.ts +2 -2
  457. package/build-types/v-stack/hook.d.ts +2 -2
  458. package/build-types/v-stack/stories/index.d.ts +2 -2
  459. package/package.json +21 -20
  460. package/src/alignment-matrix-control/README.md +7 -7
  461. package/src/alignment-matrix-control/{cell.js → cell.tsx} +7 -1
  462. package/src/alignment-matrix-control/{icon.js → icon.tsx} +6 -3
  463. package/src/alignment-matrix-control/{index.js → index.tsx} +31 -4
  464. package/src/alignment-matrix-control/stories/{index.js → index.tsx} +17 -9
  465. package/src/alignment-matrix-control/styles/{alignment-matrix-control-icon-styles.js → alignment-matrix-control-icon-styles.ts} +11 -3
  466. package/src/alignment-matrix-control/styles/{alignment-matrix-control-styles.js → alignment-matrix-control-styles.ts} +13 -3
  467. package/src/alignment-matrix-control/test/{index.js → index.tsx} +5 -5
  468. package/src/alignment-matrix-control/types.ts +54 -0
  469. package/src/alignment-matrix-control/{utils.js → utils.tsx} +24 -14
  470. package/src/angle-picker-control/styles/angle-picker-control-styles.js +4 -0
  471. package/src/autocomplete/index.js +44 -15
  472. package/src/autocomplete/test/index.js +2 -0
  473. package/src/base-control/README.md +21 -12
  474. package/src/base-control/hooks.ts +45 -0
  475. package/src/base-control/index.tsx +18 -7
  476. package/src/base-control/stories/index.tsx +8 -10
  477. package/src/base-control/test/index.tsx +53 -0
  478. package/src/base-control/types.ts +8 -2
  479. package/src/base-field/README.md +21 -22
  480. package/src/base-field/{hook.js → hook.ts} +5 -15
  481. package/src/base-field/{index.js → index.ts} +0 -0
  482. package/src/base-field/{styles.js → styles.ts} +2 -2
  483. package/src/base-field/test/__snapshots__/{index.js.snap → index.tsx.snap} +4 -4
  484. package/src/base-field/test/{index.js → index.tsx} +10 -5
  485. package/src/base-field/types.ts +29 -0
  486. package/src/border-box-control/border-box-control/README.md +1 -0
  487. package/src/border-box-control/border-box-control/component.tsx +0 -7
  488. package/src/border-box-control/border-box-control/hook.ts +0 -2
  489. package/src/border-box-control/border-box-control-split-controls/component.tsx +0 -2
  490. package/src/border-box-control/border-box-control-split-controls/hook.ts +0 -2
  491. package/src/border-box-control/test/index.js +5 -1
  492. package/src/border-control/border-control/component.tsx +1 -4
  493. package/src/border-control/border-control/hook.ts +0 -2
  494. package/src/border-control/border-control-dropdown/component.tsx +11 -17
  495. package/src/border-control/border-control-dropdown/hook.ts +0 -2
  496. package/src/border-control/stories/index.tsx +0 -1
  497. package/src/border-control/styles.ts +1 -10
  498. package/src/border-control/test/index.js +70 -67
  499. package/src/border-control/types.ts +1 -4
  500. package/src/box-control/linked-button.js +8 -11
  501. package/src/box-control/test/index.js +207 -134
  502. package/src/button/stories/index.js +30 -0
  503. package/src/button/style.scss +17 -14
  504. package/src/button/test/index.js +32 -15
  505. package/src/card/test/index.tsx +32 -20
  506. package/src/checkbox-control/test/index.tsx +2 -0
  507. package/src/circular-option-picker/style.scss +1 -0
  508. package/src/color-palette/index.tsx +16 -18
  509. package/src/color-palette/stories/index.tsx +1 -18
  510. package/src/color-palette/test/__snapshots__/index.tsx.snap +4 -4
  511. package/src/color-palette/test/index.tsx +86 -36
  512. package/src/color-palette/types.ts +4 -18
  513. package/src/color-picker/README.md +1 -0
  514. package/src/color-picker/input-with-slider.tsx +1 -0
  515. package/src/color-picker/styles.ts +0 -4
  516. package/src/color-picker/test/index.js +2 -0
  517. package/src/combobox-control/test/index.js +2 -0
  518. package/src/confirm-dialog/README.md +3 -2
  519. package/src/confirm-dialog/test/index.js +2 -0
  520. package/src/custom-select-control/README.md +14 -0
  521. package/src/custom-select-control/index.js +14 -2
  522. package/src/dashicon/{index.js → index.tsx} +10 -4
  523. package/src/dashicon/types.ts +17 -0
  524. package/src/date-time/date/test/index.tsx +2 -0
  525. package/src/date-time/date-time/index.tsx +2 -2
  526. package/src/date-time/time/test/index.tsx +2 -0
  527. package/src/dimension-control/index.js +2 -3
  528. package/src/dimension-control/test/__snapshots__/index.test.js.snap +4 -8
  529. package/src/dimension-control/test/index.test.js +2 -0
  530. package/src/disabled/stories/index.tsx +6 -2
  531. package/src/disabled/test/index.tsx +23 -11
  532. package/src/dropdown/README.md +41 -46
  533. package/src/dropdown/{index.js → index.tsx} +57 -13
  534. package/src/dropdown/stories/{index.js → index.tsx} +21 -8
  535. package/src/dropdown/test/index.tsx +88 -0
  536. package/src/dropdown/types.ts +107 -0
  537. package/src/dropdown-menu/README.md +2 -3
  538. package/src/dropdown-menu/test/index.js +20 -12
  539. package/src/duotone-picker/duotone-picker.js +2 -2
  540. package/src/external-link/test/index.tsx +2 -0
  541. package/src/focal-point-picker/test/index.js +2 -0
  542. package/src/focal-point-picker/test/media.js +26 -21
  543. package/src/font-size-picker/test/index.tsx +2 -0
  544. package/src/form-file-upload/test/index.tsx +2 -0
  545. package/src/form-toggle/test/index.tsx +2 -0
  546. package/src/form-token-field/style.scss +1 -1
  547. package/src/form-token-field/test/index.tsx +3 -0
  548. package/src/gradient-picker/index.js +6 -10
  549. package/src/gradient-picker/stories/index.js +0 -1
  550. package/src/grid/test/grid.tsx +31 -31
  551. package/src/guide/test/index.js +2 -0
  552. package/src/higher-order/navigate-regions/index.js +5 -2
  553. package/src/higher-order/navigate-regions/style.scss +13 -59
  554. package/src/higher-order/with-fallback-styles/index.js +4 -2
  555. package/src/higher-order/with-filters/test/index.js +32 -43
  556. package/src/higher-order/with-focus-outside/test/index.js +2 -0
  557. package/src/higher-order/with-focus-return/test/index.js +3 -4
  558. package/src/higher-order/with-notices/test/index.js +1 -0
  559. package/src/icon/stories/index.tsx +103 -0
  560. package/src/index.js +2 -3
  561. package/src/input-control/index.tsx +42 -28
  562. package/src/input-control/input-base.tsx +8 -1
  563. package/src/input-control/stories/index.tsx +6 -0
  564. package/src/input-control/test/index.js +21 -0
  565. package/src/input-control/types.ts +2 -0
  566. package/src/isolated-event-container/test/index.js +2 -0
  567. package/src/mobile/bottom-sheet/cell.native.js +1 -1
  568. package/src/mobile/bottom-sheet/picker-cell.native.js +1 -6
  569. package/src/mobile/bottom-sheet/switch-cell.native.js +2 -2
  570. package/src/mobile/global-styles-context/index.native.js +9 -11
  571. package/src/mobile/global-styles-context/utils.native.js +17 -16
  572. package/src/mobile/keyboard-aware-flat-list/index.ios.js +2 -2
  573. package/src/mobile/link-settings/test/edit.native.js +68 -124
  574. package/src/modal/index.tsx +11 -0
  575. package/src/modal/stories/index.tsx +3 -0
  576. package/src/modal/test/index.tsx +13 -0
  577. package/src/navigable-container/test/navigable-menu.js +2 -0
  578. package/src/navigable-container/test/tababble-container.js +2 -0
  579. package/src/navigation/stories/index.js +6 -6
  580. package/src/navigation/stories/{controlled-state.js → utils/controlled-state.js} +3 -3
  581. package/src/navigation/stories/{default.js → utils/default.js} +3 -3
  582. package/src/navigation/stories/{group.js → utils/group.js} +4 -4
  583. package/src/navigation/stories/{hide-if-empty.js → utils/hide-if-empty.js} +3 -3
  584. package/src/navigation/stories/{more-examples.js → utils/more-examples.js} +4 -4
  585. package/src/navigation/stories/{search.js → utils/search.js} +5 -5
  586. package/src/navigation/test/index.js +2 -0
  587. package/src/navigator/navigator-provider/component.tsx +13 -10
  588. package/src/navigator/test/index.tsx +2 -0
  589. package/src/notice/test/index.js +8 -3
  590. package/src/notice/test/list.js +8 -5
  591. package/src/number-control/stories/{index.js → index.tsx} +24 -7
  592. package/src/number-control/styles/{number-control-styles.js → number-control-styles.ts} +5 -3
  593. package/src/number-control/test/index.tsx +602 -0
  594. package/src/palette-edit/index.js +88 -39
  595. package/src/palette-edit/test/index.js +25 -1
  596. package/src/panel/test/__snapshots__/body.js.snap +9 -0
  597. package/src/panel/test/body.js +71 -62
  598. package/src/placeholder/test/index.tsx +3 -0
  599. package/src/popover/index.tsx +10 -2
  600. package/src/popover/style.scss +12 -11
  601. package/src/popover/test/index.tsx +25 -15
  602. package/src/query-controls/index.js +1 -0
  603. package/src/range-control/test/index.tsx +57 -60
  604. package/src/resizable-box/style.scss +1 -0
  605. package/src/sandbox/test/index.js +13 -11
  606. package/src/search-control/style.scss +4 -0
  607. package/src/select-control/test/select-control.tsx +2 -0
  608. package/src/snackbar/README.md +63 -8
  609. package/src/snackbar/{index.js → index.tsx} +46 -28
  610. package/src/snackbar/{list.js → list.tsx} +20 -21
  611. package/src/snackbar/stories/index.tsx +96 -0
  612. package/src/snackbar/stories/list.tsx +98 -0
  613. package/src/snackbar/types.ts +116 -0
  614. package/src/tab-panel/README.md +9 -0
  615. package/src/tab-panel/index.tsx +15 -5
  616. package/src/tab-panel/style.scss +46 -34
  617. package/src/tab-panel/test/index.tsx +113 -0
  618. package/src/tab-panel/types.ts +20 -1
  619. package/src/text/test/__snapshots__/index.tsx.snap +1 -0
  620. package/src/text/test/index.tsx +98 -46
  621. package/src/text-control/stories/index.tsx +0 -1
  622. package/src/text-control/types.ts +1 -6
  623. package/src/text-highlight/test/index.tsx +1 -0
  624. package/src/theme/README.md +32 -2
  625. package/src/theme/color-algorithms.ts +138 -0
  626. package/src/theme/index.tsx +23 -16
  627. package/src/theme/stories/index.tsx +67 -0
  628. package/src/theme/styles.ts +22 -17
  629. package/src/theme/test/color-algorithms.ts +100 -0
  630. package/src/theme/test/index.tsx +68 -35
  631. package/src/theme/types.ts +43 -3
  632. package/src/toggle-control/index.tsx +4 -2
  633. package/src/toggle-group-control/test/index.tsx +15 -2
  634. package/src/toolbar/style.scss +1 -1
  635. package/src/toolbar-group/test/index.js +10 -6
  636. package/src/tools-panel/stories/index.js +1 -1
  637. package/src/tools-panel/stories/{tools-panel-with-item-group-slot.js → utils/tools-panel-with-item-group-slot.js} +14 -11
  638. package/src/tools-panel/test/index.js +20 -14
  639. package/src/tooltip/README.md +7 -0
  640. package/src/tooltip/stories/index.js +68 -78
  641. package/src/tooltip/style.scss +2 -2
  642. package/src/tooltip/test/index.js +111 -18
  643. package/src/ui/context/context-system-provider.js +3 -2
  644. package/src/ui/context/test/context-system-provider.js +5 -4
  645. package/src/ui/control-label/test/index.js +3 -5
  646. package/src/unit-control/README.md +9 -1
  647. package/src/unit-control/index.tsx +3 -0
  648. package/src/unit-control/test/index.tsx +4 -0
  649. package/src/unit-control/types.ts +4 -0
  650. package/src/utils/colors-values.js +1 -1
  651. package/src/utils/config-values.js +0 -2
  652. package/src/utils/hooks/test/use-latest-ref.js +2 -0
  653. package/src/utils/hooks/use-controlled-value.ts +2 -2
  654. package/src/utils/theme-variables.scss +20 -0
  655. package/tsconfig.json +2 -4
  656. package/tsconfig.tsbuildinfo +1 -1
  657. package/src/dropdown/test/index.js +0 -98
  658. package/src/icon/stories/index.js +0 -128
  659. package/src/number-control/test/index.js +0 -478
  660. package/src/snackbar/stories/index.js +0 -89
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render, screen, within } from '@testing-library/react';
4
+ import { render, screen, within, waitFor } from '@testing-library/react';
5
5
  import userEvent from '@testing-library/user-event';
6
6
 
7
7
  /**
@@ -9,24 +9,27 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import ColorPalette from '..';
11
11
 
12
+ jest.useFakeTimers();
13
+
14
+ const EXAMPLE_COLORS = [
15
+ { name: 'red', color: '#f00' },
16
+ { name: 'green', color: '#0f0' },
17
+ { name: 'blue', color: '#00f' },
18
+ ];
19
+ const INITIAL_COLOR = EXAMPLE_COLORS[ 0 ].color;
20
+
21
+ function getWrappingPopoverElement( element: HTMLElement ) {
22
+ return element.closest( '.components-popover' );
23
+ }
24
+
12
25
  describe( 'ColorPalette', () => {
13
- const colors = [
14
- { name: 'red', color: '#f00' },
15
- { name: 'white', color: '#fff' },
16
- { name: 'blue', color: '#00f' },
17
- ];
18
- const currentColor = '#f00';
19
- const onChange = jest.fn();
20
-
21
- beforeEach( () => {
22
- onChange.mockClear();
23
- } );
26
+ it( 'should render a dynamic toolbar of colors', () => {
27
+ const onChange = jest.fn();
24
28
 
25
- test( 'should render a dynamic toolbar of colors', () => {
26
29
  const { container } = render(
27
30
  <ColorPalette
28
- colors={ colors }
29
- value={ currentColor }
31
+ colors={ EXAMPLE_COLORS }
32
+ value={ INITIAL_COLOR }
30
33
  onChange={ onChange }
31
34
  />
32
35
  );
@@ -34,11 +37,13 @@ describe( 'ColorPalette', () => {
34
37
  expect( container ).toMatchSnapshot();
35
38
  } );
36
39
 
37
- test( 'should render three color button options', () => {
40
+ it( 'should render three color button options', () => {
41
+ const onChange = jest.fn();
42
+
38
43
  render(
39
44
  <ColorPalette
40
- colors={ colors }
41
- value={ currentColor }
45
+ colors={ EXAMPLE_COLORS }
46
+ value={ INITIAL_COLOR }
42
47
  onChange={ onChange }
43
48
  />
44
49
  );
@@ -48,15 +53,16 @@ describe( 'ColorPalette', () => {
48
53
  ).toHaveLength( 3 );
49
54
  } );
50
55
 
51
- test( 'should call onClick on an active button with undefined', async () => {
56
+ it( 'should call onClick on an active button with undefined', async () => {
52
57
  const user = userEvent.setup( {
53
58
  advanceTimers: jest.advanceTimersByTime,
54
59
  } );
60
+ const onChange = jest.fn();
55
61
 
56
62
  render(
57
63
  <ColorPalette
58
- colors={ colors }
59
- value={ currentColor }
64
+ colors={ EXAMPLE_COLORS }
65
+ value={ INITIAL_COLOR }
60
66
  onChange={ onChange }
61
67
  />
62
68
  );
@@ -69,19 +75,22 @@ describe( 'ColorPalette', () => {
69
75
  expect( onChange ).toHaveBeenCalledWith( undefined );
70
76
  } );
71
77
 
72
- test( 'should call onClick on an inactive button', async () => {
78
+ it( 'should call onClick on an inactive button', async () => {
73
79
  const user = userEvent.setup( {
74
80
  advanceTimers: jest.advanceTimersByTime,
75
81
  } );
82
+ const onChange = jest.fn();
76
83
 
77
84
  render(
78
85
  <ColorPalette
79
- colors={ colors }
80
- value={ currentColor }
86
+ colors={ EXAMPLE_COLORS }
87
+ value={ INITIAL_COLOR }
81
88
  onChange={ onChange }
82
89
  />
83
90
  );
84
91
 
92
+ // Click the first unpressed button
93
+ // (i.e. a button representing a color that is not the current color)
85
94
  await user.click(
86
95
  screen.getAllByRole( 'button', {
87
96
  name: /^Color:/,
@@ -89,19 +98,21 @@ describe( 'ColorPalette', () => {
89
98
  } )[ 0 ]
90
99
  );
91
100
 
101
+ // Expect the green color to have been selected
92
102
  expect( onChange ).toHaveBeenCalledTimes( 1 );
93
- expect( onChange ).toHaveBeenCalledWith( '#fff' );
103
+ expect( onChange ).toHaveBeenCalledWith( EXAMPLE_COLORS[ 1 ].color, 1 );
94
104
  } );
95
105
 
96
- test( 'should call onClick with undefined, when the clearButton onClick is triggered', async () => {
106
+ it( 'should call onClick with undefined, when the clearButton onClick is triggered', async () => {
97
107
  const user = userEvent.setup( {
98
108
  advanceTimers: jest.advanceTimersByTime,
99
109
  } );
110
+ const onChange = jest.fn();
100
111
 
101
112
  render(
102
113
  <ColorPalette
103
- colors={ colors }
104
- value={ currentColor }
114
+ colors={ EXAMPLE_COLORS }
115
+ value={ INITIAL_COLOR }
105
116
  onChange={ onChange }
106
117
  />
107
118
  );
@@ -112,12 +123,14 @@ describe( 'ColorPalette', () => {
112
123
  expect( onChange ).toHaveBeenCalledWith( undefined );
113
124
  } );
114
125
 
115
- test( 'should allow disabling custom color picker', () => {
126
+ it( 'should allow disabling custom color picker', () => {
127
+ const onChange = jest.fn();
128
+
116
129
  const { container } = render(
117
130
  <ColorPalette
118
- colors={ colors }
131
+ colors={ EXAMPLE_COLORS }
119
132
  disableCustomColors
120
- value={ currentColor }
133
+ value={ INITIAL_COLOR }
121
134
  onChange={ onChange }
122
135
  />
123
136
  );
@@ -125,15 +138,16 @@ describe( 'ColorPalette', () => {
125
138
  expect( container ).toMatchSnapshot();
126
139
  } );
127
140
 
128
- test( 'should render dropdown and its content', async () => {
141
+ it( 'should render dropdown and its content', async () => {
129
142
  const user = userEvent.setup( {
130
143
  advanceTimers: jest.advanceTimersByTime,
131
144
  } );
145
+ const onChange = jest.fn();
132
146
 
133
147
  render(
134
148
  <ColorPalette
135
- colors={ colors }
136
- value={ currentColor }
149
+ colors={ EXAMPLE_COLORS }
150
+ value={ INITIAL_COLOR }
137
151
  onChange={ onChange }
138
152
  />
139
153
  );
@@ -153,12 +167,48 @@ describe( 'ColorPalette', () => {
153
167
  expect( dropdownButton ).toBeVisible();
154
168
 
155
169
  expect(
156
- within( dropdownButton ).getByText( colors[ 0 ].name )
170
+ within( dropdownButton ).getByText( EXAMPLE_COLORS[ 0 ].name )
157
171
  ).toBeVisible();
172
+
158
173
  expect(
159
174
  within( dropdownButton ).getByText(
160
- colors[ 0 ].color.replace( '#', '' )
175
+ EXAMPLE_COLORS[ 0 ].color.replace( '#', '' )
161
176
  )
162
177
  ).toBeVisible();
178
+
179
+ // Check that the popover with custom color input has appeared.
180
+ const dropdownColorInput = screen.getByLabelText( 'Hex color' );
181
+
182
+ await waitFor( () =>
183
+ expect(
184
+ getWrappingPopoverElement( dropdownColorInput )
185
+ ).toBePositionedPopover()
186
+ );
187
+ } );
188
+
189
+ it( 'should show the clear button by default', () => {
190
+ const onChange = jest.fn();
191
+
192
+ render(
193
+ <ColorPalette
194
+ colors={ EXAMPLE_COLORS }
195
+ value={ INITIAL_COLOR }
196
+ onChange={ onChange }
197
+ />
198
+ );
199
+
200
+ expect(
201
+ screen.getByRole( 'button', { name: 'Clear' } )
202
+ ).toBeInTheDocument();
203
+ } );
204
+
205
+ it( 'should show the clear button even when `colors` is an empty array', () => {
206
+ const onChange = jest.fn();
207
+
208
+ render( <ColorPalette colors={ [] } onChange={ onChange } /> );
209
+
210
+ expect(
211
+ screen.getByRole( 'button', { name: 'Clear' } )
212
+ ).toBeInTheDocument();
163
213
  } );
164
214
  } );
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { CSSProperties, MouseEventHandler, ReactNode } from 'react';
4
+ import type { CSSProperties, ReactNode } from 'react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import type { PopoverProps } from '../popover/types';
9
+ import type { DropdownProps } from '../dropdown/types';
10
10
 
11
11
  export type ColorObject = {
12
12
  name: string;
@@ -24,7 +24,7 @@ type PaletteProps = {
24
24
  /**
25
25
  * Callback called when a color is selected.
26
26
  */
27
- onChange: ( newColor?: string ) => void;
27
+ onChange: ( newColor?: string, index?: number ) => void;
28
28
  value?: string;
29
29
  actions?: ReactNode;
30
30
  };
@@ -37,15 +37,8 @@ export type MultiplePalettesProps = PaletteProps & {
37
37
  colors: PaletteObject[];
38
38
  };
39
39
 
40
- // TODO: should extend `Dropdown`'s props once it gets refactored to TypeScript
41
- export type CustomColorPickerDropdownProps = {
40
+ export type CustomColorPickerDropdownProps = DropdownProps & {
42
41
  isRenderedInSidebar: boolean;
43
- renderContent: () => ReactNode;
44
- popoverProps?: Omit< PopoverProps, 'children' >;
45
- renderToggle: ( props: {
46
- isOpen: boolean;
47
- onToggle: MouseEventHandler< HTMLButtonElement >;
48
- } ) => ReactNode;
49
42
  };
50
43
 
51
44
  export type ColorPaletteProps = Pick< PaletteProps, 'onChange' > & {
@@ -81,13 +74,6 @@ export type ColorPaletteProps = Pick< PaletteProps, 'onChange' > & {
81
74
  * Currently active value.
82
75
  */
83
76
  value?: string;
84
- /**
85
- * Whether the colors prop is an array of color palettes,
86
- * rather than an array of color objects.
87
- *
88
- * @default false
89
- */
90
- __experimentalHasMultipleOrigins?: boolean;
91
77
  /**
92
78
  * Whether this is rendered in the sidebar.
93
79
  *
@@ -6,6 +6,7 @@
6
6
 
7
7
  ```jsx
8
8
  import { ColorPicker } from '@wordpress/components';
9
+ import { useState } from '@wordpress/element';
9
10
 
10
11
  function Example() {
11
12
  const [color, setColor] = useState();
@@ -60,6 +60,7 @@ export const InputWithSlider = ( {
60
60
  size="__unstable-large"
61
61
  />
62
62
  <RangeControl
63
+ __nextHasNoMarginBottom
63
64
  label={ label }
64
65
  hideLabelFromVision
65
66
  min={ min }
@@ -38,10 +38,6 @@ export const SelectControl = styled( InnerSelectControl )`
38
38
  export const RangeControl = styled( InnerRangeControl )`
39
39
  flex: 1;
40
40
  margin-right: ${ space( 2 ) };
41
-
42
- ${ StyledField } {
43
- margin-bottom: 0;
44
- }
45
41
  `;
46
42
 
47
43
  // Make the Hue circle picker not go out of the bar.
@@ -8,6 +8,8 @@ import { render, fireEvent } from '@testing-library/react';
8
8
  */
9
9
  import { ColorPicker } from '..';
10
10
 
11
+ jest.useFakeTimers();
12
+
11
13
  /**
12
14
  * Ordinarily we'd try to select the compnoent by role but the silder role appears
13
15
  * on several elements and we'd end up encoding assumptions about order when
@@ -14,6 +14,8 @@ import { useState } from '@wordpress/element';
14
14
  */
15
15
  import ComboboxControl from '../';
16
16
 
17
+ jest.useFakeTimers();
18
+
17
19
  const timezones = [
18
20
  { label: 'Greenwich Mean Time', value: 'GMT' },
19
21
  { label: 'Universal Coordinated Time', value: 'UTC' },
@@ -4,7 +4,7 @@
4
4
  This feature is still experimental. "Experimental" means this is an early implementation subject to drastic and breaking changes.
5
5
  </div>
6
6
 
7
- `ConfirmDialog` is built of top of [`Modal`](/packages/components/src/modal/README.md] and displays a confirmation dialog, with _confirm_ and _cancel_ buttons.
7
+ `ConfirmDialog` is built of top of [`Modal`](/packages/components/src/modal/README.md) and displays a confirmation dialog, with _confirm_ and _cancel_ buttons.
8
8
 
9
9
  The dialog is confirmed by clicking the _confirm_ button or by pressing the `Enter` key. It is cancelled (closed) by clicking the _cancel_ button, by pressing the `ESC` key, or by clicking outside the dialog focus (i.e, the overlay).
10
10
 
@@ -44,6 +44,7 @@ Let the parent component control when the dialog is open/closed. It's activated
44
44
 
45
45
  ```jsx
46
46
  import { __experimentalConfirmDialog as ConfirmDialog } from '@wordpress/components';
47
+ import { useState } from '@wordpress/element';
47
48
 
48
49
  function Example() {
49
50
  const [ isOpen, setIsOpen ] = useState( true );
@@ -72,7 +73,7 @@ function Example() {
72
73
 
73
74
  ### Unsupported: Multiple instances
74
75
 
75
- Multiple `ConfirmDialog's is an edge case that's currently not officially supported by this component. At the moment, new instances will end up closing the last instance due to the way the `Modal` is implemented.
76
+ Multiple `ConfirmDialog`s is an edge case that's currently not officially supported by this component. At the moment, new instances will end up closing the last instance due to the way the `Modal` is implemented.
76
77
 
77
78
  ## Custom Types
78
79
 
@@ -15,6 +15,8 @@ import userEvent from '@testing-library/user-event';
15
15
  */
16
16
  import { ConfirmDialog } from '..';
17
17
 
18
+ jest.useFakeTimers();
19
+
18
20
  const noop = () => {};
19
21
 
20
22
  describe( 'Confirm', () => {
@@ -145,6 +145,20 @@ A handler for onMouseOut events.
145
145
  - Type: `Function`
146
146
  - Required: No
147
147
 
148
+ #### onFocus
149
+
150
+ A handler for onFocus events.
151
+
152
+ - Type: `Function`
153
+ - Required: No
154
+
155
+ #### onBlur
156
+
157
+ A handler for onBlur events.
158
+
159
+ - Type: `Function`
160
+ - Required: No
161
+
148
162
  ## Related components
149
163
 
150
164
  - Like this component, but implemented using a native `<select>` for when custom styling is not necessary, the `SelectControl` component.
@@ -79,6 +79,8 @@ export default function CustomSelectControl( props ) {
79
79
  value: _selectedItem,
80
80
  onMouseOver,
81
81
  onMouseOut,
82
+ onFocus,
83
+ onBlur,
82
84
  __experimentalShowSelectedHint = false,
83
85
  } = props;
84
86
 
@@ -103,6 +105,16 @@ export default function CustomSelectControl( props ) {
103
105
 
104
106
  const [ isFocused, setIsFocused ] = useState( false );
105
107
 
108
+ function handleOnFocus( e ) {
109
+ setIsFocused( true );
110
+ onFocus?.( e );
111
+ }
112
+
113
+ function handleOnBlur( e ) {
114
+ setIsFocused( false );
115
+ onBlur?.( e );
116
+ }
117
+
106
118
  if ( ! __nextUnconstrainedWidth ) {
107
119
  deprecated(
108
120
  'Constrained width styles for wp.components.CustomSelectControl',
@@ -182,8 +194,8 @@ export default function CustomSelectControl( props ) {
182
194
  onMouseOver={ onMouseOver }
183
195
  onMouseOut={ onMouseOut }
184
196
  as="button"
185
- onFocus={ () => setIsFocused( true ) }
186
- onBlur={ () => setIsFocused( false ) }
197
+ onFocus={ handleOnFocus }
198
+ onBlur={ handleOnBlur }
187
199
  selectSize={ size }
188
200
  __next36pxDefaultSize={ __next36pxDefaultSize }
189
201
  { ...getToggleButtonProps( {
@@ -5,14 +5,20 @@
5
5
  * @property {string} [className] Class name
6
6
  * @property {number} [size] Size of the icon
7
7
  */
8
- /** @typedef {import('react').ComponentPropsWithoutRef<'span'> & OwnProps} Props */
9
8
 
10
9
  /**
11
- * @param {Props} props
12
- * @return {JSX.Element} Element
10
+ * Internal dependencies
13
11
  */
12
+ import type { WordPressComponentProps } from '../ui/context';
13
+ import type { DashiconProps } from './types';
14
14
 
15
- function Dashicon( { icon, className, size = 20, style = {}, ...extraProps } ) {
15
+ function Dashicon( {
16
+ icon,
17
+ className,
18
+ size = 20,
19
+ style = {},
20
+ ...extraProps
21
+ }: WordPressComponentProps< DashiconProps, 'span', false > ) {
16
22
  const iconClass = [
17
23
  'dashicon',
18
24
  'dashicons',
@@ -1,3 +1,20 @@
1
+ export type DashiconProps = {
2
+ /**
3
+ * The icon name
4
+ */
5
+ icon: IconKey;
6
+
7
+ /**
8
+ * Class name
9
+ */
10
+ className?: string;
11
+
12
+ /**
13
+ * Size of the icon
14
+ */
15
+ size?: number;
16
+ };
17
+
1
18
  export type IconKey =
2
19
  | 'admin-appearance'
3
20
  | 'admin-collapse'
@@ -10,6 +10,8 @@ import userEvent from '@testing-library/user-event';
10
10
  */
11
11
  import DatePicker from '..';
12
12
 
13
+ jest.useFakeTimers();
14
+
13
15
  describe( 'DatePicker', () => {
14
16
  it( 'should highlight the current date', () => {
15
17
  render( <DatePicker currentDate="2022-05-02T11:00:00" /> );
@@ -43,14 +43,14 @@ function UnforwardedDateTimePicker(
43
43
  if ( ! __nextRemoveHelpButton ) {
44
44
  deprecated( 'Help button in wp.components.DateTimePicker', {
45
45
  since: '13.4',
46
- version: '14.6', // Six months of plugin releases.
46
+ version: '15.8', // One year of plugin releases.
47
47
  hint: 'Set the `__nextRemoveHelpButton` prop to `true` to remove this warning and opt in to the new behaviour, which will become the default in a future version.',
48
48
  } );
49
49
  }
50
50
  if ( ! __nextRemoveResetButton ) {
51
51
  deprecated( 'Reset button in wp.components.DateTimePicker', {
52
52
  since: '13.4',
53
- version: '14.6', // Six months of plugin releases.
53
+ version: '15.8', // One year of plugin releases.
54
54
  hint: 'Set the `__nextRemoveResetButton` prop to `true` to remove this warning and opt in to the new behaviour, which will become the default in a future version.',
55
55
  } );
56
56
  }
@@ -9,6 +9,8 @@ import userEvent from '@testing-library/user-event';
9
9
  */
10
10
  import TimePicker from '..';
11
11
 
12
+ jest.useFakeTimers();
13
+
12
14
  describe( 'TimePicker', () => {
13
15
  it( 'should call onChange with updated date values', async () => {
14
16
  const user = userEvent.setup( {
@@ -7,7 +7,6 @@ import classnames from 'classnames';
7
7
  * WordPress dependencies
8
8
  */
9
9
  import { __ } from '@wordpress/i18n';
10
- import { Fragment } from '@wordpress/element';
11
10
 
12
11
  /**
13
12
  * Internal dependencies
@@ -50,10 +49,10 @@ export function DimensionControl( props ) {
50
49
  };
51
50
 
52
51
  const selectLabel = (
53
- <Fragment>
52
+ <>
54
53
  { icon && <Icon icon={ icon } /> }
55
54
  { label }
56
- </Fragment>
55
+ </>
57
56
  );
58
57
 
59
58
  return (
@@ -37,7 +37,6 @@ exports[`DimensionControl rendering renders with custom sizes 1`] = `
37
37
  -webkit-box-pack: justify;
38
38
  -webkit-justify-content: space-between;
39
39
  justify-content: space-between;
40
- height: 100%;
41
40
  box-sizing: border-box;
42
41
  position: relative;
43
42
  border-radius: 2px;
@@ -175,7 +174,7 @@ exports[`DimensionControl rendering renders with custom sizes 1`] = `
175
174
  position: absolute;
176
175
  right: 0;
177
176
  top: 0;
178
- border-color: #757575;
177
+ border-color: #949494;
179
178
  border-style: solid;
180
179
  border-width: 1px;
181
180
  padding-left: 2px;
@@ -309,7 +308,6 @@ exports[`DimensionControl rendering renders with defaults 1`] = `
309
308
  -webkit-box-pack: justify;
310
309
  -webkit-justify-content: space-between;
311
310
  justify-content: space-between;
312
- height: 100%;
313
311
  box-sizing: border-box;
314
312
  position: relative;
315
313
  border-radius: 2px;
@@ -447,7 +445,7 @@ exports[`DimensionControl rendering renders with defaults 1`] = `
447
445
  position: absolute;
448
446
  right: 0;
449
447
  top: 0;
450
- border-color: #757575;
448
+ border-color: #949494;
451
449
  border-style: solid;
452
450
  border-width: 1px;
453
451
  padding-left: 2px;
@@ -591,7 +589,6 @@ exports[`DimensionControl rendering renders with icon and custom icon label 1`]
591
589
  -webkit-box-pack: justify;
592
590
  -webkit-justify-content: space-between;
593
591
  justify-content: space-between;
594
- height: 100%;
595
592
  box-sizing: border-box;
596
593
  position: relative;
597
594
  border-radius: 2px;
@@ -729,7 +726,7 @@ exports[`DimensionControl rendering renders with icon and custom icon label 1`]
729
726
  position: absolute;
730
727
  right: 0;
731
728
  top: 0;
732
- border-color: #757575;
729
+ border-color: #949494;
733
730
  border-style: solid;
734
731
  border-width: 1px;
735
732
  padding-left: 2px;
@@ -885,7 +882,6 @@ exports[`DimensionControl rendering renders with icon and default icon label 1`]
885
882
  -webkit-box-pack: justify;
886
883
  -webkit-justify-content: space-between;
887
884
  justify-content: space-between;
888
- height: 100%;
889
885
  box-sizing: border-box;
890
886
  position: relative;
891
887
  border-radius: 2px;
@@ -1023,7 +1019,7 @@ exports[`DimensionControl rendering renders with icon and default icon label 1`]
1023
1019
  position: absolute;
1024
1020
  right: 0;
1025
1021
  top: 0;
1026
- border-color: #757575;
1022
+ border-color: #949494;
1027
1023
  border-style: solid;
1028
1024
  border-width: 1px;
1029
1025
  padding-left: 2px;
@@ -14,6 +14,8 @@ import { plus } from '@wordpress/icons';
14
14
  */
15
15
  import { DimensionControl } from '../';
16
16
 
17
+ jest.useFakeTimers();
18
+
17
19
  describe( 'DimensionControl', () => {
18
20
  const onChangeHandler = jest.fn();
19
21
  const instanceId = 1;
@@ -15,6 +15,7 @@ import Disabled from '../';
15
15
  import SelectControl from '../../select-control/';
16
16
  import TextControl from '../../text-control/';
17
17
  import TextareaControl from '../../textarea-control/';
18
+ import { VStack } from '../../v-stack/';
18
19
 
19
20
  const meta: ComponentMeta< typeof Disabled > = {
20
21
  title: 'Components/Disabled',
@@ -37,18 +38,21 @@ const Form = () => {
37
38
  const [ textControlValue, setTextControlValue ] = useState( '' );
38
39
  const [ textAreaValue, setTextAreaValue ] = useState( '' );
39
40
  return (
40
- <div>
41
+ <VStack>
41
42
  <TextControl
43
+ __nextHasNoMarginBottom
42
44
  label="Text Control"
43
45
  value={ textControlValue }
44
46
  onChange={ setTextControlValue }
45
47
  />
46
48
  <TextareaControl
49
+ __nextHasNoMarginBottom
47
50
  label="TextArea Control"
48
51
  value={ textAreaValue }
49
52
  onChange={ setTextAreaValue }
50
53
  />
51
54
  <SelectControl
55
+ __nextHasNoMarginBottom
52
56
  label="Select Control"
53
57
  onChange={ () => {} }
54
58
  options={ [
@@ -58,7 +62,7 @@ const Form = () => {
58
62
  { value: 'c', label: 'Option C' },
59
63
  ] }
60
64
  />
61
- </div>
65
+ </VStack>
62
66
  );
63
67
  };
64
68