@wordpress/block-editor 10.2.0 → 10.4.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 (482) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +41 -0
  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-draggable/draggable-chip.js +4 -2
  12. package/build/components/block-draggable/draggable-chip.js.map +1 -1
  13. package/build/components/block-edit/index.js +4 -2
  14. package/build/components/block-edit/index.js.map +1 -1
  15. package/build/components/block-inspector/index.js +4 -4
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/block-list-compact.native.js +1 -0
  18. package/build/components/block-list/block-list-compact.native.js.map +1 -1
  19. package/build/components/block-list/block.js +75 -15
  20. package/build/components/block-list/block.js.map +1 -1
  21. package/build/components/block-list/block.native.js +79 -12
  22. package/build/components/block-list/block.native.js.map +1 -1
  23. package/build/components/block-list/use-in-between-inserter.js +7 -23
  24. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  25. package/build/components/block-lock/modal.js +9 -6
  26. package/build/components/block-lock/modal.js.map +1 -1
  27. package/build/components/block-parent-selector/index.js +3 -3
  28. package/build/components/block-parent-selector/index.js.map +1 -1
  29. package/build/components/block-patterns-list/index.js +5 -4
  30. package/build/components/block-patterns-list/index.js.map +1 -1
  31. package/build/components/block-popover/drop-zone.js +85 -0
  32. package/build/components/block-popover/drop-zone.js.map +1 -0
  33. package/build/components/block-popover/inbetween.js +2 -1
  34. package/build/components/block-popover/inbetween.js.map +1 -1
  35. package/build/components/block-popover/index.js +4 -2
  36. package/build/components/block-popover/index.js.map +1 -1
  37. package/build/components/block-preview/auto.js +2 -2
  38. package/build/components/block-preview/auto.js.map +1 -1
  39. package/build/components/block-preview/index.js +8 -13
  40. package/build/components/block-preview/index.js.map +1 -1
  41. package/build/components/block-preview/live.js +3 -7
  42. package/build/components/block-preview/live.js.map +1 -1
  43. package/build/components/block-selection-clearer/index.js +9 -1
  44. package/build/components/block-selection-clearer/index.js.map +1 -1
  45. package/build/components/block-settings-menu/block-settings-dropdown.js +19 -19
  46. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  47. package/build/components/block-styles/index.js +18 -42
  48. package/build/components/block-styles/index.js.map +1 -1
  49. package/build/components/block-switcher/index.js +2 -8
  50. package/build/components/block-switcher/index.js.map +1 -1
  51. package/build/components/block-switcher/preview-block-popover.js +1 -1
  52. package/build/components/block-switcher/preview-block-popover.js.map +1 -1
  53. package/build/components/block-toolbar/index.js +4 -4
  54. package/build/components/block-toolbar/index.js.map +1 -1
  55. package/build/components/block-tools/back-compat.js +2 -1
  56. package/build/components/block-tools/back-compat.js.map +1 -1
  57. package/build/components/block-tools/insertion-point.js +56 -16
  58. package/build/components/block-tools/insertion-point.js.map +1 -1
  59. package/build/components/block-tools/selected-block-popover.js +15 -3
  60. package/build/components/block-tools/selected-block-popover.js.map +1 -1
  61. package/build/components/block-vertical-alignment-control/ui.js +1 -1
  62. package/build/components/block-vertical-alignment-control/ui.js.map +1 -1
  63. package/build/components/border-radius-control/all-input-control.js +2 -1
  64. package/build/components/border-radius-control/all-input-control.js.map +1 -1
  65. package/build/components/border-radius-control/index.js +2 -1
  66. package/build/components/border-radius-control/index.js.map +1 -1
  67. package/build/components/border-radius-control/input-controls.js +2 -1
  68. package/build/components/border-radius-control/input-controls.js.map +1 -1
  69. package/build/components/colors-gradients/control.js +1 -1
  70. package/build/components/colors-gradients/control.js.map +1 -1
  71. package/build/components/colors-gradients/panel-color-gradient-settings.js +2 -2
  72. package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  73. package/build/components/duotone-control/index.js +1 -1
  74. package/build/components/duotone-control/index.js.map +1 -1
  75. package/build/components/font-sizes/fluid-utils.js +256 -0
  76. package/build/components/font-sizes/fluid-utils.js.map +1 -0
  77. package/build/components/font-sizes/index.js +8 -0
  78. package/build/components/font-sizes/index.js.map +1 -1
  79. package/build/components/font-sizes/with-font-sizes.js +1 -1
  80. package/build/components/font-sizes/with-font-sizes.js.map +1 -1
  81. package/build/components/iframe/index.js +1 -1
  82. package/build/components/iframe/index.js.map +1 -1
  83. package/build/components/image-editor/constants.js +1 -1
  84. package/build/components/image-editor/constants.js.map +1 -1
  85. package/build/components/index.js +0 -9
  86. package/build/components/index.js.map +1 -1
  87. package/build/components/inner-blocks/index.js +6 -2
  88. package/build/components/inner-blocks/index.js.map +1 -1
  89. package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -2
  90. package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  91. package/build/components/inserter/block-patterns-tab.js +151 -78
  92. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  93. package/build/components/inserter/hooks/use-insertion-point.js +2 -7
  94. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  95. package/build/components/inserter/menu.js +14 -3
  96. package/build/components/inserter/menu.js.map +1 -1
  97. package/build/components/inserter/search-items.js +23 -2
  98. package/build/components/inserter/search-items.js.map +1 -1
  99. package/build/components/inserter-draggable-blocks/index.js +4 -2
  100. package/build/components/inserter-draggable-blocks/index.js.map +1 -1
  101. package/build/components/line-height-control/index.js +2 -1
  102. package/build/components/line-height-control/index.js.map +1 -1
  103. package/build/components/list-view/drop-indicator.js +2 -1
  104. package/build/components/list-view/drop-indicator.js.map +1 -1
  105. package/build/components/list-view/use-list-view-drop-zone.js +1 -14
  106. package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
  107. package/build/components/media-replace-flow/index.js +1 -1
  108. package/build/components/media-replace-flow/index.js.map +1 -1
  109. package/build/components/preview-options/index.js +2 -3
  110. package/build/components/preview-options/index.js.map +1 -1
  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 +45 -8
  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/use-block-drop-zone/index.js +98 -57
  130. package/build/components/use-block-drop-zone/index.js.map +1 -1
  131. package/build/components/use-on-block-drop/index.js +12 -12
  132. package/build/components/use-on-block-drop/index.js.map +1 -1
  133. package/build/components/use-on-block-drop/types.js +6 -0
  134. package/build/components/use-on-block-drop/types.js.map +1 -0
  135. package/build/hooks/align.js +1 -3
  136. package/build/hooks/align.js.map +1 -1
  137. package/build/hooks/align.native.js +1 -7
  138. package/build/hooks/align.native.js.map +1 -1
  139. package/build/hooks/border.js +1 -0
  140. package/build/hooks/border.js.map +1 -1
  141. package/build/hooks/dimensions.js +32 -4
  142. package/build/hooks/dimensions.js.map +1 -1
  143. package/build/hooks/font-size.js +61 -0
  144. package/build/hooks/font-size.js.map +1 -1
  145. package/build/hooks/layout.js +4 -3
  146. package/build/hooks/layout.js.map +1 -1
  147. package/build/hooks/margin.js +24 -17
  148. package/build/hooks/margin.js.map +1 -1
  149. package/build/hooks/padding.js +20 -12
  150. package/build/hooks/padding.js.map +1 -1
  151. package/build/hooks/style.js +126 -4
  152. package/build/hooks/style.js.map +1 -1
  153. package/build/hooks/use-typography-props.js +17 -3
  154. package/build/hooks/use-typography-props.js.map +1 -1
  155. package/build/hooks/utils.js +8 -7
  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 +1 -1
  160. package/build/layouts/flex.js.map +1 -1
  161. package/build/store/actions.js +63 -45
  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/defaults.js +3 -0
  166. package/build/store/defaults.js.map +1 -1
  167. package/build/store/reducer.js +31 -15
  168. package/build/store/reducer.js.map +1 -1
  169. package/build/store/selectors.js +46 -29
  170. package/build/store/selectors.js.map +1 -1
  171. package/build/utils/math.js +14 -0
  172. package/build/utils/math.js.map +1 -1
  173. package/build/utils/pre-parse-patterns.js +19 -2
  174. package/build/utils/pre-parse-patterns.js.map +1 -1
  175. package/build-module/components/alignment-control/ui.js +1 -1
  176. package/build-module/components/alignment-control/ui.js.map +1 -1
  177. package/build-module/components/block-alignment-control/constants.js +1 -1
  178. package/build-module/components/block-alignment-control/constants.js.map +1 -1
  179. package/build-module/components/block-alignment-matrix-control/index.js +1 -1
  180. package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
  181. package/build-module/components/block-compare/index.js +2 -3
  182. package/build-module/components/block-compare/index.js.map +1 -1
  183. package/build-module/components/block-draggable/draggable-chip.js +7 -3
  184. package/build-module/components/block-draggable/draggable-chip.js.map +1 -1
  185. package/build-module/components/block-edit/index.js +4 -2
  186. package/build-module/components/block-edit/index.js.map +1 -1
  187. package/build-module/components/block-inspector/index.js +4 -4
  188. package/build-module/components/block-inspector/index.js.map +1 -1
  189. package/build-module/components/block-list/block-list-compact.native.js +1 -0
  190. package/build-module/components/block-list/block-list-compact.native.js.map +1 -1
  191. package/build-module/components/block-list/block.js +75 -15
  192. package/build-module/components/block-list/block.js.map +1 -1
  193. package/build-module/components/block-list/block.native.js +80 -13
  194. package/build-module/components/block-list/block.native.js.map +1 -1
  195. package/build-module/components/block-list/use-in-between-inserter.js +8 -24
  196. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  197. package/build-module/components/block-lock/modal.js +10 -8
  198. package/build-module/components/block-lock/modal.js.map +1 -1
  199. package/build-module/components/block-parent-selector/index.js +3 -3
  200. package/build-module/components/block-parent-selector/index.js.map +1 -1
  201. package/build-module/components/block-patterns-list/index.js +5 -4
  202. package/build-module/components/block-patterns-list/index.js.map +1 -1
  203. package/build-module/components/block-popover/drop-zone.js +70 -0
  204. package/build-module/components/block-popover/drop-zone.js.map +1 -0
  205. package/build-module/components/block-popover/inbetween.js +2 -1
  206. package/build-module/components/block-popover/inbetween.js.map +1 -1
  207. package/build-module/components/block-popover/index.js +4 -2
  208. package/build-module/components/block-popover/index.js.map +1 -1
  209. package/build-module/components/block-preview/auto.js +1 -1
  210. package/build-module/components/block-preview/auto.js.map +1 -1
  211. package/build-module/components/block-preview/index.js +8 -12
  212. package/build-module/components/block-preview/index.js.map +1 -1
  213. package/build-module/components/block-preview/live.js +3 -6
  214. package/build-module/components/block-preview/live.js.map +1 -1
  215. package/build-module/components/block-selection-clearer/index.js +9 -1
  216. package/build-module/components/block-selection-clearer/index.js.map +1 -1
  217. package/build-module/components/block-settings-menu/block-settings-dropdown.js +20 -19
  218. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  219. package/build-module/components/block-styles/index.js +19 -44
  220. package/build-module/components/block-styles/index.js.map +1 -1
  221. package/build-module/components/block-switcher/index.js +2 -7
  222. package/build-module/components/block-switcher/index.js.map +1 -1
  223. package/build-module/components/block-switcher/preview-block-popover.js +1 -1
  224. package/build-module/components/block-switcher/preview-block-popover.js.map +1 -1
  225. package/build-module/components/block-toolbar/index.js +4 -4
  226. package/build-module/components/block-toolbar/index.js.map +1 -1
  227. package/build-module/components/block-tools/back-compat.js +2 -1
  228. package/build-module/components/block-tools/back-compat.js.map +1 -1
  229. package/build-module/components/block-tools/insertion-point.js +54 -16
  230. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  231. package/build-module/components/block-tools/selected-block-popover.js +15 -3
  232. package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
  233. package/build-module/components/block-vertical-alignment-control/ui.js +1 -1
  234. package/build-module/components/block-vertical-alignment-control/ui.js.map +1 -1
  235. package/build-module/components/border-radius-control/all-input-control.js +2 -1
  236. package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
  237. package/build-module/components/border-radius-control/index.js +2 -1
  238. package/build-module/components/border-radius-control/index.js.map +1 -1
  239. package/build-module/components/border-radius-control/input-controls.js +2 -1
  240. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  241. package/build-module/components/colors-gradients/control.js +2 -2
  242. package/build-module/components/colors-gradients/control.js.map +1 -1
  243. package/build-module/components/colors-gradients/panel-color-gradient-settings.js +3 -3
  244. package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
  245. package/build-module/components/duotone-control/index.js +1 -1
  246. package/build-module/components/duotone-control/index.js.map +1 -1
  247. package/build-module/components/font-sizes/fluid-utils.js +245 -0
  248. package/build-module/components/font-sizes/fluid-utils.js.map +1 -0
  249. package/build-module/components/font-sizes/index.js +1 -0
  250. package/build-module/components/font-sizes/index.js.map +1 -1
  251. package/build-module/components/font-sizes/with-font-sizes.js +2 -2
  252. package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
  253. package/build-module/components/iframe/index.js +1 -1
  254. package/build-module/components/iframe/index.js.map +1 -1
  255. package/build-module/components/image-editor/constants.js +1 -1
  256. package/build-module/components/image-editor/constants.js.map +1 -1
  257. package/build-module/components/index.js +0 -1
  258. package/build-module/components/index.js.map +1 -1
  259. package/build-module/components/inner-blocks/index.js +6 -2
  260. package/build-module/components/inner-blocks/index.js.map +1 -1
  261. package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -2
  262. package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
  263. package/build-module/components/inserter/block-patterns-tab.js +148 -81
  264. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  265. package/build-module/components/inserter/hooks/use-insertion-point.js +2 -6
  266. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  267. package/build-module/components/inserter/menu.js +10 -3
  268. package/build-module/components/inserter/menu.js.map +1 -1
  269. package/build-module/components/inserter/search-items.js +23 -3
  270. package/build-module/components/inserter/search-items.js.map +1 -1
  271. package/build-module/components/inserter-draggable-blocks/index.js +4 -2
  272. package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
  273. package/build-module/components/line-height-control/index.js +2 -1
  274. package/build-module/components/line-height-control/index.js.map +1 -1
  275. package/build-module/components/list-view/drop-indicator.js +2 -1
  276. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  277. package/build-module/components/list-view/use-list-view-drop-zone.js +1 -14
  278. package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
  279. package/build-module/components/media-replace-flow/index.js +1 -1
  280. package/build-module/components/media-replace-flow/index.js.map +1 -1
  281. package/build-module/components/preview-options/index.js +2 -3
  282. package/build-module/components/preview-options/index.js.map +1 -1
  283. package/build-module/components/rich-text/format-toolbar/index.js +1 -1
  284. package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
  285. package/build-module/components/rich-text/format-toolbar-container.js +1 -1
  286. package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
  287. package/build-module/components/rich-text/use-paste-handler.js +1 -1
  288. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  289. package/build-module/components/spacing-sizes-control/all-input-control.js +6 -2
  290. package/build-module/components/spacing-sizes-control/all-input-control.js.map +1 -1
  291. package/build-module/components/spacing-sizes-control/axial-input-controls.js +6 -2
  292. package/build-module/components/spacing-sizes-control/axial-input-controls.js.map +1 -1
  293. package/build-module/components/spacing-sizes-control/index.js +6 -2
  294. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  295. package/build-module/components/spacing-sizes-control/input-controls.js +6 -2
  296. package/build-module/components/spacing-sizes-control/input-controls.js.map +1 -1
  297. package/build-module/components/spacing-sizes-control/spacing-input-control.js +44 -8
  298. package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
  299. package/build-module/components/url-input/index.js +1 -1
  300. package/build-module/components/url-input/index.js.map +1 -1
  301. package/build-module/components/use-block-drop-zone/index.js +98 -58
  302. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  303. package/build-module/components/use-on-block-drop/index.js +12 -12
  304. package/build-module/components/use-on-block-drop/index.js.map +1 -1
  305. package/build-module/components/use-on-block-drop/types.js +2 -0
  306. package/build-module/components/use-on-block-drop/types.js.map +1 -0
  307. package/build-module/hooks/align.js +1 -2
  308. package/build-module/hooks/align.js.map +1 -1
  309. package/build-module/hooks/align.native.js +1 -6
  310. package/build-module/hooks/align.native.js.map +1 -1
  311. package/build-module/hooks/border.js +1 -0
  312. package/build-module/hooks/border.js.map +1 -1
  313. package/build-module/hooks/dimensions.js +32 -4
  314. package/build-module/hooks/dimensions.js.map +1 -1
  315. package/build-module/hooks/font-size.js +60 -1
  316. package/build-module/hooks/font-size.js.map +1 -1
  317. package/build-module/hooks/layout.js +5 -4
  318. package/build-module/hooks/layout.js.map +1 -1
  319. package/build-module/hooks/margin.js +25 -18
  320. package/build-module/hooks/margin.js.map +1 -1
  321. package/build-module/hooks/padding.js +21 -13
  322. package/build-module/hooks/padding.js.map +1 -1
  323. package/build-module/hooks/style.js +124 -3
  324. package/build-module/hooks/style.js.map +1 -1
  325. package/build-module/hooks/use-typography-props.js +17 -4
  326. package/build-module/hooks/use-typography-props.js.map +1 -1
  327. package/build-module/hooks/utils.js +8 -8
  328. package/build-module/hooks/utils.js.map +1 -1
  329. package/build-module/layouts/constrained.js +0 -1
  330. package/build-module/layouts/constrained.js.map +1 -1
  331. package/build-module/layouts/flex.js +1 -1
  332. package/build-module/layouts/flex.js.map +1 -1
  333. package/build-module/store/actions.js +59 -42
  334. package/build-module/store/actions.js.map +1 -1
  335. package/build-module/store/array.js +1 -6
  336. package/build-module/store/array.js.map +1 -1
  337. package/build-module/store/defaults.js +3 -0
  338. package/build-module/store/defaults.js.map +1 -1
  339. package/build-module/store/reducer.js +32 -16
  340. package/build-module/store/reducer.js.map +1 -1
  341. package/build-module/store/selectors.js +47 -30
  342. package/build-module/store/selectors.js.map +1 -1
  343. package/build-module/utils/math.js +12 -0
  344. package/build-module/utils/math.js.map +1 -1
  345. package/build-module/utils/pre-parse-patterns.js +19 -2
  346. package/build-module/utils/pre-parse-patterns.js.map +1 -1
  347. package/build-style/style-rtl.css +292 -206
  348. package/build-style/style.css +288 -202
  349. package/package.json +29 -28
  350. package/src/components/alignment-control/ui.js +1 -1
  351. package/src/components/block-alignment-control/constants.js +1 -1
  352. package/src/components/block-alignment-matrix-control/index.js +1 -1
  353. package/src/components/block-breadcrumb/test/__snapshots__/index.js.snap +13 -11
  354. package/src/components/block-breadcrumb/test/index.js +2 -2
  355. package/src/components/block-compare/index.js +3 -2
  356. package/src/components/block-draggable/draggable-chip.js +4 -2
  357. package/src/components/block-edit/index.js +2 -1
  358. package/src/components/block-inspector/index.js +8 -7
  359. package/src/components/block-list/block-list-compact.native.js +1 -0
  360. package/src/components/block-list/block.js +113 -7
  361. package/src/components/block-list/block.native.js +123 -9
  362. package/src/components/block-list/style.scss +93 -126
  363. package/src/components/block-list/use-in-between-inserter.js +8 -19
  364. package/src/components/block-lock/modal.js +12 -7
  365. package/src/components/block-mover/stories/index.js +1 -1
  366. package/src/components/block-mover/style.scss +35 -1
  367. package/src/components/block-parent-selector/index.js +3 -3
  368. package/src/components/block-patterns-list/index.js +9 -5
  369. package/src/components/block-patterns-list/style.scss +7 -3
  370. package/src/components/block-popover/README.md +8 -0
  371. package/src/components/block-popover/drop-zone.js +63 -0
  372. package/src/components/block-popover/inbetween.js +1 -0
  373. package/src/components/block-popover/index.js +3 -1
  374. package/src/components/block-popover/style.scss +17 -5
  375. package/src/components/block-preview/auto.js +1 -1
  376. package/src/components/block-preview/index.js +15 -11
  377. package/src/components/block-preview/live.js +2 -7
  378. package/src/components/block-preview/test/index.js +1 -7
  379. package/src/components/block-selection-clearer/index.js +7 -2
  380. package/src/components/block-selection-clearer/test/index.js +118 -0
  381. package/src/components/block-settings-menu/block-settings-dropdown.js +29 -18
  382. package/src/components/block-settings-menu/test/block-mode-toggle.js +17 -17
  383. package/src/components/block-styles/index.js +26 -49
  384. package/src/components/block-switcher/index.js +2 -7
  385. package/src/components/block-switcher/preview-block-popover.js +1 -1
  386. package/src/components/block-switcher/test/index.js +2 -2
  387. package/src/components/block-toolbar/index.js +4 -6
  388. package/src/components/block-toolbar/style.scss +38 -14
  389. package/src/components/block-tools/back-compat.js +1 -0
  390. package/src/components/block-tools/insertion-point.js +49 -15
  391. package/src/components/block-tools/selected-block-popover.js +14 -1
  392. package/src/components/block-variation-picker/README.md +1 -1
  393. package/src/components/block-vertical-alignment-control/ui.js +1 -1
  394. package/src/components/border-radius-control/all-input-control.js +1 -0
  395. package/src/components/border-radius-control/index.js +1 -0
  396. package/src/components/border-radius-control/input-controls.js +1 -0
  397. package/src/components/border-radius-control/style.scss +15 -24
  398. package/src/components/button-block-appender/style.scss +4 -2
  399. package/src/components/color-palette/test/__snapshots__/control.js.snap +86 -104
  400. package/src/components/color-palette/test/control.js +11 -15
  401. package/src/components/colors-gradients/control.js +2 -2
  402. package/src/components/colors-gradients/panel-color-gradient-settings.js +3 -4
  403. package/src/components/colors-gradients/test/control.js +49 -77
  404. package/src/components/duotone-control/index.js +1 -1
  405. package/src/components/font-sizes/fluid-utils.js +296 -0
  406. package/src/components/font-sizes/index.js +1 -0
  407. package/src/components/font-sizes/test/fluid-utils.js +168 -0
  408. package/src/components/font-sizes/with-font-sizes.js +2 -3
  409. package/src/components/iframe/index.js +1 -1
  410. package/src/components/image-editor/constants.js +1 -1
  411. package/src/components/image-size-control/test/index.js +47 -60
  412. package/src/components/index.js +0 -1
  413. package/src/components/inner-blocks/index.js +5 -1
  414. package/src/components/inner-blocks/test/index.js +4 -0
  415. package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -2
  416. package/src/components/inserter/block-patterns-tab.js +232 -98
  417. package/src/components/inserter/hooks/use-insertion-point.js +3 -11
  418. package/src/components/inserter/menu.js +15 -2
  419. package/src/components/inserter/search-items.js +23 -3
  420. package/src/components/inserter/style.scss +94 -9
  421. package/src/components/inserter/test/reusable-blocks-tab.js +6 -6
  422. package/src/components/inserter/test/search-items.js +6 -0
  423. package/src/components/inserter-draggable-blocks/index.js +12 -2
  424. package/src/components/inserter-list-item/style.scss +22 -1
  425. package/src/components/letter-spacing-control/README.md +55 -0
  426. package/src/components/line-height-control/index.js +1 -0
  427. package/src/components/link-control/README.md +3 -3
  428. package/src/components/link-control/test/index.js +1 -1
  429. package/src/components/list-view/drop-indicator.js +1 -0
  430. package/src/components/list-view/style.scss +1 -36
  431. package/src/components/list-view/use-list-view-drop-zone.js +4 -18
  432. package/src/components/media-replace-flow/index.js +1 -1
  433. package/src/components/media-replace-flow/test/index.js +69 -51
  434. package/src/components/panel-color-settings/test/index.js +4 -4
  435. package/src/components/preview-options/index.js +2 -2
  436. package/src/components/preview-options/style.scss +1 -1
  437. package/src/components/provider/test/use-block-sync.js +131 -165
  438. package/src/components/responsive-block-control/test/index.js +4 -4
  439. package/src/components/rich-text/format-toolbar/index.js +1 -1
  440. package/src/components/rich-text/format-toolbar-container.js +1 -1
  441. package/src/components/rich-text/use-paste-handler.js +1 -1
  442. package/src/components/spacing-sizes-control/all-input-control.js +4 -0
  443. package/src/components/spacing-sizes-control/axial-input-controls.js +4 -0
  444. package/src/components/spacing-sizes-control/index.js +4 -0
  445. package/src/components/spacing-sizes-control/input-controls.js +4 -0
  446. package/src/components/spacing-sizes-control/spacing-input-control.js +26 -3
  447. package/src/components/spacing-sizes-control/style.scss +27 -19
  448. package/src/components/url-input/index.js +1 -1
  449. package/src/components/use-block-drop-zone/index.js +136 -79
  450. package/src/components/use-block-drop-zone/test/index.js +333 -81
  451. package/src/components/use-on-block-drop/index.js +11 -12
  452. package/src/components/use-on-block-drop/types.ts +1 -0
  453. package/src/hooks/align.js +3 -2
  454. package/src/hooks/align.native.js +5 -8
  455. package/src/hooks/border.js +1 -0
  456. package/src/hooks/dimensions.js +32 -5
  457. package/src/hooks/font-size.js +76 -0
  458. package/src/hooks/layout.js +7 -9
  459. package/src/hooks/margin.js +20 -14
  460. package/src/hooks/padding.js +20 -16
  461. package/src/hooks/style.js +122 -3
  462. package/src/hooks/test/align.js +96 -72
  463. package/src/hooks/test/style.js +206 -1
  464. package/src/hooks/test/use-typography-props.js +22 -0
  465. package/src/hooks/use-typography-props.js +18 -3
  466. package/src/hooks/utils.js +10 -7
  467. package/src/layouts/constrained.js +0 -1
  468. package/src/layouts/flex.js +1 -1
  469. package/src/store/actions.js +24 -12
  470. package/src/store/array.js +1 -6
  471. package/src/store/defaults.js +3 -0
  472. package/src/store/reducer.js +31 -24
  473. package/src/store/selectors.js +28 -21
  474. package/src/store/test/actions.js +0 -9
  475. package/src/store/test/selectors.js +1 -1
  476. package/src/utils/math.js +17 -0
  477. package/src/utils/pre-parse-patterns.js +12 -7
  478. package/build/components/inserter/pattern-panel.js +0 -87
  479. package/build/components/inserter/pattern-panel.js.map +0 -1
  480. package/build-module/components/inserter/pattern-panel.js +0 -74
  481. package/build-module/components/inserter/pattern-panel.js.map +0 -1
  482. package/src/components/inserter/pattern-panel.js +0 -93
@@ -8,8 +8,19 @@
8
8
  * Cross-Block Selection
9
9
  */
10
10
 
11
+ @keyframes selection-overlay__fade-in-animation {
12
+ from {
13
+ opacity: 0;
14
+ }
15
+ to {
16
+ opacity: 0.4;
17
+ }
18
+ }
19
+
11
20
  // Note to developers refactoring this, please test navigation mode, and
12
21
  // multi selection and hovering the block switcher to highlight the block.
22
+ // Also be sure to test partial selections in Safari, as it draws the
23
+ // selection marker with an entirely different model than Blink.
13
24
  .block-editor-block-list__layout {
14
25
  position: relative;
15
26
 
@@ -19,63 +30,93 @@
19
30
  background: transparent;
20
31
  }
21
32
 
22
- // The primary indicator of selection in text is the native selection marker.
23
- // When selecting multiple blocks, we provide an additional selection indicator.
24
- .block-editor-block-list__block.is-multi-selected:not(.is-partially-selected),
25
- .block-editor-block-list__block.is-highlighted,
26
- .block-editor-block-list__block.is-highlighted ~ .is-multi-selected {
33
+ .has-multi-selection &::selection {
34
+ background: transparent;
35
+ }
36
+
37
+ // Block multi selection
38
+ .block-editor-block-list__block.is-multi-selected:not(.is-partially-selected) {
39
+ // Apply a rounded radius to the entire block.
40
+ border-radius: $radius-block-ui;
41
+ overflow: hidden;
42
+
43
+ // Hide the native selection indicator, for the selection, and children.
44
+ &::selection,
45
+ & ::selection {
46
+ background: transparent;
47
+ }
48
+
49
+ // Draw a spot color overlay.
27
50
  &::after {
28
- // Show selection borders around every non-nested block's actual footprint.
51
+ content: "";
29
52
  position: absolute;
30
53
  z-index: 1;
31
54
  pointer-events: none;
55
+ top: 0;
56
+ right: 0;
57
+ bottom: 0;
58
+ left: 0;
59
+ background: var(--wp-admin-theme-color);
60
+ opacity: 0.4;
61
+ border-radius: $radius-block-ui;
62
+
63
+ // Animate.
64
+ animation: selection-overlay__fade-in-animation 0.1s ease-out;
65
+ animation-fill-mode: forwards;
66
+ @include reduce-motion("animation");
67
+
68
+ // Show outline in high contrast mode.
69
+ outline: 2px solid transparent;
70
+ }
71
+ }
72
+
73
+ // Block highlight, and navigation mode, not focus.
74
+ // By not using a pseudo element, we can limit ourselves to only
75
+ // using ::after, leaving ::before free. Otherwise, highlight + multi-select
76
+ // would require the opacity-changing overlay to be on ::before.
77
+ .block-editor-block-list__block.is-highlighted,
78
+ .block-editor-block-list__block.is-highlighted ~ .is-multi-selected,
79
+ &.is-navigate-mode .block-editor-block-list__block.is-selected,
80
+ & .is-block-moving-mode.block-editor-block-list__block.has-child-selected {
81
+ border-radius: $radius-block-ui;
82
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
83
+
84
+ // Show outline in high contrast mode.
85
+ outline: 2px solid transparent;
86
+ }
87
+
88
+ // Block focus.
89
+ .block-editor-block-list__block:not([contenteditable]):focus {
90
+ outline: none;
91
+
92
+ // We're using a pseudo element to overflow placeholder borders
93
+ // and any border inside the block itself.
94
+ &::after {
32
95
  content: "";
96
+ position: absolute;
97
+ z-index: 1;
98
+ pointer-events: none;
33
99
  top: $border-width;
100
+ right: $border-width;
34
101
  bottom: $border-width;
35
102
  left: $border-width;
36
- right: $border-width;
37
-
38
- // Everything else.
39
103
  box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
40
104
  border-radius: $radius-block-ui - $border-width; // Border is outset, so subtract the width to achieve correct radius.
105
+ outline: 2px solid transparent; // This shows up in Windows High Contrast Mode.
41
106
 
42
- // Windows High Contrast mode will show this outline.
43
- outline: 2px solid transparent;
44
-
45
- // Show a lighter color for dark themes.
107
+ // Show a light color for dark themes.
46
108
  .is-dark-theme & {
47
- box-shadow: 0 0 0 $border-width $dark-theme-focus;
48
- }
49
- }
50
-
51
- // Provide exceptions for placeholders.
52
- .components-placeholder,
53
- .block-editor-block-list__block.is-multi-selected:not(.is-partially-selected) {
54
- ::selection {
55
- background: transparent;
109
+ box-shadow: 0 0 0 var(--wp-admin-border-width-focus) $dark-theme-focus;
56
110
  }
57
111
  }
58
112
  }
59
113
 
60
- // Hide the selection indicator on .block-editor-block-list__layout, else Safari will show it stacked.
61
- .has-multi-selection &::selection {
62
- background: transparent;
63
- }
64
-
65
- .block-editor-block-list__block.is-highlighted::after {
66
- box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
67
- outline: $border-width solid transparent;
68
- }
69
-
70
- &.is-navigate-mode .block-editor-block-list__block.is-selected::after,
71
- & .is-block-moving-mode.block-editor-block-list__block.has-child-selected {
72
- box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
73
- outline: 2px solid transparent;
74
- }
75
-
114
+ // Moving blocks using keyboard (Ellipsis > Move).
76
115
  & .is-block-moving-mode.block-editor-block-list__block.is-selected {
116
+ box-shadow: none;
117
+ outline: none;
77
118
 
78
- &::before {
119
+ &::after {
79
120
  content: "";
80
121
  position: absolute;
81
122
  z-index: 0;
@@ -90,14 +131,10 @@
90
131
  border-radius: $radius-block-ui;
91
132
  border-top: 4px solid $gray-400;
92
133
  }
93
-
94
- &::after {
95
- content: none;
96
- }
97
134
  }
98
135
 
99
136
  & .is-block-moving-mode.can-insert-moving-block.block-editor-block-list__block.is-selected {
100
- &::before {
137
+ &::after {
101
138
  border-color: var(--wp-admin-theme-color);
102
139
  }
103
140
  }
@@ -134,29 +171,16 @@
134
171
  }
135
172
 
136
173
  .block-editor-block-list__layout .block-editor-block-list__block {
174
+ // With `position: static`, Safari marks a full-width selection rectangle, including margins.
175
+ // With `position: relative`, Safari marks an inline selection rectangle, similar to that of
176
+ // Blink based browsers, but it also does "crop" the marker, which can result in a small line
177
+ // from the preceding paragraph showing, which is effectively the above selection bleeding in.
178
+ // We choose relative, as that matches the multi-selection, which is limited to the block footprint.
137
179
  position: relative;
138
180
 
139
181
  // Re-enable text-selection on editable blocks.
140
182
  user-select: text;
141
183
 
142
- // Hide the select style pseudo element as otherwise it gets shwon as "selected" in Safari.
143
- &.is-partially-selected::after {
144
- // By positioning this pseudo element outside the boundaries of the parent block,
145
- // when partially selected it hides the pseudo element selection in Safari.
146
- top: -0.5px;
147
- right: -0.5px;
148
- bottom: -0.5px;
149
- left: -0.5px;
150
- }
151
-
152
- &.is-highlighted::after,
153
- &.is-highlighted ~ .is-multi-selected::after {
154
- top: 0;
155
- right: 0;
156
- bottom: 0;
157
- left: 0;
158
- }
159
-
160
184
  // Break long strings of text without spaces so they don't overflow the block.
161
185
  overflow-wrap: break-word;
162
186
 
@@ -167,7 +191,6 @@
167
191
  /**
168
192
  * Notices
169
193
  */
170
-
171
194
  .components-placeholder .components-with-notices-ui {
172
195
  margin: -10px 0 12px 0;
173
196
  }
@@ -186,56 +209,6 @@
186
209
  }
187
210
  }
188
211
 
189
-
190
- /**
191
- * Block Layout
192
- */
193
-
194
- // Navigate mode & Focused wrapper.
195
- // We're using a pseudo element to overflow placeholder borders
196
- // and any border inside the block itself.
197
- &:not([contenteditable]):focus {
198
- outline: none;
199
-
200
- &::after {
201
- position: absolute;
202
- z-index: 1;
203
- pointer-events: none;
204
- content: "";
205
- top: $border-width;
206
- bottom: $border-width;
207
- left: $border-width;
208
- right: $border-width;
209
-
210
- // 2px outside.
211
- box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
212
- border-radius: $radius-block-ui - $border-width; // Border is outset, so subtract the width to achieve correct radius.
213
- outline: 2px solid transparent; // This shows up in Windows High Contrast Mode.
214
-
215
- // Show a light color for dark themes.
216
- .is-dark-theme & {
217
- box-shadow: 0 0 0 var(--wp-admin-border-width-focus) $dark-theme-focus;
218
- }
219
- }
220
- }
221
-
222
- /**
223
- * Block styles and alignments
224
- */
225
- &::after {
226
- content: "";
227
- pointer-events: none;
228
- position: absolute;
229
- top: 0;
230
- right: 0;
231
- bottom: 0;
232
- left: 0;
233
- border-radius: $radius-block-ui;
234
- box-shadow: 0 0 0 0 transparent;
235
- transition: box-shadow 0.1s linear;
236
- @include reduce-motion("transition");
237
- }
238
-
239
212
  // Warnings
240
213
  &.has-warning {
241
214
  min-height: $grid-unit-60;
@@ -282,7 +255,7 @@
282
255
  }
283
256
  }
284
257
 
285
- // Reusable blocks parent borer.
258
+ // Reusable blocks parent border.
286
259
  &.is-reusable.has-child-selected::after {
287
260
  box-shadow: 0 0 0 1px var(--wp-admin-theme-color);
288
261
  }
@@ -298,12 +271,14 @@
298
271
  cursor: default;
299
272
 
300
273
  &::after {
274
+ content: "";
275
+ position: absolute;
276
+ pointer-events: none;
301
277
  top: $border-width;
302
278
  left: $border-width;
303
279
  right: $border-width;
304
280
  bottom: $border-width;
305
281
  box-shadow: 0 0 0 $border-width var(--wp-admin-theme-color);
306
- // Border is outset, so subtract the width to achieve correct radius.
307
282
  border-radius: $radius-block-ui - $border-width;
308
283
  }
309
284
  }
@@ -315,19 +290,11 @@
315
290
  cursor: unset;
316
291
  }
317
292
 
318
- &::after {
319
- box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color); // Selected not focussed.
320
- top: $border-width;
321
- left: $border-width;
322
- right: $border-width;
323
- bottom: $border-width;
324
- border-radius: $radius-block-ui - $border-width; // Border is outset, so subtract the width to achieve correct radius.
325
- }
293
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color); // Selected not focussed.
294
+ border-radius: $radius-block-ui;
326
295
 
327
296
  &:focus {
328
- &::after {
329
- box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
330
- }
297
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
331
298
  }
332
299
  }
333
300
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import { useRefEffect, useDebounce } from '@wordpress/compose';
4
+ import { useRefEffect } from '@wordpress/compose';
5
5
  import { useSelect, useDispatch } from '@wordpress/data';
6
6
  import { useContext } from '@wordpress/element';
7
7
 
@@ -15,7 +15,7 @@ export function useInBetweenInserter() {
15
15
  const openRef = useContext( InsertionPointOpenRef );
16
16
  const isInBetweenInserterDisabled = useSelect(
17
17
  ( select ) =>
18
- select( blockEditorStore ).getSettings().hasReducedUI ||
18
+ select( blockEditorStore ).getSettings().isDistractionFree ||
19
19
  select( blockEditorStore ).__unstableGetEditorMode() === 'zoom-out',
20
20
  []
21
21
  );
@@ -32,10 +32,6 @@ export function useInBetweenInserter() {
32
32
  const { showInsertionPoint, hideInsertionPoint } =
33
33
  useDispatch( blockEditorStore );
34
34
 
35
- const delayedShowInsertionPoint = useDebounce( showInsertionPoint, 500, {
36
- trailing: true,
37
- } );
38
-
39
35
  return useRefEffect(
40
36
  ( node ) => {
41
37
  if ( isInBetweenInserterDisabled ) {
@@ -56,10 +52,7 @@ export function useInBetweenInserter() {
56
52
  'block-editor-block-list__layout'
57
53
  )
58
54
  ) {
59
- delayedShowInsertionPoint.cancel();
60
- if ( isBlockInsertionPointVisible() ) {
61
- hideInsertionPoint();
62
- }
55
+ hideInsertionPoint();
63
56
  return;
64
57
  }
65
58
 
@@ -100,6 +93,7 @@ export function useInBetweenInserter() {
100
93
  } );
101
94
 
102
95
  if ( ! element ) {
96
+ hideInsertionPoint();
103
97
  return;
104
98
  }
105
99
 
@@ -109,6 +103,7 @@ export function useInBetweenInserter() {
109
103
  element = element.firstElementChild;
110
104
 
111
105
  if ( ! element ) {
106
+ hideInsertionPoint();
112
107
  return;
113
108
  }
114
109
  }
@@ -138,10 +133,7 @@ export function useInBetweenInserter() {
138
133
  ( event.clientX > elementRect.right ||
139
134
  event.clientX < elementRect.left ) )
140
135
  ) {
141
- delayedShowInsertionPoint.cancel();
142
- if ( isBlockInsertionPointVisible() ) {
143
- hideInsertionPoint();
144
- }
136
+ hideInsertionPoint();
145
137
  return;
146
138
  }
147
139
 
@@ -150,14 +142,11 @@ export function useInBetweenInserter() {
150
142
  // Don't show the in-between inserter before the first block in
151
143
  // the list (preserves the original behaviour).
152
144
  if ( index === 0 ) {
153
- delayedShowInsertionPoint.cancel();
154
- if ( isBlockInsertionPointVisible() ) {
155
- hideInsertionPoint();
156
- }
145
+ hideInsertionPoint();
157
146
  return;
158
147
  }
159
148
 
160
- delayedShowInsertionPoint( rootClientId, index, {
149
+ showInsertionPoint( rootClientId, index, {
161
150
  __unstableWithInserter: true,
162
151
  } );
163
152
  }
@@ -15,7 +15,7 @@ import {
15
15
  import { lock as lockIcon, unlock as unlockIcon } from '@wordpress/icons';
16
16
  import { useInstanceId } from '@wordpress/compose';
17
17
  import { useDispatch, useSelect } from '@wordpress/data';
18
- import { isReusableBlock, getBlockType } from '@wordpress/blocks';
18
+ import { getBlockType } from '@wordpress/blocks';
19
19
 
20
20
  /**
21
21
  * Internal dependencies
@@ -24,6 +24,9 @@ import useBlockLock from './use-block-lock';
24
24
  import useBlockDisplayInformation from '../use-block-display-information';
25
25
  import { store as blockEditorStore } from '../../store';
26
26
 
27
+ // Entity based blocks which allow edit locking
28
+ const ALLOWS_EDIT_LOCKING = [ 'core/block', 'core/navigation' ];
29
+
27
30
  function getTemplateLockValue( lock ) {
28
31
  // Prevents all operations.
29
32
  if ( lock.remove && lock.move ) {
@@ -41,7 +44,7 @@ function getTemplateLockValue( lock ) {
41
44
  export default function BlockLockModal( { clientId, onClose } ) {
42
45
  const [ lock, setLock ] = useState( { move: false, remove: false } );
43
46
  const { canEdit, canMove, canRemove } = useBlockLock( clientId );
44
- const { isReusable, templateLock, hasTemplateLock } = useSelect(
47
+ const { allowsEditLocking, templateLock, hasTemplateLock } = useSelect(
45
48
  ( select ) => {
46
49
  const { getBlockName, getBlockAttributes } =
47
50
  select( blockEditorStore );
@@ -49,7 +52,7 @@ export default function BlockLockModal( { clientId, onClose } ) {
49
52
  const blockType = getBlockType( blockName );
50
53
 
51
54
  return {
52
- isReusable: isReusableBlock( blockType ),
55
+ allowsEditLocking: ALLOWS_EDIT_LOCKING.includes( blockName ),
53
56
  templateLock: getBlockAttributes( clientId )?.templateLock,
54
57
  hasTemplateLock: !! blockType?.attributes?.templateLock,
55
58
  };
@@ -70,9 +73,9 @@ export default function BlockLockModal( { clientId, onClose } ) {
70
73
  setLock( {
71
74
  move: ! canMove,
72
75
  remove: ! canRemove,
73
- ...( isReusable ? { edit: ! canEdit } : {} ),
76
+ ...( allowsEditLocking ? { edit: ! canEdit } : {} ),
74
77
  } );
75
- }, [ canEdit, canMove, canRemove, isReusable ] );
78
+ }, [ canEdit, canMove, canRemove, allowsEditLocking ] );
76
79
 
77
80
  const isAllChecked = Object.values( lock ).every( Boolean );
78
81
  const isMixed = Object.values( lock ).some( Boolean ) && ! isAllChecked;
@@ -121,12 +124,14 @@ export default function BlockLockModal( { clientId, onClose } ) {
121
124
  setLock( {
122
125
  move: newValue,
123
126
  remove: newValue,
124
- ...( isReusable ? { edit: newValue } : {} ),
127
+ ...( allowsEditLocking
128
+ ? { edit: newValue }
129
+ : {} ),
125
130
  } )
126
131
  }
127
132
  />
128
133
  <ul className="block-editor-block-lock-modal__checklist">
129
- { isReusable && (
134
+ { allowsEditLocking && (
130
135
  <li className="block-editor-block-lock-modal__checklist-item">
131
136
  <CheckboxControl
132
137
  label={
@@ -70,7 +70,7 @@ function BlockMoverStory() {
70
70
  </Toolbar>
71
71
 
72
72
  <p style={ { marginTop: 36 } }>
73
- But it can also accomodate horizontal blocks.
73
+ But it can also accommodate horizontal blocks.
74
74
  </p>
75
75
  <Toolbar label="Block Mover">
76
76
  <BlockMover
@@ -6,7 +6,6 @@
6
6
  @include break-small() {
7
7
  .block-editor-block-mover:not(.is-horizontal) & {
8
8
  flex-direction: column;
9
- width: $block-toolbar-height - $grid-unit-15;
10
9
 
11
10
  > * {
12
11
  height: $block-toolbar-height * 0.5;
@@ -62,3 +61,38 @@
62
61
  overflow: hidden;
63
62
  }
64
63
  }
64
+
65
+ // Specificity is necessary to override block toolbar button styles.
66
+ .components-button.block-editor-block-mover-button {
67
+ // Focus and toggle pseudo elements.
68
+ &::before {
69
+ content: "";
70
+ position: absolute;
71
+ display: block;
72
+ border-radius: $radius-block-ui;
73
+ height: $grid-unit-40;
74
+
75
+ // Position the focus rectangle.
76
+ left: $grid-unit-10;
77
+ right: $grid-unit-10;
78
+ z-index: -1;
79
+
80
+ // Animate in.
81
+ animation: components-button__appear-animation 0.1s ease;
82
+ animation-fill-mode: forwards;
83
+ @include reduce-motion("animation");
84
+ }
85
+
86
+ // Don't show the focus inherited by the Button component.
87
+ &:focus,
88
+ &:focus:enabled,
89
+ // Override focus styles from the block toolbar
90
+ &:focus::before {
91
+ box-shadow: none;
92
+ outline: none;
93
+ }
94
+
95
+ &:focus-visible::before {
96
+ @include block-toolbar-button-style__focus();
97
+ }
98
+ }
@@ -24,7 +24,7 @@ import { store as blockEditorStore } from '../../store';
24
24
  export default function BlockParentSelector() {
25
25
  const { selectBlock, toggleBlockHighlight } =
26
26
  useDispatch( blockEditorStore );
27
- const { firstParentClientId, shouldHide, hasReducedUI } = useSelect(
27
+ const { firstParentClientId, shouldHide, isDistractionFree } = useSelect(
28
28
  ( select ) => {
29
29
  const {
30
30
  getBlockName,
@@ -46,7 +46,7 @@ export default function BlockParentSelector() {
46
46
  '__experimentalParentSelector',
47
47
  true
48
48
  ),
49
- hasReducedUI: settings.hasReducedUI,
49
+ isDistractionFree: settings.isDistractionFree,
50
50
  };
51
51
  },
52
52
  []
@@ -59,7 +59,7 @@ export default function BlockParentSelector() {
59
59
  const { gestures: showMoversGestures } = useShowMoversGestures( {
60
60
  ref: nodeRef,
61
61
  onChange( isFocused ) {
62
- if ( isFocused && hasReducedUI ) {
62
+ if ( isFocused && isDistractionFree ) {
63
63
  return;
64
64
  }
65
65
  toggleBlockHighlight( firstParentClientId, isFocused );
@@ -22,14 +22,14 @@ function BlockPattern( { isDraggable, pattern, onClick, composite } ) {
22
22
  const descriptionId = `block-editor-block-patterns-list__item-description-${ instanceId }`;
23
23
 
24
24
  return (
25
- <InserterDraggableBlocks isEnabled={ isDraggable } blocks={ blocks }>
25
+ <InserterDraggableBlocks
26
+ isEnabled={ isDraggable }
27
+ blocks={ blocks }
28
+ isPattern={ !! pattern }
29
+ >
26
30
  { ( { draggable, onDragStart, onDragEnd } ) => (
27
31
  <div
28
32
  className="block-editor-block-patterns-list__list-item"
29
- aria-label={ pattern.title }
30
- aria-describedby={
31
- pattern.description ? descriptionId : undefined
32
- }
33
33
  draggable={ draggable }
34
34
  onDragStart={ onDragStart }
35
35
  onDragEnd={ onDragEnd }
@@ -40,6 +40,10 @@ function BlockPattern( { isDraggable, pattern, onClick, composite } ) {
40
40
  { ...composite }
41
41
  className="block-editor-block-patterns-list__item"
42
42
  onClick={ () => onClick( pattern, blocks ) }
43
+ aria-label={ pattern.title }
44
+ aria-describedby={
45
+ pattern.description ? descriptionId : undefined
46
+ }
43
47
  >
44
48
  <BlockPreview
45
49
  blocks={ blocks }
@@ -2,6 +2,11 @@
2
2
  cursor: pointer;
3
3
  margin-bottom: $grid-unit-30;
4
4
 
5
+ // The list item contains absolutely positioned visually hidden text,
6
+ // so make this container relative. This prevents the bug experienced in
7
+ // https://github.com/WordPress/gutenberg/issues/44842.
8
+ position: relative;
9
+
5
10
  &.is-placeholder {
6
11
  min-height: 100px;
7
12
  }
@@ -18,8 +23,7 @@
18
23
  display: flex;
19
24
  align-items: center;
20
25
  overflow: hidden;
21
- border-radius: $radius-block-ui;
22
- border: $border-width solid $gray-100;
26
+ border-radius: 4px;
23
27
  }
24
28
 
25
29
  .block-editor-block-patterns-list__item-title {
@@ -29,7 +33,7 @@
29
33
  }
30
34
 
31
35
  &:hover .block-editor-block-preview__container {
32
- border: $border-width solid var(--wp-admin-theme-color);
36
+ box-shadow: 0 0 0 2px var(--wp-admin-theme-color);
33
37
  }
34
38
 
35
39
  &:focus .block-editor-block-preview__container {
@@ -22,6 +22,14 @@ The client ID of the block representing the bottom position of the popover.
22
22
  - Type: `String`
23
23
  - Required: No
24
24
 
25
+ #### shift
26
+
27
+ This determines whether the block popover always shifts into the viewport or remains at its original position. See FloatingUI for more details on shift.
28
+
29
+ - Type: `Boolean`
30
+ - Required: No
31
+ - Default: `true`
32
+
25
33
  ## BlockPopoverInbetween
26
34
 
27
35
  ### Props
@@ -0,0 +1,63 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useSelect } from '@wordpress/data';
5
+ import { useReducedMotion } from '@wordpress/compose';
6
+ import { __unstableMotion as motion } from '@wordpress/components';
7
+
8
+ /**
9
+ * Internal dependencies
10
+ */
11
+ import { store as blockEditorStore } from '../../store';
12
+ import BlockPopover from './index';
13
+
14
+ const animateVariants = {
15
+ hide: { opacity: 0, scaleY: 0.75 },
16
+ show: { opacity: 1, scaleY: 1 },
17
+ exit: { opacity: 0, scaleY: 0.9 },
18
+ };
19
+
20
+ function BlockDropZonePopover( {
21
+ __unstablePopoverSlot,
22
+ __unstableContentRef,
23
+ } ) {
24
+ const { clientId } = useSelect( ( select ) => {
25
+ const { getBlockOrder, getBlockInsertionPoint } =
26
+ select( blockEditorStore );
27
+ const insertionPoint = getBlockInsertionPoint();
28
+ const order = getBlockOrder( insertionPoint.rootClientId );
29
+
30
+ if ( ! order.length ) {
31
+ return {};
32
+ }
33
+
34
+ return {
35
+ clientId: order[ insertionPoint.index ],
36
+ };
37
+ }, [] );
38
+ const reducedMotion = useReducedMotion();
39
+
40
+ return (
41
+ <BlockPopover
42
+ clientId={ clientId }
43
+ __unstableCoverTarget
44
+ __unstablePopoverSlot={ __unstablePopoverSlot }
45
+ __unstableContentRef={ __unstableContentRef }
46
+ className="block-editor-block-popover__drop-zone"
47
+ >
48
+ <motion.div
49
+ data-testid="block-popover-drop-zone"
50
+ initial={
51
+ reducedMotion ? animateVariants.show : animateVariants.hide
52
+ }
53
+ animate={ animateVariants.show }
54
+ exit={
55
+ reducedMotion ? animateVariants.show : animateVariants.exit
56
+ }
57
+ className="block-editor-block-popover__drop-zone-foreground"
58
+ />
59
+ </BlockPopover>
60
+ );
61
+ }
62
+
63
+ export default BlockDropZonePopover;
@@ -268,6 +268,7 @@ function BlockPopoverInbetween( {
268
268
  resize={ false }
269
269
  flip={ false }
270
270
  placement="bottom-start"
271
+ variant="unstyled"
271
272
  >
272
273
  <div
273
274
  className="block-editor-block-popover__inbetween-container"