@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
@@ -2,6 +2,7 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { render, screen, fireEvent, waitFor } from '@testing-library/react';
5
+ import userEvent from '@testing-library/user-event';
5
6
 
6
7
  /**
7
8
  * WordPress dependencies
@@ -425,4 +426,53 @@ describe( 'NumberControl', () => {
425
426
  expect( input.value ).toBe( '4' );
426
427
  } );
427
428
  } );
429
+
430
+ describe( 'custom spin buttons', () => {
431
+ test.each( [ undefined, 'none', 'native' ] )(
432
+ 'should not appear when spinControls = %s',
433
+ ( spinControls ) => {
434
+ render( <NumberControl spinControls={ spinControls } /> );
435
+ expect(
436
+ screen.queryByLabelText( 'Increment' )
437
+ ).not.toBeInTheDocument();
438
+ expect(
439
+ screen.queryByLabelText( 'Decrement' )
440
+ ).not.toBeInTheDocument();
441
+ }
442
+ );
443
+
444
+ test.each( [
445
+ [ 'up', '1', {} ],
446
+ [ 'up', '2', { value: '1' } ],
447
+ [ 'up', '12', { value: '10', step: '2' } ],
448
+ [ 'up', '10', { value: '10', max: '10' } ],
449
+ [ 'down', '-1', {} ],
450
+ [ 'down', '1', { value: '2' } ],
451
+ [ 'down', '10', { value: '12', step: '2' } ],
452
+ [ 'down', '10', { value: '10', min: '10' } ],
453
+ ] )(
454
+ 'should spin %s to %s when props = %o',
455
+ async ( direction, expectedValue, props ) => {
456
+ const user = userEvent.setup( {
457
+ advanceTimers: jest.advanceTimersByTime,
458
+ } );
459
+ const onChange = jest.fn();
460
+ render(
461
+ <NumberControl
462
+ { ...props }
463
+ spinControls="custom"
464
+ onChange={ onChange }
465
+ />
466
+ );
467
+ await user.click(
468
+ screen.getByLabelText(
469
+ direction === 'up' ? 'Increment' : 'Decrement'
470
+ )
471
+ );
472
+ expect( onChange ).toHaveBeenCalledWith( expectedValue, {
473
+ event: expect.anything(),
474
+ } );
475
+ }
476
+ );
477
+ } );
428
478
  } );
@@ -10,9 +10,21 @@ export type NumberControlProps = Omit<
10
10
  /**
11
11
  * If true, the default `input` HTML arrows will be hidden.
12
12
  *
13
+ * @deprecated
13
14
  * @default false
14
15
  */
15
16
  hideHTMLArrows?: boolean;
17
+ /**
18
+ * The type of spin controls to display. These are butons that allow the
19
+ * user to quickly increment and decrement the number.
20
+ *
21
+ * - 'none' - Do not show spin controls.
22
+ * - 'native' - Use browser's native HTML `input` controls.
23
+ * - 'custom' - Use plus and minus icon buttons.
24
+ *
25
+ * @default 'native'
26
+ */
27
+ spinControls?: 'none' | 'native' | 'custom';
16
28
  /**
17
29
  * If true, enables mouse drag gestures.
18
30
  *
@@ -92,7 +92,7 @@ The element should be stored in state rather than a plain ref to ensure reactive
92
92
 
93
93
  ### `anchorRect`: `DomRectWithOwnerDocument`
94
94
 
95
- _Note: this prop is deprecated and will be removed in WordPress 6.3. Please use the `anchor` prop instead._
95
+ _Note: this prop is deprecated. Please use the `anchor` prop instead._
96
96
 
97
97
  An object extending a `DOMRect` with an additional optional `ownerDocument` property, used to specify a fixed popover position.
98
98
 
@@ -100,7 +100,7 @@ An object extending a `DOMRect` with an additional optional `ownerDocument` prop
100
100
 
101
101
  ### `anchorRef`: `Element | PopoverAnchorRefReference | PopoverAnchorRefTopBottom | Range`
102
102
 
103
- _Note: this prop is deprecated and will be removed in WordPress 6.3. Please use the `anchor` prop instead._
103
+ _Note: this prop is deprecated. Please use the `anchor` prop instead._
104
104
 
105
105
  Used to specify a fixed popover position. It can be an `Element`, a React reference to an `element`, an object with a `top` and a `bottom` properties (both pointing to elements), or a `range`.
106
106
 
@@ -157,7 +157,7 @@ When not provided, the `onClose` callback will be called instead.
157
157
 
158
158
  ### `getAnchorRect`: `( fallbackReferenceElement: Element | null ) => DomRectWithOwnerDocument`
159
159
 
160
- _Note: this prop is deprecated and will be removed in WordPress 6.3. Please use the `anchor` prop instead._
160
+ _Note: this prop is deprecated. Please use the `anchor` prop instead._
161
161
 
162
162
  A function returning the same value as the one expected by the `anchorRect` prop, used to specify a dynamic popover position.
163
163
 
@@ -171,6 +171,8 @@ Used to customize the header text shown when the popover is toggled to fullscree
171
171
 
172
172
  ### `isAlternate`: `boolean`
173
173
 
174
+ _Note: this prop is deprecated. Please use the `variant` prop with the `'toolbar'` values instead._
175
+
174
176
  Used to enable a different visual style for the popover.
175
177
 
176
178
  - Required: No
@@ -212,8 +214,7 @@ Possible values:
212
214
  - `yAxis`: `'top' | 'middle' | 'bottom'`
213
215
  - `xAxis`: `'left' | 'center' | 'right'`
214
216
  - `corner`: `'top' | 'right' | 'bottom' | 'left'`
215
-
216
-
217
+ <!-- Break into two separate lists using an HTML comment -->
217
218
  - Required: No
218
219
 
219
220
  ### `resize`: `boolean`
@@ -223,8 +224,12 @@ Adjusts the size of the popover to prevent its contents from going out of view w
223
224
  - Required: No
224
225
  - Default: `true`
225
226
 
226
- ### `range`: `unknown`
227
+ ### `variant`: `'toolbar' | 'unstyled'`
227
228
 
228
- _Note: this prop is deprecated and will be removed in WordPress 6.3. It has no effect on the component._
229
+ Specifies the popover's style.
229
230
 
231
+ Leave undefined for the default style. Possible values are:
232
+ - `unstyled`: The popover is essentially without any visible style, it has no background, border, outline or drop shadow, but the popover contents are still displayed.
233
+ - `toolbar`: A style that has no elevation, but a high contrast with other elements. This matches the style of the [`Toolbar` component](/packages/components/toolbar/README.md).
234
+ <!-- Break into two separate lists using an HTML comment -->
230
235
  - Required: No
@@ -169,7 +169,6 @@ const UnforwardedPopover = (
169
169
  children,
170
170
  className,
171
171
  noArrow = true,
172
- isAlternate,
173
172
  position,
174
173
  placement: placementProp = 'bottom-start',
175
174
  offset: offsetProp = 0,
@@ -181,30 +180,23 @@ const UnforwardedPopover = (
181
180
  flip = true,
182
181
  resize = true,
183
182
  shift = false,
183
+ variant,
184
184
 
185
185
  // Deprecated props
186
186
  __unstableForcePosition,
187
- __unstableShift,
188
187
  anchorRef,
189
188
  anchorRect,
190
189
  getAnchorRect,
191
- range,
190
+ isAlternate,
192
191
 
193
192
  // Rest
194
193
  ...contentProps
195
194
  } = props;
196
195
 
197
- if ( range ) {
198
- deprecated( '`range` prop in wp.components.Popover', {
199
- since: '6.1',
200
- version: '6.3',
201
- } );
202
- }
203
-
204
196
  let computedFlipProp = flip;
205
197
  let computedResizeProp = resize;
206
198
  if ( __unstableForcePosition !== undefined ) {
207
- deprecated( '`__unstableForcePosition` prop wp.components.Popover', {
199
+ deprecated( '`__unstableForcePosition` prop in wp.components.Popover', {
208
200
  since: '6.1',
209
201
  version: '6.3',
210
202
  alternative: '`flip={ false }` and `resize={ false }`',
@@ -216,22 +208,9 @@ const UnforwardedPopover = (
216
208
  computedResizeProp = ! __unstableForcePosition;
217
209
  }
218
210
 
219
- let shouldShift = shift;
220
- if ( __unstableShift !== undefined ) {
221
- deprecated( '`__unstableShift` prop in wp.components.Popover', {
222
- since: '6.1',
223
- version: '6.3',
224
- alternative: '`shift` prop`',
225
- } );
226
-
227
- // Back-compat.
228
- shouldShift = __unstableShift;
229
- }
230
-
231
211
  if ( anchorRef !== undefined ) {
232
212
  deprecated( '`anchorRef` prop in wp.components.Popover', {
233
213
  since: '6.1',
234
- version: '6.3',
235
214
  alternative: '`anchor` prop',
236
215
  } );
237
216
  }
@@ -239,7 +218,6 @@ const UnforwardedPopover = (
239
218
  if ( anchorRect !== undefined ) {
240
219
  deprecated( '`anchorRect` prop in wp.components.Popover', {
241
220
  since: '6.1',
242
- version: '6.3',
243
221
  alternative: '`anchor` prop',
244
222
  } );
245
223
  }
@@ -247,12 +225,19 @@ const UnforwardedPopover = (
247
225
  if ( getAnchorRect !== undefined ) {
248
226
  deprecated( '`getAnchorRect` prop in wp.components.Popover', {
249
227
  since: '6.1',
250
- version: '6.3',
251
228
  alternative: '`anchor` prop',
252
229
  } );
253
230
  }
254
231
 
255
- const arrowRef = useRef( null );
232
+ const computedVariant = isAlternate ? 'toolbar' : variant;
233
+ if ( isAlternate !== undefined ) {
234
+ deprecated( '`isAlternate` prop in wp.components.Popover', {
235
+ since: '6.2',
236
+ alternative: "`variant` prop with the `'toolbar'` value",
237
+ } );
238
+ }
239
+
240
+ const arrowRef = useRef< HTMLElement | null >( null );
256
241
 
257
242
  const [ fallbackReferenceElement, setFallbackReferenceElement ] =
258
243
  useState< HTMLSpanElement | null >( null );
@@ -325,7 +310,7 @@ const UnforwardedPopover = (
325
310
  },
326
311
  } )
327
312
  : undefined,
328
- shouldShift
313
+ shift
329
314
  ? shiftMiddleware( {
330
315
  crossAxis: true,
331
316
  limiter: customLimitShift(),
@@ -385,7 +370,7 @@ const UnforwardedPopover = (
385
370
  } );
386
371
 
387
372
  const arrowCallbackRef = useCallback(
388
- ( node ) => {
373
+ ( node: HTMLElement | null ) => {
389
374
  arrowRef.current = node;
390
375
  update();
391
376
  },
@@ -476,7 +461,12 @@ const UnforwardedPopover = (
476
461
  placement={ computedPlacement }
477
462
  className={ classnames( 'components-popover', className, {
478
463
  'is-expanded': isExpanded,
479
- 'is-alternate': isAlternate,
464
+ // Use the 'alternate' classname for 'toolbar' variant for back compat.
465
+ [ `is-${
466
+ computedVariant === 'toolbar'
467
+ ? 'alternate'
468
+ : computedVariant
469
+ }` ]: computedVariant,
480
470
  } ) }
481
471
  { ...contentProps }
482
472
  ref={ mergedFloatingRef }
@@ -80,7 +80,7 @@ const PopoverWithAnchor = ( args: PopoverProps ) => {
80
80
  );
81
81
  };
82
82
 
83
- export const Default: ComponentStory< typeof Popover > = ( args ) => {
83
+ const Template: ComponentStory< typeof Popover > = ( args ) => {
84
84
  const [ isVisible, setIsVisible ] = useState( false );
85
85
  const toggleVisible = () => {
86
86
  setIsVisible( ( state ) => ! state );
@@ -114,6 +114,8 @@ export const Default: ComponentStory< typeof Popover > = ( args ) => {
114
114
  </div>
115
115
  );
116
116
  };
117
+
118
+ export const Default: ComponentStory< typeof Popover > = Template.bind( {} );
117
119
  Default.args = {
118
120
  children: (
119
121
  <div style={ { width: '280px', whiteSpace: 'normal' } }>
@@ -125,6 +127,32 @@ Default.args = {
125
127
  ),
126
128
  };
127
129
 
130
+ export const Toolbar: ComponentStory< typeof Popover > = Template.bind( {} );
131
+ Toolbar.args = {
132
+ children: (
133
+ <div style={ { width: '280px', whiteSpace: 'normal' } }>
134
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
135
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
136
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
137
+ aliquip ex ea commodo consequat.
138
+ </div>
139
+ ),
140
+ variant: 'toolbar',
141
+ };
142
+
143
+ export const Unstyled: ComponentStory< typeof Popover > = Template.bind( {} );
144
+ Unstyled.args = {
145
+ children: (
146
+ <div style={ { width: '280px', whiteSpace: 'normal' } }>
147
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
148
+ eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
149
+ ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
150
+ aliquip ex ea commodo consequat.
151
+ </div>
152
+ ),
153
+ variant: 'unstyled',
154
+ };
155
+
128
156
  export const AllPlacements: ComponentStory< typeof Popover > = ( {
129
157
  children,
130
158
  ...args
@@ -29,6 +29,15 @@ $arrow-triangle-base-size: 14px;
29
29
  box-shadow: none;
30
30
  }
31
31
 
32
+ // A style that gives the popover no visible ui.
33
+ .is-unstyled & {
34
+ background: none;
35
+ border: none;
36
+ border-radius: 0;
37
+ outline: none;
38
+ box-shadow: none;
39
+ }
40
+
32
41
  .components-popover.is-expanded & {
33
42
  position: static;
34
43
  height: calc(100% - #{ $panel-header-height });
@@ -92,10 +92,6 @@ export type PopoverProps = {
92
92
  * fullscreen on mobile viewports (see the `expandOnMobile` prop).
93
93
  */
94
94
  headerTitle?: string;
95
- /**
96
- * Used to enable a different visual style for the popover.
97
- */
98
- isAlternate?: boolean;
99
95
  /**
100
96
  * Used to show/hide the arrow that points at the popover's anchor.
101
97
  *
@@ -138,7 +134,20 @@ export type PopoverProps = {
138
134
  * @default false
139
135
  */
140
136
  shift?: boolean;
141
-
137
+ /**
138
+ * Specifies the popover's style.
139
+ *
140
+ * Leave undefined for the default style. Other values are:
141
+ * - 'unstyled': The popover is essentially without any visible style, it
142
+ * has no background, border, outline or drop shadow, but
143
+ * the popover contents are still displayed.
144
+ * - 'toolbar': A style that has no elevation, but a high contrast with
145
+ * other elements. This is matches the style of the
146
+ * `Toolbar` component.
147
+ *
148
+ * @default undefined
149
+ */
150
+ variant?: 'unstyled' | 'toolbar';
142
151
  // Deprecated props
143
152
  /**
144
153
  * Prevent the popover from flipping and resizing when meeting the viewport
@@ -148,14 +157,6 @@ export type PopoverProps = {
148
157
  * @deprecated
149
158
  */
150
159
  __unstableForcePosition?: boolean;
151
- /**
152
- * Enables the `Popover` to shift in order to stay in view when meeting the
153
- * viewport edges.
154
- * _Note: this prop is deprecated. Use the `shift` prop instead._
155
- *
156
- * @deprecated
157
- */
158
- __unstableShift?: boolean;
159
160
  /**
160
161
  * An object extending a `DOMRect` with an additional optional `ownerDocument`
161
162
  * property, used to specify a fixed popover position.
@@ -185,9 +186,11 @@ export type PopoverProps = {
185
186
  fallbackReferenceElement: Element | null
186
187
  ) => DomRectWithOwnerDocument;
187
188
  /**
188
- * _Note: this prop is deprecated and has no effect on the component._
189
+ * Used to enable a different visual style for the popover.
190
+ * _Note: this prop is deprecated. Use the `variant` prop with the
191
+ * 'toolbar' value instead._
189
192
  *
190
193
  * @deprecated
191
194
  */
192
- range?: unknown;
195
+ isAlternate?: boolean;
193
196
  };
@@ -1,5 +1,9 @@
1
1
  # RadioGroup
2
2
 
3
+ <div class="callout callout-alert">
4
+ This component is deprecated. Consider using `RadioControl` or `ToggleGroupControl` instead.
5
+ </div>
6
+
3
7
  <div class="callout callout-alert">
4
8
  This feature is still experimental. “Experimental” means this is an early implementation subject to drastic and breaking changes.
5
9
  </div>
@@ -1,3 +1,5 @@
1
+ // @ts-nocheck
2
+
1
3
  /**
2
4
  * External dependencies
3
5
  */
@@ -12,7 +14,7 @@ import { forwardRef } from '@wordpress/element';
12
14
  * Internal dependencies
13
15
  */
14
16
  import ButtonGroup from '../button-group';
15
- import RadioContext from '../radio-context';
17
+ import RadioContext from './radio-context';
16
18
 
17
19
  function RadioGroup(
18
20
  { label, checked, defaultChecked, disabled, onChange, ...props },
@@ -43,4 +45,7 @@ function RadioGroup(
43
45
  );
44
46
  }
45
47
 
48
+ /**
49
+ * @deprecated Use `RadioControl` or `ToggleGroupControl` instead.
50
+ */
46
51
  export default forwardRef( RadioGroup );
@@ -1,3 +1,5 @@
1
+ // @ts-nocheck
2
+
1
3
  /**
2
4
  * External dependencies
3
5
  */
@@ -11,7 +13,7 @@ import { useContext, forwardRef } from '@wordpress/element';
11
13
  /**
12
14
  * Internal dependencies
13
15
  */
14
- import Button from '../button';
16
+ import Button from '../../button';
15
17
  import RadioContext from '../radio-context';
16
18
 
17
19
  function Radio( { children, value, ...props }, ref ) {
@@ -32,4 +34,7 @@ function Radio( { children, value, ...props }, ref ) {
32
34
  );
33
35
  }
34
36
 
37
+ /**
38
+ * @deprecated Use `RadioControl` or `ToggleGroupControl` instead.
39
+ */
35
40
  export default forwardRef( Radio );
@@ -6,12 +6,21 @@ import { useState } from '@wordpress/element';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import Radio from '../../radio';
9
+ import Radio from '../radio';
10
10
  import RadioGroup from '../';
11
11
 
12
12
  export default {
13
- title: 'Components (Experimental)/RadioGroup',
13
+ title: 'Components (Deprecated)/RadioGroup',
14
+ subcomponents: { Radio },
14
15
  component: RadioGroup,
16
+ parameters: {
17
+ docs: {
18
+ description: {
19
+ component:
20
+ 'This component is deprecated. Use `RadioControl` or `ToggleGroupControl` instead.',
21
+ },
22
+ },
23
+ },
15
24
  };
16
25
 
17
26
  export const _default = () => {
@@ -39,9 +39,9 @@ describe( 'Sandbox', () => {
39
39
  };
40
40
 
41
41
  it( 'should rerender with new emdeded content if html prop changes', () => {
42
- const result = render( <TestWrapper /> );
42
+ const { container } = render( <TestWrapper /> );
43
43
 
44
- const iframe = result.container.querySelector( '.components-sandbox' );
44
+ const iframe = container.querySelector( '.components-sandbox' );
45
45
 
46
46
  let sandboxedIframe =
47
47
  iframe.contentWindow.document.body.querySelector( '.mock-iframe' );
@@ -25,15 +25,17 @@ const meta: ComponentMeta< typeof SelectControl > = {
25
25
  value: { control: { type: null } },
26
26
  },
27
27
  parameters: {
28
+ actions: { argTypesRegex: '^on.*' },
28
29
  controls: { expanded: true },
29
30
  docs: { source: { state: 'open' } },
30
31
  },
31
32
  };
32
33
  export default meta;
33
34
 
34
- const SelectControlWithState: ComponentStory< typeof SelectControl > = (
35
- args
36
- ) => {
35
+ const SelectControlWithState: ComponentStory< typeof SelectControl > = ( {
36
+ onChange,
37
+ ...args
38
+ } ) => {
37
39
  const [ selection, setSelection ] =
38
40
  useState< ComponentProps< typeof SelectControl >[ 'value' ] >();
39
41
 
@@ -41,7 +43,10 @@ const SelectControlWithState: ComponentStory< typeof SelectControl > = (
41
43
  <SelectControl
42
44
  { ...args }
43
45
  value={ selection }
44
- onChange={ setSelection }
46
+ onChange={ ( value ) => {
47
+ setSelection( value );
48
+ onChange?.( value );
49
+ } }
45
50
  />
46
51
  );
47
52
  };
@@ -28,18 +28,18 @@ function useForceUpdate() {
28
28
  }
29
29
 
30
30
  export default function Fill( { name, children } ) {
31
- const slot = useSlot( name );
31
+ const { registerFill, unregisterFill, ...slot } = useSlot( name );
32
32
  const ref = useRef( { rerender: useForceUpdate() } );
33
33
 
34
34
  useEffect( () => {
35
- // We register fills so we can keep track of their existance.
35
+ // We register fills so we can keep track of their existence.
36
36
  // Some Slot implementations need to know if there're already fills
37
37
  // registered so they can choose to render themselves or not.
38
- slot.registerFill( ref );
38
+ registerFill( ref );
39
39
  return () => {
40
- slot.unregisterFill( ref );
40
+ unregisterFill( ref );
41
41
  };
42
- }, [ slot.registerFill, slot.unregisterFill ] );
42
+ }, [ registerFill, unregisterFill ] );
43
43
 
44
44
  if ( ! slot.ref || ! slot.ref.current ) {
45
45
  return null;
@@ -19,19 +19,21 @@ function Slot(
19
19
  { name, fillProps = {}, as: Component = 'div', ...props },
20
20
  forwardedRef
21
21
  ) {
22
- const registry = useContext( SlotFillContext );
22
+ const { registerSlot, unregisterSlot, ...registry } =
23
+ useContext( SlotFillContext );
23
24
  const ref = useRef();
24
25
 
25
26
  useLayoutEffect( () => {
26
- registry.registerSlot( name, ref, fillProps );
27
+ registerSlot( name, ref, fillProps );
27
28
  return () => {
28
- registry.unregisterSlot( name, ref );
29
+ unregisterSlot( name, ref );
29
30
  };
30
- // We are not including fillProps in the deps because we don't want to
31
- // unregister and register the slot whenever fillProps change, which would
32
- // cause the fill to be re-mounted. We are only considering the initial value
33
- // of fillProps.
34
- }, [ registry.registerSlot, registry.unregisterSlot, name ] );
31
+ // Ignore reason: We don't want to unregister and register the slot whenever
32
+ // `fillProps` change, which would cause the fill to be re-mounted. Instead,
33
+ // we can just update the slot (see hook below).
34
+ // For more context, see https://github.com/WordPress/gutenberg/pull/44403#discussion_r994415973
35
+ // eslint-disable-next-line react-hooks/exhaustive-deps
36
+ }, [ registerSlot, unregisterSlot, name ] );
35
37
  // fillProps may be an update that interacts with the layout, so we
36
38
  // useLayoutEffect.
37
39
  useLayoutEffect( () => {
@@ -15,7 +15,13 @@ import { useCallback, useContext } from '@wordpress/element';
15
15
  import SlotFillContext from './slot-fill-context';
16
16
 
17
17
  export default function useSlot( name ) {
18
- const registry = useContext( SlotFillContext );
18
+ const {
19
+ updateSlot: registryUpdateSlot,
20
+ unregisterSlot: registryUnregisterSlot,
21
+ registerFill: registryRegisterFill,
22
+ unregisterFill: registryUnregisterFill,
23
+ ...registry
24
+ } = useContext( SlotFillContext );
19
25
  const slots = useSnapshot( registry.slots, { sync: true } );
20
26
  // The important bit here is that this call ensures
21
27
  // the hook only causes a re-render if the slot
@@ -24,30 +30,30 @@ export default function useSlot( name ) {
24
30
 
25
31
  const updateSlot = useCallback(
26
32
  ( fillProps ) => {
27
- registry.updateSlot( name, fillProps );
33
+ registryUpdateSlot( name, fillProps );
28
34
  },
29
- [ name, registry.updateSlot ]
35
+ [ name, registryUpdateSlot ]
30
36
  );
31
37
 
32
38
  const unregisterSlot = useCallback(
33
39
  ( slotRef ) => {
34
- registry.unregisterSlot( name, slotRef );
40
+ registryUnregisterSlot( name, slotRef );
35
41
  },
36
- [ name, registry.unregisterSlot ]
42
+ [ name, registryUnregisterSlot ]
37
43
  );
38
44
 
39
45
  const registerFill = useCallback(
40
46
  ( fillRef ) => {
41
- registry.registerFill( name, fillRef );
47
+ registryRegisterFill( name, fillRef );
42
48
  },
43
- [ name, registry.registerFill ]
49
+ [ name, registryRegisterFill ]
44
50
  );
45
51
 
46
52
  const unregisterFill = useCallback(
47
53
  ( fillRef ) => {
48
- registry.unregisterFill( name, fillRef );
54
+ registryUnregisterFill( name, fillRef );
49
55
  },
50
- [ name, registry.unregisterFill ]
56
+ [ name, registryUnregisterFill ]
51
57
  );
52
58
 
53
59
  return {
@@ -20,8 +20,12 @@ function FillComponent( { name, children, registerFill, unregisterFill } ) {
20
20
  } );
21
21
 
22
22
  useLayoutEffect( () => {
23
- registerFill( name, ref.current );
24
- return () => unregisterFill( name, ref.current );
23
+ const refValue = ref.current;
24
+ registerFill( name, refValue );
25
+ return () => unregisterFill( name, refValue );
26
+ // Ignore reason: the useLayoutEffects here are written to fire at specific times, and introducing new dependencies could cause unexpected changes in behavior.
27
+ // We'll leave them as-is until a more detailed investigation/refactor can be performed.
28
+ // eslint-disable-next-line react-hooks/exhaustive-deps
25
29
  }, [] );
26
30
 
27
31
  useLayoutEffect( () => {
@@ -29,6 +33,9 @@ function FillComponent( { name, children, registerFill, unregisterFill } ) {
29
33
  if ( slot ) {
30
34
  slot.forceUpdate();
31
35
  }
36
+ // Ignore reason: the useLayoutEffects here are written to fire at specific times, and introducing new dependencies could cause unexpected changes in behavior.
37
+ // We'll leave them as-is until a more detailed investigation/refactor can be performed.
38
+ // eslint-disable-next-line react-hooks/exhaustive-deps
32
39
  }, [ children ] );
33
40
 
34
41
  useLayoutEffect( () => {
@@ -39,6 +46,9 @@ function FillComponent( { name, children, registerFill, unregisterFill } ) {
39
46
  unregisterFill( ref.current.name, ref.current );
40
47
  ref.current.name = name;
41
48
  registerFill( name, ref.current );
49
+ // Ignore reason: the useLayoutEffects here are written to fire at specific times, and introducing new dependencies could cause unexpected changes in behavior.
50
+ // We'll leave them as-is until a more detailed investigation/refactor can be performed.
51
+ // eslint-disable-next-line react-hooks/exhaustive-deps
42
52
  }, [ name ] );
43
53
 
44
54
  if ( ! slot || ! slot.node ) {