@wordpress/components 21.3.0 → 22.0.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 (612) hide show
  1. package/CHANGELOG.md +65 -1
  2. package/build/angle-picker-control/index.js +1 -1
  3. package/build/angle-picker-control/index.js.map +1 -1
  4. package/build/autocomplete/autocompleter-ui.js +28 -2
  5. package/build/autocomplete/autocompleter-ui.js.map +1 -1
  6. package/build/border-box-control/border-box-control/component.js +63 -15
  7. package/build/border-box-control/border-box-control/component.js.map +1 -1
  8. package/build/border-box-control/border-box-control/hook.js +7 -3
  9. package/build/border-box-control/border-box-control/hook.js.map +1 -1
  10. package/build/border-box-control/border-box-control-linked-button/hook.js +3 -3
  11. package/build/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  12. package/build/border-box-control/border-box-control-split-controls/component.js +3 -3
  13. package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  14. package/build/border-box-control/border-box-control-split-controls/hook.js +8 -11
  15. package/build/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  16. package/build/border-box-control/border-box-control-visualizer/hook.js +3 -7
  17. package/build/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  18. package/build/border-box-control/styles.js +34 -34
  19. package/build/border-box-control/styles.js.map +1 -1
  20. package/build/border-control/border-control/component.js +5 -4
  21. package/build/border-control/border-control/component.js.map +1 -1
  22. package/build/border-control/border-control/hook.js +12 -5
  23. package/build/border-control/border-control/hook.js.map +1 -1
  24. package/build/border-control/border-control-dropdown/hook.js +5 -5
  25. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  26. package/build/border-control/styles.js +19 -34
  27. package/build/border-control/styles.js.map +1 -1
  28. package/build/box-control/index.js +6 -2
  29. package/build/box-control/index.js.map +1 -1
  30. package/build/circular-option-picker/index.js +14 -14
  31. package/build/circular-option-picker/index.js.map +1 -1
  32. package/build/color-palette/index.js +83 -30
  33. package/build/color-palette/index.js.map +1 -1
  34. package/build/color-palette/styles.js +3 -3
  35. package/build/color-palette/styles.js.map +1 -1
  36. package/build/color-palette/types.js +6 -0
  37. package/build/color-palette/types.js.map +1 -0
  38. package/build/color-picker/input-with-slider.js +1 -1
  39. package/build/color-picker/input-with-slider.js.map +1 -1
  40. package/build/custom-gradient-picker/gradient-bar/index.js +1 -3
  41. package/build/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  42. package/build/custom-select-control/index.js +8 -4
  43. package/build/custom-select-control/index.js.map +1 -1
  44. package/build/date-time/date-time/index.js +2 -0
  45. package/build/date-time/date-time/index.js.map +1 -1
  46. package/build/date-time/time/index.js +4 -4
  47. package/build/date-time/time/index.js.map +1 -1
  48. package/build/disabled/index.js +8 -1
  49. package/build/disabled/index.js.map +1 -1
  50. package/build/external-link/index.js +13 -2
  51. package/build/external-link/index.js.map +1 -1
  52. package/build/focusable-iframe/index.js +0 -1
  53. package/build/focusable-iframe/index.js.map +1 -1
  54. package/build/font-size-picker/index.js +61 -48
  55. package/build/font-size-picker/index.js.map +1 -1
  56. package/build/font-size-picker/utils.js +0 -21
  57. package/build/font-size-picker/utils.js.map +1 -1
  58. package/build/form-file-upload/index.js.map +1 -1
  59. package/build/higher-order/with-filters/index.js +1 -7
  60. package/build/higher-order/with-filters/index.js.map +1 -1
  61. package/build/index.js +7 -1
  62. package/build/index.js.map +1 -1
  63. package/build/input-control/index.js +2 -0
  64. package/build/input-control/index.js.map +1 -1
  65. package/build/input-control/input-base.js +1 -1
  66. package/build/input-control/input-base.js.map +1 -1
  67. package/build/input-control/styles/input-control-styles.js +21 -21
  68. package/build/input-control/styles/input-control-styles.js.map +1 -1
  69. package/build/isolated-event-container/index.js +5 -9
  70. package/build/isolated-event-container/index.js.map +1 -1
  71. package/build/item-group/styles.js +10 -10
  72. package/build/item-group/styles.js.map +1 -1
  73. package/build/navigator/navigator-screen/component.js +20 -14
  74. package/build/navigator/navigator-screen/component.js.map +1 -1
  75. package/build/number-control/index.js +82 -22
  76. package/build/number-control/index.js.map +1 -1
  77. package/build/number-control/styles/number-control-styles.js +36 -6
  78. package/build/number-control/styles/number-control-styles.js.map +1 -1
  79. package/build/popover/index.js +15 -29
  80. package/build/popover/index.js.map +1 -1
  81. package/build/radio-group/index.js +7 -1
  82. package/build/radio-group/index.js.map +1 -1
  83. package/build/{radio → radio-group/radio}/index.js +7 -1
  84. package/build/radio-group/radio/index.js.map +1 -0
  85. package/build/{radio-context → radio-group/radio-context}/index.js +0 -0
  86. package/build/radio-group/radio-context/index.js.map +1 -0
  87. package/build/slot-fill/bubbles-virtually/fill.js +9 -5
  88. package/build/slot-fill/bubbles-virtually/fill.js.map +1 -1
  89. package/build/slot-fill/bubbles-virtually/slot.js +13 -8
  90. package/build/slot-fill/bubbles-virtually/slot.js.map +1 -1
  91. package/build/slot-fill/bubbles-virtually/use-slot.js +15 -9
  92. package/build/slot-fill/bubbles-virtually/use-slot.js.map +1 -1
  93. package/build/slot-fill/fill.js +12 -4
  94. package/build/slot-fill/fill.js.map +1 -1
  95. package/build/slot-fill/use-slot.js +3 -1
  96. package/build/slot-fill/use-slot.js.map +1 -1
  97. package/build/snackbar/index.js +1 -1
  98. package/build/snackbar/index.js.map +1 -1
  99. package/build/tab-panel/index.js +2 -6
  100. package/build/tab-panel/index.js.map +1 -1
  101. package/build/text-control/index.js +0 -2
  102. package/build/text-control/index.js.map +1 -1
  103. package/build/toggle-control/index.js +15 -3
  104. package/build/toggle-control/index.js.map +1 -1
  105. package/build/toggle-group-control/toggle-group-control/as-button-group.js +90 -0
  106. package/build/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -0
  107. package/build/toggle-group-control/toggle-group-control/as-radio-group.js +90 -0
  108. package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -0
  109. package/build/toggle-group-control/toggle-group-control/component.js +21 -50
  110. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  111. package/build/toggle-group-control/toggle-group-control/styles.js +8 -8
  112. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  113. package/build/toggle-group-control/toggle-group-control-option-base/component.js +39 -17
  114. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  115. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +23 -23
  116. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  117. package/build/toolbar-dropdown-menu/index.js +1 -1
  118. package/build/toolbar-dropdown-menu/index.js.map +1 -1
  119. package/build/ui/context/context-system-provider.js +9 -22
  120. package/build/ui/context/context-system-provider.js.map +1 -1
  121. package/build/unit-control/index.js +7 -9
  122. package/build/unit-control/index.js.map +1 -1
  123. package/build/unit-control/styles/unit-control-styles.js +15 -25
  124. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  125. package/build/utils/config-values.js +0 -1
  126. package/build/utils/config-values.js.map +1 -1
  127. package/build/utils/hooks/use-update-effect.js +5 -1
  128. package/build/utils/hooks/use-update-effect.js.map +1 -1
  129. package/build-module/angle-picker-control/index.js +1 -1
  130. package/build-module/angle-picker-control/index.js.map +1 -1
  131. package/build-module/autocomplete/autocompleter-ui.js +29 -3
  132. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  133. package/build-module/border-box-control/border-box-control/component.js +61 -13
  134. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  135. package/build-module/border-box-control/border-box-control/hook.js +7 -3
  136. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  137. package/build-module/border-box-control/border-box-control-linked-button/hook.js +3 -3
  138. package/build-module/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
  139. package/build-module/border-box-control/border-box-control-split-controls/component.js +3 -3
  140. package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
  141. package/build-module/border-box-control/border-box-control-split-controls/hook.js +9 -10
  142. package/build-module/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  143. package/build-module/border-box-control/border-box-control-visualizer/hook.js +4 -6
  144. package/build-module/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
  145. package/build-module/border-box-control/styles.js +26 -28
  146. package/build-module/border-box-control/styles.js.map +1 -1
  147. package/build-module/border-control/border-control/component.js +5 -4
  148. package/build-module/border-control/border-control/component.js.map +1 -1
  149. package/build-module/border-control/border-control/hook.js +12 -5
  150. package/build-module/border-control/border-control/hook.js.map +1 -1
  151. package/build-module/border-control/border-control-dropdown/hook.js +5 -5
  152. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  153. package/build-module/border-control/styles.js +20 -36
  154. package/build-module/border-control/styles.js.map +1 -1
  155. package/build-module/box-control/index.js +6 -2
  156. package/build-module/box-control/index.js.map +1 -1
  157. package/build-module/circular-option-picker/index.js +14 -14
  158. package/build-module/circular-option-picker/index.js.map +1 -1
  159. package/build-module/color-palette/index.js +81 -28
  160. package/build-module/color-palette/index.js.map +1 -1
  161. package/build-module/color-palette/styles.js +3 -3
  162. package/build-module/color-palette/styles.js.map +1 -1
  163. package/build-module/color-palette/types.js +2 -0
  164. package/build-module/color-palette/types.js.map +1 -0
  165. package/build-module/color-picker/input-with-slider.js +1 -1
  166. package/build-module/color-picker/input-with-slider.js.map +1 -1
  167. package/build-module/custom-gradient-picker/gradient-bar/index.js +1 -2
  168. package/build-module/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  169. package/build-module/custom-select-control/index.js +8 -4
  170. package/build-module/custom-select-control/index.js.map +1 -1
  171. package/build-module/date-time/date-time/index.js +2 -0
  172. package/build-module/date-time/date-time/index.js.map +1 -1
  173. package/build-module/date-time/time/index.js +4 -4
  174. package/build-module/date-time/time/index.js.map +1 -1
  175. package/build-module/disabled/index.js +8 -1
  176. package/build-module/disabled/index.js.map +1 -1
  177. package/build-module/external-link/index.js +13 -2
  178. package/build-module/external-link/index.js.map +1 -1
  179. package/build-module/focusable-iframe/index.js +0 -1
  180. package/build-module/focusable-iframe/index.js.map +1 -1
  181. package/build-module/font-size-picker/index.js +65 -50
  182. package/build-module/font-size-picker/index.js.map +1 -1
  183. package/build-module/font-size-picker/utils.js +0 -19
  184. package/build-module/font-size-picker/utils.js.map +1 -1
  185. package/build-module/form-file-upload/index.js.map +1 -1
  186. package/build-module/higher-order/with-filters/index.js +1 -6
  187. package/build-module/higher-order/with-filters/index.js.map +1 -1
  188. package/build-module/index.js +2 -2
  189. package/build-module/index.js.map +1 -1
  190. package/build-module/input-control/index.js +2 -0
  191. package/build-module/input-control/index.js.map +1 -1
  192. package/build-module/input-control/input-base.js +1 -1
  193. package/build-module/input-control/input-base.js.map +1 -1
  194. package/build-module/input-control/styles/input-control-styles.js +21 -21
  195. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  196. package/build-module/isolated-event-container/index.js +7 -9
  197. package/build-module/isolated-event-container/index.js.map +1 -1
  198. package/build-module/item-group/styles.js +10 -10
  199. package/build-module/item-group/styles.js.map +1 -1
  200. package/build-module/navigator/navigator-screen/component.js +20 -4
  201. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  202. package/build-module/number-control/index.js +81 -26
  203. package/build-module/number-control/index.js.map +1 -1
  204. package/build-module/number-control/styles/number-control-styles.js +30 -4
  205. package/build-module/number-control/styles/number-control-styles.js.map +1 -1
  206. package/build-module/popover/index.js +15 -29
  207. package/build-module/popover/index.js.map +1 -1
  208. package/build-module/radio-group/index.js +6 -1
  209. package/build-module/radio-group/index.js.map +1 -1
  210. package/build-module/{radio → radio-group/radio}/index.js +6 -1
  211. package/build-module/radio-group/radio/index.js.map +1 -0
  212. package/build-module/{radio-context → radio-group/radio-context}/index.js +0 -0
  213. package/build-module/radio-group/radio-context/index.js.map +1 -0
  214. package/build-module/slot-fill/bubbles-virtually/fill.js +9 -5
  215. package/build-module/slot-fill/bubbles-virtually/fill.js.map +1 -1
  216. package/build-module/slot-fill/bubbles-virtually/slot.js +13 -8
  217. package/build-module/slot-fill/bubbles-virtually/slot.js.map +1 -1
  218. package/build-module/slot-fill/bubbles-virtually/use-slot.js +15 -9
  219. package/build-module/slot-fill/bubbles-virtually/use-slot.js.map +1 -1
  220. package/build-module/slot-fill/fill.js +12 -4
  221. package/build-module/slot-fill/fill.js.map +1 -1
  222. package/build-module/slot-fill/use-slot.js +3 -1
  223. package/build-module/slot-fill/use-slot.js.map +1 -1
  224. package/build-module/snackbar/index.js +1 -1
  225. package/build-module/snackbar/index.js.map +1 -1
  226. package/build-module/tab-panel/index.js +2 -6
  227. package/build-module/tab-panel/index.js.map +1 -1
  228. package/build-module/text-control/index.js +0 -2
  229. package/build-module/text-control/index.js.map +1 -1
  230. package/build-module/toggle-control/index.js +15 -3
  231. package/build-module/toggle-control/index.js.map +1 -1
  232. package/build-module/toggle-group-control/toggle-group-control/as-button-group.js +76 -0
  233. package/build-module/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -0
  234. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +75 -0
  235. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -0
  236. package/build-module/toggle-group-control/toggle-group-control/component.js +19 -49
  237. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  238. package/build-module/toggle-group-control/toggle-group-control/styles.js +7 -6
  239. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  240. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +39 -17
  241. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  242. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +21 -18
  243. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  244. package/build-module/toolbar-dropdown-menu/index.js +1 -1
  245. package/build-module/toolbar-dropdown-menu/index.js.map +1 -1
  246. package/build-module/ui/context/context-system-provider.js +6 -20
  247. package/build-module/ui/context/context-system-provider.js.map +1 -1
  248. package/build-module/unit-control/index.js +8 -10
  249. package/build-module/unit-control/index.js.map +1 -1
  250. package/build-module/unit-control/styles/unit-control-styles.js +8 -24
  251. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  252. package/build-module/utils/config-values.js +0 -1
  253. package/build-module/utils/config-values.js.map +1 -1
  254. package/build-module/utils/hooks/use-update-effect.js +5 -1
  255. package/build-module/utils/hooks/use-update-effect.js.map +1 -1
  256. package/build-style/style-rtl.css +21 -41
  257. package/build-style/style.css +19 -39
  258. package/build-types/base-field/hook.d.ts +11 -11
  259. package/build-types/border-box-control/border-box-control/component.d.ts +53 -4
  260. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  261. package/build-types/border-box-control/border-box-control/hook.d.ts +13 -12
  262. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  263. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +12 -12
  264. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts.map +1 -1
  265. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +1 -1
  266. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
  267. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +12 -12
  268. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  269. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +12 -12
  270. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts.map +1 -1
  271. package/build-types/border-box-control/stories/index.d.ts +17 -0
  272. package/build-types/border-box-control/stories/index.d.ts.map +1 -0
  273. package/build-types/border-box-control/styles.d.ts +7 -6
  274. package/build-types/border-box-control/styles.d.ts.map +1 -1
  275. package/build-types/border-box-control/types.d.ts +12 -16
  276. package/build-types/border-box-control/types.d.ts.map +1 -1
  277. package/build-types/border-control/border-control/component.d.ts +1 -1
  278. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  279. package/build-types/border-control/border-control/hook.d.ts +13 -13
  280. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  281. package/build-types/border-control/border-control-dropdown/component.d.ts +1 -1
  282. package/build-types/border-control/border-control-dropdown/hook.d.ts +11 -11
  283. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  284. package/build-types/border-control/border-control-style-picker/hook.d.ts +11 -11
  285. package/build-types/border-control/stories/index.d.ts +6 -6
  286. package/build-types/border-control/stories/index.d.ts.map +1 -1
  287. package/build-types/border-control/styles.d.ts +3 -3
  288. package/build-types/border-control/styles.d.ts.map +1 -1
  289. package/build-types/border-control/types.d.ts +7 -9
  290. package/build-types/border-control/types.d.ts.map +1 -1
  291. package/build-types/card/card/hook.d.ts +12 -12
  292. package/build-types/card/card-body/hook.d.ts +12 -12
  293. package/build-types/card/card-divider/hook.d.ts +13 -13
  294. package/build-types/card/card-footer/hook.d.ts +12 -12
  295. package/build-types/card/card-header/hook.d.ts +12 -12
  296. package/build-types/card/card-media/hook.d.ts +12 -12
  297. package/build-types/card/stories/index.d.ts.map +1 -1
  298. package/build-types/circular-option-picker/index.d.ts +4 -24
  299. package/build-types/circular-option-picker/index.d.ts.map +1 -1
  300. package/build-types/color-palette/index.d.ts +33 -18
  301. package/build-types/color-palette/index.d.ts.map +1 -1
  302. package/build-types/color-palette/stories/index.d.ts +21 -0
  303. package/build-types/color-palette/stories/index.d.ts.map +1 -0
  304. package/build-types/color-palette/styles.d.ts +3 -2
  305. package/build-types/color-palette/styles.d.ts.map +1 -1
  306. package/build-types/color-palette/test/index.d.ts +2 -0
  307. package/build-types/color-palette/test/index.d.ts.map +1 -0
  308. package/build-types/color-palette/types.d.ts +86 -0
  309. package/build-types/color-palette/types.d.ts.map +1 -0
  310. package/build-types/color-picker/styles.d.ts +5 -4
  311. package/build-types/color-picker/styles.d.ts.map +1 -1
  312. package/build-types/confirm-dialog/component.d.ts +4 -4
  313. package/build-types/custom-select-control/index.d.ts +1 -12
  314. package/build-types/custom-select-control/index.d.ts.map +1 -1
  315. package/build-types/custom-select-control/styles.d.ts +3 -1
  316. package/build-types/custom-select-control/styles.d.ts.map +1 -1
  317. package/build-types/date-time/date/styles.d.ts +3 -3
  318. package/build-types/date-time/date-time/index.d.ts +2 -0
  319. package/build-types/date-time/date-time/index.d.ts.map +1 -1
  320. package/build-types/date-time/date-time/styles.d.ts +3 -3
  321. package/build-types/date-time/stories/date-time.d.ts.map +1 -1
  322. package/build-types/date-time/time/styles.d.ts +8 -4
  323. package/build-types/date-time/time/styles.d.ts.map +1 -1
  324. package/build-types/disabled/index.d.ts +8 -1
  325. package/build-types/disabled/index.d.ts.map +1 -1
  326. package/build-types/elevation/hook.d.ts +12 -12
  327. package/build-types/external-link/index.d.ts.map +1 -1
  328. package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
  329. package/build-types/external-link/test/index.d.ts +2 -0
  330. package/build-types/external-link/test/index.d.ts.map +1 -0
  331. package/build-types/flex/flex/hook.d.ts +12 -12
  332. package/build-types/flex/flex-block/hook.d.ts +12 -12
  333. package/build-types/flex/flex-item/hook.d.ts +12 -12
  334. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -2
  335. package/build-types/focal-point-picker/styles/focal-point-style.d.ts +3 -3
  336. package/build-types/focusable-iframe/index.d.ts.map +1 -1
  337. package/build-types/font-size-picker/index.d.ts.map +1 -1
  338. package/build-types/font-size-picker/types.d.ts +1 -1
  339. package/build-types/font-size-picker/utils.d.ts +0 -8
  340. package/build-types/font-size-picker/utils.d.ts.map +1 -1
  341. package/build-types/form-file-upload/index.d.ts.map +1 -1
  342. package/build-types/form-file-upload/types.d.ts +5 -4
  343. package/build-types/form-file-upload/types.d.ts.map +1 -1
  344. package/build-types/grid/hook.d.ts +12 -12
  345. package/build-types/h-stack/component.d.ts +1 -1
  346. package/build-types/h-stack/hook.d.ts +12 -12
  347. package/build-types/heading/hook.d.ts +12 -12
  348. package/build-types/input-control/index.d.ts +1 -1
  349. package/build-types/input-control/index.d.ts.map +1 -1
  350. package/build-types/input-control/input-base.d.ts +5 -2
  351. package/build-types/input-control/input-base.d.ts.map +1 -1
  352. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  353. package/build-types/input-control/types.d.ts +3 -8
  354. package/build-types/input-control/types.d.ts.map +1 -1
  355. package/build-types/input-control/utils.d.ts +1 -1
  356. package/build-types/isolated-event-container/index.d.ts +3 -2
  357. package/build-types/isolated-event-container/index.d.ts.map +1 -1
  358. package/build-types/item-group/item/hook.d.ts +13 -13
  359. package/build-types/item-group/item-group/hook.d.ts +13 -13
  360. package/build-types/navigator/navigator-back-button/hook.d.ts +13 -13
  361. package/build-types/navigator/navigator-button/hook.d.ts +13 -13
  362. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  363. package/build-types/number-control/index.d.ts +2 -4
  364. package/build-types/number-control/index.d.ts.map +1 -1
  365. package/build-types/number-control/styles/number-control-styles.d.ts +5 -0
  366. package/build-types/number-control/styles/number-control-styles.d.ts.map +1 -1
  367. package/build-types/number-control/types.d.ts +12 -0
  368. package/build-types/number-control/types.d.ts.map +1 -1
  369. package/build-types/popover/index.d.ts +1 -1
  370. package/build-types/popover/index.d.ts.map +1 -1
  371. package/build-types/popover/stories/e2e/index.d.ts +1 -1
  372. package/build-types/popover/stories/index.d.ts +2 -0
  373. package/build-types/popover/stories/index.d.ts.map +1 -1
  374. package/build-types/popover/types.d.ts +18 -14
  375. package/build-types/popover/types.d.ts.map +1 -1
  376. package/build-types/radio-group/index.d.ts +10 -0
  377. package/build-types/radio-group/index.d.ts.map +1 -0
  378. package/build-types/radio-group/radio/index.d.ts +7 -0
  379. package/build-types/radio-group/radio/index.d.ts.map +1 -0
  380. package/build-types/{radio-context → radio-group/radio-context}/index.d.ts +0 -0
  381. package/build-types/radio-group/radio-context/index.d.ts.map +1 -0
  382. package/build-types/range-control/index.d.ts +1 -1
  383. package/build-types/range-control/styles/range-control-styles.d.ts +2 -1
  384. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  385. package/build-types/resizable-box/index.d.ts +1 -1
  386. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  387. package/build-types/resizable-box/resize-tooltip/label.d.ts +1 -1
  388. package/build-types/scrollable/hook.d.ts +12 -12
  389. package/build-types/search-control/index.d.ts +2 -2
  390. package/build-types/search-control/stories/index.d.ts +4 -4
  391. package/build-types/select-control/stories/index.d.ts.map +1 -1
  392. package/build-types/slot-fill/bubbles-virtually/use-slot.d.ts.map +1 -1
  393. package/build-types/slot-fill/fill.d.ts.map +1 -1
  394. package/build-types/slot-fill/use-slot.d.ts.map +1 -1
  395. package/build-types/spacer/hook.d.ts +12 -12
  396. package/build-types/spinner/index.d.ts +1 -1
  397. package/build-types/surface/hook.d.ts +12 -12
  398. package/build-types/tab-panel/index.d.ts.map +1 -1
  399. package/build-types/text/hook.d.ts +12 -12
  400. package/build-types/text-control/index.d.ts +2 -4
  401. package/build-types/text-control/index.d.ts.map +1 -1
  402. package/build-types/text-control/stories/index.d.ts.map +1 -1
  403. package/build-types/toggle-control/index.d.ts.map +1 -1
  404. package/build-types/toggle-control/types.d.ts +2 -1
  405. package/build-types/toggle-control/types.d.ts.map +1 -1
  406. package/build-types/toggle-group-control/stories/index.d.ts +2 -2
  407. package/build-types/toggle-group-control/stories/index.d.ts.map +1 -1
  408. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +6 -0
  409. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts.map +1 -0
  410. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +6 -0
  411. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -0
  412. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +2 -2
  413. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  414. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +2 -2
  415. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  416. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  417. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +4 -7
  418. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  419. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  420. package/build-types/toggle-group-control/types.d.ts +19 -14
  421. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  422. package/build-types/tools-panel/tools-panel/hook.d.ts +12 -12
  423. package/build-types/tools-panel/tools-panel-header/hook.d.ts +12 -12
  424. package/build-types/tools-panel/tools-panel-item/hook.d.ts +12 -12
  425. package/build-types/truncate/hook.d.ts +12 -12
  426. package/build-types/ui/context/context-system-provider.d.ts.map +1 -1
  427. package/build-types/ui/control-group/hook.d.ts +12 -12
  428. package/build-types/ui/control-label/component.d.ts +1 -1
  429. package/build-types/ui/control-label/hook.d.ts +12 -12
  430. package/build-types/ui/form-group/form-group.d.ts +4 -4
  431. package/build-types/ui/form-group/use-form-group.d.ts +28 -28
  432. package/build-types/unit-control/index.d.ts +2 -2
  433. package/build-types/unit-control/index.d.ts.map +1 -1
  434. package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -5
  435. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  436. package/build-types/unit-control/types.d.ts +3 -3
  437. package/build-types/unit-control/types.d.ts.map +1 -1
  438. package/build-types/utils/config-values.d.ts +0 -1
  439. package/build-types/utils/hooks/use-update-effect.d.ts.map +1 -1
  440. package/build-types/utils/types.d.ts +0 -14
  441. package/build-types/utils/types.d.ts.map +1 -1
  442. package/build-types/v-stack/component.d.ts +2 -2
  443. package/build-types/v-stack/hook.d.ts +12 -12
  444. package/build-types/v-stack/stories/index.d.ts +2 -2
  445. package/package.json +17 -17
  446. package/src/angle-picker-control/index.js +1 -1
  447. package/src/angle-picker-control/stories/index.js +3 -0
  448. package/src/autocomplete/autocompleter-ui.js +29 -2
  449. package/src/autocomplete/test/index.js +89 -0
  450. package/src/border-box-control/border-box-control/README.md +8 -0
  451. package/src/border-box-control/border-box-control/component.tsx +64 -13
  452. package/src/border-box-control/border-box-control/hook.ts +7 -2
  453. package/src/border-box-control/border-box-control-linked-button/hook.ts +3 -6
  454. package/src/border-box-control/border-box-control-split-controls/component.tsx +3 -6
  455. package/src/border-box-control/border-box-control-split-controls/hook.ts +11 -14
  456. package/src/border-box-control/border-box-control-visualizer/hook.ts +4 -7
  457. package/src/border-box-control/stories/index.tsx +90 -0
  458. package/src/border-box-control/styles.ts +28 -22
  459. package/src/border-box-control/test/index.js +287 -122
  460. package/src/border-box-control/types.ts +12 -16
  461. package/src/border-control/border-control/README.md +8 -0
  462. package/src/border-control/border-control/component.tsx +4 -3
  463. package/src/border-control/border-control/hook.ts +10 -6
  464. package/src/border-control/border-control-dropdown/hook.ts +5 -7
  465. package/src/border-control/stories/index.tsx +12 -14
  466. package/src/border-control/styles.ts +20 -23
  467. package/src/border-control/test/index.js +139 -96
  468. package/src/border-control/types.ts +7 -9
  469. package/src/box-control/README.md +14 -0
  470. package/src/box-control/index.js +4 -0
  471. package/src/box-control/stories/index.js +8 -27
  472. package/src/button/README.md +2 -15
  473. package/src/button/stories/index.js +109 -178
  474. package/src/button/style.scss +17 -54
  475. package/src/card/stories/index.tsx +27 -31
  476. package/src/card/test/__snapshots__/index.tsx.snap +36 -35
  477. package/src/card/test/index.tsx +2 -6
  478. package/src/circular-option-picker/index.js +14 -20
  479. package/src/color-palette/README.md +51 -49
  480. package/src/color-palette/{index.js → index.tsx} +132 -51
  481. package/src/color-palette/stories/{index.js → index.tsx} +38 -27
  482. package/src/color-palette/style.scss +2 -2
  483. package/src/color-palette/{styles.js → styles.ts} +0 -0
  484. package/src/color-palette/test/__snapshots__/{index.js.snap → index.tsx.snap} +0 -0
  485. package/src/color-palette/test/{index.js → index.tsx} +1 -1
  486. package/src/color-palette/types.ts +93 -0
  487. package/src/color-picker/input-with-slider.tsx +1 -1
  488. package/src/custom-gradient-picker/gradient-bar/index.js +1 -3
  489. package/src/custom-select-control/README.md +14 -0
  490. package/src/custom-select-control/index.js +22 -15
  491. package/src/date-time/date-time/index.tsx +2 -0
  492. package/src/date-time/stories/date-time.tsx +4 -0
  493. package/src/date-time/time/index.tsx +4 -4
  494. package/src/dimension-control/test/__snapshots__/index.test.js.snap +4 -0
  495. package/src/disabled/README.md +2 -0
  496. package/src/disabled/index.tsx +8 -1
  497. package/src/disabled/test/index.tsx +0 -5
  498. package/src/external-link/index.tsx +14 -6
  499. package/src/external-link/test/index.tsx +106 -0
  500. package/src/focusable-iframe/index.js +0 -1
  501. package/src/font-size-picker/README.md +3 -3
  502. package/src/font-size-picker/index.tsx +152 -142
  503. package/src/font-size-picker/test/index.tsx +447 -174
  504. package/src/font-size-picker/test/utils.ts +1 -45
  505. package/src/font-size-picker/types.ts +1 -1
  506. package/src/font-size-picker/utils.ts +0 -22
  507. package/src/form-file-upload/README.md +1 -3
  508. package/src/form-file-upload/index.tsx +1 -0
  509. package/src/form-file-upload/types.ts +5 -4
  510. package/src/form-toggle/test/__snapshots__/index.tsx.snap +15 -13
  511. package/src/form-toggle/test/index.tsx +1 -1
  512. package/src/h-stack/test/__snapshots__/index.tsx.snap +36 -30
  513. package/src/h-stack/test/index.tsx +3 -3
  514. package/src/higher-order/with-filters/index.js +4 -9
  515. package/src/index.js +2 -1
  516. package/src/input-control/index.tsx +2 -0
  517. package/src/input-control/input-base.tsx +3 -3
  518. package/src/input-control/styles/input-control-styles.tsx +1 -0
  519. package/src/input-control/types.ts +4 -11
  520. package/src/isolated-event-container/index.tsx +32 -0
  521. package/src/item-group/styles.ts +1 -1
  522. package/src/item-group/test/__snapshots__/index.js.snap +90 -85
  523. package/src/item-group/test/index.js +7 -17
  524. package/src/navigator/navigator-screen/component.tsx +20 -3
  525. package/src/number-control/README.md +9 -4
  526. package/src/number-control/index.tsx +100 -33
  527. package/src/number-control/styles/number-control-styles.js +26 -1
  528. package/src/number-control/test/index.js +50 -0
  529. package/src/number-control/types.ts +12 -0
  530. package/src/popover/README.md +12 -7
  531. package/src/popover/index.tsx +20 -30
  532. package/src/popover/stories/index.tsx +29 -1
  533. package/src/popover/style.scss +9 -0
  534. package/src/popover/types.ts +18 -15
  535. package/src/radio-group/README.md +4 -0
  536. package/src/radio-group/index.js +6 -1
  537. package/src/{radio → radio-group/radio}/index.js +6 -1
  538. package/src/{radio-context → radio-group/radio-context}/index.js +0 -0
  539. package/src/radio-group/stories/index.js +11 -2
  540. package/src/sandbox/test/index.js +2 -2
  541. package/src/select-control/stories/index.tsx +9 -4
  542. package/src/slot-fill/bubbles-virtually/fill.js +5 -5
  543. package/src/slot-fill/bubbles-virtually/slot.js +10 -8
  544. package/src/slot-fill/bubbles-virtually/use-slot.js +15 -9
  545. package/src/slot-fill/fill.js +12 -2
  546. package/src/slot-fill/use-slot.js +3 -0
  547. package/src/snackbar/index.js +1 -1
  548. package/src/surface/test/__snapshots__/index.tsx.snap +58 -46
  549. package/src/surface/test/index.tsx +6 -16
  550. package/src/tab-panel/index.tsx +2 -3
  551. package/src/tab-panel/test/index.tsx +78 -1
  552. package/src/text/test/__snapshots__/index.tsx.snap +19 -15
  553. package/src/text/test/index.tsx +2 -2
  554. package/src/text-control/index.tsx +0 -2
  555. package/src/text-control/stories/index.tsx +5 -6
  556. package/src/toggle-control/README.md +6 -4
  557. package/src/toggle-control/index.tsx +13 -2
  558. package/src/toggle-control/types.ts +2 -4
  559. package/src/toggle-group-control/stories/index.tsx +4 -4
  560. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +219 -160
  561. package/src/toggle-group-control/test/index.tsx +129 -2
  562. package/src/toggle-group-control/toggle-group-control/as-button-group.tsx +103 -0
  563. package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +99 -0
  564. package/src/toggle-group-control/toggle-group-control/component.tsx +29 -74
  565. package/src/toggle-group-control/toggle-group-control/styles.ts +12 -10
  566. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +49 -25
  567. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +39 -19
  568. package/src/toggle-group-control/types.ts +75 -63
  569. package/src/toolbar-dropdown-menu/index.js +1 -1
  570. package/src/tools-panel/stories/index.js +0 -1
  571. package/src/tools-panel/stories/tools-panel-with-item-group-slot.js +0 -1
  572. package/src/tree-grid/test/__snapshots__/cell.js.snap +20 -18
  573. package/src/tree-grid/test/__snapshots__/roving-tab-index.js.snap +3 -1
  574. package/src/tree-grid/test/__snapshots__/row.js.snap +33 -29
  575. package/src/tree-grid/test/cell.js +1 -1
  576. package/src/tree-grid/test/roving-tab-index.js +1 -1
  577. package/src/tree-grid/test/row.js +2 -2
  578. package/src/ui/context/context-system-provider.js +5 -18
  579. package/src/ui/context/test/__snapshots__/context-system-provider.js.snap +23 -17
  580. package/src/ui/context/test/context-system-provider.js +3 -3
  581. package/src/ui/control-group/test/__snapshots__/index.js.snap +18 -16
  582. package/src/ui/control-group/test/index.js +1 -1
  583. package/src/ui/control-label/test/__snapshots__/index.js.snap +27 -21
  584. package/src/ui/control-label/test/index.js +3 -3
  585. package/src/ui/form-group/test/__snapshots__/index.js.snap +34 -30
  586. package/src/ui/form-group/test/index.js +2 -2
  587. package/src/ui/shortcut/test/__snapshots__/index.js.snap +1 -1
  588. package/src/ui/shortcut/test/index.js +1 -1
  589. package/src/ui/spinner/test/__snapshots__/index.js.snap +75 -73
  590. package/src/ui/spinner/test/index.js +3 -7
  591. package/src/unit-control/index.tsx +29 -30
  592. package/src/unit-control/styles/unit-control-styles.ts +6 -12
  593. package/src/unit-control/test/utils.ts +43 -0
  594. package/src/unit-control/types.ts +5 -6
  595. package/src/utils/config-values.js +0 -1
  596. package/src/utils/hooks/use-update-effect.js +5 -1
  597. package/src/utils/types.ts +0 -15
  598. package/src/v-stack/test/__snapshots__/index.tsx.snap +36 -30
  599. package/src/v-stack/test/index.tsx +3 -3
  600. package/src/view/test/__snapshots__/index.js.snap +34 -24
  601. package/src/view/test/index.js +5 -5
  602. package/tsconfig.json +0 -2
  603. package/tsconfig.tsbuildinfo +1 -1
  604. package/build/radio/index.js.map +0 -1
  605. package/build/radio-context/index.js.map +0 -1
  606. package/build-module/radio/index.js.map +0 -1
  607. package/build-module/radio-context/index.js.map +0 -1
  608. package/build-types/radio-context/index.d.ts.map +0 -1
  609. package/src/border-box-control/stories/index.js +0 -106
  610. package/src/form-file-upload/stories/index.js +0 -51
  611. package/src/isolated-event-container/index.js +0 -28
  612. package/src/radio/stories/index.js +0 -20
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { fireEvent, render, screen } from '@testing-library/react';
4
+ import { render, screen } from '@testing-library/react';
5
+ import userEvent from '@testing-library/user-event';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
@@ -48,40 +49,22 @@ const props = {
48
49
  const toggleLabelRegex = /Border color( and style)* picker/;
49
50
  const colorPickerRegex = /Border color picker/;
50
51
 
51
- const renderBorderBoxControl = ( customProps ) => {
52
- return render( <BorderBoxControl { ...{ ...props, ...customProps } } /> );
53
- };
54
-
55
- const clickButton = ( name ) => {
56
- fireEvent.click( screen.getByRole( 'button', { name } ) );
57
- };
58
-
59
- const queryButton = ( name ) => {
60
- return screen.queryByRole( 'button', { name } );
61
- };
62
-
63
- const updateLinkedWidthInput = ( value ) => {
64
- const widthInput = screen.getByRole( 'spinbutton' );
65
- widthInput.focus();
66
- fireEvent.change( widthInput, { target: { value } } );
67
- };
68
-
69
- const updateSplitWidthInput = ( value, index = 0 ) => {
70
- const splitInputs = screen.getAllByRole( 'spinbutton' );
71
- splitInputs[ index ].focus();
72
- fireEvent.change( splitInputs[ index ], { target: { value } } );
73
- };
74
-
75
52
  describe( 'BorderBoxControl', () => {
76
53
  describe( 'Linked view rendering', () => {
77
54
  it( 'should render correctly when no value provided', () => {
78
- renderBorderBoxControl();
55
+ render( <BorderBoxControl { ...props } /> );
79
56
 
80
57
  const label = screen.getByText( props.label );
81
58
  const colorButton = screen.getByLabelText( toggleLabelRegex );
82
- const widthInput = screen.getByRole( 'spinbutton' );
83
- const unitSelect = screen.getByRole( 'combobox' );
84
- const slider = screen.getByRole( 'slider' );
59
+ const widthInput = screen.getByRole( 'spinbutton', {
60
+ name: 'Border width',
61
+ } );
62
+ const unitSelect = screen.getByRole( 'combobox', {
63
+ name: 'Select unit',
64
+ } );
65
+ const slider = screen.getByRole( 'slider', {
66
+ name: 'Border width',
67
+ } );
85
68
  const linkedButton = screen.getByLabelText( 'Unlink sides' );
86
69
 
87
70
  expect( label ).toBeInTheDocument();
@@ -94,7 +77,8 @@ describe( 'BorderBoxControl', () => {
94
77
  } );
95
78
 
96
79
  it( 'should hide label', () => {
97
- renderBorderBoxControl( { hideLabelFromVision: true } );
80
+ render( <BorderBoxControl { ...props } hideLabelFromVision /> );
81
+
98
82
  const label = screen.getByText( props.label );
99
83
 
100
84
  // As visually hidden labels are still included in the document
@@ -107,62 +91,112 @@ describe( 'BorderBoxControl', () => {
107
91
  } );
108
92
 
109
93
  it( 'should show correct width value when flat border value provided', () => {
110
- renderBorderBoxControl( { value: defaultBorder } );
111
- const widthInput = screen.getByRole( 'spinbutton' );
94
+ render( <BorderBoxControl { ...props } value={ defaultBorder } /> );
95
+
96
+ const widthInput = screen.getByRole( 'spinbutton', {
97
+ name: 'Border width',
98
+ } );
112
99
 
113
100
  expect( widthInput.value ).toBe( '1' );
114
101
  } );
115
102
 
116
103
  it( 'should show correct width value when consistent split borders provided', () => {
117
- renderBorderBoxControl( { value: defaultBorders } );
118
- const widthInput = screen.getByRole( 'spinbutton' );
104
+ render(
105
+ <BorderBoxControl { ...props } value={ defaultBorders } />
106
+ );
107
+
108
+ const widthInput = screen.getByRole( 'spinbutton', {
109
+ name: 'Border width',
110
+ } );
119
111
 
120
112
  expect( widthInput.value ).toBe( '1' );
121
113
  } );
122
114
 
123
- it( 'should render placeholder and omit unit select when border values are mixed', () => {
124
- renderBorderBoxControl( { value: mixedBorders } );
115
+ it( 'should render placeholder and omit unit select when border values are mixed', async () => {
116
+ const user = userEvent.setup( {
117
+ advanceTimers: jest.advanceTimersByTime,
118
+ } );
119
+
120
+ render( <BorderBoxControl { ...props } value={ mixedBorders } /> );
125
121
 
126
122
  // First render of control with mixed values should show split view.
127
- clickButton( 'Link sides' );
123
+ await user.click(
124
+ screen.getByRole( 'button', { name: 'Link sides' } )
125
+ );
128
126
 
129
- const widthInput = screen.getByRole( 'spinbutton' );
130
- const unitSelect = screen.queryByRole( 'combobox' );
127
+ const widthInput = screen.getByRole( 'spinbutton', {
128
+ name: 'Border width',
129
+ } );
130
+ const unitSelect = screen.queryByRole( 'combobox', {
131
+ name: 'Select unit',
132
+ } );
131
133
 
132
134
  expect( widthInput ).toHaveAttribute( 'placeholder', 'Mixed' );
133
135
  expect( unitSelect ).not.toBeInTheDocument();
134
136
  } );
135
137
 
136
138
  it( 'should render shared border width and unit select when switching to linked view', async () => {
137
- // Render control with mixed border values but consistent widths.
138
- renderBorderBoxControl( {
139
- value: {
140
- top: { color: 'red', width: '5px', style: 'solid' },
141
- right: { color: 'blue', width: '5px', style: 'dashed' },
142
- bottom: { color: 'green', width: '5px', style: 'solid' },
143
- left: { color: 'yellow', width: '5px', style: 'dotted' },
144
- },
139
+ const user = userEvent.setup( {
140
+ advanceTimers: jest.advanceTimersByTime,
145
141
  } );
146
142
 
143
+ // Render control with mixed border values but consistent widths.
144
+ render(
145
+ <BorderBoxControl
146
+ { ...props }
147
+ value={ {
148
+ top: { color: 'red', width: '5px', style: 'solid' },
149
+ right: { color: 'blue', width: '5px', style: 'dashed' },
150
+ bottom: {
151
+ color: 'green',
152
+ width: '5px',
153
+ style: 'solid',
154
+ },
155
+ left: {
156
+ color: 'yellow',
157
+ width: '5px',
158
+ style: 'dotted',
159
+ },
160
+ } }
161
+ />
162
+ );
163
+
147
164
  // First render of control with mixed values should show split view.
148
- clickButton( 'Link sides' );
149
- const linkedInput = screen.getByRole( 'spinbutton' );
150
- const unitSelect = screen.getByRole( 'combobox' );
165
+ await user.click(
166
+ screen.getByRole( 'button', { name: 'Link sides' } )
167
+ );
168
+
169
+ const linkedInput = screen.getByRole( 'spinbutton', {
170
+ name: 'Border width',
171
+ } );
172
+ const unitSelect = screen.getByRole( 'combobox', {
173
+ name: 'Select unit',
174
+ } );
151
175
 
152
176
  expect( linkedInput.value ).toBe( '5' );
153
177
  expect( unitSelect ).toBeInTheDocument();
154
178
  } );
155
179
 
156
- it( 'should omit style options when requested', () => {
157
- renderBorderBoxControl( { enableStyle: false } );
180
+ it( 'should omit style options when requested', async () => {
181
+ const user = userEvent.setup( {
182
+ advanceTimers: jest.advanceTimersByTime,
183
+ } );
184
+
185
+ render( <BorderBoxControl { ...props } enableStyle={ false } /> );
158
186
 
159
187
  const colorButton = screen.getByLabelText( colorPickerRegex );
160
- fireEvent.click( colorButton );
188
+ await user.click( colorButton );
161
189
 
162
190
  const styleLabel = screen.queryByText( 'Style' );
163
- const solidButton = queryButton( 'Solid' );
164
- const dashedButton = queryButton( 'Dashed' );
165
- const dottedButton = queryButton( 'Dotted' );
191
+ const solidButton = screen.queryByRole( 'button', {
192
+ name: 'Solid',
193
+ } );
194
+ const dashedButton = screen.queryByRole( 'button', {
195
+ name: 'Dashed',
196
+ } );
197
+ const dottedButton = screen.queryByRole( 'button', {
198
+ name: 'Dotted',
199
+ } );
166
200
 
167
201
  expect( styleLabel ).not.toBeInTheDocument();
168
202
  expect( solidButton ).not.toBeInTheDocument();
@@ -173,12 +207,18 @@ describe( 'BorderBoxControl', () => {
173
207
 
174
208
  describe( 'Split view rendering', () => {
175
209
  it( 'should render split view by default when mixed values provided', () => {
176
- renderBorderBoxControl( { value: mixedBorders } );
210
+ render( <BorderBoxControl { ...props } value={ mixedBorders } /> );
177
211
 
178
212
  const colorButtons = screen.getAllByLabelText( toggleLabelRegex );
179
- const widthInputs = screen.getAllByRole( 'spinbutton' );
180
- const unitSelects = screen.getAllByRole( 'combobox' );
181
- const sliders = screen.queryAllByRole( 'slider' );
213
+ const widthInputs = screen.getAllByRole( 'spinbutton', {
214
+ name: 'Border width',
215
+ } );
216
+ const unitSelects = screen.getAllByRole( 'combobox', {
217
+ name: 'Select unit',
218
+ } );
219
+ const sliders = screen.queryAllByRole( 'slider', {
220
+ name: 'Border width',
221
+ } );
182
222
  const linkedButton = screen.getByLabelText( 'Link sides' );
183
223
 
184
224
  expect( colorButtons.length ).toBe( 4 );
@@ -189,9 +229,11 @@ describe( 'BorderBoxControl', () => {
189
229
  } );
190
230
 
191
231
  it( 'should render correct width values in appropriate inputs', () => {
192
- renderBorderBoxControl( { value: mixedBorders } );
232
+ render( <BorderBoxControl { ...props } value={ mixedBorders } /> );
193
233
 
194
- const widthInputs = screen.getAllByRole( 'spinbutton' );
234
+ const widthInputs = screen.getAllByRole( 'spinbutton', {
235
+ name: 'Border width',
236
+ } );
195
237
 
196
238
  expect( widthInputs[ 0 ].value ).toBe( '1' ); // Top.
197
239
  expect( widthInputs[ 1 ].value ).toBe( '0.75' ); // Left.
@@ -199,39 +241,75 @@ describe( 'BorderBoxControl', () => {
199
241
  expect( widthInputs[ 3 ].value ).toBe( '2' ); // Bottom.
200
242
  } );
201
243
 
202
- it( 'should render split view correctly when starting with flat border', () => {
203
- renderBorderBoxControl( { value: defaultBorders } );
204
- clickButton( 'Unlink sides' );
244
+ it( 'should render split view correctly when starting with flat border', async () => {
245
+ const user = userEvent.setup( {
246
+ advanceTimers: jest.advanceTimersByTime,
247
+ } );
248
+
249
+ render(
250
+ <BorderBoxControl { ...props } value={ defaultBorders } />
251
+ );
252
+
253
+ await user.click(
254
+ screen.getByRole( 'button', { name: 'Unlink sides' } )
255
+ );
205
256
 
206
- const widthInputs = screen.getAllByRole( 'spinbutton' );
257
+ const widthInputs = screen.getAllByRole( 'spinbutton', {
258
+ name: 'Border width',
259
+ } );
207
260
  expect( widthInputs[ 0 ].value ).toBe( '1' ); // Top.
208
261
  expect( widthInputs[ 1 ].value ).toBe( '1' ); // Left.
209
262
  expect( widthInputs[ 2 ].value ).toBe( '1' ); // Right.
210
263
  expect( widthInputs[ 3 ].value ).toBe( '1' ); // Bottom.
211
264
  } );
212
265
 
213
- it( 'should omit style options when requested', () => {
214
- renderBorderBoxControl( { enableStyle: false } );
215
- clickButton( 'Unlink sides' );
266
+ it( 'should omit style options when requested', async () => {
267
+ const user = userEvent.setup( {
268
+ advanceTimers: jest.advanceTimersByTime,
269
+ } );
216
270
 
217
- const colorButtons = screen.getAllByLabelText( colorPickerRegex );
271
+ render( <BorderBoxControl { ...props } enableStyle={ false } /> );
272
+
273
+ await user.click(
274
+ screen.getByRole( 'button', { name: 'Unlink sides' } )
275
+ );
218
276
 
219
- colorButtons.forEach( ( button ) => {
220
- fireEvent.click( button );
277
+ const colorButtons = screen.getAllByLabelText( colorPickerRegex );
221
278
 
279
+ function assertStyleOptionsMissing() {
222
280
  const styleLabel = screen.queryByText( 'Style' );
223
- const solidButton = queryButton( 'Solid' );
224
- const dashedButton = queryButton( 'Dashed' );
225
- const dottedButton = queryButton( 'Dotted' );
281
+ const solidButton = screen.queryByRole( 'button', {
282
+ name: 'Solid',
283
+ } );
284
+ const dashedButton = screen.queryByRole( 'button', {
285
+ name: 'Dashed',
286
+ } );
287
+ const dottedButton = screen.queryByRole( 'button', {
288
+ name: 'Dotted',
289
+ } );
226
290
 
227
291
  expect( styleLabel ).not.toBeInTheDocument();
228
292
  expect( solidButton ).not.toBeInTheDocument();
229
293
  expect( dashedButton ).not.toBeInTheDocument();
230
294
  expect( dottedButton ).not.toBeInTheDocument();
295
+ }
231
296
 
232
- fireEvent.click( button );
233
- } );
234
- } );
297
+ await user.click( colorButtons[ 0 ] );
298
+ assertStyleOptionsMissing();
299
+ await user.click( colorButtons[ 0 ] );
300
+
301
+ await user.click( colorButtons[ 1 ] );
302
+ assertStyleOptionsMissing();
303
+ await user.click( colorButtons[ 1 ] );
304
+
305
+ await user.click( colorButtons[ 2 ] );
306
+ assertStyleOptionsMissing();
307
+ await user.click( colorButtons[ 2 ] );
308
+
309
+ await user.click( colorButtons[ 3 ] );
310
+ assertStyleOptionsMissing();
311
+ await user.click( colorButtons[ 3 ] );
312
+ }, 10000 );
235
313
  } );
236
314
 
237
315
  describe( 'onChange handling', () => {
@@ -241,16 +319,36 @@ describe( 'BorderBoxControl', () => {
241
319
  } );
242
320
 
243
321
  describe( 'Linked value change handling', () => {
244
- it( 'should set undefined when new border is empty', () => {
245
- renderBorderBoxControl( { value: { width: '1px' } } );
246
- updateLinkedWidthInput( '' );
322
+ it( 'should set undefined when new border is empty', async () => {
323
+ const user = userEvent.setup( {
324
+ advanceTimers: jest.advanceTimersByTime,
325
+ } );
326
+
327
+ render(
328
+ <BorderBoxControl { ...props } value={ { width: '1px' } } />
329
+ );
330
+
331
+ await user.clear(
332
+ screen.getByRole( 'spinbutton', { name: 'Border width' } )
333
+ );
247
334
 
248
335
  expect( props.onChange ).toHaveBeenCalledWith( undefined );
249
336
  } );
250
337
 
251
- it( 'should update with complete flat border', () => {
252
- renderBorderBoxControl( { value: defaultBorder } );
253
- updateLinkedWidthInput( '3' );
338
+ it( 'should update with complete flat border', async () => {
339
+ const user = userEvent.setup( {
340
+ advanceTimers: jest.advanceTimersByTime,
341
+ } );
342
+
343
+ render(
344
+ <BorderBoxControl { ...props } value={ defaultBorder } />
345
+ );
346
+
347
+ const widthInput = screen.getByRole( 'spinbutton', {
348
+ name: 'Border width',
349
+ } );
350
+ await user.clear( widthInput );
351
+ await user.type( widthInput, '3' );
254
352
 
255
353
  expect( props.onChange ).toHaveBeenCalledWith( {
256
354
  ...defaultBorder,
@@ -258,18 +356,32 @@ describe( 'BorderBoxControl', () => {
258
356
  } );
259
357
  } );
260
358
 
261
- it( 'should maintain mixed values if not explicitly set via linked control', () => {
262
- renderBorderBoxControl( {
263
- value: {
264
- top: { color: '#72aee6' },
265
- right: { color: '#f6f7f7', style: 'dashed' },
266
- bottom: { color: '#e65054', style: 'dotted' },
267
- left: { color: undefined },
268
- },
359
+ it( 'should maintain mixed values if not explicitly set via linked control', async () => {
360
+ const user = userEvent.setup( {
361
+ advanceTimers: jest.advanceTimersByTime,
269
362
  } );
270
363
 
271
- clickButton( 'Link sides' );
272
- updateLinkedWidthInput( '4' );
364
+ render(
365
+ <BorderBoxControl
366
+ { ...props }
367
+ value={ {
368
+ top: { color: '#72aee6' },
369
+ right: { color: '#f6f7f7', style: 'dashed' },
370
+ bottom: { color: '#e65054', style: 'dotted' },
371
+ left: { color: undefined },
372
+ } }
373
+ />
374
+ );
375
+
376
+ await user.click(
377
+ screen.getByRole( 'button', { name: 'Link sides' } )
378
+ );
379
+
380
+ const widthInput = screen.getByRole( 'spinbutton', {
381
+ name: 'Border width',
382
+ } );
383
+ await user.clear( widthInput );
384
+ await user.type( widthInput, '4' );
273
385
 
274
386
  expect( props.onChange ).toHaveBeenCalledWith( {
275
387
  top: { color: '#72aee6', width: '4px' },
@@ -279,9 +391,20 @@ describe( 'BorderBoxControl', () => {
279
391
  } );
280
392
  } );
281
393
 
282
- it( 'should update with consistent split borders', () => {
283
- renderBorderBoxControl( { value: defaultBorders } );
284
- updateLinkedWidthInput( '10' );
394
+ it( 'should update with consistent split borders', async () => {
395
+ const user = userEvent.setup( {
396
+ advanceTimers: jest.advanceTimersByTime,
397
+ } );
398
+
399
+ render(
400
+ <BorderBoxControl { ...props } value={ defaultBorders } />
401
+ );
402
+
403
+ const widthInput = screen.getByRole( 'spinbutton', {
404
+ name: 'Border width',
405
+ } );
406
+ await user.clear( widthInput );
407
+ await user.type( widthInput, '10' );
285
408
 
286
409
  expect( props.onChange ).toHaveBeenCalledWith( {
287
410
  ...defaultBorder,
@@ -289,32 +412,56 @@ describe( 'BorderBoxControl', () => {
289
412
  } );
290
413
  } );
291
414
 
292
- it( 'should set undefined borders when change results in empty borders', () => {
293
- renderBorderBoxControl( {
294
- value: {
295
- top: { width: '1px' },
296
- right: { width: '1px' },
297
- bottom: { width: '1px' },
298
- left: { width: '1px' },
299
- },
415
+ it( 'should set undefined borders when change results in empty borders', async () => {
416
+ const user = userEvent.setup( {
417
+ advanceTimers: jest.advanceTimersByTime,
300
418
  } );
301
- updateLinkedWidthInput( '' );
419
+
420
+ render(
421
+ <BorderBoxControl
422
+ { ...props }
423
+ value={ {
424
+ top: { width: '1px' },
425
+ right: { width: '1px' },
426
+ bottom: { width: '1px' },
427
+ left: { width: '1px' },
428
+ } }
429
+ />
430
+ );
431
+
432
+ await user.clear(
433
+ screen.getByRole( 'spinbutton', { name: 'Border width' } )
434
+ );
302
435
 
303
436
  expect( props.onChange ).toHaveBeenCalledWith( undefined );
304
437
  } );
305
438
 
306
- it( 'should set flat border when change results in consistent split borders', () => {
307
- renderBorderBoxControl( {
308
- value: {
309
- top: { ...defaultBorder, width: '1px' },
310
- right: { ...defaultBorder, width: '2px' },
311
- bottom: { ...defaultBorder, width: '3px' },
312
- left: { ...defaultBorder, width: '4px' },
313
- },
439
+ it( 'should set flat border when change results in consistent split borders', async () => {
440
+ const user = userEvent.setup( {
441
+ advanceTimers: jest.advanceTimersByTime,
314
442
  } );
315
443
 
316
- clickButton( 'Link sides' );
317
- updateLinkedWidthInput( '10' );
444
+ render(
445
+ <BorderBoxControl
446
+ { ...props }
447
+ value={ {
448
+ top: { ...defaultBorder, width: '1px' },
449
+ right: { ...defaultBorder, width: '2px' },
450
+ bottom: { ...defaultBorder, width: '3px' },
451
+ left: { ...defaultBorder, width: '4px' },
452
+ } }
453
+ />
454
+ );
455
+
456
+ await user.click(
457
+ screen.getByRole( 'button', { name: 'Link sides' } )
458
+ );
459
+
460
+ const widthInput = screen.getByRole( 'spinbutton', {
461
+ name: 'Border width',
462
+ } );
463
+ await user.clear( widthInput );
464
+ await user.type( widthInput, '10' );
318
465
 
319
466
  expect( props.onChange ).toHaveBeenCalledWith( {
320
467
  ...defaultBorder,
@@ -324,7 +471,11 @@ describe( 'BorderBoxControl', () => {
324
471
  } );
325
472
 
326
473
  describe( 'Split value change handling', () => {
327
- it( 'should set split borders when the updated borders are mixed', () => {
474
+ it( 'should set split borders when the updated borders are mixed', async () => {
475
+ const user = userEvent.setup( {
476
+ advanceTimers: jest.advanceTimersByTime,
477
+ } );
478
+
328
479
  const borders = {
329
480
  top: { ...defaultBorder, width: '1px' },
330
481
  right: { ...defaultBorder, width: '2px' },
@@ -332,8 +483,13 @@ describe( 'BorderBoxControl', () => {
332
483
  left: { ...defaultBorder, width: '4px' },
333
484
  };
334
485
 
335
- renderBorderBoxControl( { value: borders } );
336
- updateSplitWidthInput( '5' );
486
+ render( <BorderBoxControl { ...props } value={ borders } /> );
487
+
488
+ const widthInput = screen.getAllByRole( 'spinbutton', {
489
+ name: 'Border width',
490
+ } )[ 0 ];
491
+ await user.clear( widthInput );
492
+ await user.type( widthInput, '5' );
337
493
 
338
494
  expect( props.onChange ).toHaveBeenCalledWith( {
339
495
  ...borders,
@@ -341,7 +497,11 @@ describe( 'BorderBoxControl', () => {
341
497
  } );
342
498
  } );
343
499
 
344
- it( 'should set flat border when updated borders are consistent', () => {
500
+ it( 'should set flat border when updated borders are consistent', async () => {
501
+ const user = userEvent.setup( {
502
+ advanceTimers: jest.advanceTimersByTime,
503
+ } );
504
+
345
505
  const borders = {
346
506
  top: { ...defaultBorder, width: '4px' },
347
507
  right: { ...defaultBorder, width: '1px' },
@@ -349,8 +509,13 @@ describe( 'BorderBoxControl', () => {
349
509
  left: { ...defaultBorder, width: '1px' },
350
510
  };
351
511
 
352
- renderBorderBoxControl( { value: borders } );
353
- updateSplitWidthInput( '1' );
512
+ render( <BorderBoxControl { ...props } value={ borders } /> );
513
+
514
+ const widthInput = screen.getAllByRole( 'spinbutton', {
515
+ name: 'Border width',
516
+ } )[ 0 ];
517
+ await user.clear( widthInput );
518
+ await user.type( widthInput, '1' );
354
519
 
355
520
  expect( props.onChange ).toHaveBeenCalledWith( defaultBorder );
356
521
  } );
@@ -44,12 +44,11 @@ export type BorderBoxControlProps = ColorProps &
44
44
  */
45
45
  value: AnyBorder;
46
46
  /**
47
- * Start opting into the larger default height that will become the
48
- * default size in a future version.
47
+ * Size of the control.
49
48
  *
50
- * @default false
49
+ * @default 'default'
51
50
  */
52
- __next36pxDefaultSize?: boolean;
51
+ size?: 'default' | '__unstable-large';
53
52
  };
54
53
 
55
54
  export type LinkedButtonProps = {
@@ -66,12 +65,11 @@ export type LinkedButtonProps = {
66
65
  */
67
66
  onClick: () => void;
68
67
  /**
69
- * Start opting into the larger default height that will become the
70
- * default size in a future version.
68
+ * Size of the control.
71
69
  *
72
- * @default false
70
+ * @default 'default'
73
71
  */
74
- __next36pxDefaultSize?: boolean;
72
+ size?: 'default' | '__unstable-large';
75
73
  };
76
74
 
77
75
  export type VisualizerProps = {
@@ -82,12 +80,11 @@ export type VisualizerProps = {
82
80
  */
83
81
  value?: Borders;
84
82
  /**
85
- * Start opting into the larger default height that will become the
86
- * default size in a future version.
83
+ * Size of the control.
87
84
  *
88
- * @default false
85
+ * @default 'default'
89
86
  */
90
- __next36pxDefaultSize?: boolean;
87
+ size?: 'default' | '__unstable-large';
91
88
  };
92
89
 
93
90
  export type SplitControlsProps = ColorProps & {
@@ -116,10 +113,9 @@ export type SplitControlsProps = ColorProps & {
116
113
  */
117
114
  value?: Borders;
118
115
  /**
119
- * Start opting into the larger default height that will become the
120
- * default size in a future version.
116
+ * Size of the control.
121
117
  *
122
- * @default false
118
+ * @default 'default'
123
119
  */
124
- __next36pxDefaultSize?: boolean;
120
+ size?: 'default' | '__unstable-large';
125
121
  };
@@ -135,6 +135,14 @@ dropdown. The header includes a label for the color picker and a close button.
135
135
 
136
136
  - Required: No
137
137
 
138
+ ### `size`: `string`
139
+
140
+ Size of the control.
141
+
142
+ - Required: No
143
+ - Default: `default`
144
+ - Allowed values: `default`, `__unstable-large`
145
+
138
146
  ### `value`: `Object`
139
147
 
140
148
  An object representing a border or `undefined`. Used to set the current border