@wordpress/block-editor 12.9.1-next.5a1d1283.0 → 12.10.1

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 (448) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +33 -3
  3. package/build/components/block-canvas/index.js +107 -0
  4. package/build/components/block-canvas/index.js.map +1 -0
  5. package/build/components/block-inspector/index.js +4 -1
  6. package/build/components/block-inspector/index.js.map +1 -1
  7. package/build/components/block-patterns-list/index.js +28 -8
  8. package/build/components/block-patterns-list/index.js.map +1 -1
  9. package/build/components/block-patterns-paging/index.js +68 -0
  10. package/build/components/block-patterns-paging/index.js.map +1 -0
  11. package/build/components/block-settings-menu/block-settings-dropdown.js +28 -0
  12. package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  13. package/build/components/block-settings-menu-controls/index.js +4 -7
  14. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  15. package/build/components/block-styles/index.js +1 -0
  16. package/build/components/block-styles/index.js.map +1 -1
  17. package/build/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  18. package/build/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  19. package/build/components/block-tools/block-contextual-toolbar.js +18 -7
  20. package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
  21. package/build/components/block-tools/block-selection-button.js +5 -1
  22. package/build/components/block-tools/block-selection-button.js.map +1 -1
  23. package/build/components/border-radius-control/input-controls.js +1 -1
  24. package/build/components/border-radius-control/input-controls.js.map +1 -1
  25. package/build/components/border-radius-control/linked-button.js +2 -4
  26. package/build/components/border-radius-control/linked-button.js.map +1 -1
  27. package/build/components/colors/with-colors.js.map +1 -1
  28. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  29. package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  30. package/build/components/default-block-appender/index.native.js +20 -1
  31. package/build/components/default-block-appender/index.native.js.map +1 -1
  32. package/build/components/duotone/utils.js +68 -0
  33. package/build/components/duotone/utils.js.map +1 -1
  34. package/build/components/editor-styles/index.js +28 -9
  35. package/build/components/editor-styles/index.js.map +1 -1
  36. package/build/components/global-styles/hooks.js +2 -101
  37. package/build/components/global-styles/hooks.js.map +1 -1
  38. package/build/components/global-styles/image-settings-panel.js +61 -0
  39. package/build/components/global-styles/image-settings-panel.js.map +1 -0
  40. package/build/components/global-styles/index.js +11 -17
  41. package/build/components/global-styles/index.js.map +1 -1
  42. package/build/components/global-styles/use-global-styles-output.js +19 -15
  43. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  44. package/build/components/global-styles/utils.js +1 -1
  45. package/build/components/global-styles/utils.js.map +1 -1
  46. package/build/components/iframe/index.js +67 -33
  47. package/build/components/iframe/index.js.map +1 -1
  48. package/build/components/image-editor/use-save-image.js +2 -5
  49. package/build/components/image-editor/use-save-image.js.map +1 -1
  50. package/build/components/image-editor/use-transform-image.js +9 -9
  51. package/build/components/image-editor/use-transform-image.js.map +1 -1
  52. package/build/components/index.js +8 -12
  53. package/build/components/index.js.map +1 -1
  54. package/build/components/index.native.js +6 -5
  55. package/build/components/index.native.js.map +1 -1
  56. package/build/components/inner-blocks/use-nested-settings-update.js +13 -7
  57. package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  58. package/build/components/inserter/block-patterns-explorer/explorer.js +12 -6
  59. package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  60. package/build/components/inserter/block-patterns-explorer/patterns-list.js +45 -22
  61. package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  62. package/build/components/inserter/block-patterns-explorer/sidebar.js +9 -9
  63. package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  64. package/build/components/inserter/block-patterns-filter.js +137 -0
  65. package/build/components/inserter/block-patterns-filter.js.map +1 -0
  66. package/build/components/inserter/block-patterns-tab.js +128 -42
  67. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  68. package/build/components/inserter/hooks/use-patterns-paging.js +61 -0
  69. package/build/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  70. package/build/components/inserter/hooks/use-patterns-state.js +21 -10
  71. package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
  72. package/build/components/inserter/menu.js +13 -11
  73. package/build/components/inserter/menu.js.map +1 -1
  74. package/build/components/inserter/search-results.js +4 -3
  75. package/build/components/inserter/search-results.js.map +1 -1
  76. package/build/components/inserter/tabs.js +1 -12
  77. package/build/components/inserter/tabs.js.map +1 -1
  78. package/build/components/inspector-controls/block-support-slot-container.js +12 -1
  79. package/build/components/inspector-controls/block-support-slot-container.js.map +1 -1
  80. package/build/components/inspector-controls/fill.js +24 -13
  81. package/build/components/inspector-controls/fill.js.map +1 -1
  82. package/build/components/inspector-controls/groups.js +5 -3
  83. package/build/components/inspector-controls/groups.js.map +1 -1
  84. package/build/components/inspector-controls/slot.js +13 -0
  85. package/build/components/inspector-controls/slot.js.map +1 -1
  86. package/build/components/inspector-controls-tabs/styles-tab.js +3 -0
  87. package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  88. package/build/components/link-control/index.js +12 -2
  89. package/build/components/link-control/index.js.map +1 -1
  90. package/build/components/list-view/block-select-button.js +1 -3
  91. package/build/components/list-view/block-select-button.js.map +1 -1
  92. package/build/components/list-view/block.js +13 -1
  93. package/build/components/list-view/block.js.map +1 -1
  94. package/build/components/list-view/use-block-selection.js +29 -24
  95. package/build/components/list-view/use-block-selection.js.map +1 -1
  96. package/build/components/media-placeholder/index.js +2 -2
  97. package/build/components/media-placeholder/index.js.map +1 -1
  98. package/build/components/media-placeholder/index.native.js +11 -11
  99. package/build/components/media-placeholder/index.native.js.map +1 -1
  100. package/build/components/media-replace-flow/index.js +2 -3
  101. package/build/components/media-replace-flow/index.js.map +1 -1
  102. package/build/components/media-upload/constants.js +30 -0
  103. package/build/components/media-upload/constants.js.map +1 -0
  104. package/build/components/media-upload/index.native.js +63 -53
  105. package/build/components/media-upload/index.native.js.map +1 -1
  106. package/build/components/preview-options/index.js +1 -1
  107. package/build/components/preview-options/index.js.map +1 -1
  108. package/build/components/rich-text/index.js +34 -35
  109. package/build/components/rich-text/index.js.map +1 -1
  110. package/build/components/rich-text/index.native.js +14 -32
  111. package/build/components/rich-text/index.native.js.map +1 -1
  112. package/build/components/rich-text/multiline.js +95 -0
  113. package/build/components/rich-text/multiline.js.map +1 -0
  114. package/build/components/rich-text/split-value.js +10 -16
  115. package/build/components/rich-text/split-value.js.map +1 -1
  116. package/build/components/rich-text/use-enter.js +31 -40
  117. package/build/components/rich-text/use-enter.js.map +1 -1
  118. package/build/components/rich-text/use-paste-handler.js +18 -33
  119. package/build/components/rich-text/use-paste-handler.js.map +1 -1
  120. package/build/components/spacing-sizes-control/utils.js +1 -1
  121. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  122. package/build/components/use-block-commands/index.js +30 -18
  123. package/build/components/use-block-commands/index.js.map +1 -1
  124. package/build/components/use-block-display-information/index.js +5 -2
  125. package/build/components/use-block-display-information/index.js.map +1 -1
  126. package/build/hooks/background.js +263 -0
  127. package/build/hooks/background.js.map +1 -0
  128. package/build/hooks/block-hooks.js +188 -0
  129. package/build/hooks/block-hooks.js.map +1 -0
  130. package/build/hooks/block-rename-ui.js +161 -0
  131. package/build/hooks/block-rename-ui.js.map +1 -0
  132. package/build/hooks/duotone.js +29 -42
  133. package/build/hooks/duotone.js.map +1 -1
  134. package/build/hooks/index.js +2 -2
  135. package/build/hooks/index.js.map +1 -1
  136. package/build/hooks/layout.js +31 -14
  137. package/build/hooks/layout.js.map +1 -1
  138. package/build/hooks/position.js +4 -2
  139. package/build/hooks/position.js.map +1 -1
  140. package/build/hooks/style.js +10 -3
  141. package/build/hooks/style.js.map +1 -1
  142. package/build/private-apis.js +2 -0
  143. package/build/private-apis.js.map +1 -1
  144. package/build/store/actions.js +33 -10
  145. package/build/store/actions.js.map +1 -1
  146. package/build/store/private-actions.js +42 -8
  147. package/build/store/private-actions.js.map +1 -1
  148. package/build/store/private-selectors.js +25 -3
  149. package/build/store/private-selectors.js.map +1 -1
  150. package/build/store/reducer.js +43 -1
  151. package/build/store/reducer.js.map +1 -1
  152. package/build/store/selectors.js +84 -23
  153. package/build/store/selectors.js.map +1 -1
  154. package/build/store/utils.js +0 -4
  155. package/build/store/utils.js.map +1 -1
  156. package/build-module/components/block-canvas/index.js +97 -0
  157. package/build-module/components/block-canvas/index.js.map +1 -0
  158. package/build-module/components/block-inspector/index.js +4 -1
  159. package/build-module/components/block-inspector/index.js.map +1 -1
  160. package/build-module/components/block-patterns-list/index.js +30 -10
  161. package/build-module/components/block-patterns-list/index.js.map +1 -1
  162. package/build-module/components/block-patterns-paging/index.js +61 -0
  163. package/build-module/components/block-patterns-paging/index.js.map +1 -0
  164. package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -0
  165. package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
  166. package/build-module/components/block-settings-menu-controls/index.js +4 -7
  167. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  168. package/build-module/components/block-styles/index.js +1 -0
  169. package/build-module/components/block-styles/index.js.map +1 -1
  170. package/build-module/components/block-toolbar/block-toolbar-menu.native.js +3 -7
  171. package/build-module/components/block-toolbar/block-toolbar-menu.native.js.map +1 -1
  172. package/build-module/components/block-tools/block-contextual-toolbar.js +18 -7
  173. package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
  174. package/build-module/components/block-tools/block-selection-button.js +5 -1
  175. package/build-module/components/block-tools/block-selection-button.js.map +1 -1
  176. package/build-module/components/border-radius-control/input-controls.js +1 -1
  177. package/build-module/components/border-radius-control/input-controls.js.map +1 -1
  178. package/build-module/components/border-radius-control/linked-button.js +2 -4
  179. package/build-module/components/border-radius-control/linked-button.js.map +1 -1
  180. package/build-module/components/colors/with-colors.js.map +1 -1
  181. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -21
  182. package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
  183. package/build-module/components/default-block-appender/index.native.js +20 -1
  184. package/build-module/components/default-block-appender/index.native.js.map +1 -1
  185. package/build-module/components/duotone/utils.js +65 -0
  186. package/build-module/components/duotone/utils.js.map +1 -1
  187. package/build-module/components/editor-styles/index.js +28 -9
  188. package/build-module/components/editor-styles/index.js.map +1 -1
  189. package/build-module/components/global-styles/hooks.js +3 -100
  190. package/build-module/components/global-styles/hooks.js.map +1 -1
  191. package/build-module/components/global-styles/image-settings-panel.js +53 -0
  192. package/build-module/components/global-styles/image-settings-panel.js.map +1 -0
  193. package/build-module/components/global-styles/index.js +2 -2
  194. package/build-module/components/global-styles/index.js.map +1 -1
  195. package/build-module/components/global-styles/use-global-styles-output.js +18 -16
  196. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  197. package/build-module/components/global-styles/utils.js +1 -1
  198. package/build-module/components/global-styles/utils.js.map +1 -1
  199. package/build-module/components/iframe/index.js +66 -33
  200. package/build-module/components/iframe/index.js.map +1 -1
  201. package/build-module/components/image-editor/use-save-image.js +2 -5
  202. package/build-module/components/image-editor/use-save-image.js.map +1 -1
  203. package/build-module/components/image-editor/use-transform-image.js +9 -9
  204. package/build-module/components/image-editor/use-transform-image.js.map +1 -1
  205. package/build-module/components/index.js +1 -1
  206. package/build-module/components/index.js.map +1 -1
  207. package/build-module/components/index.native.js +2 -1
  208. package/build-module/components/index.native.js.map +1 -1
  209. package/build-module/components/inner-blocks/use-nested-settings-update.js +14 -8
  210. package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
  211. package/build-module/components/inserter/block-patterns-explorer/explorer.js +12 -6
  212. package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -1
  213. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +47 -24
  214. package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -1
  215. package/build-module/components/inserter/block-patterns-explorer/sidebar.js +9 -9
  216. package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
  217. package/build-module/components/inserter/block-patterns-filter.js +128 -0
  218. package/build-module/components/inserter/block-patterns-filter.js.map +1 -0
  219. package/build-module/components/inserter/block-patterns-tab.js +125 -44
  220. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  221. package/build-module/components/inserter/hooks/use-patterns-paging.js +54 -0
  222. package/build-module/components/inserter/hooks/use-patterns-paging.js.map +1 -0
  223. package/build-module/components/inserter/hooks/use-patterns-state.js +22 -10
  224. package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
  225. package/build-module/components/inserter/menu.js +13 -11
  226. package/build-module/components/inserter/menu.js.map +1 -1
  227. package/build-module/components/inserter/search-results.js +4 -3
  228. package/build-module/components/inserter/search-results.js.map +1 -1
  229. package/build-module/components/inserter/tabs.js +1 -12
  230. package/build-module/components/inserter/tabs.js.map +1 -1
  231. package/build-module/components/inspector-controls/block-support-slot-container.js +13 -2
  232. package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -1
  233. package/build-module/components/inspector-controls/fill.js +25 -14
  234. package/build-module/components/inspector-controls/fill.js.map +1 -1
  235. package/build-module/components/inspector-controls/groups.js +5 -3
  236. package/build-module/components/inspector-controls/groups.js.map +1 -1
  237. package/build-module/components/inspector-controls/slot.js +15 -1
  238. package/build-module/components/inspector-controls/slot.js.map +1 -1
  239. package/build-module/components/inspector-controls-tabs/styles-tab.js +3 -0
  240. package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -1
  241. package/build-module/components/link-control/index.js +12 -2
  242. package/build-module/components/link-control/index.js.map +1 -1
  243. package/build-module/components/list-view/block-select-button.js +1 -3
  244. package/build-module/components/list-view/block-select-button.js.map +1 -1
  245. package/build-module/components/list-view/block.js +13 -1
  246. package/build-module/components/list-view/block.js.map +1 -1
  247. package/build-module/components/list-view/use-block-selection.js +30 -25
  248. package/build-module/components/list-view/use-block-selection.js.map +1 -1
  249. package/build-module/components/media-placeholder/index.js +2 -2
  250. package/build-module/components/media-placeholder/index.js.map +1 -1
  251. package/build-module/components/media-placeholder/index.native.js +7 -7
  252. package/build-module/components/media-placeholder/index.native.js.map +1 -1
  253. package/build-module/components/media-replace-flow/index.js +2 -3
  254. package/build-module/components/media-replace-flow/index.js.map +1 -1
  255. package/build-module/components/media-upload/constants.js +14 -0
  256. package/build-module/components/media-upload/constants.js.map +1 -0
  257. package/build-module/components/media-upload/index.native.js +53 -34
  258. package/build-module/components/media-upload/index.native.js.map +1 -1
  259. package/build-module/components/preview-options/index.js +1 -1
  260. package/build-module/components/preview-options/index.js.map +1 -1
  261. package/build-module/components/rich-text/index.js +35 -37
  262. package/build-module/components/rich-text/index.js.map +1 -1
  263. package/build-module/components/rich-text/index.native.js +15 -33
  264. package/build-module/components/rich-text/index.native.js.map +1 -1
  265. package/build-module/components/rich-text/multiline.js +87 -0
  266. package/build-module/components/rich-text/multiline.js.map +1 -0
  267. package/build-module/components/rich-text/split-value.js +10 -16
  268. package/build-module/components/rich-text/split-value.js.map +1 -1
  269. package/build-module/components/rich-text/use-enter.js +33 -42
  270. package/build-module/components/rich-text/use-enter.js.map +1 -1
  271. package/build-module/components/rich-text/use-paste-handler.js +19 -34
  272. package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
  273. package/build-module/components/spacing-sizes-control/utils.js +2 -2
  274. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  275. package/build-module/components/use-block-commands/index.js +28 -16
  276. package/build-module/components/use-block-commands/index.js.map +1 -1
  277. package/build-module/components/use-block-display-information/index.js +5 -2
  278. package/build-module/components/use-block-display-information/index.js.map +1 -1
  279. package/build-module/hooks/background.js +249 -0
  280. package/build-module/hooks/background.js.map +1 -0
  281. package/build-module/hooks/block-hooks.js +181 -0
  282. package/build-module/hooks/block-hooks.js.map +1 -0
  283. package/build-module/hooks/block-rename-ui.js +154 -0
  284. package/build-module/hooks/block-rename-ui.js.map +1 -0
  285. package/build-module/hooks/duotone.js +26 -39
  286. package/build-module/hooks/duotone.js.map +1 -1
  287. package/build-module/hooks/index.js +2 -2
  288. package/build-module/hooks/index.js.map +1 -1
  289. package/build-module/hooks/layout.js +33 -16
  290. package/build-module/hooks/layout.js.map +1 -1
  291. package/build-module/hooks/position.js +4 -2
  292. package/build-module/hooks/position.js.map +1 -1
  293. package/build-module/hooks/style.js +10 -3
  294. package/build-module/hooks/style.js.map +1 -1
  295. package/build-module/private-apis.js +2 -0
  296. package/build-module/private-apis.js.map +1 -1
  297. package/build-module/store/actions.js +33 -10
  298. package/build-module/store/actions.js.map +1 -1
  299. package/build-module/store/private-actions.js +39 -8
  300. package/build-module/store/private-actions.js.map +1 -1
  301. package/build-module/store/private-selectors.js +23 -3
  302. package/build-module/store/private-selectors.js.map +1 -1
  303. package/build-module/store/reducer.js +41 -1
  304. package/build-module/store/reducer.js.map +1 -1
  305. package/build-module/store/selectors.js +78 -22
  306. package/build-module/store/selectors.js.map +1 -1
  307. package/build-module/store/utils.js +0 -4
  308. package/build-module/store/utils.js.map +1 -1
  309. package/build-style/content-rtl.css +0 -1
  310. package/build-style/content.css +0 -1
  311. package/build-style/style-rtl.css +201 -131
  312. package/build-style/style.css +201 -131
  313. package/package.json +32 -32
  314. package/src/components/block-canvas/index.js +108 -0
  315. package/src/components/block-inspector/index.js +5 -1
  316. package/src/components/block-list/content.scss +0 -1
  317. package/src/components/block-patterns-list/index.js +53 -19
  318. package/src/components/block-patterns-list/style.scss +26 -9
  319. package/src/components/block-patterns-paging/index.js +92 -0
  320. package/src/components/block-patterns-paging/style.scss +45 -0
  321. package/src/components/block-settings-menu/block-settings-dropdown.js +44 -0
  322. package/src/components/block-settings-menu-controls/index.js +4 -9
  323. package/src/components/block-styles/index.js +1 -0
  324. package/src/components/block-styles/style.scss +3 -3
  325. package/src/components/block-toolbar/block-toolbar-menu.native.js +1 -6
  326. package/src/components/block-tools/block-contextual-toolbar.js +16 -5
  327. package/src/components/block-tools/block-selection-button.js +9 -1
  328. package/src/components/block-tools/style.scss +0 -98
  329. package/src/components/border-radius-control/input-controls.js +1 -1
  330. package/src/components/border-radius-control/linked-button.js +8 -11
  331. package/src/components/color-palette/test/__snapshots__/control.js.snap +34 -21
  332. package/src/components/colors/with-colors.js +3 -2
  333. package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +8 -35
  334. package/src/components/default-block-appender/index.native.js +26 -3
  335. package/src/components/duotone/utils.js +65 -0
  336. package/src/components/editor-styles/index.js +32 -23
  337. package/src/components/global-styles/hooks.js +4 -112
  338. package/src/components/global-styles/image-settings-panel.js +71 -0
  339. package/src/components/global-styles/index.js +4 -3
  340. package/src/components/global-styles/use-global-styles-output.js +25 -16
  341. package/src/components/global-styles/utils.js +1 -2
  342. package/src/components/iframe/index.js +72 -33
  343. package/src/components/image-editor/use-save-image.js +2 -9
  344. package/src/components/image-editor/use-transform-image.js +9 -9
  345. package/src/components/index.js +1 -1
  346. package/src/components/index.native.js +2 -2
  347. package/src/components/inner-blocks/use-nested-settings-update.js +15 -10
  348. package/src/components/inserter/block-patterns-explorer/explorer.js +17 -5
  349. package/src/components/inserter/block-patterns-explorer/patterns-list.js +68 -43
  350. package/src/components/inserter/block-patterns-explorer/sidebar.js +8 -8
  351. package/src/components/inserter/block-patterns-filter.js +183 -0
  352. package/src/components/inserter/block-patterns-tab.js +217 -58
  353. package/src/components/inserter/hooks/use-patterns-paging.js +76 -0
  354. package/src/components/inserter/hooks/use-patterns-state.js +27 -16
  355. package/src/components/inserter/menu.js +15 -17
  356. package/src/components/inserter/search-results.js +6 -4
  357. package/src/components/inserter/style.scss +36 -7
  358. package/src/components/inserter/tabs.js +2 -12
  359. package/src/components/inserter/test/index.native.js +8 -12
  360. package/src/components/inspector-controls/block-support-slot-container.js +19 -3
  361. package/src/components/inspector-controls/fill.js +28 -14
  362. package/src/components/inspector-controls/groups.js +6 -2
  363. package/src/components/inspector-controls/slot.js +28 -3
  364. package/src/components/inspector-controls-tabs/styles-tab.js +4 -0
  365. package/src/components/link-control/index.js +13 -0
  366. package/src/components/link-control/style.scss +23 -2
  367. package/src/components/link-control/test/index.js +88 -6
  368. package/src/components/list-view/block-select-button.js +1 -3
  369. package/src/components/list-view/block.js +19 -1
  370. package/src/components/list-view/style.scss +1 -2
  371. package/src/components/list-view/use-block-selection.js +38 -32
  372. package/src/components/media-placeholder/README.md +2 -2
  373. package/src/components/media-placeholder/index.js +2 -2
  374. package/src/components/media-placeholder/index.native.js +11 -12
  375. package/src/components/media-replace-flow/index.js +2 -2
  376. package/src/components/media-replace-flow/test/index.js +5 -23
  377. package/src/components/media-upload/README.md +3 -2
  378. package/src/components/media-upload/constants.js +15 -0
  379. package/src/components/media-upload/index.native.js +66 -40
  380. package/src/components/media-upload/style.native.scss +4 -0
  381. package/src/components/media-upload/test/index.native.js +2 -2
  382. package/src/components/preview-options/README.md +7 -0
  383. package/src/components/preview-options/index.js +1 -1
  384. package/src/components/rich-text/index.js +48 -44
  385. package/src/components/rich-text/index.native.js +14 -42
  386. package/src/components/rich-text/multiline.js +121 -0
  387. package/src/components/rich-text/split-value.js +10 -35
  388. package/src/components/rich-text/use-enter.js +32 -42
  389. package/src/components/rich-text/use-paste-handler.js +16 -40
  390. package/src/components/spacing-sizes-control/style.scss +5 -7
  391. package/src/components/spacing-sizes-control/utils.js +1 -2
  392. package/src/components/use-block-commands/index.js +28 -20
  393. package/src/components/use-block-display-information/index.js +3 -0
  394. package/src/hooks/background.js +299 -0
  395. package/src/hooks/background.scss +75 -0
  396. package/src/hooks/block-hooks.js +257 -0
  397. package/src/hooks/block-hooks.scss +16 -0
  398. package/src/hooks/block-rename-ui.js +231 -0
  399. package/src/hooks/block-rename-ui.scss +3 -0
  400. package/src/hooks/duotone.js +42 -43
  401. package/src/hooks/index.js +2 -2
  402. package/src/hooks/layout.js +31 -33
  403. package/src/hooks/position.js +4 -3
  404. package/src/hooks/style.js +11 -2
  405. package/src/hooks/test/align.native.js +4 -3
  406. package/src/private-apis.js +2 -0
  407. package/src/store/actions.js +52 -10
  408. package/src/store/private-actions.js +37 -6
  409. package/src/store/private-selectors.js +28 -3
  410. package/src/store/reducer.js +38 -0
  411. package/src/store/selectors.js +107 -26
  412. package/src/store/test/actions.js +19 -8
  413. package/src/store/test/private-actions.js +17 -0
  414. package/src/store/test/reducer.js +25 -0
  415. package/src/store/test/selectors.js +130 -123
  416. package/src/store/utils.js +3 -10
  417. package/src/style.scss +4 -0
  418. package/build/components/duotone/components.js +0 -135
  419. package/build/components/duotone/components.js.map +0 -1
  420. package/build/components/duotone/index.js +0 -38
  421. package/build/components/duotone/index.js.map +0 -1
  422. package/build/components/global-styles/behaviors-panel.js +0 -64
  423. package/build/components/global-styles/behaviors-panel.js.map +0 -1
  424. package/build/components/inserter/reusable-blocks-tab.js +0 -85
  425. package/build/components/inserter/reusable-blocks-tab.js.map +0 -1
  426. package/build/hooks/auto-inserting-blocks.js +0 -174
  427. package/build/hooks/auto-inserting-blocks.js.map +0 -1
  428. package/build/hooks/behaviors.js +0 -173
  429. package/build/hooks/behaviors.js.map +0 -1
  430. package/build-module/components/duotone/components.js +0 -126
  431. package/build-module/components/duotone/components.js.map +0 -1
  432. package/build-module/components/duotone/index.js +0 -3
  433. package/build-module/components/duotone/index.js.map +0 -1
  434. package/build-module/components/global-styles/behaviors-panel.js +0 -57
  435. package/build-module/components/global-styles/behaviors-panel.js.map +0 -1
  436. package/build-module/components/inserter/reusable-blocks-tab.js +0 -76
  437. package/build-module/components/inserter/reusable-blocks-tab.js.map +0 -1
  438. package/build-module/hooks/auto-inserting-blocks.js +0 -167
  439. package/build-module/hooks/auto-inserting-blocks.js.map +0 -1
  440. package/build-module/hooks/behaviors.js +0 -166
  441. package/build-module/hooks/behaviors.js.map +0 -1
  442. package/src/components/duotone/components.js +0 -133
  443. package/src/components/duotone/index.js +0 -7
  444. package/src/components/global-styles/behaviors-panel.js +0 -71
  445. package/src/components/inserter/reusable-blocks-tab.js +0 -84
  446. package/src/components/inserter/test/reusable-blocks-tab.js +0 -73
  447. package/src/hooks/auto-inserting-blocks.js +0 -232
  448. package/src/hooks/behaviors.js +0 -206
@@ -0,0 +1,108 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { useMergeRefs } from '@wordpress/compose';
5
+
6
+ /**
7
+ * Internal dependencies
8
+ */
9
+ import BlockList from '../block-list';
10
+ import EditorStyles from '../editor-styles';
11
+ import Iframe from '../iframe';
12
+ import WritingFlow from '../writing-flow';
13
+ import { useMouseMoveTypingReset } from '../observe-typing';
14
+ import { useClipboardHandler } from '../copy-handler';
15
+ import { useBlockSelectionClearer } from '../block-selection-clearer';
16
+
17
+ export function ExperimentalBlockCanvas( {
18
+ shouldIframe = true,
19
+ height = '300px',
20
+ children = <BlockList />,
21
+ styles,
22
+ contentRef: contentRefProp,
23
+ iframeProps,
24
+ } ) {
25
+ const resetTypingRef = useMouseMoveTypingReset();
26
+ const copyHandler = useClipboardHandler();
27
+ const clearerRef = useBlockSelectionClearer();
28
+ const contentRef = useMergeRefs( [
29
+ copyHandler,
30
+ contentRefProp,
31
+ clearerRef,
32
+ ] );
33
+
34
+ if ( ! shouldIframe ) {
35
+ return (
36
+ <>
37
+ <EditorStyles
38
+ styles={ styles }
39
+ scope=".editor-styles-wrapper"
40
+ />
41
+ <WritingFlow
42
+ ref={ contentRef }
43
+ className="editor-styles-wrapper"
44
+ tabIndex={ -1 }
45
+ style={ { height } }
46
+ >
47
+ { children }
48
+ </WritingFlow>
49
+ </>
50
+ );
51
+ }
52
+
53
+ return (
54
+ <Iframe
55
+ { ...iframeProps }
56
+ ref={ resetTypingRef }
57
+ contentRef={ contentRef }
58
+ style={ {
59
+ width: '100%',
60
+ height,
61
+ ...iframeProps?.style,
62
+ } }
63
+ name="editor-canvas"
64
+ >
65
+ <EditorStyles styles={ styles } />
66
+ { children }
67
+ </Iframe>
68
+ );
69
+ }
70
+
71
+ /**
72
+ * BlockCanvas component is a component used to display the canvas of the block editor.
73
+ * What we call the canvas is an iframe containing the block list that you can manipulate.
74
+ * The component is also responsible of wiring up all the necessary hooks to enable
75
+ * the keyboard navigation across blocks in the editor and inject content styles into the iframe.
76
+ *
77
+ * @example
78
+ *
79
+ * ```jsx
80
+ * function MyBlockEditor() {
81
+ * const [ blocks, updateBlocks ] = useState([]);
82
+ * return (
83
+ * <BlockEditorProvider
84
+ * value={ blocks }
85
+ * onInput={ updateBlocks }
86
+ * onChange={ persistBlocks }
87
+ * >
88
+ * <BlockCanvas height="400px" />
89
+ * </BlockEditorProvider>
90
+ * );
91
+ * }
92
+ * ```
93
+ *
94
+ * @param {Object} props Component props.
95
+ * @param {string} props.height Canvas height, defaults to 300px.
96
+ * @param {Array} props.styles Content styles to inject into the iframe.
97
+ * @param {WPElement} props.children Content of the canvas, defaults to the BlockList component.
98
+ * @return {WPElement} Block Breadcrumb.
99
+ */
100
+ function BlockCanvas( { children, height, styles } ) {
101
+ return (
102
+ <ExperimentalBlockCanvas height={ height } styles={ styles }>
103
+ { children }
104
+ </ExperimentalBlockCanvas>
105
+ );
106
+ }
107
+
108
+ export default BlockCanvas;
@@ -39,7 +39,7 @@ function BlockInspectorLockedBlocks( { topLevelLockedBlock } ) {
39
39
  getBlockName,
40
40
  getBlockEditingMode,
41
41
  } = select( blockEditorStore );
42
- return getClientIdsOfDescendants( [ topLevelLockedBlock ] ).filter(
42
+ return getClientIdsOfDescendants( topLevelLockedBlock ).filter(
43
43
  ( clientId ) =>
44
44
  getBlockName( clientId ) !== 'core/list-item' &&
45
45
  getBlockEditingMode( clientId ) === 'contentOnly'
@@ -300,6 +300,10 @@ const BlockInspectorSingleBlock = ( { clientId, blockName } ) => {
300
300
  label={ __( 'Border' ) }
301
301
  />
302
302
  <InspectorControls.Slot group="styles" />
303
+ <InspectorControls.Slot
304
+ group="background"
305
+ label={ __( 'Background' ) }
306
+ />
303
307
  <PositionControls />
304
308
  <div>
305
309
  <AdvancedControls />
@@ -426,7 +426,6 @@
426
426
  }
427
427
 
428
428
  .block-editor-iframe__body {
429
- background-color: $white;
430
429
  transition: all 0.3s;
431
430
  transform-origin: top center;
432
431
  }
@@ -1,22 +1,30 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import classnames from 'classnames';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
4
- import { useState } from '@wordpress/element';
9
+ import { useState, forwardRef } from '@wordpress/element';
5
10
  import {
6
11
  VisuallyHidden,
7
12
  __unstableComposite as Composite,
8
13
  __unstableUseCompositeState as useCompositeState,
9
14
  __unstableCompositeItem as CompositeItem,
10
15
  Tooltip,
16
+ __experimentalHStack as HStack,
11
17
  } from '@wordpress/components';
12
18
  import { useInstanceId } from '@wordpress/compose';
13
19
  import { __ } from '@wordpress/i18n';
20
+ import { Icon, symbol } from '@wordpress/icons';
14
21
 
15
22
  /**
16
23
  * Internal dependencies
17
24
  */
18
25
  import BlockPreview from '../block-preview';
19
26
  import InserterDraggableBlocks from '../inserter-draggable-blocks';
27
+ import BlockPatternsPaging from '../block-patterns-paging';
20
28
 
21
29
  const WithToolTip = ( { showTooltip, title, children } ) => {
22
30
  if ( showTooltip ) {
@@ -63,14 +71,20 @@ function BlockPattern( {
63
71
  } }
64
72
  >
65
73
  <WithToolTip
66
- showTooltip={ showTooltip }
74
+ showTooltip={ showTooltip && ! pattern.id }
67
75
  title={ pattern.title }
68
76
  >
69
77
  <CompositeItem
70
78
  role="option"
71
79
  as="div"
72
80
  { ...composite }
73
- className="block-editor-block-patterns-list__item"
81
+ className={ classnames(
82
+ 'block-editor-block-patterns-list__item',
83
+ {
84
+ 'block-editor-block-patterns-list__list-item-synced':
85
+ pattern.id && ! pattern.syncStatus,
86
+ }
87
+ ) }
74
88
  onClick={ () => {
75
89
  onClick( pattern, blocks );
76
90
  onHover?.( null );
@@ -91,11 +105,23 @@ function BlockPattern( {
91
105
  blocks={ blocks }
92
106
  viewportWidth={ viewportWidth }
93
107
  />
94
- { ! showTooltip && (
95
- <div className="block-editor-block-patterns-list__item-title">
96
- { pattern.title }
97
- </div>
98
- ) }
108
+
109
+ <HStack className="block-editor-patterns__pattern-details">
110
+ { pattern.id && ! pattern.syncStatus && (
111
+ <div className="block-editor-patterns__pattern-icon-wrapper">
112
+ <Icon
113
+ className="block-editor-patterns__pattern-icon"
114
+ icon={ symbol }
115
+ />
116
+ </div>
117
+ ) }
118
+ { ( ! showTooltip || pattern.id ) && (
119
+ <div className="block-editor-block-patterns-list__item-title">
120
+ { pattern.title }
121
+ </div>
122
+ ) }
123
+ </HStack>
124
+
99
125
  { !! pattern.description && (
100
126
  <VisuallyHidden id={ descriptionId }>
101
127
  { pattern.description }
@@ -115,16 +141,20 @@ function BlockPatternPlaceholder() {
115
141
  );
116
142
  }
117
143
 
118
- function BlockPatternList( {
119
- isDraggable,
120
- blockPatterns,
121
- shownPatterns,
122
- onHover,
123
- onClickPattern,
124
- orientation,
125
- label = __( 'Block Patterns' ),
126
- showTitlesAsTooltip,
127
- } ) {
144
+ function BlockPatternList(
145
+ {
146
+ isDraggable,
147
+ blockPatterns,
148
+ shownPatterns,
149
+ onHover,
150
+ onClickPattern,
151
+ orientation,
152
+ label = __( 'Block Patterns' ),
153
+ showTitlesAsTooltip,
154
+ pagingProps,
155
+ },
156
+ ref
157
+ ) {
128
158
  const composite = useCompositeState( { orientation } );
129
159
  return (
130
160
  <Composite
@@ -132,6 +162,7 @@ function BlockPatternList( {
132
162
  role="listbox"
133
163
  className="block-editor-block-patterns-list"
134
164
  aria-label={ label }
165
+ ref={ ref }
135
166
  >
136
167
  { blockPatterns.map( ( pattern ) => {
137
168
  const isShown = shownPatterns.includes( pattern );
@@ -149,8 +180,11 @@ function BlockPatternList( {
149
180
  <BlockPatternPlaceholder key={ pattern.name } />
150
181
  );
151
182
  } ) }
183
+ { pagingProps && pagingProps.numPages > 1 && (
184
+ <BlockPatternsPaging { ...pagingProps } />
185
+ ) }
152
186
  </Composite>
153
187
  );
154
188
  }
155
189
 
156
- export default BlockPatternList;
190
+ export default forwardRef( BlockPatternList );
@@ -11,7 +11,7 @@
11
11
  min-height: 100px;
12
12
  }
13
13
 
14
- &[draggable="true"] .block-editor-block-preview__container {
14
+ &[draggable="true"] {
15
15
  cursor: grab;
16
16
  }
17
17
  }
@@ -27,22 +27,39 @@
27
27
  }
28
28
 
29
29
  .block-editor-block-patterns-list__item-title {
30
- padding-top: $grid-unit-10;
31
- font-size: 12px;
32
- text-align: center;
30
+ text-align: left;
31
+ flex-grow: 1;
33
32
  }
34
33
 
35
34
  &:hover .block-editor-block-preview__container {
36
- box-shadow: 0 0 0 2px var(--wp-admin-theme-color);
35
+ box-shadow: 0 0 0 2px $gray-900;
37
36
  }
38
37
 
39
38
  &:focus .block-editor-block-preview__container {
40
- @include button-style-outset__focus(var(--wp-admin-theme-color));
39
+ @include button-style-outset__focus($gray-900);
41
40
  }
42
41
 
42
+ &.block-editor-block-patterns-list__list-item-synced {
43
+ &:hover,
44
+ &:focus {
45
+ .block-editor-block-preview__container {
46
+ box-shadow:
47
+ 0 0 0 2px var(--wp-block-synced-color),
48
+ 0 15px 25px rgb(0 0 0 / 7%);
49
+ }
50
+ }
51
+ }
52
+
53
+ .block-editor-patterns__pattern-details {
54
+ align-items: center;
55
+ margin-top: $grid-unit-10;
56
+ }
43
57
 
44
- &:hover .block-editor-block-patterns-list__item-title,
45
- &:focus .block-editor-block-patterns-list__item-title {
46
- color: var(--wp-admin-theme-color);
58
+ .block-editor-patterns__pattern-icon-wrapper {
59
+ min-width: 24px;
60
+ height: 24px;
61
+ .block-editor-patterns__pattern-icon {
62
+ fill: var(--wp-block-synced-color);
63
+ }
47
64
  }
48
65
  }
@@ -0,0 +1,92 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import {
5
+ __experimentalVStack as VStack,
6
+ __experimentalHStack as HStack,
7
+ __experimentalText as Text,
8
+ Button,
9
+ } from '@wordpress/components';
10
+ import { __, _x, _n, sprintf } from '@wordpress/i18n';
11
+
12
+ export default function Pagination( {
13
+ currentPage,
14
+ numPages,
15
+ changePage,
16
+ totalItems,
17
+ } ) {
18
+ return (
19
+ <VStack className="block-editor-patterns__grid-pagination-wrapper">
20
+ <Text variant="muted">
21
+ {
22
+ // translators: %s: Total number of patterns.
23
+ sprintf(
24
+ // translators: %s: Total number of patterns.
25
+ _n( '%s item', '%s items', totalItems ),
26
+ totalItems
27
+ )
28
+ }
29
+ </Text>
30
+ <HStack
31
+ expanded={ false }
32
+ spacing={ 3 }
33
+ justify="flex-start"
34
+ className="block-editor-patterns__grid-pagination"
35
+ >
36
+ <HStack
37
+ expanded={ false }
38
+ spacing={ 1 }
39
+ className="block-editor-patterns__grid-pagination-previous"
40
+ >
41
+ <Button
42
+ variant="tertiary"
43
+ onClick={ () => changePage( 1 ) }
44
+ disabled={ currentPage === 1 }
45
+ aria-label={ __( 'First page' ) }
46
+ >
47
+ <span>«</span>
48
+ </Button>
49
+ <Button
50
+ variant="tertiary"
51
+ onClick={ () => changePage( currentPage - 1 ) }
52
+ disabled={ currentPage === 1 }
53
+ aria-label={ __( 'Previous page' ) }
54
+ >
55
+ <span>‹</span>
56
+ </Button>
57
+ </HStack>
58
+ <Text variant="muted">
59
+ { sprintf(
60
+ // translators: %1$s: Current page number, %2$s: Total number of pages.
61
+ _x( '%1$s of %2$s', 'paging' ),
62
+ currentPage,
63
+ numPages
64
+ ) }
65
+ </Text>
66
+ <HStack
67
+ expanded={ false }
68
+ spacing={ 1 }
69
+ className="block-editor-patterns__grid-pagination-next"
70
+ >
71
+ <Button
72
+ variant="tertiary"
73
+ onClick={ () => changePage( currentPage + 1 ) }
74
+ disabled={ currentPage === numPages }
75
+ aria-label={ __( 'Next page' ) }
76
+ >
77
+ <span>›</span>
78
+ </Button>
79
+ <Button
80
+ variant="tertiary"
81
+ onClick={ () => changePage( numPages ) }
82
+ disabled={ currentPage === numPages }
83
+ aria-label={ __( 'Last page' ) }
84
+ size="default"
85
+ >
86
+ <span>»</span>
87
+ </Button>
88
+ </HStack>
89
+ </HStack>
90
+ </VStack>
91
+ );
92
+ }
@@ -0,0 +1,45 @@
1
+ .block-editor-patterns__grid-pagination-wrapper {
2
+
3
+ .block-editor-patterns__grid-pagination {
4
+ border-top: 1px solid $gray-800;
5
+ padding: $grid-unit-05;
6
+ justify-content: center;
7
+ .components-button.is-tertiary {
8
+ width: auto;
9
+ height: $button-size-compact;
10
+ justify-content: center;
11
+
12
+ &:disabled {
13
+ color: $gray-600;
14
+ background: none;
15
+ }
16
+
17
+ &:hover:not(:disabled) {
18
+ color: $white;
19
+ background-color: $gray-700;
20
+ }
21
+ }
22
+ }
23
+ }
24
+
25
+ .show-icon-labels {
26
+ .block-editor-patterns__grid-pagination {
27
+ flex-direction: column;
28
+ .block-editor-patterns__grid-pagination-previous,
29
+ .block-editor-patterns__grid-pagination-next {
30
+ flex-direction: column;
31
+ }
32
+ .components-button {
33
+ width: auto;
34
+ // Hide the button icons when labels are set to display...
35
+ span {
36
+ display: none;
37
+ }
38
+ // ... and display labels.
39
+ // Uses ::before as ::after is already used for active tab styling.
40
+ &::before {
41
+ content: attr(aria-label);
42
+ }
43
+ }
44
+ }
45
+ }
@@ -31,6 +31,7 @@ import BlockHTMLConvertButton from './block-html-convert-button';
31
31
  import __unstableBlockSettingsMenuFirstItem from './block-settings-menu-first-item';
32
32
  import BlockSettingsMenuControls from '../block-settings-menu-controls';
33
33
  import { store as blockEditorStore } from '../../store';
34
+ import { unlock } from '../../lock-unlock';
34
35
  import { useShowHoveredOrFocusedGestures } from '../block-toolbar/utils';
35
36
 
36
37
  const POPOVER_PROPS = {
@@ -47,12 +48,15 @@ function CopyMenuItem( { blocks, onCopy, label } ) {
47
48
  }
48
49
 
49
50
  export function BlockSettingsDropdown( {
51
+ block,
50
52
  clientIds,
51
53
  __experimentalSelectBlock,
52
54
  children,
53
55
  __unstableDisplayLocation,
54
56
  ...props
55
57
  } ) {
58
+ // Get the client id of the current block for this menu, if one is set.
59
+ const currentClientId = block?.clientId;
56
60
  const blockClientIds = Array.isArray( clientIds )
57
61
  ? clientIds
58
62
  : [ clientIds ];
@@ -102,6 +106,16 @@ export function BlockSettingsDropdown( {
102
106
  const { getBlockOrder, getSelectedBlockClientIds } =
103
107
  useSelect( blockEditorStore );
104
108
 
109
+ const openedBlockSettingsMenu = useSelect(
110
+ ( select ) =>
111
+ unlock( select( blockEditorStore ) ).getOpenedBlockSettingsMenu(),
112
+ []
113
+ );
114
+
115
+ const { setOpenedBlockSettingsMenu } = unlock(
116
+ useDispatch( blockEditorStore )
117
+ );
118
+
105
119
  const shortcuts = useSelect( ( select ) => {
106
120
  const { getShortcutRepresentation } = select( keyboardShortcutsStore );
107
121
  return {
@@ -174,6 +188,32 @@ export function BlockSettingsDropdown( {
174
188
  const parentBlockIsSelected =
175
189
  selectedBlockClientIds?.includes( firstParentClientId );
176
190
 
191
+ // When a currentClientId is in use, treat the menu as a controlled component.
192
+ // This ensures that only one block settings menu is open at a time.
193
+ // This is a temporary solution to work around an issue with `onFocusOutside`
194
+ // where it does not allow a dropdown to be closed if focus was never within
195
+ // the dropdown to begin with. Examples include a user either CMD+Clicking or
196
+ // right clicking into an inactive window.
197
+ // See: https://github.com/WordPress/gutenberg/pull/54083
198
+ const open = ! currentClientId
199
+ ? undefined
200
+ : openedBlockSettingsMenu === currentClientId || false;
201
+
202
+ const onToggle = useCallback(
203
+ ( localOpen ) => {
204
+ if ( localOpen && openedBlockSettingsMenu !== currentClientId ) {
205
+ setOpenedBlockSettingsMenu( currentClientId );
206
+ } else if (
207
+ ! localOpen &&
208
+ openedBlockSettingsMenu &&
209
+ openedBlockSettingsMenu === currentClientId
210
+ ) {
211
+ setOpenedBlockSettingsMenu( undefined );
212
+ }
213
+ },
214
+ [ currentClientId, openedBlockSettingsMenu, setOpenedBlockSettingsMenu ]
215
+ );
216
+
177
217
  return (
178
218
  <BlockActions
179
219
  clientIds={ clientIds }
@@ -199,6 +239,8 @@ export function BlockSettingsDropdown( {
199
239
  label={ __( 'Options' ) }
200
240
  className="block-editor-block-settings-menu"
201
241
  popoverProps={ POPOVER_PROPS }
242
+ open={ open }
243
+ onToggle={ onToggle }
202
244
  noIcons
203
245
  menuProps={ {
204
246
  /**
@@ -230,6 +272,7 @@ export function BlockSettingsDropdown( {
230
272
  canInsertDefaultBlock
231
273
  ) {
232
274
  event.preventDefault();
275
+ setOpenedBlockSettingsMenu( undefined );
233
276
  onInsertAfter();
234
277
  } else if (
235
278
  isMatch(
@@ -239,6 +282,7 @@ export function BlockSettingsDropdown( {
239
282
  canInsertDefaultBlock
240
283
  ) {
241
284
  event.preventDefault();
285
+ setOpenedBlockSettingsMenu( undefined );
242
286
  onInsertBefore();
243
287
  }
244
288
  },
@@ -29,19 +29,15 @@ const BlockSettingsMenuControlsSlot = ( {
29
29
  clientIds = null,
30
30
  __unstableDisplayLocation,
31
31
  } ) => {
32
- const { selectedBlocks, selectedClientIds, canRemove } = useSelect(
32
+ const { selectedBlocks, selectedClientIds } = useSelect(
33
33
  ( select ) => {
34
- const {
35
- getBlockNamesByClientId,
36
- getSelectedBlockClientIds,
37
- canRemoveBlocks,
38
- } = select( blockEditorStore );
34
+ const { getBlockNamesByClientId, getSelectedBlockClientIds } =
35
+ select( blockEditorStore );
39
36
  const ids =
40
37
  clientIds !== null ? clientIds : getSelectedBlockClientIds();
41
38
  return {
42
39
  selectedBlocks: getBlockNamesByClientId( ids ),
43
40
  selectedClientIds: ids,
44
- canRemove: canRemoveBlocks( ids ),
45
41
  };
46
42
  },
47
43
  [ clientIds ]
@@ -55,8 +51,7 @@ const BlockSettingsMenuControlsSlot = ( {
55
51
  const convertToGroupButtonProps =
56
52
  useConvertToGroupButtonProps( selectedClientIds );
57
53
  const { isGroupable, isUngroupable } = convertToGroupButtonProps;
58
- const showConvertToGroupButton =
59
- ( isGroupable || isUngroupable ) && canRemove;
54
+ const showConvertToGroupButton = isGroupable || isUngroupable;
60
55
 
61
56
  return (
62
57
  <Slot
@@ -71,6 +71,7 @@ function BlockStyles( { clientId, onSwitch = noop, onHoverClassName = noop } ) {
71
71
 
72
72
  return (
73
73
  <Button
74
+ __next40pxDefaultSize
74
75
  className={ classnames(
75
76
  'block-editor-block-styles__item',
76
77
  {
@@ -36,13 +36,13 @@
36
36
 
37
37
  button.components-button.block-editor-block-styles__item {
38
38
  color: $gray-900;
39
- box-shadow: inset 0 0 0 1px $gray-400;
39
+ box-shadow: inset 0 0 0 $border-width $gray-300;
40
40
  display: inline-block;
41
41
  width: calc(50% - #{$grid-unit-05});
42
42
 
43
43
  &:hover {
44
44
  color: var(--wp-admin-theme-color);
45
- box-shadow: inset 0 0 0 1px $gray-400;
45
+ box-shadow: inset 0 0 0 $border-width $gray-300;
46
46
  }
47
47
 
48
48
  &.is-active,
@@ -58,7 +58,7 @@
58
58
 
59
59
  &:focus,
60
60
  &.is-active:focus {
61
- @include button-style__focus();
61
+ box-shadow: inset 0 0 0 $border-width var(--wp-components-color-background, #fff), 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9));
62
62
  }
63
63
  }
64
64
 
@@ -60,7 +60,6 @@ const BlockActionsMenu = ( {
60
60
  rootClientId,
61
61
  selectedBlockClientId,
62
62
  selectedBlockPossibleTransformations,
63
- canRemove,
64
63
  // Dispatch.
65
64
  createSuccessNotice,
66
65
  convertToRegularBlocks,
@@ -106,8 +105,7 @@ const BlockActionsMenu = ( {
106
105
  selectedBlockClientId ? [ selectedBlockClientId ] : []
107
106
  );
108
107
  const { isGroupable, isUngroupable } = convertToGroupButtonProps;
109
- const showConvertToGroupButton =
110
- ( isGroupable || isUngroupable ) && canRemove;
108
+ const showConvertToGroupButton = isGroupable || isUngroupable;
111
109
  const convertToGroupButtons = useConvertToGroupButtons( {
112
110
  ...convertToGroupButtonProps,
113
111
  } );
@@ -348,7 +346,6 @@ export default compose(
348
346
  getSelectedBlockClientIds,
349
347
  canInsertBlockType,
350
348
  getTemplateLock,
351
- canRemoveBlock,
352
349
  } = select( blockEditorStore );
353
350
  const block = getBlock( clientId );
354
351
  const blockName = getBlockName( clientId );
@@ -385,7 +382,6 @@ export default compose(
385
382
  const selectedBlockPossibleTransformations = selectedBlock
386
383
  ? getBlockTransformItems( selectedBlock, rootClientId )
387
384
  : EMPTY_BLOCK_LIST;
388
- const canRemove = canRemoveBlock( selectedBlockClientId );
389
385
 
390
386
  const isReusableBlockType = block ? isReusableBlock( block ) : false;
391
387
  const reusableBlock = isReusableBlockType
@@ -411,7 +407,6 @@ export default compose(
411
407
  rootClientId,
412
408
  selectedBlockClientId,
413
409
  selectedBlockPossibleTransformations,
414
- canRemove,
415
410
  };
416
411
  } ),
417
412
  withDispatch(