@wordpress/block-editor 8.4.0 → 8.5.2

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 (421) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +56 -19
  3. package/build/components/alignment-control/index.js +13 -6
  4. package/build/components/alignment-control/index.js.map +1 -1
  5. package/build/components/block-alignment-control/index.js +13 -6
  6. package/build/components/block-alignment-control/index.js.map +1 -1
  7. package/build/components/block-alignment-control/ui.js +1 -1
  8. package/build/components/block-alignment-control/ui.js.map +1 -1
  9. package/build/components/block-content-overlay/index.js +13 -4
  10. package/build/components/block-content-overlay/index.js.map +1 -1
  11. package/build/components/block-draggable/index.js +2 -3
  12. package/build/components/block-draggable/index.js.map +1 -1
  13. package/build/components/block-icon/index.js +4 -0
  14. package/build/components/block-icon/index.js.map +1 -1
  15. package/build/components/block-inspector/index.js +6 -1
  16. package/build/components/block-inspector/index.js.map +1 -1
  17. package/build/components/block-list/use-block-props/index.js +1 -6
  18. package/build/components/block-list/use-block-props/index.js.map +1 -1
  19. package/build/components/block-list/use-block-props/use-focus-first-element.js +14 -17
  20. package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  21. package/build/components/block-list/use-block-props/use-focus-handler.js +7 -1
  22. package/build/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
  23. package/build/components/block-list-appender/index.js +6 -1
  24. package/build/components/block-list-appender/index.js.map +1 -1
  25. package/build/components/block-lock/index.js +8 -0
  26. package/build/components/block-lock/index.js.map +1 -1
  27. package/build/components/block-lock/menu-item.js +9 -15
  28. package/build/components/block-lock/menu-item.js.map +1 -1
  29. package/build/components/block-lock/modal.js +35 -23
  30. package/build/components/block-lock/modal.js.map +1 -1
  31. package/build/components/block-lock/toolbar.js +11 -16
  32. package/build/components/block-lock/toolbar.js.map +1 -1
  33. package/build/components/block-lock/use-block-lock.js +50 -0
  34. package/build/components/block-lock/use-block-lock.js.map +1 -0
  35. package/build/components/block-mover/index.js +4 -0
  36. package/build/components/block-mover/index.js.map +1 -1
  37. package/build/components/block-pattern-setup/index.js +37 -22
  38. package/build/components/block-pattern-setup/index.js.map +1 -1
  39. package/build/components/block-pattern-setup/setup-toolbar.js +1 -1
  40. package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  41. package/build/components/block-preview/auto.js +6 -3
  42. package/build/components/block-preview/auto.js.map +1 -1
  43. package/build/components/block-preview/index.js +4 -2
  44. package/build/components/block-preview/index.js.map +1 -1
  45. package/build/components/block-settings-menu/block-settings-dropdown.js +50 -5
  46. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  47. package/build/components/block-switcher/index.js +8 -3
  48. package/build/components/block-switcher/index.js.map +1 -1
  49. package/build/components/block-title/index.js +2 -2
  50. package/build/components/block-title/index.js.map +1 -1
  51. package/build/components/block-title/use-block-display-title.js +1 -1
  52. package/build/components/block-title/use-block-display-title.js.map +1 -1
  53. package/build/components/block-toolbar/block-name-context.js +17 -0
  54. package/build/components/block-toolbar/block-name-context.js.map +1 -0
  55. package/build/components/block-toolbar/block-toolbar-last-item.js +20 -0
  56. package/build/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
  57. package/build/components/block-toolbar/index.js +20 -5
  58. package/build/components/block-toolbar/index.js.map +1 -1
  59. package/build/components/block-tools/index.js +0 -16
  60. package/build/components/block-tools/index.js.map +1 -1
  61. package/build/components/block-variation-transforms/index.js +92 -47
  62. package/build/components/block-variation-transforms/index.js.map +1 -1
  63. package/build/components/block-vertical-alignment-control/index.js +13 -6
  64. package/build/components/block-vertical-alignment-control/index.js.map +1 -1
  65. package/build/components/contrast-checker/index.js +4 -0
  66. package/build/components/contrast-checker/index.js.map +1 -1
  67. package/build/components/convert-to-group-buttons/index.js +8 -0
  68. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  69. package/build/components/convert-to-group-buttons/toolbar.js +105 -0
  70. package/build/components/convert-to-group-buttons/toolbar.js.map +1 -0
  71. package/build/components/copy-handler/index.js +48 -9
  72. package/build/components/copy-handler/index.js.map +1 -1
  73. package/build/components/font-sizes/font-size-picker.js +4 -0
  74. package/build/components/font-sizes/font-size-picker.js.map +1 -1
  75. package/build/components/iframe/index.js +6 -9
  76. package/build/components/iframe/index.js.map +1 -1
  77. package/build/components/index.js +18 -0
  78. package/build/components/index.js.map +1 -1
  79. package/build/components/justify-content-control/index.js +13 -6
  80. package/build/components/justify-content-control/index.js.map +1 -1
  81. package/build/components/keyboard-shortcuts/index.js +1 -1
  82. package/build/components/keyboard-shortcuts/index.js.map +1 -1
  83. package/build/components/line-height-control/index.js +10 -3
  84. package/build/components/line-height-control/index.js.map +1 -1
  85. package/build/components/link-control/index.js +6 -7
  86. package/build/components/link-control/index.js.map +1 -1
  87. package/build/components/list-view/block-select-button.js +19 -6
  88. package/build/components/list-view/block-select-button.js.map +1 -1
  89. package/build/components/list-view/block.js +18 -3
  90. package/build/components/list-view/block.js.map +1 -1
  91. package/build/components/list-view/branch.js +1 -1
  92. package/build/components/list-view/branch.js.map +1 -1
  93. package/build/components/media-replace-flow/index.js +4 -0
  94. package/build/components/media-replace-flow/index.js.map +1 -1
  95. package/build/components/multi-selection-inspector/index.js +1 -1
  96. package/build/components/multi-selection-inspector/index.js.map +1 -1
  97. package/build/components/rich-text/index.js +26 -4
  98. package/build/components/rich-text/index.js.map +1 -1
  99. package/build/components/rich-text/split-value.js +12 -2
  100. package/build/components/rich-text/split-value.js.map +1 -1
  101. package/build/components/rich-text/use-firefox-compat.js +49 -0
  102. package/build/components/rich-text/use-firefox-compat.js.map +1 -0
  103. package/build/components/rich-text/use-input-rules.js +34 -2
  104. package/build/components/rich-text/use-input-rules.js.map +1 -1
  105. package/build/components/skip-to-selected-block/index.js +4 -0
  106. package/build/components/skip-to-selected-block/index.js.map +1 -1
  107. package/build/components/writing-flow/index.js +9 -1
  108. package/build/components/writing-flow/index.js.map +1 -1
  109. package/build/components/writing-flow/use-arrow-nav.js +3 -44
  110. package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
  111. package/build/components/writing-flow/use-click-selection.js +68 -0
  112. package/build/components/writing-flow/use-click-selection.js.map +1 -0
  113. package/build/components/writing-flow/use-drag-selection.js +134 -0
  114. package/build/components/writing-flow/use-drag-selection.js.map +1 -0
  115. package/build/components/writing-flow/use-input.js +116 -0
  116. package/build/components/writing-flow/use-input.js.map +1 -0
  117. package/build/components/writing-flow/use-multi-selection.js +18 -38
  118. package/build/components/writing-flow/use-multi-selection.js.map +1 -1
  119. package/build/components/writing-flow/use-selection-observer.js +161 -0
  120. package/build/components/writing-flow/use-selection-observer.js.map +1 -0
  121. package/build/components/writing-flow/use-tab-nav.js +1 -8
  122. package/build/components/writing-flow/use-tab-nav.js.map +1 -1
  123. package/build/hooks/border-color.js +3 -3
  124. package/build/hooks/border-color.js.map +1 -1
  125. package/build/hooks/border.js +0 -14
  126. package/build/hooks/border.js.map +1 -1
  127. package/build/hooks/color.js +20 -17
  128. package/build/hooks/color.js.map +1 -1
  129. package/build/hooks/font-family.js +5 -1
  130. package/build/hooks/font-family.js.map +1 -1
  131. package/build/hooks/font-size.js +4 -2
  132. package/build/hooks/font-size.js.map +1 -1
  133. package/build/hooks/gap.js +23 -16
  134. package/build/hooks/gap.js.map +1 -1
  135. package/build/hooks/layout.js +7 -2
  136. package/build/hooks/layout.js.map +1 -1
  137. package/build/hooks/style.js +34 -3
  138. package/build/hooks/style.js.map +1 -1
  139. package/build/hooks/utils.js +29 -0
  140. package/build/hooks/utils.js.map +1 -1
  141. package/build/layouts/flex.js +76 -12
  142. package/build/layouts/flex.js.map +1 -1
  143. package/build/layouts/flow.js +9 -4
  144. package/build/layouts/flow.js.map +1 -1
  145. package/build/store/actions.js +290 -51
  146. package/build/store/actions.js.map +1 -1
  147. package/build/store/defaults.js +5 -2
  148. package/build/store/defaults.js.map +1 -1
  149. package/build/store/reducer.js +25 -13
  150. package/build/store/reducer.js.map +1 -1
  151. package/build/store/selectors.js +264 -21
  152. package/build/store/selectors.js.map +1 -1
  153. package/build/store/utils.js +27 -0
  154. package/build/store/utils.js.map +1 -0
  155. package/build/utils/dom.js +2 -1
  156. package/build/utils/dom.js.map +1 -1
  157. package/build-module/components/alignment-control/index.js +12 -4
  158. package/build-module/components/alignment-control/index.js.map +1 -1
  159. package/build-module/components/block-alignment-control/index.js +12 -4
  160. package/build-module/components/block-alignment-control/index.js.map +1 -1
  161. package/build-module/components/block-alignment-control/ui.js +2 -2
  162. package/build-module/components/block-alignment-control/ui.js.map +1 -1
  163. package/build-module/components/block-content-overlay/index.js +13 -4
  164. package/build-module/components/block-content-overlay/index.js.map +1 -1
  165. package/build-module/components/block-draggable/index.js +2 -3
  166. package/build-module/components/block-draggable/index.js.map +1 -1
  167. package/build-module/components/block-icon/index.js +4 -0
  168. package/build-module/components/block-icon/index.js.map +1 -1
  169. package/build-module/components/block-inspector/index.js +6 -1
  170. package/build-module/components/block-inspector/index.js.map +1 -1
  171. package/build-module/components/block-list/use-block-props/index.js +1 -4
  172. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  173. package/build-module/components/block-list/use-block-props/use-focus-first-element.js +15 -17
  174. package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
  175. package/build-module/components/block-list/use-block-props/use-focus-handler.js +7 -1
  176. package/build-module/components/block-list/use-block-props/use-focus-handler.js.map +1 -1
  177. package/build-module/components/block-list-appender/index.js +6 -1
  178. package/build-module/components/block-list-appender/index.js.map +1 -1
  179. package/build-module/components/block-lock/index.js +1 -0
  180. package/build-module/components/block-lock/index.js.map +1 -1
  181. package/build-module/components/block-lock/menu-item.js +8 -13
  182. package/build-module/components/block-lock/menu-item.js.map +1 -1
  183. package/build-module/components/block-lock/modal.js +34 -24
  184. package/build-module/components/block-lock/modal.js.map +1 -1
  185. package/build-module/components/block-lock/toolbar.js +10 -14
  186. package/build-module/components/block-lock/toolbar.js.map +1 -1
  187. package/build-module/components/block-lock/use-block-lock.js +41 -0
  188. package/build-module/components/block-lock/use-block-lock.js.map +1 -0
  189. package/build-module/components/block-mover/index.js +4 -0
  190. package/build-module/components/block-mover/index.js.map +1 -1
  191. package/build-module/components/block-pattern-setup/index.js +39 -24
  192. package/build-module/components/block-pattern-setup/index.js.map +1 -1
  193. package/build-module/components/block-pattern-setup/setup-toolbar.js +1 -1
  194. package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
  195. package/build-module/components/block-preview/auto.js +6 -3
  196. package/build-module/components/block-preview/auto.js.map +1 -1
  197. package/build-module/components/block-preview/index.js +4 -2
  198. package/build-module/components/block-preview/index.js.map +1 -1
  199. package/build-module/components/block-settings-menu/block-settings-dropdown.js +50 -7
  200. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  201. package/build-module/components/block-switcher/index.js +9 -4
  202. package/build-module/components/block-switcher/index.js.map +1 -1
  203. package/build-module/components/block-title/index.js +2 -2
  204. package/build-module/components/block-title/index.js.map +1 -1
  205. package/build-module/components/block-title/use-block-display-title.js +1 -1
  206. package/build-module/components/block-title/use-block-display-title.js.map +1 -1
  207. package/build-module/components/block-toolbar/block-name-context.js +9 -0
  208. package/build-module/components/block-toolbar/block-name-context.js.map +1 -0
  209. package/build-module/components/block-toolbar/block-toolbar-last-item.js +11 -0
  210. package/build-module/components/block-toolbar/block-toolbar-last-item.js.map +1 -0
  211. package/build-module/components/block-toolbar/index.js +16 -4
  212. package/build-module/components/block-toolbar/index.js.map +1 -1
  213. package/build-module/components/block-tools/index.js +0 -16
  214. package/build-module/components/block-tools/index.js.map +1 -1
  215. package/build-module/components/block-variation-transforms/index.js +95 -49
  216. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  217. package/build-module/components/block-vertical-alignment-control/index.js +12 -4
  218. package/build-module/components/block-vertical-alignment-control/index.js.map +1 -1
  219. package/build-module/components/contrast-checker/index.js +4 -0
  220. package/build-module/components/contrast-checker/index.js.map +1 -1
  221. package/build-module/components/convert-to-group-buttons/index.js +2 -1
  222. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  223. package/build-module/components/convert-to-group-buttons/toolbar.js +90 -0
  224. package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -0
  225. package/build-module/components/copy-handler/index.js +48 -9
  226. package/build-module/components/copy-handler/index.js.map +1 -1
  227. package/build-module/components/font-sizes/font-size-picker.js +4 -0
  228. package/build-module/components/font-sizes/font-size-picker.js.map +1 -1
  229. package/build-module/components/iframe/index.js +6 -9
  230. package/build-module/components/iframe/index.js.map +1 -1
  231. package/build-module/components/index.js +2 -0
  232. package/build-module/components/index.js.map +1 -1
  233. package/build-module/components/justify-content-control/index.js +12 -4
  234. package/build-module/components/justify-content-control/index.js.map +1 -1
  235. package/build-module/components/keyboard-shortcuts/index.js +1 -1
  236. package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
  237. package/build-module/components/line-height-control/index.js +9 -2
  238. package/build-module/components/line-height-control/index.js.map +1 -1
  239. package/build-module/components/link-control/index.js +6 -7
  240. package/build-module/components/link-control/index.js.map +1 -1
  241. package/build-module/components/list-view/block-select-button.js +17 -6
  242. package/build-module/components/list-view/block-select-button.js.map +1 -1
  243. package/build-module/components/list-view/block.js +18 -3
  244. package/build-module/components/list-view/block.js.map +1 -1
  245. package/build-module/components/list-view/branch.js +1 -1
  246. package/build-module/components/list-view/branch.js.map +1 -1
  247. package/build-module/components/media-replace-flow/index.js +4 -0
  248. package/build-module/components/media-replace-flow/index.js.map +1 -1
  249. package/build-module/components/multi-selection-inspector/index.js +2 -2
  250. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  251. package/build-module/components/rich-text/index.js +25 -4
  252. package/build-module/components/rich-text/index.js.map +1 -1
  253. package/build-module/components/rich-text/split-value.js +12 -2
  254. package/build-module/components/rich-text/split-value.js.map +1 -1
  255. package/build-module/components/rich-text/use-firefox-compat.js +39 -0
  256. package/build-module/components/rich-text/use-firefox-compat.js.map +1 -0
  257. package/build-module/components/rich-text/use-input-rules.js +35 -4
  258. package/build-module/components/rich-text/use-input-rules.js.map +1 -1
  259. package/build-module/components/skip-to-selected-block/index.js +4 -0
  260. package/build-module/components/skip-to-selected-block/index.js.map +1 -1
  261. package/build-module/components/writing-flow/index.js +5 -1
  262. package/build-module/components/writing-flow/index.js.map +1 -1
  263. package/build-module/components/writing-flow/use-arrow-nav.js +4 -45
  264. package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
  265. package/build-module/components/writing-flow/use-click-selection.js +57 -0
  266. package/build-module/components/writing-flow/use-click-selection.js.map +1 -0
  267. package/build-module/components/writing-flow/use-drag-selection.js +124 -0
  268. package/build-module/components/writing-flow/use-drag-selection.js.map +1 -0
  269. package/build-module/components/writing-flow/use-input.js +104 -0
  270. package/build-module/components/writing-flow/use-input.js.map +1 -0
  271. package/build-module/components/writing-flow/use-multi-selection.js +18 -37
  272. package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
  273. package/build-module/components/writing-flow/use-selection-observer.js +150 -0
  274. package/build-module/components/writing-flow/use-selection-observer.js.map +1 -0
  275. package/build-module/components/writing-flow/use-tab-nav.js +1 -9
  276. package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
  277. package/build-module/hooks/border-color.js +5 -5
  278. package/build-module/hooks/border-color.js.map +1 -1
  279. package/build-module/hooks/border.js +0 -12
  280. package/build-module/hooks/border.js.map +1 -1
  281. package/build-module/hooks/color.js +19 -18
  282. package/build-module/hooks/color.js.map +1 -1
  283. package/build-module/hooks/font-family.js +3 -1
  284. package/build-module/hooks/font-family.js.map +1 -1
  285. package/build-module/hooks/font-size.js +4 -3
  286. package/build-module/hooks/font-size.js.map +1 -1
  287. package/build-module/hooks/gap.js +22 -15
  288. package/build-module/hooks/gap.js.map +1 -1
  289. package/build-module/hooks/layout.js +7 -2
  290. package/build-module/hooks/layout.js.map +1 -1
  291. package/build-module/hooks/style.js +33 -3
  292. package/build-module/hooks/style.js.map +1 -1
  293. package/build-module/hooks/utils.js +26 -0
  294. package/build-module/hooks/utils.js.map +1 -1
  295. package/build-module/layouts/flex.js +76 -13
  296. package/build-module/layouts/flex.js.map +1 -1
  297. package/build-module/layouts/flow.js +9 -5
  298. package/build-module/layouts/flow.js.map +1 -1
  299. package/build-module/store/actions.js +277 -49
  300. package/build-module/store/actions.js.map +1 -1
  301. package/build-module/store/defaults.js +5 -2
  302. package/build-module/store/defaults.js.map +1 -1
  303. package/build-module/store/reducer.js +25 -13
  304. package/build-module/store/reducer.js.map +1 -1
  305. package/build-module/store/selectors.js +250 -21
  306. package/build-module/store/selectors.js.map +1 -1
  307. package/build-module/store/utils.js +20 -0
  308. package/build-module/store/utils.js.map +1 -0
  309. package/build-module/utils/dom.js +2 -1
  310. package/build-module/utils/dom.js.map +1 -1
  311. package/build-style/style-rtl.css +142 -101
  312. package/build-style/style.css +142 -101
  313. package/build-types/utils/dom.d.ts.map +1 -1
  314. package/package.json +28 -28
  315. package/src/components/alignment-control/index.js +9 -4
  316. package/src/components/block-alignment-control/index.js +9 -4
  317. package/src/components/block-alignment-control/ui.js +2 -2
  318. package/src/components/block-content-overlay/index.js +19 -2
  319. package/src/components/block-draggable/index.js +2 -5
  320. package/src/components/block-icon/index.js +3 -0
  321. package/src/components/block-inspector/index.js +4 -0
  322. package/src/components/block-list/style.scss +4 -5
  323. package/src/components/block-list/use-block-props/index.js +0 -5
  324. package/src/components/block-list/use-block-props/use-focus-first-element.js +19 -26
  325. package/src/components/block-list/use-block-props/use-focus-handler.js +8 -0
  326. package/src/components/block-list-appender/index.js +5 -0
  327. package/src/components/block-lock/index.js +1 -0
  328. package/src/components/block-lock/menu-item.js +6 -19
  329. package/src/components/block-lock/modal.js +52 -23
  330. package/src/components/block-lock/style.scss +7 -5
  331. package/src/components/block-lock/toolbar.js +7 -14
  332. package/src/components/block-lock/use-block-lock.js +45 -0
  333. package/src/components/block-mover/index.js +3 -0
  334. package/src/components/block-mover/style.scss +4 -0
  335. package/src/components/block-pattern-setup/index.js +84 -59
  336. package/src/components/block-pattern-setup/setup-toolbar.js +3 -1
  337. package/src/components/block-pattern-setup/style.scss +32 -26
  338. package/src/components/block-preview/auto.js +10 -1
  339. package/src/components/block-preview/index.js +2 -0
  340. package/src/components/block-settings-menu/block-settings-dropdown.js +62 -4
  341. package/src/components/block-switcher/index.js +15 -3
  342. package/src/components/block-switcher/style.scss +15 -4
  343. package/src/components/block-switcher/test/__snapshots__/index.js.snap +15 -13
  344. package/src/components/block-switcher/test/index.js +2 -2
  345. package/src/components/block-title/index.js +2 -2
  346. package/src/components/block-title/use-block-display-title.js +1 -1
  347. package/src/components/block-toolbar/block-name-context.js +8 -0
  348. package/src/components/block-toolbar/block-toolbar-last-item.js +12 -0
  349. package/src/components/block-toolbar/index.js +18 -2
  350. package/src/components/block-toolbar/style.scss +6 -0
  351. package/src/components/block-tools/index.js +0 -19
  352. package/src/components/block-tools/style.scss +3 -5
  353. package/src/components/block-variation-transforms/index.js +105 -36
  354. package/src/components/block-variation-transforms/style.scss +1 -1
  355. package/src/components/block-vertical-alignment-control/index.js +9 -4
  356. package/src/components/button-block-appender/style.scss +5 -1
  357. package/src/components/contrast-checker/index.js +3 -0
  358. package/src/components/convert-to-group-buttons/index.js +6 -1
  359. package/src/components/convert-to-group-buttons/toolbar.js +87 -0
  360. package/src/components/copy-handler/index.js +55 -10
  361. package/src/components/font-sizes/font-size-picker.js +3 -0
  362. package/src/components/iframe/index.js +5 -7
  363. package/src/components/index.js +2 -0
  364. package/src/components/justify-content-control/index.js +9 -4
  365. package/src/components/keyboard-shortcuts/index.js +1 -1
  366. package/src/components/line-height-control/index.js +8 -3
  367. package/src/components/link-control/index.js +5 -5
  368. package/src/components/list-view/block-select-button.js +13 -3
  369. package/src/components/list-view/block.js +24 -8
  370. package/src/components/list-view/branch.js +1 -1
  371. package/src/components/list-view/style.scss +56 -14
  372. package/src/components/media-placeholder/README.md +8 -0
  373. package/src/components/media-replace-flow/index.js +3 -0
  374. package/src/components/multi-selection-inspector/index.js +2 -2
  375. package/src/components/rich-text/index.js +24 -1
  376. package/src/components/rich-text/split-value.js +5 -1
  377. package/src/components/rich-text/use-firefox-compat.js +39 -0
  378. package/src/components/rich-text/use-input-rules.js +40 -3
  379. package/src/components/skip-to-selected-block/index.js +3 -0
  380. package/src/components/url-input/style.scss +3 -2
  381. package/src/components/writing-flow/index.js +8 -0
  382. package/src/components/writing-flow/readme.md +28 -0
  383. package/src/components/writing-flow/use-arrow-nav.js +4 -53
  384. package/src/components/writing-flow/use-click-selection.js +65 -0
  385. package/src/components/writing-flow/use-drag-selection.js +126 -0
  386. package/src/components/writing-flow/use-input.js +112 -0
  387. package/src/components/writing-flow/use-multi-selection.js +13 -36
  388. package/src/components/writing-flow/use-selection-observer.js +153 -0
  389. package/src/components/writing-flow/use-tab-nav.js +1 -11
  390. package/src/hooks/border-color.js +5 -5
  391. package/src/hooks/border.js +0 -13
  392. package/src/hooks/color.js +51 -24
  393. package/src/hooks/font-family.js +5 -2
  394. package/src/hooks/font-size.js +10 -7
  395. package/src/hooks/gap.js +25 -17
  396. package/src/hooks/layout.js +11 -1
  397. package/src/hooks/style.js +40 -4
  398. package/src/hooks/test/gap.js +25 -1
  399. package/src/hooks/test/style.js +94 -0
  400. package/src/hooks/test/utils.js +1 -1
  401. package/src/hooks/utils.js +26 -0
  402. package/src/layouts/flex.js +89 -5
  403. package/src/layouts/flow.js +15 -4
  404. package/src/store/actions.js +341 -32
  405. package/src/store/defaults.js +7 -2
  406. package/src/store/reducer.js +25 -10
  407. package/src/store/selectors.js +329 -26
  408. package/src/store/test/selectors.js +242 -5
  409. package/src/store/utils.js +19 -0
  410. package/src/utils/dom.js +2 -1
  411. package/tsconfig.tsbuildinfo +1 -1
  412. package/build/components/block-list/use-block-props/use-multi-selection.js +0 -205
  413. package/build/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
  414. package/build/components/block-list/use-block-props/use-scroll-into-view.js +0 -77
  415. package/build/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
  416. package/build-module/components/block-list/use-block-props/use-multi-selection.js +0 -192
  417. package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +0 -1
  418. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js +0 -63
  419. package/build-module/components/block-list/use-block-props/use-scroll-into-view.js.map +0 -1
  420. package/src/components/block-list/use-block-props/use-multi-selection.js +0 -227
  421. package/src/components/block-list/use-block-props/use-scroll-into-view.js +0 -73
@@ -11,7 +11,7 @@ import {
11
11
  } from '@wordpress/components';
12
12
 
13
13
  import { useState } from '@wordpress/element';
14
- import { useInstanceId } from '@wordpress/compose';
14
+ import { useInstanceId, useResizeObserver } from '@wordpress/compose';
15
15
  import { __ } from '@wordpress/i18n';
16
16
 
17
17
  /**
@@ -28,6 +28,7 @@ const SetupContent = ( {
28
28
  activeSlide,
29
29
  patterns,
30
30
  onBlockPatternSelect,
31
+ height,
31
32
  } ) => {
32
33
  const composite = useCompositeState();
33
34
  const containerClass = 'block-editor-block-pattern-setup__container';
@@ -38,41 +39,52 @@ const SetupContent = ( {
38
39
  [ activeSlide + 1, 'next-slide' ],
39
40
  ] );
40
41
  return (
41
- <div className={ containerClass }>
42
- <ul className="carousel-container">
43
- { patterns.map( ( pattern, index ) => (
44
- <BlockPatternSlide
45
- className={ slideClass.get( index ) || '' }
46
- key={ pattern.name }
47
- pattern={ pattern }
48
- />
49
- ) ) }
50
- </ul>
42
+ <div
43
+ className="block-editor-block-pattern-setup__carousel"
44
+ style={ { height } }
45
+ >
46
+ <div className={ containerClass }>
47
+ <ul className="carousel-container">
48
+ { patterns.map( ( pattern, index ) => (
49
+ <BlockPatternSlide
50
+ className={ slideClass.get( index ) || '' }
51
+ key={ pattern.name }
52
+ pattern={ pattern }
53
+ minHeight={ height }
54
+ />
55
+ ) ) }
56
+ </ul>
57
+ </div>
51
58
  </div>
52
59
  );
53
60
  }
54
61
  return (
55
- <Composite
56
- { ...composite }
57
- role="listbox"
58
- className={ containerClass }
59
- aria-label={ __( 'Patterns list' ) }
62
+ <div
63
+ style={ { height } }
64
+ className="block-editor-block-pattern-setup__grid"
60
65
  >
61
- { patterns.map( ( pattern ) => (
62
- <BlockPattern
63
- key={ pattern.name }
64
- pattern={ pattern }
65
- onSelect={ onBlockPatternSelect }
66
- composite={ composite }
67
- />
68
- ) ) }
69
- </Composite>
66
+ <Composite
67
+ { ...composite }
68
+ role="listbox"
69
+ className={ containerClass }
70
+ aria-label={ __( 'Patterns list' ) }
71
+ >
72
+ { patterns.map( ( pattern ) => (
73
+ <BlockPattern
74
+ key={ pattern.name }
75
+ pattern={ pattern }
76
+ onSelect={ onBlockPatternSelect }
77
+ composite={ composite }
78
+ />
79
+ ) ) }
80
+ </Composite>
81
+ </div>
70
82
  );
71
83
  };
72
84
 
73
85
  function BlockPattern( { pattern, onSelect, composite } ) {
74
86
  const baseClassName = 'block-editor-block-pattern-setup-list';
75
- const { blocks, title, description, viewportWidth = 700 } = pattern;
87
+ const { blocks, description, viewportWidth = 700 } = pattern;
76
88
  const descriptionId = useInstanceId(
77
89
  BlockPattern,
78
90
  `${ baseClassName }__item-description`
@@ -94,9 +106,6 @@ function BlockPattern( { pattern, onSelect, composite } ) {
94
106
  blocks={ blocks }
95
107
  viewportWidth={ viewportWidth }
96
108
  />
97
- <div className={ `${ baseClassName }__item-title` }>
98
- { title }
99
- </div>
100
109
  </CompositeItem>
101
110
  { !! description && (
102
111
  <VisuallyHidden id={ descriptionId }>
@@ -107,7 +116,7 @@ function BlockPattern( { pattern, onSelect, composite } ) {
107
116
  );
108
117
  }
109
118
 
110
- function BlockPatternSlide( { className, pattern } ) {
119
+ function BlockPatternSlide( { className, pattern, minHeight } ) {
111
120
  const { blocks, title, description } = pattern;
112
121
  const descriptionId = useInstanceId(
113
122
  BlockPatternSlide,
@@ -119,7 +128,10 @@ function BlockPatternSlide( { className, pattern } ) {
119
128
  aria-label={ title }
120
129
  aria-describedby={ description ? descriptionId : undefined }
121
130
  >
122
- <BlockPreview blocks={ blocks } __experimentalLive />
131
+ <BlockPreview
132
+ blocks={ blocks }
133
+ __experimentalMinHeight={ minHeight }
134
+ />
123
135
  { !! description && (
124
136
  <VisuallyHidden id={ descriptionId }>
125
137
  { description }
@@ -141,6 +153,10 @@ const BlockPatternSetup = ( {
141
153
  const [ showBlank, setShowBlank ] = useState( false );
142
154
  const { replaceBlock } = useDispatch( blockEditorStore );
143
155
  const patterns = usePatternsSetup( clientId, blockName, filterPatternsFn );
156
+ const [
157
+ contentResizeListener,
158
+ { height: contentHeight },
159
+ ] = useResizeObserver();
144
160
 
145
161
  if ( ! patterns?.length || showBlank ) {
146
162
  return startBlankComponent;
@@ -152,35 +168,44 @@ const BlockPatternSetup = ( {
152
168
  };
153
169
  const onPatternSelectCallback =
154
170
  onBlockPatternSelect || onBlockPatternSelectDefault;
171
+ const onStartBlank = startBlankComponent
172
+ ? () => {
173
+ setShowBlank( true );
174
+ }
175
+ : undefined;
155
176
  return (
156
- <div
157
- className={ `block-editor-block-pattern-setup view-mode-${ viewMode }` }
158
- >
159
- <SetupToolbar
160
- viewMode={ viewMode }
161
- setViewMode={ setViewMode }
162
- activeSlide={ activeSlide }
163
- totalSlides={ patterns.length }
164
- handleNext={ () => {
165
- setActiveSlide( ( active ) => active + 1 );
166
- } }
167
- handlePrevious={ () => {
168
- setActiveSlide( ( active ) => active - 1 );
169
- } }
170
- onBlockPatternSelect={ () => {
171
- onPatternSelectCallback( patterns[ activeSlide ].blocks );
172
- } }
173
- onStartBlank={ () => {
174
- setShowBlank( true );
175
- } }
176
- />
177
- <SetupContent
178
- viewMode={ viewMode }
179
- activeSlide={ activeSlide }
180
- patterns={ patterns }
181
- onBlockPatternSelect={ onPatternSelectCallback }
182
- />
183
- </div>
177
+ <>
178
+ { contentResizeListener }
179
+ <div
180
+ className={ `block-editor-block-pattern-setup view-mode-${ viewMode }` }
181
+ >
182
+ <SetupContent
183
+ viewMode={ viewMode }
184
+ activeSlide={ activeSlide }
185
+ patterns={ patterns }
186
+ onBlockPatternSelect={ onPatternSelectCallback }
187
+ height={ contentHeight - 2 * 60 }
188
+ />
189
+ <SetupToolbar
190
+ viewMode={ viewMode }
191
+ setViewMode={ setViewMode }
192
+ activeSlide={ activeSlide }
193
+ totalSlides={ patterns.length }
194
+ handleNext={ () => {
195
+ setActiveSlide( ( active ) => active + 1 );
196
+ } }
197
+ handlePrevious={ () => {
198
+ setActiveSlide( ( active ) => active - 1 );
199
+ } }
200
+ onBlockPatternSelect={ () => {
201
+ onPatternSelectCallback(
202
+ patterns[ activeSlide ].blocks
203
+ );
204
+ } }
205
+ onStartBlank={ onStartBlank }
206
+ />
207
+ </div>
208
+ </>
184
209
  );
185
210
  };
186
211
 
@@ -17,7 +17,9 @@ import { VIEWMODES } from './constants';
17
17
 
18
18
  const Actions = ( { onStartBlank, onBlockPatternSelect } ) => (
19
19
  <div className="block-editor-block-pattern-setup__actions">
20
- <Button onClick={ onStartBlank }>{ __( 'Start blank' ) }</Button>
20
+ { onStartBlank && (
21
+ <Button onClick={ onStartBlank }>{ __( 'Start blank' ) }</Button>
22
+ ) }
21
23
  <Button variant="primary" onClick={ onBlockPatternSelect }>
22
24
  { __( 'Choose' ) }
23
25
  </Button>
@@ -5,8 +5,6 @@
5
5
  align-items: flex-start;
6
6
  width: 100%;
7
7
  border-radius: $radius-block-ui;
8
- box-shadow: inset 0 0 0 $border-width $gray-900;
9
- outline: 1px solid transparent; // Shown for Windows 10 High Contrast mode.
10
8
 
11
9
  // TODO change to check parent.
12
10
  &.view-mode-grid {
@@ -15,37 +13,41 @@
15
13
  }
16
14
 
17
15
  .block-editor-block-pattern-setup__container {
18
- display: grid;
19
- grid-template-columns: 1fr 1fr;
20
- grid-gap: $grid-unit-20;
21
- padding: $grid-unit-20;
22
- max-height: 550px;
23
- overflow: auto;
24
- margin: 0 $border-width $border-width $border-width;
25
- width: calc(100% - #{ $border-width * 2 });
26
- background: $white;
16
+ column-gap: $grid-unit-30;
17
+ display: block;
18
+ width: 100%;
19
+ padding: $grid-unit-40;
20
+ column-count: 2;
21
+
22
+ @include break-huge() {
23
+ column-count: 3;
24
+ }
27
25
 
28
26
  .block-editor-block-preview__container,
29
27
  div[role="button"] {
30
28
  cursor: pointer;
31
29
  }
32
30
 
33
- .block-editor-block-pattern-setup-list__item-title {
34
- padding: $grid-unit-05;
35
- font-size: $helptext-font-size;
36
- text-align: center;
37
- }
31
+ .block-editor-block-pattern-setup-list__list-item {
32
+ break-inside: avoid-column;
33
+ margin-bottom: $grid-unit-30;
34
+
35
+ .block-editor-block-preview__container {
36
+ min-height: 100px;
37
+ border-radius: $radius-block-ui;
38
+ border: $border-width solid $gray-300;
39
+ }
38
40
 
39
- .block-editor-block-preview__container {
40
- border-radius: $radius-block-ui;
41
- border: $border-width solid $gray-300;
41
+ .block-editor-block-preview__content {
42
+ width: 100%;
43
+ }
42
44
  }
43
45
  }
44
46
  }
45
47
 
46
48
  .block-editor-block-pattern-setup__toolbar {
49
+ height: $header-height;
47
50
  box-sizing: border-box;
48
- position: relative;
49
51
  padding: $grid-unit-20;
50
52
  width: 100%;
51
53
  text-align: left;
@@ -54,13 +56,12 @@
54
56
  // Block UI appearance.
55
57
  border-radius: $radius-block-ui $radius-block-ui 0 0;
56
58
  background-color: $white;
57
- box-shadow: inset 0 0 0 $border-width $gray-900;
58
- outline: 1px solid transparent; // Shown for Windows 10 High Contrast mode.
59
-
60
59
  display: flex;
61
60
  flex-direction: row;
62
61
  align-items: center;
63
62
  justify-content: space-between;
63
+ border-top: 1px solid $gray-300;
64
+ align-self: flex-end;
64
65
 
65
66
  .block-editor-block-pattern-setup__display-controls {
66
67
  display: flex;
@@ -93,13 +94,12 @@
93
94
  box-sizing: border-box;
94
95
  }
95
96
  .pattern-slide {
96
- opacity: 0;
97
97
  position: absolute;
98
98
  top: 0;
99
99
  width: 100%;
100
100
  margin: auto;
101
- padding: $grid-unit-20;
102
- transition: transform 0.5s, opacity 0.5s, z-index 0.5s;
101
+ padding: 0;
102
+ transition: transform 0.5s, z-index 0.5s;
103
103
  z-index: z-index(".block-editor-block-pattern-setup .pattern-slide");
104
104
 
105
105
  &.active-slide {
@@ -125,3 +125,9 @@
125
125
  }
126
126
  }
127
127
  }
128
+
129
+ .block-editor-block-pattern-setup__carousel,
130
+ .block-editor-block-pattern-setup__grid {
131
+ width: 100%;
132
+ overflow-y: auto;
133
+ }
@@ -19,7 +19,11 @@ let MemoizedBlockList;
19
19
 
20
20
  const MAX_HEIGHT = 2000;
21
21
 
22
- function AutoBlockPreview( { viewportWidth, __experimentalPadding } ) {
22
+ function AutoBlockPreview( {
23
+ viewportWidth,
24
+ __experimentalPadding,
25
+ __experimentalMinHeight,
26
+ } ) {
23
27
  const [
24
28
  containerResizeListener,
25
29
  { width: containerWidth },
@@ -68,6 +72,7 @@ function AutoBlockPreview( { viewportWidth, __experimentalPadding } ) {
68
72
  contentHeight > MAX_HEIGHT
69
73
  ? MAX_HEIGHT * scale
70
74
  : undefined,
75
+ minHeight: __experimentalMinHeight,
71
76
  } }
72
77
  >
73
78
  <Iframe
@@ -98,6 +103,10 @@ function AutoBlockPreview( { viewportWidth, __experimentalPadding } ) {
98
103
  // This is a catch-all max-height for patterns.
99
104
  // See: https://github.com/WordPress/gutenberg/pull/38175.
100
105
  maxHeight: MAX_HEIGHT,
106
+ minHeight:
107
+ scale < 1 && __experimentalMinHeight
108
+ ? __experimentalMinHeight / scale
109
+ : __experimentalMinHeight,
101
110
  } }
102
111
  >
103
112
  { contentResizeListener }
@@ -29,6 +29,7 @@ export function BlockPreview( {
29
29
  viewportWidth = 1200,
30
30
  __experimentalLive = false,
31
31
  __experimentalOnClick,
32
+ __experimentalMinHeight,
32
33
  } ) {
33
34
  const originalSettings = useSelect(
34
35
  ( select ) => select( blockEditorStore ).getSettings(),
@@ -51,6 +52,7 @@ export function BlockPreview( {
51
52
  <AutoHeightBlockPreview
52
53
  viewportWidth={ viewportWidth }
53
54
  __experimentalPadding={ __experimentalPadding }
55
+ __experimentalMinHeight={ __experimentalMinHeight }
54
56
  />
55
57
  ) }
56
58
  </BlockEditorProvider>
@@ -6,12 +6,17 @@ import { castArray, flow, noop } from 'lodash';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { __, sprintf } from '@wordpress/i18n';
9
+ import { getBlockType, serialize } from '@wordpress/blocks';
10
10
  import { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
11
- import { useSelect } from '@wordpress/data';
11
+ import { useDispatch, useSelect } from '@wordpress/data';
12
12
  import { moreVertical } from '@wordpress/icons';
13
- import { Children, cloneElement, useCallback } from '@wordpress/element';
14
- import { serialize } from '@wordpress/blocks';
13
+ import {
14
+ Children,
15
+ cloneElement,
16
+ useCallback,
17
+ useRef,
18
+ } from '@wordpress/element';
19
+ import { __, sprintf } from '@wordpress/i18n';
15
20
  import { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
16
21
  import { useCopyToClipboard } from '@wordpress/compose';
17
22
 
@@ -19,12 +24,14 @@ import { useCopyToClipboard } from '@wordpress/compose';
19
24
  * Internal dependencies
20
25
  */
21
26
  import BlockActions from '../block-actions';
27
+ import BlockIcon from '../block-icon';
22
28
  import BlockModeToggle from './block-mode-toggle';
23
29
  import BlockHTMLConvertButton from './block-html-convert-button';
24
30
  import __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';
25
31
  import BlockSettingsMenuControls from '../block-settings-menu-controls';
26
32
  import { store as blockEditorStore } from '../../store';
27
33
  import useBlockDisplayTitle from '../block-title/use-block-display-title';
34
+ import { useShowMoversGestures } from '../block-toolbar/utils';
28
35
 
29
36
  const POPOVER_PROPS = {
30
37
  className: 'block-editor-block-settings-menu__popover',
@@ -47,7 +54,10 @@ export function BlockSettingsDropdown( {
47
54
  const count = blockClientIds.length;
48
55
  const firstBlockClientId = blockClientIds[ 0 ];
49
56
  const {
57
+ firstParentClientId,
58
+ hasReducedUI,
50
59
  onlyBlock,
60
+ parentBlockType,
51
61
  previousBlockClientId,
52
62
  nextBlockClientId,
53
63
  selectedBlockClientIds,
@@ -55,12 +65,23 @@ export function BlockSettingsDropdown( {
55
65
  ( select ) => {
56
66
  const {
57
67
  getBlockCount,
68
+ getBlockName,
69
+ getBlockParents,
58
70
  getPreviousBlockClientId,
59
71
  getNextBlockClientId,
60
72
  getSelectedBlockClientIds,
73
+ getSettings,
61
74
  } = select( blockEditorStore );
75
+
76
+ const parents = getBlockParents( firstBlockClientId );
77
+ const _firstParentClientId = parents[ parents.length - 1 ];
78
+ const parentBlockName = getBlockName( _firstParentClientId );
79
+
62
80
  return {
81
+ firstParentClientId: _firstParentClientId,
82
+ hasReducedUI: getSettings().hasReducedUI,
63
83
  onlyBlock: 1 === getBlockCount(),
84
+ parentBlockType: getBlockType( parentBlockName ),
64
85
  previousBlockClientId: getPreviousBlockClientId(
65
86
  firstBlockClientId
66
87
  ),
@@ -87,6 +108,10 @@ export function BlockSettingsDropdown( {
87
108
  };
88
109
  }, [] );
89
110
 
111
+ const { selectBlock, toggleBlockHighlight } = useDispatch(
112
+ blockEditorStore
113
+ );
114
+
90
115
  const updateSelectionAfterDuplicate = useCallback(
91
116
  __experimentalSelectBlock
92
117
  ? async ( clientIdsPromise ) => {
@@ -135,6 +160,19 @@ export function BlockSettingsDropdown( {
135
160
  );
136
161
  const removeBlockLabel = count === 1 ? label : __( 'Remove blocks' );
137
162
 
163
+ // Allows highlighting the parent block outline when focusing or hovering
164
+ // the parent block selector within the child.
165
+ const selectParentButtonRef = useRef();
166
+ const { gestures: showParentOutlineGestures } = useShowMoversGestures( {
167
+ ref: selectParentButtonRef,
168
+ onChange( isFocused ) {
169
+ if ( isFocused && hasReducedUI ) {
170
+ return;
171
+ }
172
+ toggleBlockHighlight( firstParentClientId, isFocused );
173
+ },
174
+ } );
175
+
138
176
  return (
139
177
  <BlockActions
140
178
  clientIds={ clientIds }
@@ -167,6 +205,26 @@ export function BlockSettingsDropdown( {
167
205
  <__unstableBlockSettingsMenuFirstItem.Slot
168
206
  fillProps={ { onClose } }
169
207
  />
208
+ { firstParentClientId !== undefined && (
209
+ <MenuItem
210
+ { ...showParentOutlineGestures }
211
+ ref={ selectParentButtonRef }
212
+ icon={
213
+ <BlockIcon
214
+ icon={ parentBlockType.icon }
215
+ />
216
+ }
217
+ onClick={ () =>
218
+ selectBlock( firstParentClientId )
219
+ }
220
+ >
221
+ { sprintf(
222
+ /* translators: %s: Name of the block's parent. */
223
+ __( 'Select parent block (%s)' ),
224
+ parentBlockType.title
225
+ ) }
226
+ </MenuItem>
227
+ ) }
170
228
  { count === 1 && (
171
229
  <BlockHTMLConvertButton
172
230
  clientId={ firstBlockClientId }
@@ -20,7 +20,7 @@ import {
20
20
  isTemplatePart,
21
21
  } from '@wordpress/blocks';
22
22
  import { useSelect, useDispatch } from '@wordpress/data';
23
- import { stack } from '@wordpress/icons';
23
+ import { copy } from '@wordpress/icons';
24
24
 
25
25
  /**
26
26
  * Internal dependencies
@@ -69,7 +69,7 @@ export const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {
69
69
  // appropriate icon to communicate the non-uniformity.
70
70
  _icon = isSelectionOfSameType
71
71
  ? getBlockType( firstBlockName )?.icon
72
- : stack;
72
+ : copy;
73
73
  }
74
74
  return {
75
75
  possibleBlockTransformations: getBlockTransformItems(
@@ -108,7 +108,19 @@ export const BlockSwitcherDropdownMenu = ( { clientIds, blocks } ) => {
108
108
  disabled
109
109
  className="block-editor-block-switcher__no-switcher-icon"
110
110
  title={ blockTitle }
111
- icon={ <BlockIcon icon={ icon } showColors /> }
111
+ icon={
112
+ <>
113
+ <BlockIcon icon={ icon } showColors />
114
+ { ( isReusable || isTemplate ) && (
115
+ <span className="block-editor-block-switcher__toggle-text">
116
+ <BlockTitle
117
+ clientId={ clientIds }
118
+ maximumLength={ 35 }
119
+ />
120
+ </span>
121
+ ) }
122
+ </>
123
+ }
112
124
  />
113
125
  </ToolbarGroup>
114
126
  );
@@ -1,5 +1,13 @@
1
1
  .block-editor-block-switcher {
2
2
  position: relative;
3
+ padding: 0 ($grid-unit-15 * 0.5);
4
+
5
+ // @todo: override toolbar group inherited paddings from components/block-tools/style.scss.
6
+ // This is best fixed by making the mover control area a proper single toolbar group.
7
+ // It needs specificity due to style inherited from .components-accessible-toolbar .components-button.has-icon.has-icon.
8
+ .components-button.components-dropdown-menu__toggle.has-icon.has-icon {
9
+ min-width: $button-size;
10
+ }
3
11
  }
4
12
 
5
13
  // Show an indicator triangle.
@@ -8,7 +16,6 @@
8
16
  position: relative;
9
17
  }
10
18
 
11
-
12
19
  .components-button.block-editor-block-switcher__toggle,
13
20
  .components-button.block-editor-block-switcher__no-switcher-icon {
14
21
  margin: 0;
@@ -39,11 +46,15 @@
39
46
  }
40
47
 
41
48
  .components-button.block-editor-block-switcher__no-switcher-icon {
42
- width: $block-toolbar-height;
49
+ display: flex;
50
+ // The `!important` is used to vastly simplify the overriding of an inherited selector.
51
+ // Can be removed if we refactor .block-editor-block-toolbar .components-toolbar-group .components-button.has-icon.has-icon
52
+ padding: ($grid-unit-15 * 0.5) $grid-unit-15 !important;
43
53
 
44
- .block-editor-blocks-icon {
54
+ .block-editor-block-icon {
45
55
  margin-right: auto;
46
56
  margin-left: auto;
57
+ min-width: $icon-size !important;
47
58
  }
48
59
  }
49
60
 
@@ -165,7 +176,7 @@
165
176
  // The block switcher in the contextual toolbar should be bigger.
166
177
  .block-editor-block-contextual-toolbar {
167
178
  .components-button.block-editor-block-switcher__no-switcher-icon {
168
- width: $grid-unit-60;
179
+ min-width: $button-size;
169
180
  }
170
181
 
171
182
  .components-button.block-editor-block-switcher__no-switcher-icon,
@@ -6,19 +6,21 @@ exports[`BlockSwitcherDropdownMenu should render disabled block switcher with mu
6
6
  className="block-editor-block-switcher__no-switcher-icon"
7
7
  disabled={true}
8
8
  icon={
9
- <Memo(BlockIcon)
10
- icon={
11
- <SVG
12
- viewBox="0 0 24 24"
13
- xmlns="http://www.w3.org/2000/svg"
14
- >
15
- <Path
16
- d="M20.2 8v11c0 .7-.6 1.2-1.2 1.2H6v1.5h13c1.5 0 2.7-1.2 2.7-2.8V8zM18 16.4V4.6c0-.9-.7-1.6-1.6-1.6H4.6C3.7 3 3 3.7 3 4.6v11.8c0 .9.7 1.6 1.6 1.6h11.8c.9 0 1.6-.7 1.6-1.6zm-13.5 0V4.6c0-.1.1-.1.1-.1h11.8c.1 0 .1.1.1.1v11.8c0 .1-.1.1-.1.1H4.6l-.1-.1z"
17
- />
18
- </SVG>
19
- }
20
- showColors={true}
21
- />
9
+ <React.Fragment>
10
+ <Memo(BlockIcon)
11
+ icon={
12
+ <SVG
13
+ viewBox="0 0 24 24"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ >
16
+ <Path
17
+ d="M20.2 8v11c0 .7-.6 1.2-1.2 1.2H6v1.5h13c1.5 0 2.7-1.2 2.7-2.8V8zM18 16.4V4.6c0-.9-.7-1.6-1.6-1.6H4.6C3.7 3 3 3.7 3 4.6v11.8c0 .9.7 1.6 1.6 1.6h11.8c.9 0 1.6-.7 1.6-1.6zm-13.5 0V4.6c0-.1.1-.1.1-.1h11.8c.1 0 .1.1.1.1v11.8c0 .1-.1.1-.1.1H4.6l-.1-.1z"
18
+ />
19
+ </SVG>
20
+ }
21
+ showColors={true}
22
+ />
23
+ </React.Fragment>
22
24
  }
23
25
  />
24
26
  </ToolbarGroup>
@@ -10,7 +10,7 @@ import { useSelect } from '@wordpress/data';
10
10
  import { registerBlockType, unregisterBlockType } from '@wordpress/blocks';
11
11
  import { DOWN } from '@wordpress/keycodes';
12
12
  import { Button } from '@wordpress/components';
13
- import { stack } from '@wordpress/icons';
13
+ import { copy } from '@wordpress/icons';
14
14
 
15
15
  /**
16
16
  * Internal dependencies
@@ -131,7 +131,7 @@ describe( 'BlockSwitcherDropdownMenu', () => {
131
131
  test( 'should render disabled block switcher with multi block of different types when no transforms', () => {
132
132
  useSelect.mockImplementation( () => ( {
133
133
  possibleBlockTransformations: [],
134
- icon: stack,
134
+ icon: copy,
135
135
  } ) );
136
136
  const wrapper = shallow(
137
137
  <BlockSwitcherDropdownMenu
@@ -14,8 +14,8 @@ import useBlockDisplayTitle from './use-block-display-title';
14
14
  * <BlockTitle clientId="afd1cb17-2c08-4e7a-91be-007ba7ddc3a1" maximumLength={ 17 }/>
15
15
  * ```
16
16
  *
17
- * @param {Object} props
18
- * @param {string} props.clientId Client ID of block.
17
+ * @param {Object} props
18
+ * @param {string} props.clientId Client ID of block.
19
19
  * @param {number|undefined} props.maximumLength The maximum length that the block title string may be before truncated.
20
20
  *
21
21
  * @return {JSX.Element} Block title.
@@ -29,7 +29,7 @@ import { store as blockEditorStore } from '../../store';
29
29
  * useBlockDisplayTitle( 'afd1cb17-2c08-4e7a-91be-007ba7ddc3a1', 17 );
30
30
  * ```
31
31
  *
32
- * @param {string} clientId Client ID of block.
32
+ * @param {string} clientId Client ID of block.
33
33
  * @param {number|undefined} maximumLength The maximum length that the block title string may be before truncated.
34
34
  * @return {?string} Block title.
35
35
  */
@@ -0,0 +1,8 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { createContext } from '@wordpress/element';
5
+
6
+ const __unstableBlockNameContext = createContext( '' );
7
+
8
+ export default __unstableBlockNameContext;