@wordpress/components 28.5.0 → 28.6.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 (544) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/CONTRIBUTING.md +155 -64
  3. package/build/alignment-matrix-control/cell.js +2 -2
  4. package/build/alignment-matrix-control/cell.js.map +1 -1
  5. package/build/alignment-matrix-control/index.js +6 -5
  6. package/build/alignment-matrix-control/index.js.map +1 -1
  7. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +8 -17
  8. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  9. package/build/angle-picker-control/styles/angle-picker-control-styles.js +4 -4
  10. package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  11. package/build/base-control/index.js +54 -41
  12. package/build/base-control/index.js.map +1 -1
  13. package/build/base-control/types.js.map +1 -1
  14. package/build/border-control/styles.js +13 -13
  15. package/build/border-control/styles.js.map +1 -1
  16. package/build/checkbox-control/index.js +1 -0
  17. package/build/checkbox-control/index.js.map +1 -1
  18. package/build/circular-option-picker/circular-option-picker-option.js +4 -4
  19. package/build/circular-option-picker/circular-option-picker-option.js.map +1 -1
  20. package/build/circular-option-picker/circular-option-picker.js +3 -3
  21. package/build/circular-option-picker/circular-option-picker.js.map +1 -1
  22. package/build/circular-option-picker/types.js.map +1 -1
  23. package/build/color-palette/utils.js +17 -5
  24. package/build/color-palette/utils.js.map +1 -1
  25. package/build/color-picker/input-with-slider.js +1 -0
  26. package/build/color-picker/input-with-slider.js.map +1 -1
  27. package/build/combobox-control/index.js +1 -0
  28. package/build/combobox-control/index.js.map +1 -1
  29. package/build/composite/context.js +19 -0
  30. package/build/composite/context.js.map +1 -0
  31. package/build/composite/index.js +287 -9
  32. package/build/composite/index.js.map +1 -1
  33. package/build/composite/legacy/index.js +10 -8
  34. package/build/composite/legacy/index.js.map +1 -1
  35. package/build/composite/types.js +6 -0
  36. package/build/composite/types.js.map +1 -0
  37. package/build/custom-select-control/types.js.map +1 -1
  38. package/build/custom-select-control-v2/custom-select.js +3 -2
  39. package/build/custom-select-control-v2/custom-select.js.map +1 -1
  40. package/build/date-time/time/index.js +11 -3
  41. package/build/date-time/time/index.js.map +1 -1
  42. package/build/date-time/types.js.map +1 -1
  43. package/build/dimension-control/index.js +25 -8
  44. package/build/dimension-control/index.js.map +1 -1
  45. package/build/dimension-control/types.js.map +1 -1
  46. package/build/dropdown-menu-v2/index.js +3 -2
  47. package/build/dropdown-menu-v2/index.js.map +1 -1
  48. package/build/dropdown-menu-v2/styles.js +23 -21
  49. package/build/dropdown-menu-v2/styles.js.map +1 -1
  50. package/build/focal-point-picker/controls.js +1 -3
  51. package/build/focal-point-picker/controls.js.map +1 -1
  52. package/build/focal-point-picker/index.js +1 -2
  53. package/build/focal-point-picker/index.js.map +1 -1
  54. package/build/focal-point-picker/styles/focal-point-picker-style.js +11 -11
  55. package/build/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  56. package/build/focal-point-picker/types.js.map +1 -1
  57. package/build/form-file-upload/types.js.map +1 -1
  58. package/build/index.js +5 -5
  59. package/build/index.js.map +1 -1
  60. package/build/item-group/styles.js +11 -11
  61. package/build/item-group/styles.js.map +1 -1
  62. package/build/mobile/utils/alignments.native.js +1 -1
  63. package/build/mobile/utils/alignments.native.js.map +1 -1
  64. package/build/navigator/navigator-back-button/component.js +1 -1
  65. package/build/navigator/navigator-back-button/component.js.map +1 -1
  66. package/build/navigator/navigator-back-button/hook.js +3 -9
  67. package/build/navigator/navigator-back-button/hook.js.map +1 -1
  68. package/build/navigator/navigator-provider/component.js +17 -9
  69. package/build/navigator/navigator-provider/component.js.map +1 -1
  70. package/build/navigator/navigator-to-parent-button/component.js +13 -40
  71. package/build/navigator/navigator-to-parent-button/component.js.map +1 -1
  72. package/build/navigator/types.js.map +1 -1
  73. package/build/palette-edit/styles.js +11 -11
  74. package/build/palette-edit/styles.js.map +1 -1
  75. package/build/popover/index.js +6 -1
  76. package/build/popover/index.js.map +1 -1
  77. package/build/private-apis.js +6 -6
  78. package/build/private-apis.js.map +1 -1
  79. package/build/progress-bar/styles.js +5 -5
  80. package/build/progress-bar/styles.js.map +1 -1
  81. package/build/query-controls/index.js +5 -6
  82. package/build/query-controls/index.js.map +1 -1
  83. package/build/query-controls/types.js.map +1 -1
  84. package/build/radio-control/index.js +20 -19
  85. package/build/radio-control/index.js.map +1 -1
  86. package/build/radio-group/radio.js +3 -2
  87. package/build/radio-group/radio.js.map +1 -1
  88. package/build/range-control/index.js +32 -9
  89. package/build/range-control/index.js.map +1 -1
  90. package/build/range-control/styles/range-control-styles.js +29 -29
  91. package/build/range-control/styles/range-control-styles.js.map +1 -1
  92. package/build/search-control/index.js +5 -4
  93. package/build/search-control/index.js.map +1 -1
  94. package/build/select-control/index.js +1 -0
  95. package/build/select-control/index.js.map +1 -1
  96. package/build/tab-panel/index.js +3 -2
  97. package/build/tab-panel/index.js.map +1 -1
  98. package/build/tabs/index.js +3 -2
  99. package/build/tabs/index.js.map +1 -1
  100. package/build/tabs/tablist.js +6 -4
  101. package/build/tabs/tablist.js.map +1 -1
  102. package/build/tabs/tabpanel.js +6 -1
  103. package/build/tabs/tabpanel.js.map +1 -1
  104. package/build/text/styles.js +7 -7
  105. package/build/text/styles.js.map +1 -1
  106. package/build/text-control/index.js +1 -0
  107. package/build/text-control/index.js.map +1 -1
  108. package/build/textarea-control/index.js +1 -0
  109. package/build/textarea-control/index.js.map +1 -1
  110. package/build/textarea-control/styles/textarea-control-styles.js +8 -2
  111. package/build/textarea-control/styles/textarea-control-styles.js.map +1 -1
  112. package/build/toggle-control/index.js +9 -1
  113. package/build/toggle-control/index.js.map +1 -1
  114. package/build/toggle-group-control/toggle-group-control/as-radio-group.js +3 -2
  115. package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  116. package/build/toggle-group-control/toggle-group-control/component.js +1 -0
  117. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  118. package/build/toggle-group-control/toggle-group-control/styles.js +7 -7
  119. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  120. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
  121. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  122. package/build/tools-panel/styles.js +13 -13
  123. package/build/tools-panel/styles.js.map +1 -1
  124. package/build/tooltip/index.js +3 -2
  125. package/build/tooltip/index.js.map +1 -1
  126. package/build/tree-select/index.js +19 -6
  127. package/build/tree-select/index.js.map +1 -1
  128. package/build/unit-control/styles/unit-control-styles.js +7 -7
  129. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  130. package/build/utils/config-values.js +4 -3
  131. package/build/utils/config-values.js.map +1 -1
  132. package/build-module/alignment-matrix-control/cell.js +2 -2
  133. package/build-module/alignment-matrix-control/cell.js.map +1 -1
  134. package/build-module/alignment-matrix-control/index.js +4 -3
  135. package/build-module/alignment-matrix-control/index.js.map +1 -1
  136. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +9 -18
  137. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  138. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +4 -4
  139. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  140. package/build-module/base-control/index.js +54 -42
  141. package/build-module/base-control/index.js.map +1 -1
  142. package/build-module/base-control/types.js.map +1 -1
  143. package/build-module/border-control/styles.js +13 -13
  144. package/build-module/border-control/styles.js.map +1 -1
  145. package/build-module/checkbox-control/index.js +1 -0
  146. package/build-module/checkbox-control/index.js.map +1 -1
  147. package/build-module/circular-option-picker/circular-option-picker-option.js +4 -4
  148. package/build-module/circular-option-picker/circular-option-picker-option.js.map +1 -1
  149. package/build-module/circular-option-picker/circular-option-picker.js +1 -1
  150. package/build-module/circular-option-picker/circular-option-picker.js.map +1 -1
  151. package/build-module/circular-option-picker/types.js.map +1 -1
  152. package/build-module/color-palette/utils.js +17 -5
  153. package/build-module/color-palette/utils.js.map +1 -1
  154. package/build-module/color-picker/input-with-slider.js +1 -0
  155. package/build-module/color-picker/input-with-slider.js.map +1 -1
  156. package/build-module/combobox-control/index.js +1 -0
  157. package/build-module/combobox-control/index.js.map +1 -1
  158. package/build-module/composite/context.js +12 -0
  159. package/build-module/composite/context.js.map +1 -0
  160. package/build-module/composite/index.js +284 -6
  161. package/build-module/composite/index.js.map +1 -1
  162. package/build-module/composite/legacy/index.js +10 -6
  163. package/build-module/composite/legacy/index.js.map +1 -1
  164. package/build-module/composite/types.js +2 -0
  165. package/build-module/composite/types.js.map +1 -0
  166. package/build-module/custom-select-control/types.js.map +1 -1
  167. package/build-module/custom-select-control-v2/custom-select.js +2 -1
  168. package/build-module/custom-select-control-v2/custom-select.js.map +1 -1
  169. package/build-module/date-time/time/index.js +11 -3
  170. package/build-module/date-time/time/index.js.map +1 -1
  171. package/build-module/date-time/types.js.map +1 -1
  172. package/build-module/dimension-control/index.js +25 -8
  173. package/build-module/dimension-control/index.js.map +1 -1
  174. package/build-module/dimension-control/types.js.map +1 -1
  175. package/build-module/dropdown-menu-v2/index.js +2 -1
  176. package/build-module/dropdown-menu-v2/index.js.map +1 -1
  177. package/build-module/dropdown-menu-v2/styles.js +23 -21
  178. package/build-module/dropdown-menu-v2/styles.js.map +1 -1
  179. package/build-module/focal-point-picker/controls.js +1 -3
  180. package/build-module/focal-point-picker/controls.js.map +1 -1
  181. package/build-module/focal-point-picker/index.js +1 -2
  182. package/build-module/focal-point-picker/index.js.map +1 -1
  183. package/build-module/focal-point-picker/styles/focal-point-picker-style.js +11 -11
  184. package/build-module/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  185. package/build-module/focal-point-picker/types.js.map +1 -1
  186. package/build-module/form-file-upload/types.js.map +1 -1
  187. package/build-module/index.js +1 -1
  188. package/build-module/index.js.map +1 -1
  189. package/build-module/item-group/styles.js +11 -11
  190. package/build-module/item-group/styles.js.map +1 -1
  191. package/build-module/mobile/utils/alignments.native.js +1 -1
  192. package/build-module/mobile/utils/alignments.native.js.map +1 -1
  193. package/build-module/navigator/navigator-back-button/component.js +1 -1
  194. package/build-module/navigator/navigator-back-button/component.js.map +1 -1
  195. package/build-module/navigator/navigator-back-button/hook.js +3 -9
  196. package/build-module/navigator/navigator-back-button/hook.js.map +1 -1
  197. package/build-module/navigator/navigator-provider/component.js +17 -9
  198. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  199. package/build-module/navigator/navigator-to-parent-button/component.js +12 -41
  200. package/build-module/navigator/navigator-to-parent-button/component.js.map +1 -1
  201. package/build-module/navigator/types.js.map +1 -1
  202. package/build-module/palette-edit/styles.js +11 -11
  203. package/build-module/palette-edit/styles.js.map +1 -1
  204. package/build-module/popover/index.js +6 -1
  205. package/build-module/popover/index.js.map +1 -1
  206. package/build-module/private-apis.js +6 -6
  207. package/build-module/private-apis.js.map +1 -1
  208. package/build-module/progress-bar/styles.js +5 -5
  209. package/build-module/progress-bar/styles.js.map +1 -1
  210. package/build-module/query-controls/index.js +5 -6
  211. package/build-module/query-controls/index.js.map +1 -1
  212. package/build-module/query-controls/types.js.map +1 -1
  213. package/build-module/radio-control/index.js +20 -19
  214. package/build-module/radio-control/index.js.map +1 -1
  215. package/build-module/radio-group/radio.js +2 -1
  216. package/build-module/radio-group/radio.js.map +1 -1
  217. package/build-module/range-control/index.js +32 -9
  218. package/build-module/range-control/index.js.map +1 -1
  219. package/build-module/range-control/styles/range-control-styles.js +29 -29
  220. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  221. package/build-module/search-control/index.js +5 -4
  222. package/build-module/search-control/index.js.map +1 -1
  223. package/build-module/select-control/index.js +1 -0
  224. package/build-module/select-control/index.js.map +1 -1
  225. package/build-module/tab-panel/index.js +2 -1
  226. package/build-module/tab-panel/index.js.map +1 -1
  227. package/build-module/tabs/index.js +2 -1
  228. package/build-module/tabs/index.js.map +1 -1
  229. package/build-module/tabs/tablist.js +5 -3
  230. package/build-module/tabs/tablist.js.map +1 -1
  231. package/build-module/tabs/tabpanel.js +6 -2
  232. package/build-module/tabs/tabpanel.js.map +1 -1
  233. package/build-module/text/styles.js +7 -7
  234. package/build-module/text/styles.js.map +1 -1
  235. package/build-module/text-control/index.js +1 -0
  236. package/build-module/text-control/index.js.map +1 -1
  237. package/build-module/textarea-control/index.js +1 -0
  238. package/build-module/textarea-control/index.js.map +1 -1
  239. package/build-module/textarea-control/styles/textarea-control-styles.js +9 -2
  240. package/build-module/textarea-control/styles/textarea-control-styles.js.map +1 -1
  241. package/build-module/toggle-control/index.js +9 -1
  242. package/build-module/toggle-control/index.js.map +1 -1
  243. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +2 -1
  244. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  245. package/build-module/toggle-group-control/toggle-group-control/component.js +1 -0
  246. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  247. package/build-module/toggle-group-control/toggle-group-control/styles.js +7 -7
  248. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  249. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +9 -9
  250. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  251. package/build-module/tools-panel/styles.js +13 -13
  252. package/build-module/tools-panel/styles.js.map +1 -1
  253. package/build-module/tooltip/index.js +2 -1
  254. package/build-module/tooltip/index.js.map +1 -1
  255. package/build-module/tree-select/index.js +19 -6
  256. package/build-module/tree-select/index.js.map +1 -1
  257. package/build-module/unit-control/styles/unit-control-styles.js +7 -7
  258. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  259. package/build-module/utils/config-values.js +4 -3
  260. package/build-module/utils/config-values.js.map +1 -1
  261. package/build-style/style-rtl.css +19 -9
  262. package/build-style/style.css +19 -9
  263. package/build-types/alignment-matrix-control/index.d.ts.map +1 -1
  264. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts.map +1 -1
  265. package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts.map +1 -1
  266. package/build-types/base-control/hooks.d.ts +1 -0
  267. package/build-types/base-control/hooks.d.ts.map +1 -1
  268. package/build-types/base-control/index.d.ts +44 -0
  269. package/build-types/base-control/index.d.ts.map +1 -1
  270. package/build-types/base-control/types.d.ts +7 -0
  271. package/build-types/base-control/types.d.ts.map +1 -1
  272. package/build-types/checkbox-control/index.d.ts.map +1 -1
  273. package/build-types/checkbox-control/stories/index.story.d.ts.map +1 -1
  274. package/build-types/circular-option-picker/circular-option-picker-option.d.ts.map +1 -1
  275. package/build-types/circular-option-picker/types.d.ts +2 -3
  276. package/build-types/circular-option-picker/types.d.ts.map +1 -1
  277. package/build-types/color-palette/utils.d.ts.map +1 -1
  278. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  279. package/build-types/color-picker/styles.d.ts.map +1 -1
  280. package/build-types/combobox-control/index.d.ts.map +1 -1
  281. package/build-types/combobox-control/stories/index.story.d.ts.map +1 -1
  282. package/build-types/composite/context.d.ts +7 -0
  283. package/build-types/composite/context.d.ts.map +1 -0
  284. package/build-types/composite/index.d.ts +181 -1
  285. package/build-types/composite/index.d.ts.map +1 -1
  286. package/build-types/composite/legacy/index.d.ts +7 -2
  287. package/build-types/composite/legacy/index.d.ts.map +1 -1
  288. package/build-types/composite/legacy/stories/utils.d.ts +19 -0
  289. package/build-types/composite/legacy/stories/utils.d.ts.map +1 -1
  290. package/build-types/composite/stories/index.story.d.ts +13 -0
  291. package/build-types/composite/stories/index.story.d.ts.map +1 -0
  292. package/build-types/composite/stories/utils.d.ts +29 -0
  293. package/build-types/composite/stories/utils.d.ts.map +1 -0
  294. package/build-types/composite/types.d.ts +288 -0
  295. package/build-types/composite/types.d.ts.map +1 -0
  296. package/build-types/custom-select-control/types.d.ts +3 -3
  297. package/build-types/custom-select-control/types.d.ts.map +1 -1
  298. package/build-types/custom-select-control-v2/custom-select.d.ts.map +1 -1
  299. package/build-types/date-time/date-time/index.d.ts +1 -1
  300. package/build-types/date-time/time/index.d.ts +1 -1
  301. package/build-types/date-time/time/index.d.ts.map +1 -1
  302. package/build-types/date-time/types.d.ts +7 -1
  303. package/build-types/date-time/types.d.ts.map +1 -1
  304. package/build-types/dimension-control/index.d.ts +1 -0
  305. package/build-types/dimension-control/index.d.ts.map +1 -1
  306. package/build-types/dimension-control/stories/index.story.d.ts +8 -1
  307. package/build-types/dimension-control/stories/index.story.d.ts.map +1 -1
  308. package/build-types/dimension-control/types.d.ts +2 -7
  309. package/build-types/dimension-control/types.d.ts.map +1 -1
  310. package/build-types/dropdown-menu-v2/index.d.ts.map +1 -1
  311. package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
  312. package/build-types/focal-point-picker/controls.d.ts +1 -1
  313. package/build-types/focal-point-picker/controls.d.ts.map +1 -1
  314. package/build-types/focal-point-picker/index.d.ts +1 -1
  315. package/build-types/focal-point-picker/index.d.ts.map +1 -1
  316. package/build-types/focal-point-picker/stories/index.story.d.ts.map +1 -1
  317. package/build-types/focal-point-picker/types.d.ts +2 -2
  318. package/build-types/focal-point-picker/types.d.ts.map +1 -1
  319. package/build-types/form-file-upload/types.d.ts +6 -0
  320. package/build-types/form-file-upload/types.d.ts.map +1 -1
  321. package/build-types/index.d.ts +1 -1
  322. package/build-types/index.d.ts.map +1 -1
  323. package/build-types/navigator/navigator-back-button/component.d.ts +1 -1
  324. package/build-types/navigator/navigator-back-button/hook.d.ts +2 -2
  325. package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
  326. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  327. package/build-types/navigator/navigator-to-parent-button/component.d.ts +6 -0
  328. package/build-types/navigator/navigator-to-parent-button/component.d.ts.map +1 -1
  329. package/build-types/navigator/types.d.ts +45 -9
  330. package/build-types/navigator/types.d.ts.map +1 -1
  331. package/build-types/popover/index.d.ts +1 -1
  332. package/build-types/popover/index.d.ts.map +1 -1
  333. package/build-types/popover/stories/e2e/index.story.d.ts +1 -1
  334. package/build-types/private-apis.d.ts.map +1 -1
  335. package/build-types/query-controls/index.d.ts +1 -1
  336. package/build-types/query-controls/index.d.ts.map +1 -1
  337. package/build-types/query-controls/types.d.ts +2 -1
  338. package/build-types/query-controls/types.d.ts.map +1 -1
  339. package/build-types/radio-control/index.d.ts.map +1 -1
  340. package/build-types/radio-group/radio.d.ts.map +1 -1
  341. package/build-types/range-control/index.d.ts.map +1 -1
  342. package/build-types/range-control/stories/index.story.d.ts.map +1 -1
  343. package/build-types/search-control/index.d.ts.map +1 -1
  344. package/build-types/search-control/stories/index.story.d.ts.map +1 -1
  345. package/build-types/select-control/index.d.ts.map +1 -1
  346. package/build-types/select-control/stories/index.story.d.ts +4 -2
  347. package/build-types/select-control/stories/index.story.d.ts.map +1 -1
  348. package/build-types/tab-panel/index.d.ts.map +1 -1
  349. package/build-types/tabs/index.d.ts.map +1 -1
  350. package/build-types/tabs/tablist.d.ts.map +1 -1
  351. package/build-types/tabs/tabpanel.d.ts +0 -3
  352. package/build-types/tabs/tabpanel.d.ts.map +1 -1
  353. package/build-types/text-control/index.d.ts.map +1 -1
  354. package/build-types/text-control/stories/index.story.d.ts.map +1 -1
  355. package/build-types/textarea-control/index.d.ts.map +1 -1
  356. package/build-types/textarea-control/styles/textarea-control-styles.d.ts.map +1 -1
  357. package/build-types/toggle-control/index.d.ts.map +1 -1
  358. package/build-types/toggle-control/stories/index.story.d.ts.map +1 -1
  359. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
  360. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  361. package/build-types/tooltip/index.d.ts.map +1 -1
  362. package/build-types/tree-select/index.d.ts.map +1 -1
  363. package/build-types/utils/config-values.d.ts +4 -3
  364. package/package.json +20 -20
  365. package/src/alignment-matrix-control/cell.tsx +3 -3
  366. package/src/alignment-matrix-control/index.tsx +5 -4
  367. package/src/alignment-matrix-control/styles/alignment-matrix-control-styles.ts +2 -2
  368. package/src/angle-picker-control/styles/angle-picker-control-styles.tsx +2 -2
  369. package/src/base-control/README.md +5 -2
  370. package/src/base-control/index.tsx +61 -41
  371. package/src/base-control/types.ts +7 -0
  372. package/src/border-box-control/border-box-control/README.md +7 -0
  373. package/src/border-control/border-control/README.md +7 -0
  374. package/src/border-control/styles.ts +1 -1
  375. package/src/button/README.md +7 -0
  376. package/src/button/style.scss +2 -2
  377. package/src/button-group/style.scss +2 -2
  378. package/src/checkbox-control/index.tsx +1 -0
  379. package/src/checkbox-control/stories/index.story.tsx +1 -0
  380. package/src/checkbox-control/test/index.tsx +8 -1
  381. package/src/circular-option-picker/circular-option-picker-option.tsx +8 -6
  382. package/src/circular-option-picker/circular-option-picker.tsx +1 -1
  383. package/src/circular-option-picker/style.scss +3 -3
  384. package/src/circular-option-picker/types.ts +2 -3
  385. package/src/color-indicator/style.scss +1 -1
  386. package/src/color-palette/style.scss +2 -2
  387. package/src/color-palette/utils.ts +23 -10
  388. package/src/color-picker/input-with-slider.tsx +1 -0
  389. package/src/combobox-control/README.md +8 -0
  390. package/src/combobox-control/index.tsx +1 -0
  391. package/src/combobox-control/stories/index.story.tsx +3 -4
  392. package/src/combobox-control/test/index.tsx +5 -1
  393. package/src/composite/README.md +325 -0
  394. package/src/composite/context.ts +14 -0
  395. package/src/composite/index.tsx +341 -0
  396. package/src/composite/legacy/index.tsx +15 -14
  397. package/src/composite/legacy/stories/utils.tsx +19 -0
  398. package/src/composite/stories/index.story.tsx +466 -0
  399. package/src/composite/{current/stories → stories}/utils.tsx +22 -7
  400. package/src/composite/types.ts +298 -0
  401. package/src/custom-gradient-picker/style.scss +2 -2
  402. package/src/custom-select-control/README.md +7 -0
  403. package/src/custom-select-control/test/index.tsx +125 -0
  404. package/src/custom-select-control/types.ts +3 -3
  405. package/src/custom-select-control-v2/custom-select.tsx +2 -1
  406. package/src/date-time/time/index.tsx +26 -12
  407. package/src/date-time/types.ts +11 -1
  408. package/src/dimension-control/README.md +17 -0
  409. package/src/dimension-control/index.tsx +26 -9
  410. package/src/dimension-control/stories/index.story.tsx +1 -0
  411. package/src/dimension-control/test/__snapshots__/index.test.js.snap +0 -16
  412. package/src/dimension-control/test/index.test.js +5 -1
  413. package/src/dimension-control/types.ts +5 -7
  414. package/src/drop-zone/style.scss +1 -1
  415. package/src/dropdown-menu-v2/index.tsx +5 -3
  416. package/src/dropdown-menu-v2/styles.ts +17 -15
  417. package/src/focal-point-picker/README.md +9 -1
  418. package/src/focal-point-picker/controls.tsx +1 -3
  419. package/src/focal-point-picker/index.tsx +1 -2
  420. package/src/focal-point-picker/stories/index.story.tsx +3 -0
  421. package/src/focal-point-picker/styles/focal-point-picker-style.ts +1 -1
  422. package/src/focal-point-picker/test/index.tsx +5 -1
  423. package/src/focal-point-picker/types.ts +2 -2
  424. package/src/font-size-picker/README.md +7 -0
  425. package/src/form-file-upload/README.md +8 -0
  426. package/src/form-file-upload/types.ts +6 -0
  427. package/src/form-token-field/README.md +1 -0
  428. package/src/guide/style.scss +0 -1
  429. package/src/index.ts +1 -1
  430. package/src/input-control/README.md +8 -0
  431. package/src/item-group/styles.ts +1 -1
  432. package/src/mobile/utils/alignments.native.js +1 -0
  433. package/src/modal/style.scss +3 -3
  434. package/src/navigator/navigator-back-button/component.tsx +1 -1
  435. package/src/navigator/navigator-back-button/hook.ts +6 -10
  436. package/src/navigator/navigator-provider/README.md +38 -36
  437. package/src/navigator/navigator-provider/component.tsx +13 -7
  438. package/src/navigator/navigator-screen/README.md +13 -1
  439. package/src/navigator/navigator-to-parent-button/README.md +2 -0
  440. package/src/navigator/navigator-to-parent-button/component.tsx +14 -43
  441. package/src/navigator/test/index.tsx +136 -6
  442. package/src/navigator/types.ts +45 -10
  443. package/src/number-control/README.md +8 -0
  444. package/src/palette-edit/styles.ts +5 -5
  445. package/src/placeholder/style.scss +4 -1
  446. package/src/popover/index.tsx +9 -3
  447. package/src/popover/style.scss +2 -2
  448. package/src/popover/test/index.tsx +34 -0
  449. package/src/private-apis.ts +6 -12
  450. package/src/progress-bar/styles.ts +2 -2
  451. package/src/query-controls/README.md +7 -0
  452. package/src/query-controls/index.tsx +5 -6
  453. package/src/query-controls/types.ts +2 -1
  454. package/src/radio-control/index.tsx +28 -20
  455. package/src/radio-control/style.scss +13 -2
  456. package/src/radio-control/test/index.tsx +43 -40
  457. package/src/radio-group/radio.tsx +2 -1
  458. package/src/range-control/README.md +7 -0
  459. package/src/range-control/index.tsx +39 -9
  460. package/src/range-control/stories/index.story.tsx +7 -0
  461. package/src/range-control/styles/range-control-styles.ts +2 -2
  462. package/src/range-control/test/index.tsx +54 -14
  463. package/src/search-control/index.tsx +7 -4
  464. package/src/search-control/stories/index.story.tsx +1 -0
  465. package/src/search-control/test/index.tsx +1 -0
  466. package/src/select-control/README.md +8 -0
  467. package/src/select-control/index.tsx +1 -0
  468. package/src/select-control/stories/index.story.tsx +8 -5
  469. package/src/select-control/test/select-control.tsx +12 -6
  470. package/src/snackbar/style.scss +2 -2
  471. package/src/tab-panel/index.tsx +4 -1
  472. package/src/tab-panel/style.scss +1 -1
  473. package/src/tabs/index.tsx +2 -1
  474. package/src/tabs/tablist.tsx +6 -4
  475. package/src/tabs/tabpanel.tsx +6 -2
  476. package/src/text/styles.ts +1 -1
  477. package/src/text-control/README.md +8 -0
  478. package/src/text-control/index.tsx +1 -0
  479. package/src/text-control/stories/index.story.tsx +3 -1
  480. package/src/text-control/test/text-control.tsx +5 -1
  481. package/src/textarea-control/index.tsx +1 -0
  482. package/src/textarea-control/stories/index.story.tsx +2 -0
  483. package/src/textarea-control/styles/textarea-control-styles.ts +75 -2
  484. package/src/toggle-control/index.tsx +9 -0
  485. package/src/toggle-control/stories/index.story.tsx +1 -0
  486. package/src/toggle-control/test/index.tsx +7 -1
  487. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +8 -24
  488. package/src/toggle-group-control/test/index.tsx +5 -1
  489. package/src/toggle-group-control/toggle-group-control/README.md +7 -0
  490. package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +2 -1
  491. package/src/toggle-group-control/toggle-group-control/component.tsx +1 -0
  492. package/src/toggle-group-control/toggle-group-control/styles.ts +1 -1
  493. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +2 -2
  494. package/src/toolbar/toolbar/style.scss +2 -2
  495. package/src/tools-panel/styles.ts +1 -1
  496. package/src/tooltip/index.tsx +2 -1
  497. package/src/tooltip/style.scss +1 -1
  498. package/src/tree-select/index.tsx +16 -5
  499. package/src/tree-select/stories/index.story.tsx +1 -0
  500. package/src/unit-control/README.md +7 -0
  501. package/src/unit-control/styles/unit-control-styles.ts +1 -1
  502. package/src/utils/config-values.js +4 -3
  503. package/tsconfig.tsbuildinfo +1 -1
  504. package/build/composite/current/index.js +0 -43
  505. package/build/composite/current/index.js.map +0 -1
  506. package/build/composite/v2.js +0 -17
  507. package/build/composite/v2.js.map +0 -1
  508. package/build/utils/input/base.js +0 -20
  509. package/build/utils/input/base.js.map +0 -1
  510. package/build/utils/input/index.js +0 -17
  511. package/build/utils/input/index.js.map +0 -1
  512. package/build/utils/input/input-control.js +0 -21
  513. package/build/utils/input/input-control.js.map +0 -1
  514. package/build-module/composite/current/index.js +0 -12
  515. package/build-module/composite/current/index.js.map +0 -1
  516. package/build-module/composite/v2.js +0 -5
  517. package/build-module/composite/v2.js.map +0 -1
  518. package/build-module/utils/input/base.js +0 -13
  519. package/build-module/utils/input/base.js.map +0 -1
  520. package/build-module/utils/input/index.js +0 -2
  521. package/build-module/utils/input/index.js.map +0 -1
  522. package/build-module/utils/input/input-control.js +0 -14
  523. package/build-module/utils/input/input-control.js.map +0 -1
  524. package/build-types/composite/current/index.d.ts +0 -12
  525. package/build-types/composite/current/index.d.ts.map +0 -1
  526. package/build-types/composite/current/stories/index.story.d.ts +0 -13
  527. package/build-types/composite/current/stories/index.story.d.ts.map +0 -1
  528. package/build-types/composite/current/stories/utils.d.ts +0 -14
  529. package/build-types/composite/current/stories/utils.d.ts.map +0 -1
  530. package/build-types/composite/v2.d.ts +0 -2
  531. package/build-types/composite/v2.d.ts.map +0 -1
  532. package/build-types/utils/input/base.d.ts +0 -3
  533. package/build-types/utils/input/base.d.ts.map +0 -1
  534. package/build-types/utils/input/index.d.ts +0 -2
  535. package/build-types/utils/input/index.d.ts.map +0 -1
  536. package/build-types/utils/input/input-control.d.ts +0 -2
  537. package/build-types/utils/input/input-control.d.ts.map +0 -1
  538. package/src/composite/current/index.ts +0 -20
  539. package/src/composite/current/stories/index.story.tsx +0 -86
  540. package/src/composite/index.ts +0 -7
  541. package/src/composite/v2.ts +0 -4
  542. package/src/utils/input/base.js +0 -30
  543. package/src/utils/input/index.js +0 -1
  544. package/src/utils/input/input-control.js +0 -63
@@ -27,12 +27,12 @@ import type {
27
27
  Screen,
28
28
  NavigateToParentOptions,
29
29
  } from '../types';
30
+ import deprecated from '@wordpress/deprecated';
30
31
 
31
32
  type MatchedPath = ReturnType< typeof patternMatch >;
32
33
 
33
34
  type RouterAction =
34
35
  | { type: 'add' | 'remove'; screen: Screen }
35
- | { type: 'goback' }
36
36
  | { type: 'goto'; path: string; options?: NavigateOptions }
37
37
  | { type: 'gotoparent'; options?: NavigateToParentOptions };
38
38
 
@@ -160,9 +160,6 @@ function routerReducer(
160
160
  case 'remove':
161
161
  screens = removeScreen( state, action.screen );
162
162
  break;
163
- case 'goback':
164
- locationHistory = goBack( state );
165
- break;
166
163
  case 'goto':
167
164
  locationHistory = goTo( state, action.path, action.options );
168
165
  break;
@@ -223,11 +220,20 @@ function UnconnectedNavigatorProvider(
223
220
  // The methods are constant forever, create stable references to them.
224
221
  const methods = useMemo(
225
222
  () => ( {
226
- goBack: () => dispatch( { type: 'goback' } ),
223
+ // Note: calling goBack calls `goToParent` internally, as it was established
224
+ // that `goBack` should behave like `goToParent`, and `goToParent` should
225
+ // be marked as deprecated.
226
+ goBack: ( options: NavigateToParentOptions | undefined ) =>
227
+ dispatch( { type: 'gotoparent', options } ),
227
228
  goTo: ( path: string, options?: NavigateOptions ) =>
228
229
  dispatch( { type: 'goto', path, options } ),
229
- goToParent: ( options: NavigateToParentOptions | undefined ) =>
230
- dispatch( { type: 'gotoparent', options } ),
230
+ goToParent: ( options: NavigateToParentOptions | undefined ) => {
231
+ deprecated( `wp.components.useNavigator().goToParent`, {
232
+ since: '6.7',
233
+ alternative: 'wp.components.useNavigator().goBack',
234
+ } );
235
+ dispatch( { type: 'gotoparent', options } );
236
+ },
231
237
  addScreen: ( screen: Screen ) =>
232
238
  dispatch( { type: 'add', screen } ),
233
239
  removeScreen: ( screen: Screen ) =>
@@ -16,6 +16,18 @@ The component accepts the following props:
16
16
 
17
17
  ### `path`: `string`
18
18
 
19
- The screen's path, matched against the current path stored in the navigator.
19
+ The screen&quot;s path, matched against the current path stored in the navigator.
20
+
21
+ `Navigator` assumes that screens are organized hierarchically according to their `path`, which should follow a URL-like scheme where each path segment starts with and is separated by the `/` character.
22
+
23
+ `Navigator` will treat "back" navigations as going to the parent screen — it is therefore responsibility of the consumer of the component to create the correct screen hierarchy.
24
+
25
+ For example:
26
+
27
+ - `/` is the root of all paths. There should always be a screen with `path="/"`.
28
+ - `/parent/child` is a child of `/parent`.
29
+ - `/parent/child/grand-child` is a child of `/parent/child`.
30
+ - `/parent/:param` is a child of `/parent` as well.
31
+ - if the current screen has a `path` with value `/parent/child/grand-child`, when going "back" `Navigator` will try to recursively navigate the path hierarchy until a matching screen (or the root `/`) is found.
20
32
 
21
33
  - Required: Yes
@@ -4,6 +4,8 @@
4
4
  This feature is still experimental. “Experimental” means this is an early implementation subject to drastic and breaking changes.
5
5
  </div>
6
6
 
7
+ This component is deprecated. Please use the [`NavigatorBackButton`](/packages/components/src/navigator/navigator-back-button/README.md) component instead.
8
+
7
9
  The `NavigatorToParentButton` component can be used to navigate to a screen and should be used in combination with the [`NavigatorProvider`](/packages/components/src/navigator/navigator-provider/README.md), the [`NavigatorScreen`](/packages/components/src/navigator/navigator-screen/README.md) and the [`NavigatorButton`](/packages/components/src/navigator/navigator-button/README.md) components (or the `useNavigator` hook).
8
10
 
9
11
  ## Usage
@@ -1,62 +1,33 @@
1
1
  /**
2
- * External dependencies
2
+ * WordPress dependencies
3
3
  */
4
- import type { ForwardedRef } from 'react';
4
+ import deprecated from '@wordpress/deprecated';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
+ import { NavigatorBackButton } from '../navigator-back-button';
9
10
  import type { WordPressComponentProps } from '../../context';
10
11
  import { contextConnect } from '../../context';
11
- import { View } from '../../view';
12
- import { useNavigatorBackButton } from '../navigator-back-button/hook';
13
- import type { NavigatorToParentButtonProps } from '../types';
12
+ import type { NavigatorBackButtonProps } from '../types';
14
13
 
15
14
  function UnconnectedNavigatorToParentButton(
16
- props: WordPressComponentProps< NavigatorToParentButtonProps, 'button' >,
17
- forwardedRef: ForwardedRef< any >
15
+ props: WordPressComponentProps< NavigatorBackButtonProps, 'button' >,
16
+ forwardedRef: React.ForwardedRef< any >
18
17
  ) {
19
- const navigatorToParentButtonProps = useNavigatorBackButton( {
20
- ...props,
21
- goToParent: true,
18
+ deprecated( 'wp.components.NavigatorToParentButton', {
19
+ since: '6.7',
20
+ alternative: 'wp.components.NavigatorBackButton',
22
21
  } );
23
22
 
24
- return <View ref={ forwardedRef } { ...navigatorToParentButtonProps } />;
23
+ return <NavigatorBackButton ref={ forwardedRef } { ...props } />;
25
24
  }
26
25
 
27
- /*
28
- * The `NavigatorToParentButton` component can be used to navigate to a screen and
29
- * should be used in combination with the `NavigatorProvider`, the
30
- * `NavigatorScreen` and the `NavigatorButton` components (or the `useNavigator`
31
- * hook).
32
- *
33
- * @example
34
- * ```jsx
35
- * import {
36
- * __experimentalNavigatorProvider as NavigatorProvider,
37
- * __experimentalNavigatorScreen as NavigatorScreen,
38
- * __experimentalNavigatorButton as NavigatorButton,
39
- * __experimentalNavigatorToParentButton as NavigatorToParentButton,
40
- * } from '@wordpress/components';
41
- *
42
- * const MyNavigation = () => (
43
- * <NavigatorProvider initialPath="/">
44
- * <NavigatorScreen path="/">
45
- * <p>This is the home screen.</p>
46
- * <NavigatorButton path="/child">
47
- * Navigate to child screen.
48
- * </NavigatorButton>
49
- * </NavigatorScreen>
26
+ /**
27
+ * _Note: this component is deprecated. Please use the `NavigatorBackButton`
28
+ * component instead._
50
29
  *
51
- * <NavigatorScreen path="/child">
52
- * <p>This is the child screen.</p>
53
- * <NavigatorToParentButton>
54
- * Go to parent
55
- * </NavigatorToParentButton>
56
- * </NavigatorScreen>
57
- * </NavigatorProvider>
58
- * );
59
- * ```
30
+ * @deprecated
60
31
  */
61
32
  export const NavigatorToParentButton = contextConnect(
62
33
  UnconnectedNavigatorToParentButton,
@@ -25,8 +25,8 @@ import {
25
25
  import type { NavigateOptions } from '../types';
26
26
 
27
27
  const INVALID_HTML_ATTRIBUTE = {
28
- raw: ' "\'><=invalid_path',
29
- escaped: " &quot;'&gt;<=invalid_path",
28
+ raw: '/ "\'><=invalid_path',
29
+ escaped: "/ &quot;'&gt;<=invalid_path",
30
30
  };
31
31
 
32
32
  const PATHS = {
@@ -165,6 +165,27 @@ function CustomNavigatorToParentButton( {
165
165
  );
166
166
  }
167
167
 
168
+ function CustomNavigatorToParentButtonAlternative( {
169
+ onClick,
170
+ children,
171
+ }: {
172
+ children: React.ReactNode;
173
+ onClick?: CustomTestOnClickHandler;
174
+ } ) {
175
+ const { goToParent } = useNavigator();
176
+ return (
177
+ <button
178
+ onClick={ () => {
179
+ goToParent();
180
+ // Used to spy on the values passed to `navigator.goBack`.
181
+ onClick?.( { type: 'goToParent' } );
182
+ } }
183
+ >
184
+ { children }
185
+ </button>
186
+ );
187
+ }
188
+
168
189
  const ProductScreen = ( {
169
190
  onBackButtonClick,
170
191
  }: {
@@ -344,20 +365,20 @@ const MyHierarchicalNavigation = ( {
344
365
  >
345
366
  { BUTTON_TEXT.toNestedScreen }
346
367
  </CustomNavigatorButton>
347
- <CustomNavigatorToParentButton
368
+ <CustomNavigatorBackButton
348
369
  onClick={ onNavigatorButtonClick }
349
370
  >
350
371
  { BUTTON_TEXT.back }
351
- </CustomNavigatorToParentButton>
372
+ </CustomNavigatorBackButton>
352
373
  </NavigatorScreen>
353
374
 
354
375
  <NavigatorScreen path={ PATHS.NESTED }>
355
376
  <p>{ SCREEN_TEXT.nested }</p>
356
- <CustomNavigatorToParentButton
377
+ <CustomNavigatorBackButton
357
378
  onClick={ onNavigatorButtonClick }
358
379
  >
359
380
  { BUTTON_TEXT.back }
360
- </CustomNavigatorToParentButton>
381
+ </CustomNavigatorBackButton>
361
382
  <CustomNavigatorGoToBackButton
362
383
  path={ PATHS.CHILD }
363
384
  onClick={ onNavigatorButtonClick }
@@ -376,6 +397,66 @@ const MyHierarchicalNavigation = ( {
376
397
  );
377
398
  };
378
399
 
400
+ const MyDeprecatedNavigation = ( {
401
+ initialPath = PATHS.HOME,
402
+ onNavigatorButtonClick,
403
+ }: {
404
+ initialPath?: string;
405
+ onNavigatorButtonClick?: CustomTestOnClickHandler;
406
+ } ) => {
407
+ return (
408
+ <>
409
+ <NavigatorProvider initialPath={ initialPath }>
410
+ <NavigatorScreen path={ PATHS.HOME }>
411
+ <p>{ SCREEN_TEXT.home }</p>
412
+ { /*
413
+ * A button useful to test focus restoration. This button is the first
414
+ * tabbable item in the screen, but should not receive focus when
415
+ * navigating to screen as a result of a backwards navigation.
416
+ */ }
417
+ <button>First tabbable home screen button</button>
418
+ <CustomNavigatorButton
419
+ path={ PATHS.CHILD }
420
+ onClick={ onNavigatorButtonClick }
421
+ >
422
+ { BUTTON_TEXT.toChildScreen }
423
+ </CustomNavigatorButton>
424
+ </NavigatorScreen>
425
+
426
+ <NavigatorScreen path={ PATHS.CHILD }>
427
+ <p>{ SCREEN_TEXT.child }</p>
428
+ { /*
429
+ * A button useful to test focus restoration. This button is the first
430
+ * tabbable item in the screen, but should not receive focus when
431
+ * navigating to screen as a result of a backwards navigation.
432
+ */ }
433
+ <button>First tabbable child screen button</button>
434
+ <CustomNavigatorButton
435
+ path={ PATHS.NESTED }
436
+ onClick={ onNavigatorButtonClick }
437
+ >
438
+ { BUTTON_TEXT.toNestedScreen }
439
+ </CustomNavigatorButton>
440
+ <CustomNavigatorToParentButton
441
+ onClick={ onNavigatorButtonClick }
442
+ >
443
+ { BUTTON_TEXT.back }
444
+ </CustomNavigatorToParentButton>
445
+ </NavigatorScreen>
446
+
447
+ <NavigatorScreen path={ PATHS.NESTED }>
448
+ <p>{ SCREEN_TEXT.nested }</p>
449
+ <CustomNavigatorToParentButtonAlternative
450
+ onClick={ onNavigatorButtonClick }
451
+ >
452
+ { BUTTON_TEXT.back }
453
+ </CustomNavigatorToParentButtonAlternative>
454
+ </NavigatorScreen>
455
+ </NavigatorProvider>
456
+ </>
457
+ );
458
+ };
459
+
379
460
  const getScreen = ( screenKey: keyof typeof SCREEN_TEXT ) =>
380
461
  screen.getByText( SCREEN_TEXT[ screenKey ] );
381
462
  const queryScreen = ( screenKey: keyof typeof SCREEN_TEXT ) =>
@@ -769,4 +850,53 @@ describe( 'Navigator', () => {
769
850
  ).toHaveFocus();
770
851
  } );
771
852
  } );
853
+
854
+ describe( 'deprecated APIs', () => {
855
+ it( 'should log a deprecation notice when using the NavigatorToParentButton component', async () => {
856
+ const user = userEvent.setup();
857
+
858
+ render( <MyDeprecatedNavigation initialPath={ PATHS.CHILD } /> );
859
+
860
+ expect( getScreen( 'child' ) ).toBeInTheDocument();
861
+
862
+ // Navigate back to home screen.
863
+ // The first tabbable element receives focus, since focus restoration
864
+ // it not possible (there was no forward navigation).
865
+ await user.click( getNavigationButton( 'back' ) );
866
+ expect( getScreen( 'home' ) ).toBeInTheDocument();
867
+ expect(
868
+ screen.getByRole( 'button', {
869
+ name: 'First tabbable home screen button',
870
+ } )
871
+ ).toHaveFocus();
872
+
873
+ // Rendering `NavigatorToParentButton` logs a deprecation notice
874
+ expect( console ).toHaveWarnedWith(
875
+ 'wp.components.NavigatorToParentButton is deprecated since version 6.7. Please use wp.components.NavigatorBackButton instead.'
876
+ );
877
+ } );
878
+
879
+ it( 'should log a deprecation notice when using the useNavigator().goToParent() function', async () => {
880
+ const user = userEvent.setup();
881
+
882
+ render( <MyDeprecatedNavigation initialPath={ PATHS.NESTED } /> );
883
+
884
+ expect( getScreen( 'nested' ) ).toBeInTheDocument();
885
+
886
+ // Navigate back to child screen using the back button.
887
+ // The first tabbable element receives focus, since focus restoration
888
+ // it not possible (there was no forward navigation).
889
+ await user.click( getNavigationButton( 'back' ) );
890
+ expect( getScreen( 'child' ) ).toBeInTheDocument();
891
+ expect(
892
+ screen.getByRole( 'button', {
893
+ name: 'First tabbable child screen button',
894
+ } )
895
+ ).toHaveFocus();
896
+
897
+ expect( console ).toHaveWarnedWith(
898
+ 'wp.components.useNavigator().goToParent is deprecated since version 6.7. Please use wp.components.useNavigator().goBack instead.'
899
+ );
900
+ } );
901
+ } );
772
902
  } );
@@ -11,26 +11,70 @@ import type { ButtonAsButtonProps } from '../button/types';
11
11
  export type MatchParams = Record< string, string | string[] >;
12
12
 
13
13
  export type NavigateOptions = {
14
+ /**
15
+ * Specify the CSS selector used to restore focus on an given element when
16
+ * navigating back. When not provided, the component will attempt to restore
17
+ * focus on the element that originated the forward navigation.
18
+ */
14
19
  focusTargetSelector?: string;
20
+ /**
21
+ * Whether the navigation is a backwards navigation. This enables focus
22
+ * restoration (when possible), and causes the animation to be backwards.
23
+ */
15
24
  isBack?: boolean;
25
+ /**
26
+ * Opt out of focus management. Useful when the consumer of the component
27
+ * wants to manage focus themselves.
28
+ */
16
29
  skipFocus?: boolean;
30
+ /**
31
+ * Whether the navigation should replace the current location in the stack.
32
+ */
17
33
  replace?: boolean;
18
34
  };
19
35
 
20
36
  export type NavigateToParentOptions = Omit< NavigateOptions, 'isBack' >;
21
37
 
22
38
  export type NavigatorLocation = NavigateOptions & {
39
+ /**
40
+ * Whether the current location is the initial one (ie. first in the stack).
41
+ */
23
42
  isInitial?: boolean;
43
+ /**
44
+ * The path associated to the location.
45
+ */
24
46
  path?: string;
47
+ /**
48
+ * Whether focus was already restored for this location (in case of
49
+ * backwards navigation).
50
+ */
25
51
  hasRestoredFocus?: boolean;
26
52
  };
27
53
 
28
54
  // Returned by the `useNavigator` hook.
29
55
  export type Navigator = {
56
+ /**
57
+ * The current location.
58
+ */
30
59
  location: NavigatorLocation;
60
+ /**
61
+ * Params associated with the current location
62
+ */
31
63
  params: MatchParams;
64
+ /**
65
+ * Navigate to a new location.
66
+ */
32
67
  goTo: ( path: string, options?: NavigateOptions ) => void;
33
- goBack: () => void;
68
+ /**
69
+ * Go back to the parent location (ie. "/some/path" will navigate back
70
+ * to "/some")
71
+ */
72
+ goBack: ( options?: NavigateToParentOptions ) => void;
73
+ /**
74
+ * _Note: This function is deprecated. Please use `goBack` instead._
75
+ * @deprecated
76
+ * @ignore
77
+ */
34
78
  goToParent: ( options?: NavigateToParentOptions ) => void;
35
79
  };
36
80
 
@@ -64,15 +108,6 @@ export type NavigatorScreenProps = {
64
108
 
65
109
  export type NavigatorBackButtonProps = ButtonAsButtonProps;
66
110
 
67
- export type NavigatorBackButtonHookProps = NavigatorBackButtonProps & {
68
- /**
69
- * Whether we should navigate to the parent screen.
70
- *
71
- * @default 'false'
72
- */
73
- goToParent?: boolean;
74
- };
75
-
76
111
  export type NavigatorToParentButtonProps = NavigatorBackButtonProps;
77
112
 
78
113
  export type NavigatorButtonProps = NavigatorBackButtonProps & {
@@ -139,3 +139,11 @@ Amount by which the `value` is changed when incrementing/decrementing. It is als
139
139
  - Type: `Number | "any"`
140
140
  - Required: No
141
141
  - Default: `1`
142
+
143
+ ### __next40pxDefaultSize
144
+
145
+ Start opting into the larger default height that will become the default size in a future version.
146
+
147
+ - Type: `Boolean`
148
+ - Required: No
149
+ - Default: `false`
@@ -31,7 +31,7 @@ export const IndicatorStyled = styled( ColorIndicator )`
31
31
  export const NameInputControl = styled( InputControl )`
32
32
  ${ InputControlContainer } {
33
33
  background: ${ COLORS.gray[ 100 ] };
34
- border-radius: ${ CONFIG.controlBorderRadius };
34
+ border-radius: ${ CONFIG.radiusXSmall };
35
35
  ${ Input }${ Input }${ Input }${ Input } {
36
36
  height: ${ space( 8 ) };
37
37
  }
@@ -85,8 +85,8 @@ export const PaletteItem = styled( View )`
85
85
  outline-offset: 0;
86
86
  }
87
87
 
88
- border-top-left-radius: ${ CONFIG.controlBorderRadius };
89
- border-top-right-radius: ${ CONFIG.controlBorderRadius };
88
+ border-top-left-radius: ${ CONFIG.radiusSmall };
89
+ border-top-right-radius: ${ CONFIG.radiusSmall };
90
90
 
91
91
  & + & {
92
92
  border-top-left-radius: 0;
@@ -94,8 +94,8 @@ export const PaletteItem = styled( View )`
94
94
  }
95
95
 
96
96
  &:last-child {
97
- border-bottom-left-radius: ${ CONFIG.controlBorderRadius };
98
- border-bottom-right-radius: ${ CONFIG.controlBorderRadius };
97
+ border-bottom-left-radius: ${ CONFIG.radiusSmall };
98
+ border-bottom-right-radius: ${ CONFIG.radiusSmall };
99
99
  border-bottom-color: ${ CONFIG.surfaceBorderColor };
100
100
  }
101
101
 
@@ -19,7 +19,7 @@
19
19
 
20
20
 
21
21
  // Block UI appearance.
22
- border-radius: $radius-block-ui;
22
+ border-radius: $radius-small; // Match the block toolbar material radius.
23
23
  background-color: $white;
24
24
  box-shadow: inset 0 0 0 $border-width $gray-900;
25
25
  outline: 1px solid transparent; // Shown for Windows 10 High Contrast mode.
@@ -144,6 +144,9 @@
144
144
  display: flex;
145
145
  box-shadow: none;
146
146
 
147
+ // In the unselected state, radius should match Global Styles > Image > Radius.
148
+ border-radius: 0;
149
+
147
150
  // Blur the background so layered dashed placeholders are still visually separate.
148
151
  // Make the background transparent to not interfere with the background overlay in placeholder-style() pseudo element
149
152
  backdrop-filter: blur(100px);
@@ -113,8 +113,9 @@ const UnforwardedPopover = (
113
113
  WordPressComponentProps< PopoverProps, 'div', false >,
114
114
  // To avoid overlaps between the standard HTML attributes and the props
115
115
  // expected by `framer-motion`, omit all framer motion props from popover
116
- // props (except for `animate` and `children`, which are re-defined in `PopoverProps`).
117
- keyof Omit< MotionProps, 'animate' | 'children' >
116
+ // props (except for `animate` and `children` which are re-defined in
117
+ // `PopoverProps`, and `style` which is merged safely).
118
+ keyof Omit< MotionProps, 'animate' | 'children' | 'style' >
118
119
  >,
119
120
  forwardedRef: ForwardedRef< any >
120
121
  ) => {
@@ -139,6 +140,7 @@ const UnforwardedPopover = (
139
140
  shift = false,
140
141
  inline = false,
141
142
  variant,
143
+ style: contentStyle,
142
144
 
143
145
  // Deprecated props
144
146
  __unstableForcePosition,
@@ -370,6 +372,7 @@ const UnforwardedPopover = (
370
372
  const animationProps: HTMLMotionProps< 'div' > = shouldAnimate
371
373
  ? {
372
374
  style: {
375
+ ...contentStyle,
373
376
  ...motionInlineStyles,
374
377
  ...style,
375
378
  },
@@ -378,7 +381,10 @@ const UnforwardedPopover = (
378
381
  }
379
382
  : {
380
383
  animate: false,
381
- style,
384
+ style: {
385
+ ...contentStyle,
386
+ ...style,
387
+ },
382
388
  };
383
389
 
384
390
  // When Floating UI has finished positioning and Framer Motion has finished animating
@@ -22,8 +22,8 @@ $shadow-popover-border-top-only-alternate: 0 #{-$border-width} 0 $gray-900;
22
22
 
23
23
  .components-popover__content {
24
24
  background: $white;
25
- box-shadow: $shadow-popover-border-default, $shadow-popover;
26
- border-radius: $radius-block-ui;
25
+ box-shadow: $shadow-popover-border-default, $elevation-x-small;
26
+ border-radius: $radius-medium;
27
27
  box-sizing: border-box;
28
28
  width: min-content;
29
29
 
@@ -179,6 +179,40 @@ describe( 'Popover', () => {
179
179
  } );
180
180
  } );
181
181
 
182
+ describe( 'style', () => {
183
+ it( 'outputs inline styles added through the style prop in addition to built-in popover positioning styles', async () => {
184
+ render(
185
+ <Popover
186
+ style={ { zIndex: 0 } }
187
+ data-testid="popover-element"
188
+ >
189
+ Hello
190
+ </Popover>
191
+ );
192
+ const popover = screen.getByTestId( 'popover-element' );
193
+
194
+ await waitFor( () => expect( popover ).toBeVisible() );
195
+ expect( popover ).toHaveStyle(
196
+ 'position: absolute; top: 0px; left: 0px; z-index: 0;'
197
+ );
198
+ } );
199
+
200
+ it( 'is not possible to override built-in popover positioning styles via the style prop', async () => {
201
+ render(
202
+ <Popover
203
+ style={ { position: 'static' } }
204
+ data-testid="popover-element"
205
+ >
206
+ Hello
207
+ </Popover>
208
+ );
209
+ const popover = screen.getByTestId( 'popover-element' );
210
+
211
+ await waitFor( () => expect( popover ).toBeVisible() );
212
+ expect( popover ).not.toHaveStyle( 'position: static;' );
213
+ } );
214
+ } );
215
+
182
216
  describe( 'focus behavior', () => {
183
217
  it( 'should focus the popover container when opened', async () => {
184
218
  render(
@@ -1,13 +1,7 @@
1
1
  /**
2
2
  * Internal dependencies
3
3
  */
4
- import {
5
- Composite as CompositeV2,
6
- CompositeGroup as CompositeGroupV2,
7
- CompositeItem as CompositeItemV2,
8
- CompositeRow as CompositeRowV2,
9
- useCompositeStore as useCompositeStoreV2,
10
- } from './composite/v2';
4
+ import { Composite, useCompositeStore } from './composite';
11
5
  import { positionToPlacement as __experimentalPopoverLegacyPositionToPlacement } from './popover/utils';
12
6
  import { createPrivateSlotFill } from './slot-fill';
13
7
  import {
@@ -28,11 +22,11 @@ import { lock } from './lock-unlock';
28
22
 
29
23
  export const privateApis = {};
30
24
  lock( privateApis, {
31
- CompositeV2,
32
- CompositeGroupV2,
33
- CompositeItemV2,
34
- CompositeRowV2,
35
- useCompositeStoreV2,
25
+ CompositeV2: Composite,
26
+ CompositeGroupV2: Composite.Group,
27
+ CompositeItemV2: Composite.Item,
28
+ CompositeRowV2: Composite.Row,
29
+ useCompositeStoreV2: useCompositeStore,
36
30
  __experimentalPopoverLegacyPositionToPlacement,
37
31
  createPrivateSlotFill,
38
32
  ComponentsContext,
@@ -40,7 +40,7 @@ export const Track = styled.div`
40
40
  ${ COLORS.theme.foreground },
41
41
  transparent 90%
42
42
  );
43
- border-radius: ${ CONFIG.radiusBlockUi };
43
+ border-radius: ${ CONFIG.radiusFull };
44
44
 
45
45
  // Windows high contrast mode.
46
46
  outline: 2px solid transparent;
@@ -58,7 +58,7 @@ export const Indicator = styled.div< {
58
58
  position: absolute;
59
59
  top: 0;
60
60
  height: 100%;
61
- border-radius: ${ CONFIG.radiusBlockUi };
61
+ border-radius: ${ CONFIG.radiusFull };
62
62
  /* Text color at 90% opacity */
63
63
  background-color: color-mix(
64
64
  in srgb,
@@ -240,3 +240,10 @@ The selected category for the `categoriesList` prop.
240
240
 
241
241
  - Required: No
242
242
  - Platform: Web
243
+
244
+ #### `__next40pxDefaultSize`: `boolean`
245
+
246
+ Start opting into the larger default height that will become the default size in a future version.
247
+
248
+ - Required: No
249
+ - Default: `false`