@wordpress/block-editor 10.3.0 → 10.5.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 (460) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +0 -1
  3. package/build/components/alignment-control/ui.js +1 -1
  4. package/build/components/alignment-control/ui.js.map +1 -1
  5. package/build/components/block-alignment-control/constants.js +1 -1
  6. package/build/components/block-alignment-control/constants.js.map +1 -1
  7. package/build/components/block-alignment-matrix-control/index.js +1 -1
  8. package/build/components/block-alignment-matrix-control/index.js.map +1 -1
  9. package/build/components/block-compare/index.js +1 -3
  10. package/build/components/block-compare/index.js.map +1 -1
  11. package/build/components/block-edit/index.js +4 -2
  12. package/build/components/block-edit/index.js.map +1 -1
  13. package/build/components/block-list/block.js +3 -1
  14. package/build/components/block-list/block.js.map +1 -1
  15. package/build/components/block-lock/menu-item.js +1 -1
  16. package/build/components/block-lock/menu-item.js.map +1 -1
  17. package/build/components/block-lock/modal.js +16 -9
  18. package/build/components/block-lock/modal.js.map +1 -1
  19. package/build/components/block-popover/inbetween.js +2 -1
  20. package/build/components/block-popover/inbetween.js.map +1 -1
  21. package/build/components/block-popover/index.js +2 -1
  22. package/build/components/block-popover/index.js.map +1 -1
  23. package/build/components/block-preview/index.js +2 -4
  24. package/build/components/block-preview/index.js.map +1 -1
  25. package/build/components/block-settings-menu/block-settings-dropdown.js +2 -8
  26. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  27. package/build/components/block-styles/utils.js +3 -3
  28. package/build/components/block-styles/utils.js.map +1 -1
  29. package/build/components/block-switcher/index.js +21 -12
  30. package/build/components/block-switcher/index.js.map +1 -1
  31. package/build/components/block-switcher/preview-block-popover.js +1 -1
  32. package/build/components/block-switcher/preview-block-popover.js.map +1 -1
  33. package/build/components/block-tools/insertion-point.js +12 -2
  34. package/build/components/block-tools/insertion-point.js.map +1 -1
  35. package/build/components/block-tools/selected-block-popover.js +27 -4
  36. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  37. package/build/components/block-vertical-alignment-control/ui.js +1 -1
  38. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  39. package/build/components/border-radius-control/all-input-control.js +2 -1
  40. package/build/components/border-radius-control/all-input-control.js.map +1 -1
  41. package/build/components/border-radius-control/index.js +2 -1
  42. package/build/components/border-radius-control/index.js.map +1 -1
  43. package/build/components/border-radius-control/input-controls.js +2 -1
  44. package/build/components/border-radius-control/input-controls.js.map +1 -1
  45. package/build/components/colors/with-colors.js +4 -3
  46. package/build/components/colors/with-colors.js.map +1 -1
  47. package/build/components/duotone-control/index.js +1 -1
  48. package/build/components/duotone-control/index.js.map +1 -1
  49. package/build/components/font-sizes/fluid-utils.js +24 -40
  50. package/build/components/font-sizes/fluid-utils.js.map +1 -1
  51. package/build/components/font-sizes/with-font-sizes.js +8 -6
  52. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  53. package/build/components/iframe/index.js +1 -1
  54. package/build/components/iframe/index.js.map +1 -1
  55. package/build/components/image-editor/constants.js +1 -1
  56. package/build/components/image-editor/constants.js.map +1 -1
  57. package/build/components/index.js +9 -0
  58. package/build/components/index.js.map +1 -1
  59. package/build/components/inner-blocks/index.js +10 -4
  60. package/build/components/inner-blocks/index.js.map +1 -1
  61. package/build/components/inserter/hooks/use-insertion-point.js +2 -7
  62. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  63. package/build/components/inserter/reusable-blocks-tab.js +4 -1
  64. package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
  65. package/build/components/inserter/search-items.js +23 -2
  66. package/build/components/inserter/search-items.js.map +1 -1
  67. package/build/components/line-height-control/index.js +2 -1
  68. package/build/components/line-height-control/index.js.map +1 -1
  69. package/build/components/link-control/index.js +18 -34
  70. package/build/components/link-control/index.js.map +1 -1
  71. package/build/components/link-control/search-input.js +1 -1
  72. package/build/components/link-control/search-input.js.map +1 -1
  73. package/build/components/link-control/use-internal-input-value.js +26 -0
  74. package/build/components/link-control/use-internal-input-value.js.map +1 -0
  75. package/build/components/list-view/block.js +5 -3
  76. package/build/components/list-view/block.js.map +1 -1
  77. package/build/components/list-view/branch.js +9 -3
  78. package/build/components/list-view/branch.js.map +1 -1
  79. package/build/components/list-view/drop-indicator.js +2 -1
  80. package/build/components/list-view/drop-indicator.js.map +1 -1
  81. package/build/components/media-replace-flow/index.js +1 -1
  82. package/build/components/media-replace-flow/index.js.map +1 -1
  83. package/build/components/off-canvas-editor/block-contents.js +100 -0
  84. package/build/components/off-canvas-editor/block-contents.js.map +1 -0
  85. package/build/components/off-canvas-editor/block-select-button.js +119 -0
  86. package/build/components/off-canvas-editor/block-select-button.js.map +1 -0
  87. package/build/components/off-canvas-editor/block.js +292 -0
  88. package/build/components/off-canvas-editor/block.js.map +1 -0
  89. package/build/components/off-canvas-editor/branch.js +181 -0
  90. package/build/components/off-canvas-editor/branch.js.map +1 -0
  91. package/build/components/off-canvas-editor/context.js +19 -0
  92. package/build/components/off-canvas-editor/context.js.map +1 -0
  93. package/build/components/off-canvas-editor/drop-indicator.js +118 -0
  94. package/build/components/off-canvas-editor/drop-indicator.js.map +1 -0
  95. package/build/components/off-canvas-editor/expander.js +41 -0
  96. package/build/components/off-canvas-editor/expander.js.map +1 -0
  97. package/build/components/off-canvas-editor/index.js +204 -0
  98. package/build/components/off-canvas-editor/index.js.map +1 -0
  99. package/build/components/off-canvas-editor/leaf.js +60 -0
  100. package/build/components/off-canvas-editor/leaf.js.map +1 -0
  101. package/build/components/off-canvas-editor/use-block-selection.js +139 -0
  102. package/build/components/off-canvas-editor/use-block-selection.js.map +1 -0
  103. package/build/components/off-canvas-editor/use-list-view-client-ids.js +33 -0
  104. package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  105. package/build/components/off-canvas-editor/use-list-view-drop-zone.js +235 -0
  106. package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  107. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +60 -0
  108. package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  109. package/build/components/off-canvas-editor/utils.js +60 -0
  110. package/build/components/off-canvas-editor/utils.js.map +1 -0
  111. package/build/components/rich-text/format-toolbar/index.js +1 -1
  112. package/build/components/rich-text/format-toolbar/index.js.map +1 -1
  113. package/build/components/rich-text/format-toolbar-container.js +1 -1
  114. package/build/components/rich-text/format-toolbar-container.js.map +1 -1
  115. package/build/components/rich-text/use-paste-handler.js +1 -1
  116. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  117. package/build/components/spacing-sizes-control/all-input-control.js +6 -2
  118. package/build/components/spacing-sizes-control/all-input-control.js.map +1 -1
  119. package/build/components/spacing-sizes-control/axial-input-controls.js +6 -2
  120. package/build/components/spacing-sizes-control/axial-input-controls.js.map +1 -1
  121. package/build/components/spacing-sizes-control/index.js +6 -2
  122. package/build/components/spacing-sizes-control/index.js.map +1 -1
  123. package/build/components/spacing-sizes-control/input-controls.js +6 -2
  124. package/build/components/spacing-sizes-control/input-controls.js.map +1 -1
  125. package/build/components/spacing-sizes-control/spacing-input-control.js +12 -5
  126. package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  127. package/build/components/url-input/index.js +1 -1
  128. package/build/components/url-input/index.js.map +1 -1
  129. package/build/components/url-popover/index.js +31 -2
  130. package/build/components/url-popover/index.js.map +1 -1
  131. package/build/components/use-setting/index.js +1 -1
  132. package/build/components/use-setting/index.js.map +1 -1
  133. package/build/hooks/border.js +1 -0
  134. package/build/hooks/border.js.map +1 -1
  135. package/build/hooks/color-panel.js +17 -1
  136. package/build/hooks/color-panel.js.map +1 -1
  137. package/build/hooks/color.js +1 -1
  138. package/build/hooks/color.js.map +1 -1
  139. package/build/hooks/content-lock-ui.js +13 -6
  140. package/build/hooks/content-lock-ui.js.map +1 -1
  141. package/build/hooks/dimensions.js +72 -13
  142. package/build/hooks/dimensions.js.map +1 -1
  143. package/build/hooks/font-size.js +1 -0
  144. package/build/hooks/font-size.js.map +1 -1
  145. package/build/hooks/layout.js +5 -4
  146. package/build/hooks/layout.js.map +1 -1
  147. package/build/hooks/margin.js +26 -18
  148. package/build/hooks/margin.js.map +1 -1
  149. package/build/hooks/min-height.js +145 -0
  150. package/build/hooks/min-height.js.map +1 -0
  151. package/build/hooks/padding.js +22 -13
  152. package/build/hooks/padding.js.map +1 -1
  153. package/build/hooks/style.js +3 -2
  154. package/build/hooks/style.js.map +1 -1
  155. package/build/hooks/utils.js +7 -6
  156. package/build/hooks/utils.js.map +1 -1
  157. package/build/layouts/constrained.js +0 -1
  158. package/build/layouts/constrained.js.map +1 -1
  159. package/build/layouts/flex.js +23 -22
  160. package/build/layouts/flex.js.map +1 -1
  161. package/build/store/actions.js +30 -0
  162. package/build/store/actions.js.map +1 -1
  163. package/build/store/array.js +1 -7
  164. package/build/store/array.js.map +1 -1
  165. package/build/store/reducer.js +46 -14
  166. package/build/store/reducer.js.map +1 -1
  167. package/build/store/selectors.js +62 -31
  168. package/build/store/selectors.js.map +1 -1
  169. package/build-module/components/alignment-control/ui.js +1 -1
  170. package/build-module/components/alignment-control/ui.js.map +1 -1
  171. package/build-module/components/block-alignment-control/constants.js +1 -1
  172. package/build-module/components/block-alignment-control/constants.js.map +1 -1
  173. package/build-module/components/block-alignment-matrix-control/index.js +1 -1
  174. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  175. package/build-module/components/block-compare/index.js +2 -3
  176. package/build-module/components/block-compare/index.js.map +1 -1
  177. package/build-module/components/block-edit/index.js +4 -2
  178. package/build-module/components/block-edit/index.js.map +1 -1
  179. package/build-module/components/block-list/block.js +3 -1
  180. package/build-module/components/block-list/block.js.map +1 -1
  181. package/build-module/components/block-lock/menu-item.js +2 -2
  182. package/build-module/components/block-lock/menu-item.js.map +1 -1
  183. package/build-module/components/block-lock/modal.js +17 -10
  184. package/build-module/components/block-lock/modal.js.map +1 -1
  185. package/build-module/components/block-popover/inbetween.js +2 -1
  186. package/build-module/components/block-popover/inbetween.js.map +1 -1
  187. package/build-module/components/block-popover/index.js +2 -1
  188. package/build-module/components/block-popover/index.js.map +1 -1
  189. package/build-module/components/block-preview/index.js +2 -3
  190. package/build-module/components/block-preview/index.js.map +1 -1
  191. package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -7
  192. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  193. package/build-module/components/block-styles/utils.js +3 -3
  194. package/build-module/components/block-styles/utils.js.map +1 -1
  195. package/build-module/components/block-switcher/index.js +21 -11
  196. package/build-module/components/block-switcher/index.js.map +1 -1
  197. package/build-module/components/block-switcher/preview-block-popover.js +1 -1
  198. package/build-module/components/block-switcher/preview-block-popover.js.map +1 -1
  199. package/build-module/components/block-tools/insertion-point.js +12 -2
  200. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  201. package/build-module/components/block-tools/selected-block-popover.js +27 -5
  202. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  203. package/build-module/components/block-vertical-alignment-control/ui.js +1 -1
  204. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  205. package/build-module/components/border-radius-control/all-input-control.js +2 -1
  206. package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
  207. package/build-module/components/border-radius-control/index.js +2 -1
  208. package/build-module/components/border-radius-control/index.js.map +1 -1
  209. package/build-module/components/border-radius-control/input-controls.js +2 -1
  210. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  211. package/build-module/components/colors/with-colors.js +5 -4
  212. package/build-module/components/colors/with-colors.js.map +1 -1
  213. package/build-module/components/duotone-control/index.js +1 -1
  214. package/build-module/components/duotone-control/index.js.map +1 -1
  215. package/build-module/components/font-sizes/fluid-utils.js +24 -40
  216. package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
  217. package/build-module/components/font-sizes/with-font-sizes.js +9 -7
  218. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  219. package/build-module/components/iframe/index.js +1 -1
  220. package/build-module/components/iframe/index.js.map +1 -1
  221. package/build-module/components/image-editor/constants.js +1 -1
  222. package/build-module/components/image-editor/constants.js.map +1 -1
  223. package/build-module/components/index.js +1 -0
  224. package/build-module/components/index.js.map +1 -1
  225. package/build-module/components/inner-blocks/index.js +10 -4
  226. package/build-module/components/inner-blocks/index.js.map +1 -1
  227. package/build-module/components/inserter/hooks/use-insertion-point.js +2 -6
  228. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  229. package/build-module/components/inserter/reusable-blocks-tab.js +3 -1
  230. package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
  231. package/build-module/components/inserter/search-items.js +23 -3
  232. package/build-module/components/inserter/search-items.js.map +1 -1
  233. package/build-module/components/line-height-control/index.js +2 -1
  234. package/build-module/components/line-height-control/index.js.map +1 -1
  235. package/build-module/components/link-control/index.js +17 -34
  236. package/build-module/components/link-control/index.js.map +1 -1
  237. package/build-module/components/link-control/search-input.js +1 -1
  238. package/build-module/components/link-control/search-input.js.map +1 -1
  239. package/build-module/components/link-control/use-internal-input-value.js +18 -0
  240. package/build-module/components/link-control/use-internal-input-value.js.map +1 -0
  241. package/build-module/components/list-view/block.js +5 -3
  242. package/build-module/components/list-view/block.js.map +1 -1
  243. package/build-module/components/list-view/branch.js +9 -3
  244. package/build-module/components/list-view/branch.js.map +1 -1
  245. package/build-module/components/list-view/drop-indicator.js +2 -1
  246. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  247. package/build-module/components/media-replace-flow/index.js +1 -1
  248. package/build-module/components/media-replace-flow/index.js.map +1 -1
  249. package/build-module/components/off-canvas-editor/block-contents.js +85 -0
  250. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -0
  251. package/build-module/components/off-canvas-editor/block-select-button.js +101 -0
  252. package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -0
  253. package/build-module/components/off-canvas-editor/block.js +268 -0
  254. package/build-module/components/off-canvas-editor/block.js.map +1 -0
  255. package/build-module/components/off-canvas-editor/branch.js +165 -0
  256. package/build-module/components/off-canvas-editor/branch.js.map +1 -0
  257. package/build-module/components/off-canvas-editor/context.js +7 -0
  258. package/build-module/components/off-canvas-editor/context.js.map +1 -0
  259. package/build-module/components/off-canvas-editor/drop-indicator.js +111 -0
  260. package/build-module/components/off-canvas-editor/drop-indicator.js.map +1 -0
  261. package/build-module/components/off-canvas-editor/expander.js +32 -0
  262. package/build-module/components/off-canvas-editor/expander.js.map +1 -0
  263. package/build-module/components/off-canvas-editor/index.js +181 -0
  264. package/build-module/components/off-canvas-editor/index.js.map +1 -0
  265. package/build-module/components/off-canvas-editor/leaf.js +45 -0
  266. package/build-module/components/off-canvas-editor/leaf.js.map +1 -0
  267. package/build-module/components/off-canvas-editor/use-block-selection.js +124 -0
  268. package/build-module/components/off-canvas-editor/use-block-selection.js.map +1 -0
  269. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +24 -0
  270. package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
  271. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +220 -0
  272. package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
  273. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +50 -0
  274. package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
  275. package/build-module/components/off-canvas-editor/utils.js +44 -0
  276. package/build-module/components/off-canvas-editor/utils.js.map +1 -0
  277. package/build-module/components/rich-text/format-toolbar/index.js +1 -1
  278. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  279. package/build-module/components/rich-text/format-toolbar-container.js +1 -1
  280. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  281. package/build-module/components/rich-text/use-paste-handler.js +1 -1
  282. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  283. package/build-module/components/spacing-sizes-control/all-input-control.js +6 -2
  284. package/build-module/components/spacing-sizes-control/all-input-control.js.map +1 -1
  285. package/build-module/components/spacing-sizes-control/axial-input-controls.js +6 -2
  286. package/build-module/components/spacing-sizes-control/axial-input-controls.js.map +1 -1
  287. package/build-module/components/spacing-sizes-control/index.js +6 -2
  288. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  289. package/build-module/components/spacing-sizes-control/input-controls.js +6 -2
  290. package/build-module/components/spacing-sizes-control/input-controls.js.map +1 -1
  291. package/build-module/components/spacing-sizes-control/spacing-input-control.js +12 -5
  292. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  293. package/build-module/components/url-input/index.js +1 -1
  294. package/build-module/components/url-input/index.js.map +1 -1
  295. package/build-module/components/url-popover/index.js +30 -3
  296. package/build-module/components/url-popover/index.js.map +1 -1
  297. package/build-module/components/use-setting/index.js +1 -1
  298. package/build-module/components/use-setting/index.js.map +1 -1
  299. package/build-module/hooks/border.js +1 -0
  300. package/build-module/hooks/border.js.map +1 -1
  301. package/build-module/hooks/color-panel.js +17 -1
  302. package/build-module/hooks/color-panel.js.map +1 -1
  303. package/build-module/hooks/color.js +1 -1
  304. package/build-module/hooks/color.js.map +1 -1
  305. package/build-module/hooks/content-lock-ui.js +15 -8
  306. package/build-module/hooks/content-lock-ui.js.map +1 -1
  307. package/build-module/hooks/dimensions.js +67 -12
  308. package/build-module/hooks/dimensions.js.map +1 -1
  309. package/build-module/hooks/font-size.js +1 -0
  310. package/build-module/hooks/font-size.js.map +1 -1
  311. package/build-module/hooks/layout.js +6 -5
  312. package/build-module/hooks/layout.js.map +1 -1
  313. package/build-module/hooks/margin.js +27 -19
  314. package/build-module/hooks/margin.js.map +1 -1
  315. package/build-module/hooks/min-height.js +122 -0
  316. package/build-module/hooks/min-height.js.map +1 -0
  317. package/build-module/hooks/padding.js +23 -14
  318. package/build-module/hooks/padding.js.map +1 -1
  319. package/build-module/hooks/style.js +4 -3
  320. package/build-module/hooks/style.js.map +1 -1
  321. package/build-module/hooks/utils.js +7 -7
  322. package/build-module/hooks/utils.js.map +1 -1
  323. package/build-module/layouts/constrained.js +0 -1
  324. package/build-module/layouts/constrained.js.map +1 -1
  325. package/build-module/layouts/flex.js +24 -23
  326. package/build-module/layouts/flex.js.map +1 -1
  327. package/build-module/store/actions.js +26 -0
  328. package/build-module/store/actions.js.map +1 -1
  329. package/build-module/store/array.js +1 -6
  330. package/build-module/store/array.js.map +1 -1
  331. package/build-module/store/reducer.js +44 -14
  332. package/build-module/store/reducer.js.map +1 -1
  333. package/build-module/store/selectors.js +59 -31
  334. package/build-module/store/selectors.js.map +1 -1
  335. package/build-style/style-rtl.css +88 -88
  336. package/build-style/style.css +84 -84
  337. package/package.json +29 -28
  338. package/src/components/alignment-control/README.md +1 -1
  339. package/src/components/alignment-control/ui.js +1 -1
  340. package/src/components/block-alignment-control/constants.js +1 -1
  341. package/src/components/block-alignment-control/test/index.native.js +4 -4
  342. package/src/components/block-alignment-matrix-control/index.js +1 -1
  343. package/src/components/block-breadcrumb/test/__snapshots__/index.js.snap +13 -11
  344. package/src/components/block-breadcrumb/test/index.js +1 -1
  345. package/src/components/block-compare/index.js +3 -2
  346. package/src/components/block-draggable/test/helpers.native.js +3 -3
  347. package/src/components/block-draggable/test/index.native.js +27 -27
  348. package/src/components/block-edit/index.js +2 -1
  349. package/src/components/block-list/block.js +2 -0
  350. package/src/components/block-list/style.scss +11 -6
  351. package/src/components/block-lock/menu-item.js +5 -2
  352. package/src/components/block-lock/modal.js +19 -36
  353. package/src/components/block-lock/style.scss +8 -17
  354. package/src/components/block-mover/stories/index.js +1 -1
  355. package/src/components/block-mover/style.scss +35 -1
  356. package/src/components/block-popover/inbetween.js +1 -0
  357. package/src/components/block-popover/index.js +1 -0
  358. package/src/components/block-popover/style.scss +1 -5
  359. package/src/components/block-preview/index.js +8 -3
  360. package/src/components/block-settings-menu/block-settings-dropdown.js +4 -7
  361. package/src/components/block-styles/utils.js +3 -3
  362. package/src/components/block-switcher/index.js +21 -11
  363. package/src/components/block-switcher/preview-block-popover.js +1 -1
  364. package/src/components/block-tools/insertion-point.js +10 -1
  365. package/src/components/block-tools/selected-block-popover.js +80 -34
  366. package/src/components/block-tools/style.scss +15 -0
  367. package/src/components/block-variation-picker/README.md +1 -1
  368. package/src/components/block-vertical-alignment-control/ui.js +1 -1
  369. package/src/components/border-radius-control/all-input-control.js +1 -0
  370. package/src/components/border-radius-control/index.js +1 -0
  371. package/src/components/border-radius-control/input-controls.js +1 -0
  372. package/src/components/border-radius-control/style.scss +15 -24
  373. package/src/components/color-palette/test/__snapshots__/control.js.snap +85 -83
  374. package/src/components/color-palette/test/control.js +1 -1
  375. package/src/components/colors/with-colors.js +13 -23
  376. package/src/components/default-block-appender/style.scss +1 -0
  377. package/src/components/duotone-control/index.js +1 -1
  378. package/src/components/font-sizes/fluid-utils.js +37 -64
  379. package/src/components/font-sizes/test/fluid-utils.js +5 -5
  380. package/src/components/font-sizes/with-font-sizes.js +15 -13
  381. package/src/components/iframe/index.js +1 -1
  382. package/src/components/image-editor/constants.js +1 -1
  383. package/src/components/index.js +1 -0
  384. package/src/components/inner-blocks/index.js +11 -4
  385. package/src/components/inner-blocks/test/index.js +4 -0
  386. package/src/components/inserter/hooks/use-insertion-point.js +3 -11
  387. package/src/components/inserter/reusable-blocks-tab.js +4 -2
  388. package/src/components/inserter/search-items.js +23 -3
  389. package/src/components/inserter/style.scss +8 -7
  390. package/src/components/inserter/test/reusable-blocks-tab.js +14 -57
  391. package/src/components/inserter/test/search-items.js +6 -0
  392. package/src/components/inserter-list-item/style.scss +2 -0
  393. package/src/components/letter-spacing-control/README.md +55 -0
  394. package/src/components/line-height-control/index.js +1 -0
  395. package/src/components/link-control/README.md +3 -3
  396. package/src/components/link-control/index.js +23 -39
  397. package/src/components/link-control/search-input.js +1 -1
  398. package/src/components/link-control/test/index.js +272 -241
  399. package/src/components/link-control/use-internal-input-value.js +22 -0
  400. package/src/components/list-view/block.js +4 -3
  401. package/src/components/list-view/branch.js +11 -6
  402. package/src/components/list-view/drop-indicator.js +1 -0
  403. package/src/components/list-view/style.scss +1 -36
  404. package/src/components/media-replace-flow/index.js +1 -1
  405. package/src/components/media-replace-flow/test/index.js +69 -51
  406. package/src/components/off-canvas-editor/README.md +5 -0
  407. package/src/components/off-canvas-editor/block-contents.js +89 -0
  408. package/src/components/off-canvas-editor/block-select-button.js +113 -0
  409. package/src/components/off-canvas-editor/block.js +335 -0
  410. package/src/components/off-canvas-editor/branch.js +210 -0
  411. package/src/components/off-canvas-editor/context.js +8 -0
  412. package/src/components/off-canvas-editor/drop-indicator.js +126 -0
  413. package/src/components/off-canvas-editor/expander.js +26 -0
  414. package/src/components/off-canvas-editor/index.js +216 -0
  415. package/src/components/off-canvas-editor/leaf.js +48 -0
  416. package/src/components/off-canvas-editor/style.scss +397 -0
  417. package/src/components/off-canvas-editor/test/utils.js +50 -0
  418. package/src/components/off-canvas-editor/use-block-selection.js +169 -0
  419. package/src/components/off-canvas-editor/use-list-view-client-ids.js +29 -0
  420. package/src/components/off-canvas-editor/use-list-view-drop-zone.js +260 -0
  421. package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +58 -0
  422. package/src/components/off-canvas-editor/utils.js +58 -0
  423. package/src/components/responsive-block-control/test/index.js +69 -92
  424. package/src/components/rich-text/format-toolbar/index.js +1 -1
  425. package/src/components/rich-text/format-toolbar-container.js +1 -1
  426. package/src/components/rich-text/use-paste-handler.js +1 -1
  427. package/src/components/spacing-sizes-control/all-input-control.js +4 -0
  428. package/src/components/spacing-sizes-control/axial-input-controls.js +4 -0
  429. package/src/components/spacing-sizes-control/index.js +4 -0
  430. package/src/components/spacing-sizes-control/input-controls.js +4 -0
  431. package/src/components/spacing-sizes-control/spacing-input-control.js +10 -1
  432. package/src/components/spacing-sizes-control/style.scss +1 -0
  433. package/src/components/url-input/index.js +1 -1
  434. package/src/components/url-popover/README.md +12 -3
  435. package/src/components/url-popover/index.js +33 -3
  436. package/src/components/use-setting/index.js +7 -1
  437. package/src/hooks/border.js +1 -0
  438. package/src/hooks/color-panel.js +13 -1
  439. package/src/hooks/color.js +2 -0
  440. package/src/hooks/content-lock-ui.js +46 -34
  441. package/src/hooks/dimensions.js +106 -19
  442. package/src/hooks/font-size.js +1 -0
  443. package/src/hooks/layout.js +8 -11
  444. package/src/hooks/margin.js +23 -17
  445. package/src/hooks/min-height.js +121 -0
  446. package/src/hooks/padding.js +23 -19
  447. package/src/hooks/style.js +10 -2
  448. package/src/hooks/test/align.js +96 -72
  449. package/src/hooks/test/style.js +4 -0
  450. package/src/hooks/test/use-typography-props.js +1 -1
  451. package/src/hooks/utils.js +5 -6
  452. package/src/layouts/constrained.js +0 -1
  453. package/src/layouts/flex.js +44 -39
  454. package/src/store/actions.js +26 -0
  455. package/src/store/array.js +1 -6
  456. package/src/store/reducer.js +50 -40
  457. package/src/store/selectors.js +43 -29
  458. package/src/store/test/actions.js +18 -0
  459. package/src/store/test/reducer.js +40 -0
  460. package/src/store/test/selectors.js +20 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render } from '@testing-library/react';
4
+ import { render, screen } from '@testing-library/react';
5
5
  import userEvent from '@testing-library/user-event';
6
6
 
7
7
  /**
@@ -48,6 +48,20 @@ const renderTestDefaultControlComponent = ( labelComponent, device ) => {
48
48
  );
49
49
  };
50
50
 
51
+ function getDefaultControlGroup( container ) {
52
+ // TODO: Use a user-facing query to fetch this.
53
+ return container.querySelector(
54
+ '.block-editor-responsive-block-control__group:not(.is-responsive)'
55
+ );
56
+ }
57
+
58
+ function getResponsiveControlGroup( container ) {
59
+ // TODO: Use a user-facing query to fetch this.
60
+ return container.querySelector(
61
+ '.block-editor-responsive-block-control__group.is-responsive'
62
+ );
63
+ }
64
+
51
65
  describe( 'Basic rendering', () => {
52
66
  it( 'should render with required props', () => {
53
67
  const { container } = render(
@@ -58,48 +72,30 @@ describe( 'Basic rendering', () => {
58
72
  />
59
73
  );
60
74
 
61
- const activePropertyLabel = Array.from(
62
- container.querySelectorAll( 'legend' )
63
- ).find( ( legend ) => legend.innerHTML === 'Padding' );
64
-
65
- const activeViewportLabel = Array.from(
66
- container.querySelectorAll( 'label' )
67
- ).find( ( label ) => label.innerHTML.includes( 'All' ) );
68
-
69
- const defaultControl = container.querySelector(
70
- `#${ activeViewportLabel.getAttribute( 'for' ) }`
71
- );
72
-
73
- const toggleLabel = Array.from(
74
- container.querySelectorAll( 'label' )
75
- ).filter( ( label ) =>
76
- label.innerHTML.includes(
77
- 'Use the same padding on all screensizes'
78
- )
79
- );
75
+ const activePropertyLabel = screen.getByRole( 'group', {
76
+ name: 'Padding',
77
+ } );
80
78
 
81
- const toggleState = container.querySelector(
82
- 'input[type="checkbox"]'
83
- ).checked;
79
+ const defaultControl = screen.getByRole( 'combobox', {
80
+ name: 'All Controls the padding property for All viewports.',
81
+ } );
84
82
 
85
- const defaultControlGroup = container.querySelector(
86
- '.block-editor-responsive-block-control__group:not(.is-responsive)'
87
- );
83
+ const toggleState = screen.getByRole( 'checkbox', {
84
+ name: 'Use the same padding on all screensizes.',
85
+ checked: true,
86
+ } );
88
87
 
89
- const responsiveControlGroup = container.querySelector(
90
- '.block-editor-responsive-block-control__group.is-responsive'
91
- );
88
+ const defaultControlGroup = getDefaultControlGroup( container );
89
+ const responsiveControlGroup = getResponsiveControlGroup( container );
92
90
 
93
91
  expect( container ).not.toBeEmptyDOMElement();
94
92
 
95
93
  expect( defaultControlGroup ).not.toBeNull();
96
94
  expect( responsiveControlGroup ).toBeNull();
97
95
 
98
- expect( activeViewportLabel ).not.toBeNull();
99
- expect( activePropertyLabel ).not.toBeNull();
100
- expect( defaultControl ).not.toBeNull();
101
- expect( toggleLabel ).not.toBeNull();
102
- expect( toggleState ).toBe( true );
96
+ expect( activePropertyLabel ).toBeVisible();
97
+ expect( defaultControl ).toBeVisible();
98
+ expect( toggleState ).toBeVisible();
103
99
  } );
104
100
 
105
101
  it( 'should not render without valid legend', () => {
@@ -135,7 +131,7 @@ describe( 'Basic rendering', () => {
135
131
  it( 'should render with custom label for toggle control when provided', () => {
136
132
  const customToggleLabel =
137
133
  'Utilise a matching padding value on all viewports';
138
- const { container } = render(
134
+ render(
139
135
  <ResponsiveBlockControl
140
136
  title="Padding"
141
137
  property="padding"
@@ -144,17 +140,21 @@ describe( 'Basic rendering', () => {
144
140
  />
145
141
  );
146
142
 
147
- const actualToggleLabel = container.querySelector(
148
- 'label.components-toggle-control__label'
149
- ).innerHTML;
150
-
151
- expect( actualToggleLabel ).toEqual( customToggleLabel );
143
+ expect(
144
+ screen.getByRole( 'checkbox', {
145
+ name: customToggleLabel,
146
+ checked: true,
147
+ } )
148
+ ).toBeVisible();
152
149
  } );
153
150
 
154
151
  it( 'should pass custom label for default control group to the renderDefaultControl function when provided', () => {
155
- const customDefaultControlGroupLabel = 'Everything';
152
+ const customDefaultControlGroupLabel = {
153
+ id: 'everything',
154
+ label: 'Everything',
155
+ };
156
156
 
157
- const { container } = render(
157
+ render(
158
158
  <ResponsiveBlockControl
159
159
  title="Padding"
160
160
  property="padding"
@@ -163,11 +163,11 @@ describe( 'Basic rendering', () => {
163
163
  />
164
164
  );
165
165
 
166
- const defaultControlLabel = Array.from(
167
- container.querySelectorAll( 'label' )
168
- ).find( ( label ) => label.innerHTML.includes( 'Everything' ) );
166
+ const defaultControlLabel = screen.getByRole( 'combobox', {
167
+ name: 'Everything Controls the padding property for Everything viewports.',
168
+ } );
169
169
 
170
- expect( defaultControlLabel ).not.toBeNull();
170
+ expect( defaultControlLabel ).toBeVisible();
171
171
  } );
172
172
  } );
173
173
 
@@ -182,12 +182,8 @@ describe( 'Default and Responsive modes', () => {
182
182
  />
183
183
  );
184
184
 
185
- const defaultControlGroup = container.querySelector(
186
- '.block-editor-responsive-block-control__group:not(.is-responsive)'
187
- );
188
- const responsiveControlGroup = container.querySelector(
189
- '.block-editor-responsive-block-control__group.is-responsive'
190
- );
185
+ const defaultControlGroup = getDefaultControlGroup( container );
186
+ const responsiveControlGroup = getResponsiveControlGroup( container );
191
187
 
192
188
  expect( defaultControlGroup ).toBeNull();
193
189
  expect( responsiveControlGroup ).not.toBeNull();
@@ -217,7 +213,7 @@ describe( 'Default and Responsive modes', () => {
217
213
  renderTestDefaultControlComponent
218
214
  );
219
215
 
220
- const { container } = render(
216
+ render(
221
217
  <ResponsiveBlockControl
222
218
  title="Padding"
223
219
  property="padding"
@@ -230,13 +226,12 @@ describe( 'Default and Responsive modes', () => {
230
226
  const defaultRenderControlCall = 1;
231
227
 
232
228
  // Get array of labels which match those in the custom viewports provided
233
- const responsiveViewportsLabels = Array.from(
234
- container.querySelectorAll( 'label' )
235
- ).filter( ( label ) => {
236
- const labelText = label.innerHTML;
237
- // Is the label one of those in the custom device set?
238
- return !! customViewportSet.find( ( deviceName ) =>
239
- labelText.includes( deviceName.label )
229
+ const responsiveViewportsLabels = [];
230
+ customViewportSet.forEach( ( { label } ) => {
231
+ responsiveViewportsLabels.push(
232
+ screen.getByRole( 'combobox', {
233
+ name: `${ label } Controls the padding property for ${ label } viewports.`,
234
+ } )
240
235
  );
241
236
  } );
242
237
 
@@ -270,24 +265,14 @@ describe( 'Default and Responsive modes', () => {
270
265
 
271
266
  const { container } = render( <ResponsiveBlockControlConsumer /> );
272
267
 
273
- let defaultControlGroup = container.querySelector(
274
- '.block-editor-responsive-block-control__group:not(.is-responsive)'
275
- );
276
- let responsiveControlGroup = container.querySelector(
277
- '.block-editor-responsive-block-control__group.is-responsive'
278
- );
268
+ let defaultControlGroup = getDefaultControlGroup( container );
269
+ let responsiveControlGroup = getResponsiveControlGroup( container );
279
270
 
280
271
  // Select elements based on what the user can see.
281
- const toggleLabel = Array.from(
282
- container.querySelectorAll( 'label' )
283
- ).find( ( label ) =>
284
- label.innerHTML.includes(
285
- 'Use the same padding on all screensizes'
286
- )
287
- );
288
- const toggleInput = container.querySelector(
289
- `#${ toggleLabel.getAttribute( 'for' ) }`
290
- );
272
+ const toggleInput = screen.getByRole( 'checkbox', {
273
+ name: 'Use the same padding on all screensizes.',
274
+ checked: true,
275
+ } );
291
276
 
292
277
  // Initial mode (default)
293
278
  expect( defaultControlGroup ).not.toBeNull();
@@ -296,12 +281,8 @@ describe( 'Default and Responsive modes', () => {
296
281
  // Toggle to "responsive" mode.
297
282
  await user.click( toggleInput );
298
283
 
299
- defaultControlGroup = container.querySelector(
300
- '.block-editor-responsive-block-control__group:not(.is-responsive)'
301
- );
302
- responsiveControlGroup = container.querySelector(
303
- '.block-editor-responsive-block-control__group.is-responsive'
304
- );
284
+ defaultControlGroup = getDefaultControlGroup( container );
285
+ responsiveControlGroup = getResponsiveControlGroup( container );
305
286
 
306
287
  expect( defaultControlGroup ).toBeNull();
307
288
  expect( responsiveControlGroup ).not.toBeNull();
@@ -309,12 +290,8 @@ describe( 'Default and Responsive modes', () => {
309
290
  // Toggle back to "default" mode.
310
291
  await user.click( toggleInput );
311
292
 
312
- defaultControlGroup = container.querySelector(
313
- '.block-editor-responsive-block-control__group:not(.is-responsive)'
314
- );
315
- responsiveControlGroup = container.querySelector(
316
- '.block-editor-responsive-block-control__group.is-responsive'
317
- );
293
+ defaultControlGroup = getDefaultControlGroup( container );
294
+ responsiveControlGroup = getResponsiveControlGroup( container );
318
295
 
319
296
  expect( defaultControlGroup ).not.toBeNull();
320
297
  expect( responsiveControlGroup ).toBeNull();
@@ -340,7 +317,7 @@ describe( 'Default and Responsive modes', () => {
340
317
  } );
341
318
  } );
342
319
 
343
- const { container } = render(
320
+ render(
344
321
  <ResponsiveBlockControl
345
322
  title="Padding"
346
323
  property="padding"
@@ -351,9 +328,9 @@ describe( 'Default and Responsive modes', () => {
351
328
  );
352
329
 
353
330
  // The user should see "range" controls so we can legitimately query for them here.
354
- const customControls = Array.from(
355
- container.querySelectorAll( 'input[type="range"]' )
356
- );
331
+ const customControls = screen.getAllByRole( 'slider', {
332
+ name: /\w+ screens$/,
333
+ } );
357
334
 
358
335
  // Also called because default control rendeer function is always called
359
336
  // (for convenience) even though it's not displayed in output.
@@ -15,7 +15,7 @@ import { chevronDown } from '@wordpress/icons';
15
15
 
16
16
  const POPOVER_PROPS = {
17
17
  position: 'bottom right',
18
- isAlternate: true,
18
+ variant: 'toolbar',
19
19
  };
20
20
 
21
21
  const FormatToolbar = () => {
@@ -42,7 +42,7 @@ function InlineSelectionToolbar( {
42
42
  function InlineToolbar( { popoverAnchor } ) {
43
43
  return (
44
44
  <Popover
45
- position="top center"
45
+ placement="top"
46
46
  focusOnMount={ false }
47
47
  anchor={ popoverAnchor }
48
48
  className="block-editor-rich-text__inline-format-toolbar"
@@ -255,7 +255,7 @@ export function usePasteHandler( props ) {
255
255
 
256
256
  /**
257
257
  * Normalizes a given string of HTML to remove the Windows-specific "Fragment"
258
- * comments and any preceeding and trailing content.
258
+ * comments and any preceding and trailing content.
259
259
  *
260
260
  * @param {string} html the html to be normalized
261
261
  * @return {string} the normalized html
@@ -16,6 +16,8 @@ export default function AllInputControl( {
16
16
  spacingSizes,
17
17
  type,
18
18
  minimumCustomValue,
19
+ onMouseOver,
20
+ onMouseOut,
19
21
  } ) {
20
22
  const allValue = getAllRawValue( values );
21
23
  const hasValues = isValuesDefined( values );
@@ -35,6 +37,8 @@ export default function AllInputControl( {
35
37
  isMixed={ isMixed }
36
38
  type={ type }
37
39
  minimumCustomValue={ minimumCustomValue }
40
+ onMouseOver={ onMouseOver }
41
+ onMouseOut={ onMouseOut }
38
42
  />
39
43
  );
40
44
  }
@@ -13,6 +13,8 @@ export default function AxialInputControls( {
13
13
  spacingSizes,
14
14
  type,
15
15
  minimumCustomValue,
16
+ onMouseOver,
17
+ onMouseOut,
16
18
  } ) {
17
19
  const createHandleOnChange = ( side ) => ( next ) => {
18
20
  if ( ! onChange ) {
@@ -54,6 +56,8 @@ export default function AxialInputControls( {
54
56
  spacingSizes={ spacingSizes }
55
57
  type={ type }
56
58
  minimumCustomValue={ minimumCustomValue }
59
+ onMouseOver={ onMouseOver }
60
+ onMouseOut={ onMouseOut }
57
61
  />
58
62
  );
59
63
  } ) }
@@ -29,6 +29,8 @@ export default function SpacingSizesControl( {
29
29
  splitOnAxis = false,
30
30
  useSelect,
31
31
  minimumCustomValue = 0,
32
+ onMouseOver,
33
+ onMouseOut,
32
34
  } ) {
33
35
  const spacingSizes = [
34
36
  { name: 0, slug: '0', size: 0 },
@@ -70,6 +72,8 @@ export default function SpacingSizesControl( {
70
72
  useSelect,
71
73
  type: label,
72
74
  minimumCustomValue,
75
+ onMouseOver,
76
+ onMouseOut,
73
77
  };
74
78
 
75
79
  return (
@@ -11,6 +11,8 @@ export default function BoxInputControls( {
11
11
  spacingSizes,
12
12
  type,
13
13
  minimumCustomValue,
14
+ onMouseOver,
15
+ onMouseOut,
14
16
  } ) {
15
17
  // Filter sides if custom configuration provided, maintaining default order.
16
18
  const filteredSides = sides?.length
@@ -38,6 +40,8 @@ export default function BoxInputControls( {
38
40
  spacingSizes={ spacingSizes }
39
41
  type={ type }
40
42
  minimumCustomValue={ minimumCustomValue }
43
+ onMouseOver={ onMouseOver }
44
+ onMouseOut={ onMouseOut }
41
45
  />
42
46
  );
43
47
  } ) }
@@ -51,6 +51,8 @@ export default function SpacingInputControl( {
51
51
  isMixed = false,
52
52
  type,
53
53
  minimumCustomValue,
54
+ onMouseOver,
55
+ onMouseOut,
54
56
  } ) {
55
57
  // Treat value as a preset value if the passed in value matches the value of one of the spacingSizes.
56
58
  value = getPresetValueFromCustomValue( value, spacingSizes );
@@ -218,6 +220,8 @@ export default function SpacingInputControl( {
218
220
  { showCustomValueControl && (
219
221
  <>
220
222
  <UnitControl
223
+ onMouseOver={ onMouseOver }
224
+ onMouseOut={ onMouseOut }
221
225
  onChange={ ( newSize ) =>
222
226
  onChange( getNewCustomValue( newSize ) )
223
227
  }
@@ -229,11 +233,12 @@ export default function SpacingInputControl( {
229
233
  label={ ariaLabel }
230
234
  hideLabelFromVision={ true }
231
235
  className="components-spacing-sizes-control__custom-value-input"
232
- style={ { gridColumn: '1' } }
233
236
  size={ '__unstable-large' }
234
237
  />
235
238
 
236
239
  <RangeControl
240
+ onMouseOver={ onMouseOver }
241
+ onMouseOut={ onMouseOut }
237
242
  value={ customRangeValue }
238
243
  min={ 0 }
239
244
  max={ CUSTOM_VALUE_SETTINGS[ selectedUnit ]?.max ?? 10 }
@@ -248,6 +253,8 @@ export default function SpacingInputControl( {
248
253
  ) }
249
254
  { showRangeControl && ! showCustomValueControl && (
250
255
  <RangeControl
256
+ onMouseOver={ onMouseOver }
257
+ onMouseOut={ onMouseOut }
251
258
  className="components-spacing-sizes-control__range-control"
252
259
  value={ currentValue }
253
260
  onChange={ ( newSize ) =>
@@ -293,6 +300,8 @@ export default function SpacingInputControl( {
293
300
  hideLabelFromVision={ true }
294
301
  __nextUnconstrainedWidth={ true }
295
302
  size={ '__unstable-large' }
303
+ onMouseOver={ onMouseOver }
304
+ onMouseOut={ onMouseOut }
296
305
  />
297
306
  ) }
298
307
  </>
@@ -91,6 +91,7 @@
91
91
  .components-spacing-sizes-control__custom-value-input {
92
92
  width: 124px;
93
93
  margin-top: 8px;
94
+ grid-column: 1;
94
95
  }
95
96
 
96
97
  .components-range-control {
@@ -543,7 +543,7 @@ class URLInput extends Component {
543
543
  !! suggestions.length
544
544
  ) {
545
545
  return (
546
- <Popover position="bottom" focusOnMount={ false }>
546
+ <Popover placement="bottom" focusOnMount={ false }>
547
547
  <div
548
548
  { ...suggestionsListProps }
549
549
  className={ classnames(
@@ -94,13 +94,13 @@ class MyURLPopover extends Component {
94
94
 
95
95
  The component accepts the following props. Any other props are passed through to the underlying `Popover` component ([refer to props documentation](/packages/components/src/popover/README.md)).
96
96
 
97
- ### position
97
+ ### placement
98
98
 
99
- Where the Popover should be positioned relative to its parent. Defaults to "bottom center".
99
+ Where the Popover should be positioned relative to its parent. Defaults to "bottom".
100
100
 
101
101
  - Type: `String`
102
102
  - Required: No
103
- - Default: "bottom center"
103
+ - Default: "bottom"
104
104
 
105
105
  ### focusOnMount
106
106
 
@@ -194,3 +194,12 @@ Reference passed to the auto complete element of the ([URLInput component](/pack
194
194
 
195
195
  - Type: `Object`
196
196
  - Required: no
197
+
198
+ ### position
199
+
200
+ _Note: this prop is deprecated. Please use the `placement` prop instead._
201
+
202
+ Where the Popover should be positioned relative to its parent.
203
+
204
+ - Type: `String`
205
+ - Required: No
@@ -3,8 +3,13 @@
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import { useState } from '@wordpress/element';
6
- import { Button, Popover } from '@wordpress/components';
6
+ import {
7
+ Button,
8
+ Popover,
9
+ __experimentalPopoverPositionToPlacement as positionToPlacement,
10
+ } from '@wordpress/components';
7
11
  import { chevronDown } from '@wordpress/icons';
12
+ import deprecated from '@wordpress/deprecated';
8
13
 
9
14
  /**
10
15
  * Internal dependencies
@@ -12,14 +17,39 @@ import { chevronDown } from '@wordpress/icons';
12
17
  import LinkViewer from './link-viewer';
13
18
  import LinkEditor from './link-editor';
14
19
 
20
+ const DEFAULT_PLACEMENT = 'bottom';
21
+
15
22
  function URLPopover( {
16
23
  additionalControls,
17
24
  children,
18
25
  renderSettings,
19
- position = 'bottom center',
26
+ // The DEFAULT_PLACEMENT value is assigned inside the function's body
27
+ placement,
20
28
  focusOnMount = 'firstElement',
29
+ // Deprecated
30
+ position,
31
+ // Rest
21
32
  ...popoverProps
22
33
  } ) {
34
+ if ( position !== undefined ) {
35
+ deprecated( '`position` prop in wp.blockEditor.URLPopover', {
36
+ since: '6.2',
37
+ alternative: '`placement` prop',
38
+ } );
39
+ }
40
+
41
+ // Compute popover's placement:
42
+ // - give priority to `placement` prop, if defined
43
+ // - otherwise, compute it from the legacy `position` prop (if defined)
44
+ // - finally, fallback to the DEFAULT_PLACEMENT.
45
+ let computedPlacement;
46
+ if ( placement !== undefined ) {
47
+ computedPlacement = placement;
48
+ } else if ( position !== undefined ) {
49
+ computedPlacement = positionToPlacement( position );
50
+ }
51
+ computedPlacement = computedPlacement || DEFAULT_PLACEMENT;
52
+
23
53
  const [ isSettingsExpanded, setIsSettingsExpanded ] = useState( false );
24
54
 
25
55
  const showSettings = !! renderSettings && isSettingsExpanded;
@@ -32,7 +62,7 @@ function URLPopover( {
32
62
  <Popover
33
63
  className="block-editor-url-popover"
34
64
  focusOnMount={ focusOnMount }
35
- position={ position }
65
+ placement={ computedPlacement }
36
66
  shift
37
67
  { ...popoverProps }
38
68
  >
@@ -18,7 +18,13 @@ import {
18
18
  import { useBlockEditContext } from '../block-edit';
19
19
  import { store as blockEditorStore } from '../../store';
20
20
 
21
- const blockedPaths = [ 'color', 'border', 'typography', 'spacing' ];
21
+ const blockedPaths = [
22
+ 'color',
23
+ 'border',
24
+ 'dimensions',
25
+ 'typography',
26
+ 'spacing',
27
+ ];
22
28
 
23
29
  const deprecatedFlags = {
24
30
  'color.palette': ( settings ) => settings.colors,
@@ -272,6 +272,7 @@ export function BorderPanel( props ) {
272
272
  onChange={ onBorderChange }
273
273
  popoverOffset={ 40 }
274
274
  popoverPlacement="left-start"
275
+ size="__unstable-large"
275
276
  value={ hydratedBorder }
276
277
  __experimentalHasMultipleOrigins={ true }
277
278
  __experimentalIsRenderedInSidebar={ true }
@@ -29,7 +29,19 @@ export default function ColorPanel( {
29
29
  const definedColors = settings.filter( ( setting ) => setting?.colorValue );
30
30
 
31
31
  useEffect( () => {
32
- if ( ! enableContrastChecking || ! definedColors.length ) {
32
+ if ( ! enableContrastChecking ) {
33
+ return;
34
+ }
35
+ if ( ! definedColors.length ) {
36
+ if ( detectedBackgroundColor ) {
37
+ setDetectedBackgroundColor();
38
+ }
39
+ if ( detectedColor ) {
40
+ setDetectedColor();
41
+ }
42
+ if ( detectedLinkColor ) {
43
+ setDetectedColor();
44
+ }
33
45
  return;
34
46
  }
35
47
 
@@ -459,6 +459,8 @@ export function ColorEdit( props ) {
459
459
  Platform.OS === 'web' &&
460
460
  ! gradient &&
461
461
  ! style?.color?.gradient &&
462
+ hasBackgroundColor &&
463
+ ( hasLinkColor || hasTextColor ) &&
462
464
  // Contrast checking is enabled by default.
463
465
  // Deactivating it requires `enableContrastChecker` to have
464
466
  // an explicit value of `false`.