@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
@@ -14,46 +14,67 @@ import { useState } from '@wordpress/element';
14
14
  */
15
15
  import BoxControl from '../';
16
16
 
17
- const setupUser = () =>
18
- userEvent.setup( {
19
- advanceTimers: jest.advanceTimersByTime,
20
- } );
17
+ jest.useFakeTimers();
18
+
19
+ const Example = ( extraProps ) => {
20
+ const [ state, setState ] = useState();
21
21
 
22
- const getInput = () =>
23
- screen.getByLabelText( 'Box Control', { selector: 'input' } );
24
- const getSelect = () => screen.getByLabelText( 'Select unit' );
25
- const getReset = () => screen.getByText( /Reset/ );
22
+ return (
23
+ <BoxControl
24
+ values={ state }
25
+ onChange={ ( next ) => setState( next ) }
26
+ { ...extraProps }
27
+ />
28
+ );
29
+ };
26
30
 
27
31
  describe( 'BoxControl', () => {
28
32
  describe( 'Basic rendering', () => {
29
- it( 'should render', () => {
30
- const { container } = render( <BoxControl /> );
31
- const input = container.querySelector( 'input' );
33
+ it( 'should render a box control input', () => {
34
+ render( <BoxControl /> );
32
35
 
33
- expect( input ).toBeTruthy();
36
+ expect(
37
+ screen.getByRole( 'textbox', { name: 'Box Control' } )
38
+ ).toBeVisible();
34
39
  } );
35
40
 
36
41
  it( 'should update values when interacting with input', async () => {
37
- const user = setupUser();
42
+ const user = userEvent.setup( {
43
+ advanceTimers: jest.advanceTimersByTime,
44
+ } );
45
+
38
46
  render( <BoxControl /> );
39
- const input = getInput();
40
- const select = getSelect();
47
+
48
+ const input = screen.getByRole( 'textbox', {
49
+ name: 'Box Control',
50
+ } );
41
51
 
42
52
  await user.type( input, '100%' );
43
53
  await user.keyboard( '{Enter}' );
44
54
 
45
55
  expect( input ).toHaveValue( '100' );
46
- expect( select ).toHaveValue( '%' );
56
+ expect(
57
+ screen.getByRole( 'combobox', {
58
+ name: 'Select unit',
59
+ } )
60
+ ).toHaveValue( '%' );
47
61
  } );
48
62
  } );
49
63
 
50
64
  describe( 'Reset', () => {
51
65
  it( 'should reset values when clicking Reset', async () => {
52
- const user = setupUser();
66
+ const user = userEvent.setup( {
67
+ advanceTimers: jest.advanceTimersByTime,
68
+ } );
69
+
53
70
  render( <BoxControl /> );
54
- const input = getInput();
55
- const select = getSelect();
56
- const reset = getReset();
71
+
72
+ const input = screen.getByRole( 'textbox', {
73
+ name: 'Box Control',
74
+ } );
75
+ const select = screen.getByRole( 'combobox', {
76
+ name: 'Select unit',
77
+ } );
57
78
 
58
79
  await user.type( input, '100px' );
59
80
  await user.keyboard( '{Enter}' );
@@ -61,28 +82,25 @@ describe( 'BoxControl', () => {
61
82
  expect( input ).toHaveValue( '100' );
62
83
  expect( select ).toHaveValue( 'px' );
63
84
 
64
- await user.click( reset );
85
+ await user.click( screen.getByRole( 'button', { name: 'Reset' } ) );
65
86
 
66
87
  expect( input ).toHaveValue( '' );
67
88
  expect( select ).toHaveValue( 'px' );
68
89
  } );
69
90
 
70
91
  it( 'should reset values when clicking Reset, if controlled', async () => {
71
- const Example = () => {
72
- const [ state, setState ] = useState();
73
-
74
- return (
75
- <BoxControl
76
- values={ state }
77
- onChange={ ( next ) => setState( next ) }
78
- />
79
- );
80
- };
81
- const user = setupUser();
92
+ const user = userEvent.setup( {
93
+ advanceTimers: jest.advanceTimersByTime,
94
+ } );
95
+
82
96
  render( <Example /> );
83
- const input = getInput();
84
- const select = getSelect();
85
- const reset = getReset();
97
+
98
+ const input = screen.getByRole( 'textbox', {
99
+ name: 'Box Control',
100
+ } );
101
+ const select = screen.getByRole( 'combobox', {
102
+ name: 'Select unit',
103
+ } );
86
104
 
87
105
  await user.type( input, '100px' );
88
106
  await user.keyboard( '{Enter}' );
@@ -90,35 +108,25 @@ describe( 'BoxControl', () => {
90
108
  expect( input ).toHaveValue( '100' );
91
109
  expect( select ).toHaveValue( 'px' );
92
110
 
93
- await user.click( reset );
111
+ await user.click( screen.getByRole( 'button', { name: 'Reset' } ) );
94
112
 
95
113
  expect( input ).toHaveValue( '' );
96
114
  expect( select ).toHaveValue( 'px' );
97
115
  } );
98
116
 
99
117
  it( 'should reset values when clicking Reset, if controlled <-> uncontrolled state changes', async () => {
100
- const Example = () => {
101
- const [ state, setState ] = useState();
102
-
103
- return (
104
- <BoxControl
105
- values={ state }
106
- onChange={ ( next ) => {
107
- if ( next.top ) {
108
- setState( next );
109
- } else {
110
- // This reverts it to being uncontrolled.
111
- setState( undefined );
112
- }
113
- } }
114
- />
115
- );
116
- };
117
- const user = setupUser();
118
+ const user = userEvent.setup( {
119
+ advanceTimers: jest.advanceTimersByTime,
120
+ } );
121
+
118
122
  render( <Example /> );
119
- const input = getInput();
120
- const select = getSelect();
121
- const reset = getReset();
123
+
124
+ const input = screen.getByRole( 'textbox', {
125
+ name: 'Box Control',
126
+ } );
127
+ const select = screen.getByRole( 'combobox', {
128
+ name: 'Select unit',
129
+ } );
122
130
 
123
131
  await user.type( input, '100px' );
124
132
  await user.keyboard( '{Enter}' );
@@ -126,26 +134,33 @@ describe( 'BoxControl', () => {
126
134
  expect( input ).toHaveValue( '100' );
127
135
  expect( select ).toHaveValue( 'px' );
128
136
 
129
- await user.click( reset );
137
+ await user.click( screen.getByRole( 'button', { name: 'Reset' } ) );
130
138
 
131
139
  expect( input ).toHaveValue( '' );
132
140
  expect( select ).toHaveValue( 'px' );
133
141
  } );
134
142
 
135
143
  it( 'should persist cleared value when focus changes', async () => {
136
- const user = setupUser();
144
+ const user = userEvent.setup( {
145
+ advanceTimers: jest.advanceTimersByTime,
146
+ } );
137
147
  const spyChange = jest.fn();
148
+
138
149
  render( <BoxControl onChange={ ( v ) => spyChange( v ) } /> );
139
- const input = screen.getByLabelText( 'Box Control', {
140
- selector: 'input',
150
+
151
+ const input = screen.getByRole( 'textbox', {
152
+ name: 'Box Control',
141
153
  } );
142
- const unitSelect = screen.getByLabelText( 'Select unit' );
143
154
 
144
155
  await user.type( input, '100%' );
145
156
  await user.keyboard( '{Enter}' );
146
157
 
147
158
  expect( input ).toHaveValue( '100' );
148
- expect( unitSelect ).toHaveValue( '%' );
159
+ expect(
160
+ screen.getByRole( 'combobox', {
161
+ name: 'Select unit',
162
+ } )
163
+ ).toHaveValue( '%' );
149
164
 
150
165
  await user.clear( input );
151
166
  expect( input ).toHaveValue( '' );
@@ -164,125 +179,177 @@ describe( 'BoxControl', () => {
164
179
 
165
180
  describe( 'Unlinked sides', () => {
166
181
  it( 'should update a single side value when unlinked', async () => {
167
- let state = {};
168
- const setState = ( newState ) => ( state = newState );
169
-
170
- render(
171
- <BoxControl
172
- values={ state }
173
- onChange={ ( next ) => setState( next ) }
174
- />
175
- );
176
- const user = setupUser();
177
- const unlink = screen.getByLabelText( /Unlink sides/ );
182
+ const user = userEvent.setup( {
183
+ advanceTimers: jest.advanceTimersByTime,
184
+ } );
178
185
 
179
- await user.click( unlink );
186
+ render( <Example /> );
180
187
 
181
- const input = screen.getByLabelText( /Top/ );
182
- const select = screen.getAllByLabelText( /Select unit/ )[ 0 ];
188
+ await user.click(
189
+ screen.getByRole( 'button', { name: 'Unlink sides' } )
190
+ );
183
191
 
184
- await user.type( input, '100px' );
192
+ await user.type(
193
+ screen.getByRole( 'textbox', { name: 'Top' } ),
194
+ '100px'
195
+ );
185
196
  await user.keyboard( '{Enter}' );
186
197
 
187
- expect( input ).toHaveValue( '100' );
188
- expect( select ).toHaveValue( 'px' );
189
-
190
- expect( state ).toEqual( {
191
- top: '100px',
192
- right: undefined,
193
- bottom: undefined,
194
- left: undefined,
195
- } );
198
+ expect(
199
+ screen.getByRole( 'textbox', { name: 'Top' } )
200
+ ).toHaveValue( '100' );
201
+ expect(
202
+ screen.getByRole( 'textbox', { name: 'Right' } )
203
+ ).not.toHaveValue();
204
+ expect(
205
+ screen.getByRole( 'textbox', { name: 'Bottom' } )
206
+ ).not.toHaveValue();
207
+ expect(
208
+ screen.getByRole( 'textbox', { name: 'Left' } )
209
+ ).not.toHaveValue();
210
+
211
+ screen
212
+ .getAllByRole( 'combobox', { name: 'Select unit' } )
213
+ .forEach( ( combobox ) => {
214
+ expect( combobox ).toHaveValue( 'px' );
215
+ } );
196
216
  } );
197
217
 
198
218
  it( 'should update a whole axis when value is changed when unlinked', async () => {
199
- let state = {};
200
- const setState = ( newState ) => ( state = newState );
201
-
202
- render(
203
- <BoxControl
204
- values={ state }
205
- onChange={ ( next ) => setState( next ) }
206
- splitOnAxis={ true }
207
- />
208
- );
209
- const user = setupUser();
210
- const unlink = screen.getByLabelText( /Unlink sides/ );
219
+ const user = userEvent.setup( {
220
+ advanceTimers: jest.advanceTimersByTime,
221
+ } );
211
222
 
212
- await user.click( unlink );
223
+ render( <Example splitOnAxis /> );
213
224
 
214
- const input = screen.getByLabelText( /Vertical/ );
215
- const select = screen.getAllByLabelText( /Select unit/ )[ 0 ];
225
+ await user.click(
226
+ screen.getByRole( 'button', { name: 'Unlink sides' } )
227
+ );
216
228
 
217
- await user.type( input, '100px' );
229
+ await user.type(
230
+ screen.getByRole( 'textbox', {
231
+ name: 'Vertical',
232
+ } ),
233
+ '100px'
234
+ );
218
235
  await user.keyboard( '{Enter}' );
219
236
 
220
- expect( input ).toHaveValue( '100' );
221
- expect( select ).toHaveValue( 'px' );
222
-
223
- expect( state ).toEqual( {
224
- top: '100px',
225
- right: undefined,
226
- bottom: '100px',
227
- left: undefined,
228
- } );
237
+ expect(
238
+ screen.getByRole( 'textbox', { name: 'Vertical' } )
239
+ ).toHaveValue( '100' );
240
+ expect(
241
+ screen.getByRole( 'textbox', { name: 'Horizontal' } )
242
+ ).not.toHaveValue();
243
+
244
+ screen
245
+ .getAllByRole( 'combobox', { name: 'Select unit' } )
246
+ .forEach( ( combobox ) => {
247
+ expect( combobox ).toHaveValue( 'px' );
248
+ } );
229
249
  } );
230
250
  } );
231
251
 
232
252
  describe( 'Unit selections', () => {
233
253
  it( 'should update unlinked controls unit selection based on all input control', async () => {
254
+ const user = userEvent.setup( {
255
+ advanceTimers: jest.advanceTimersByTime,
256
+ } );
257
+
234
258
  // Render control.
235
259
  render( <BoxControl /> );
236
- const user = setupUser();
237
260
 
238
261
  // Make unit selection on all input control.
239
- const allUnitSelect = getSelect();
240
- await user.selectOptions( allUnitSelect, [ 'em' ] );
262
+ await user.selectOptions(
263
+ screen.getByRole( 'combobox', {
264
+ name: 'Select unit',
265
+ } ),
266
+ [ 'em' ]
267
+ );
241
268
 
242
269
  // Unlink the controls.
243
- await user.click( screen.getByLabelText( /Unlink sides/ ) );
270
+ await user.click(
271
+ screen.getByRole( 'button', { name: 'Unlink sides' } )
272
+ );
273
+
274
+ const controls = screen.getAllByRole( 'combobox', {
275
+ name: 'Select unit',
276
+ } );
277
+
278
+ // Confirm we have exactly 4 controls.
279
+ expect( controls ).toHaveLength( 4 );
244
280
 
245
281
  // Confirm that each individual control has the selected unit
246
- const unlinkedSelects = screen.getAllByDisplayValue( 'em' );
247
- expect( unlinkedSelects.length ).toEqual( 4 );
282
+ controls.forEach( ( control ) => {
283
+ expect( control ).toHaveValue( 'em' );
284
+ } );
248
285
  } );
249
286
 
250
287
  it( 'should use individual side attribute unit when available', async () => {
288
+ const user = userEvent.setup( {
289
+ advanceTimers: jest.advanceTimersByTime,
290
+ } );
291
+
251
292
  // Render control.
252
293
  const { rerender } = render( <BoxControl /> );
253
- const user = setupUser();
254
294
 
255
295
  // Make unit selection on all input control.
256
- const allUnitSelect = getSelect();
257
- await user.selectOptions( allUnitSelect, [ 'vw' ] );
296
+ await user.selectOptions(
297
+ screen.getByRole( 'combobox', {
298
+ name: 'Select unit',
299
+ } ),
300
+ [ 'vw' ]
301
+ );
258
302
 
259
303
  // Unlink the controls.
260
- await user.click( screen.getByLabelText( /Unlink sides/ ) );
304
+ await user.click(
305
+ screen.getByRole( 'button', { name: 'Unlink sides' } )
306
+ );
307
+
308
+ const controls = screen.getAllByRole( 'combobox', {
309
+ name: 'Select unit',
310
+ } );
311
+
312
+ // Confirm we have exactly 4 controls.
313
+ expect( controls ).toHaveLength( 4 );
261
314
 
262
315
  // Confirm that each individual control has the selected unit
263
- const unlinkedSelects = screen.getAllByDisplayValue( 'vw' );
264
- expect( unlinkedSelects.length ).toEqual( 4 );
316
+ controls.forEach( ( control ) => {
317
+ expect( control ).toHaveValue( 'vw' );
318
+ } );
265
319
 
266
320
  // Rerender with individual side value & confirm unit is selected.
267
321
  rerender( <BoxControl values={ { top: '2.5em' } } /> );
268
322
 
269
- const topSelect = screen.getByDisplayValue( 'em' );
270
- const otherSelects = screen.getAllByDisplayValue( 'vw' );
323
+ const rerenderedControls = screen.getAllByRole( 'combobox', {
324
+ name: 'Select unit',
325
+ } );
271
326
 
272
- expect( topSelect ).toBeInTheDocument();
273
- expect( otherSelects.length ).toEqual( 3 );
327
+ // Confirm we have exactly 4 controls.
328
+ expect( rerenderedControls ).toHaveLength( 4 );
329
+
330
+ // Confirm that each individual control has the right selected unit
331
+ rerenderedControls.forEach( ( control, index ) => {
332
+ const expected = index === 0 ? 'em' : 'vw';
333
+ expect( control ).toHaveValue( expected );
334
+ } );
274
335
  } );
275
336
  } );
276
337
 
277
338
  describe( 'onChange updates', () => {
278
339
  it( 'should call onChange when values contain more than just CSS units', async () => {
340
+ const user = userEvent.setup( {
341
+ advanceTimers: jest.advanceTimersByTime,
342
+ } );
279
343
  const setState = jest.fn();
280
344
 
281
345
  render( <BoxControl onChange={ setState } /> );
282
- const user = setupUser();
283
- const input = getInput();
284
346
 
285
- await user.type( input, '7.5rem' );
347
+ await user.type(
348
+ screen.getByRole( 'textbox', {
349
+ name: 'Box Control',
350
+ } ),
351
+ '7.5rem'
352
+ );
286
353
  await user.keyboard( '{Enter}' );
287
354
 
288
355
  expect( setState ).toHaveBeenCalledWith( {
@@ -294,13 +361,19 @@ describe( 'BoxControl', () => {
294
361
  } );
295
362
 
296
363
  it( 'should not pass invalid CSS unit only values to onChange', async () => {
364
+ const user = userEvent.setup( {
365
+ advanceTimers: jest.advanceTimersByTime,
366
+ } );
297
367
  const setState = jest.fn();
298
368
 
299
369
  render( <BoxControl onChange={ setState } /> );
300
- const user = setupUser();
301
370
 
302
- const allUnitSelect = getSelect();
303
- await user.selectOptions( allUnitSelect, 'rem' );
371
+ await user.selectOptions(
372
+ screen.getByRole( 'combobox', {
373
+ name: 'Select unit',
374
+ } ),
375
+ 'rem'
376
+ );
304
377
 
305
378
  expect( setState ).toHaveBeenCalledWith( {
306
379
  top: undefined,
@@ -128,6 +128,36 @@ Default.args = {
128
128
  children: 'Code is poetry',
129
129
  };
130
130
 
131
+ export const Primary = Template.bind( {} );
132
+ Primary.args = {
133
+ ...Default.args,
134
+ variant: 'primary',
135
+ };
136
+
137
+ export const Secondary = Template.bind( {} );
138
+ Secondary.args = {
139
+ ...Default.args,
140
+ variant: 'secondary',
141
+ };
142
+
143
+ export const Tertiary = Template.bind( {} );
144
+ Tertiary.args = {
145
+ ...Default.args,
146
+ variant: 'tertiary',
147
+ };
148
+
149
+ export const Link = Template.bind( {} );
150
+ Link.args = {
151
+ ...Default.args,
152
+ variant: 'link',
153
+ };
154
+
155
+ export const IsDestructive = Template.bind( {} );
156
+ IsDestructive.args = {
157
+ ...Default.args,
158
+ isDestructive: true,
159
+ };
160
+
131
161
  export const Icon = Template.bind( {} );
132
162
  Icon.args = {
133
163
  label: 'Code is poetry',
@@ -16,7 +16,7 @@
16
16
  box-sizing: border-box;
17
17
  padding: 6px 12px;
18
18
  border-radius: $radius-block-ui;
19
- color: $gray-900;
19
+ color: $components-color-foreground;
20
20
 
21
21
  &[aria-expanded="true"],
22
22
  &:hover {
@@ -44,7 +44,7 @@
44
44
  &.is-primary {
45
45
  white-space: nowrap;
46
46
  background: $components-color-accent;
47
- color: $white;
47
+ color: $components-color-accent-inverted;
48
48
  text-decoration: none;
49
49
  text-shadow: none;
50
50
 
@@ -53,17 +53,17 @@
53
53
 
54
54
  &:hover:not(:disabled) {
55
55
  background: $components-color-accent-darker-10;
56
- color: $white;
56
+ color: $components-color-accent-inverted;
57
57
  }
58
58
 
59
59
  &:active:not(:disabled) {
60
60
  background: $components-color-accent-darker-20;
61
61
  border-color: $components-color-accent-darker-20;
62
- color: $white;
62
+ color: $components-color-accent-inverted;
63
63
  }
64
64
 
65
65
  &:focus:not(:disabled) {
66
- box-shadow: inset 0 0 0 1px $white, 0 0 0 var(--wp-admin-border-width-focus) $components-color-accent;
66
+ box-shadow: inset 0 0 0 1px $components-color-background, 0 0 0 var(--wp-admin-border-width-focus) $components-color-accent;
67
67
  }
68
68
 
69
69
  &:disabled,
@@ -71,6 +71,7 @@
71
71
  &[aria-disabled="true"],
72
72
  &[aria-disabled="true"]:enabled, // This catches a situation where a Button is aria-disabled, but not disabled.
73
73
  &[aria-disabled="true"]:active:enabled {
74
+ // TODO: Prepare for theming (https://github.com/WordPress/gutenberg/pull/45466/files#r1030872724)
74
75
  color: rgba($white, 0.4);
75
76
  background: $components-color-accent;
76
77
  border-color: $components-color-accent;
@@ -79,7 +80,7 @@
79
80
 
80
81
  &:focus:enabled {
81
82
  box-shadow:
82
- 0 0 0 $border-width $white,
83
+ 0 0 0 $border-width $components-color-background,
83
84
  0 0 0 3px $components-color-accent;
84
85
  }
85
86
  }
@@ -87,7 +88,7 @@
87
88
  &.is-busy,
88
89
  &.is-busy:disabled,
89
90
  &.is-busy[aria-disabled="true"] {
90
- color: $white;
91
+ color: $components-color-accent-inverted;
91
92
  background-size: 100px 100%;
92
93
  // Disable reason: This function call looks nicer when each argument is on its own line.
93
94
  /* stylelint-disable */
@@ -113,7 +114,7 @@
113
114
  outline: 1px solid transparent;
114
115
 
115
116
  &:active:not(:disabled) {
116
- background: $gray-300;
117
+ background: $components-color-gray-300;
117
118
  color: $components-color-accent-darker-10;
118
119
  box-shadow: none;
119
120
  }
@@ -126,6 +127,7 @@
126
127
  &:disabled,
127
128
  &[aria-disabled="true"],
128
129
  &[aria-disabled="true"]:hover {
130
+ // TODO: Prepare for theming (https://github.com/WordPress/gutenberg/pull/45466/files#r1030872724)
129
131
  color: lighten($gray-700, 5%);
130
132
  background: lighten($gray-300, 5%);
131
133
  transform: none;
@@ -222,7 +224,7 @@
222
224
  }
223
225
 
224
226
  &:not([aria-disabled="true"]):active {
225
- color: inherit;
227
+ color: $components-color-foreground;
226
228
  }
227
229
 
228
230
  &:disabled,
@@ -242,6 +244,7 @@
242
244
  /* stylelint-disable */
243
245
  background-image: linear-gradient(
244
246
  -45deg,
247
+ // TODO: Prepare for theming (https://github.com/WordPress/gutenberg/pull/45466/files#r1030872724)
245
248
  darken($white, 2%) 33%,
246
249
  darken($white, 12%) 33%,
247
250
  darken($white, 12%) 70%,
@@ -292,19 +295,19 @@
292
295
 
293
296
  // Toggled style.
294
297
  &.is-pressed {
295
- color: $white;
296
- background: $gray-900;
298
+ color: $components-color-foreground-inverted;
299
+ background: $components-color-foreground;
297
300
 
298
301
  &:focus:not(:disabled) {
299
- box-shadow: inset 0 0 0 1px $white, 0 0 0 var(--wp-admin-border-width-focus) $components-color-accent;
302
+ box-shadow: inset 0 0 0 1px $components-color-background, 0 0 0 var(--wp-admin-border-width-focus) $components-color-accent;
300
303
 
301
304
  // Windows High Contrast mode will show this outline, but not the box-shadow.
302
305
  outline: 2px solid transparent;
303
306
  }
304
307
 
305
308
  &:hover:not(:disabled) {
306
- color: $white;
307
- background: $gray-900;
309
+ color: $components-color-foreground-inverted;
310
+ background: $components-color-foreground;
308
311
  }
309
312
  }
310
313