@wordpress/block-editor 14.0.0 → 14.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +9 -14
  3. package/build/autocompleters/block.js +1 -1
  4. package/build/autocompleters/block.js.map +1 -1
  5. package/build/components/block-list/use-block-props/index.js +2 -2
  6. package/build/components/block-list/use-block-props/index.js.map +1 -1
  7. package/build/components/block-list/use-in-between-inserter.js +11 -4
  8. package/build/components/block-list/use-in-between-inserter.js.map +1 -1
  9. package/build/components/block-settings-menu/block-mode-toggle.js +28 -34
  10. package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  11. package/build/components/block-tools/insertion-point.js +14 -3
  12. package/build/components/block-tools/insertion-point.js.map +1 -1
  13. package/build/components/block-tools/use-show-block-tools.js +2 -1
  14. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  15. package/build/components/block-tools/zoom-out-mode-inserters.js +8 -4
  16. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  17. package/build/components/border-radius-control/index.js +1 -0
  18. package/build/components/border-radius-control/index.js.map +1 -1
  19. package/build/components/convert-to-group-buttons/index.js +1 -1
  20. package/build/components/convert-to-group-buttons/index.js.map +1 -1
  21. package/build/components/date-format-picker/index.js +2 -0
  22. package/build/components/date-format-picker/index.js.map +1 -1
  23. package/build/components/font-appearance-control/index.js +3 -0
  24. package/build/components/font-appearance-control/index.js.map +1 -1
  25. package/build/components/font-family/index.js +3 -0
  26. package/build/components/font-family/index.js.map +1 -1
  27. package/build/components/global-styles/background-panel.js +114 -42
  28. package/build/components/global-styles/background-panel.js.map +1 -1
  29. package/build/components/global-styles/get-global-styles-changes.js +3 -1
  30. package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
  31. package/build/components/global-styles/hooks.js +0 -7
  32. package/build/components/global-styles/hooks.js.map +1 -1
  33. package/build/components/global-styles/index.js +0 -6
  34. package/build/components/global-styles/index.js.map +1 -1
  35. package/build/components/global-styles/use-global-styles-output.js +3 -3
  36. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  37. package/build/components/global-styles/utils.js +8 -24
  38. package/build/components/global-styles/utils.js.map +1 -1
  39. package/build/components/grid/grid-visualizer.js +20 -5
  40. package/build/components/grid/grid-visualizer.js.map +1 -1
  41. package/build/components/height-control/index.js +1 -0
  42. package/build/components/height-control/index.js.map +1 -1
  43. package/build/components/iframe/index.js +4 -2
  44. package/build/components/iframe/index.js.map +1 -1
  45. package/build/components/image-editor/zoom-dropdown.js +11 -7
  46. package/build/components/image-editor/zoom-dropdown.js.map +1 -1
  47. package/build/components/inner-blocks/button-block-appender.js +8 -8
  48. package/build/components/inner-blocks/button-block-appender.js.map +1 -1
  49. package/build/components/inner-blocks/default-block-appender.js +7 -25
  50. package/build/components/inner-blocks/default-block-appender.js.map +1 -1
  51. package/build/components/inner-blocks/index.js +9 -11
  52. package/build/components/inner-blocks/index.js.map +1 -1
  53. package/build/components/inserter/library.js +4 -2
  54. package/build/components/inserter/library.js.map +1 -1
  55. package/build/components/inserter/menu.js +30 -12
  56. package/build/components/inserter/menu.js.map +1 -1
  57. package/build/components/inserter/quick-inserter.js +4 -0
  58. package/build/components/inserter/quick-inserter.js.map +1 -1
  59. package/build/components/line-height-control/index.js +3 -0
  60. package/build/components/line-height-control/index.js.map +1 -1
  61. package/build/components/media-placeholder/index.js +9 -4
  62. package/build/components/media-placeholder/index.js.map +1 -1
  63. package/build/components/media-upload/index.native.js +4 -1
  64. package/build/components/media-upload/index.native.js.map +1 -1
  65. package/build/components/multi-selection-inspector/index.js +12 -12
  66. package/build/components/multi-selection-inspector/index.js.map +1 -1
  67. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -2
  68. package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  69. package/build/components/text-alignment-control/index.js +13 -8
  70. package/build/components/text-alignment-control/index.js.map +1 -1
  71. package/build/components/text-decoration-control/index.js +13 -8
  72. package/build/components/text-decoration-control/index.js.map +1 -1
  73. package/build/components/text-transform-control/index.js +13 -8
  74. package/build/components/text-transform-control/index.js.map +1 -1
  75. package/build/components/url-popover/image-url-input-ui.js +2 -0
  76. package/build/components/url-popover/image-url-input-ui.js.map +1 -1
  77. package/build/components/use-block-drop-zone/index.js +14 -2
  78. package/build/components/use-block-drop-zone/index.js.map +1 -1
  79. package/build/components/writing-mode-control/index.js +13 -8
  80. package/build/components/writing-mode-control/index.js.map +1 -1
  81. package/build/hooks/background.js +19 -23
  82. package/build/hooks/background.js.map +1 -1
  83. package/build/hooks/block-bindings.js +37 -79
  84. package/build/hooks/block-bindings.js.map +1 -1
  85. package/build/layouts/constrained.js +1 -0
  86. package/build/layouts/constrained.js.map +1 -1
  87. package/build/layouts/flex.js +2 -0
  88. package/build/layouts/flex.js.map +1 -1
  89. package/build/layouts/grid.js +3 -0
  90. package/build/layouts/grid.js.map +1 -1
  91. package/build/private-apis.js +3 -1
  92. package/build/private-apis.js.map +1 -1
  93. package/build/store/private-selectors.js +30 -0
  94. package/build/store/private-selectors.js.map +1 -1
  95. package/build/store/reducer.js +10 -1
  96. package/build/store/reducer.js.map +1 -1
  97. package/build/utils/block-bindings.js +112 -0
  98. package/build/utils/block-bindings.js.map +1 -0
  99. package/build-module/autocompleters/block.js +1 -1
  100. package/build-module/autocompleters/block.js.map +1 -1
  101. package/build-module/components/block-list/use-block-props/index.js +2 -2
  102. package/build-module/components/block-list/use-block-props/index.js.map +1 -1
  103. package/build-module/components/block-list/use-in-between-inserter.js +11 -4
  104. package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
  105. package/build-module/components/block-settings-menu/block-mode-toggle.js +29 -34
  106. package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
  107. package/build-module/components/block-tools/insertion-point.js +14 -3
  108. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  109. package/build-module/components/block-tools/use-show-block-tools.js +2 -1
  110. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  111. package/build-module/components/block-tools/zoom-out-mode-inserters.js +8 -4
  112. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  113. package/build-module/components/border-radius-control/index.js +1 -0
  114. package/build-module/components/border-radius-control/index.js.map +1 -1
  115. package/build-module/components/convert-to-group-buttons/index.js +1 -1
  116. package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
  117. package/build-module/components/date-format-picker/index.js +2 -0
  118. package/build-module/components/date-format-picker/index.js.map +1 -1
  119. package/build-module/components/font-appearance-control/index.js +3 -0
  120. package/build-module/components/font-appearance-control/index.js.map +1 -1
  121. package/build-module/components/font-family/index.js +3 -0
  122. package/build-module/components/font-family/index.js.map +1 -1
  123. package/build-module/components/global-styles/background-panel.js +117 -45
  124. package/build-module/components/global-styles/background-panel.js.map +1 -1
  125. package/build-module/components/global-styles/get-global-styles-changes.js +3 -1
  126. package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
  127. package/build-module/components/global-styles/hooks.js +0 -6
  128. package/build-module/components/global-styles/hooks.js.map +1 -1
  129. package/build-module/components/global-styles/index.js +1 -1
  130. package/build-module/components/global-styles/index.js.map +1 -1
  131. package/build-module/components/global-styles/use-global-styles-output.js +5 -5
  132. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  133. package/build-module/components/global-styles/utils.js +8 -23
  134. package/build-module/components/global-styles/utils.js.map +1 -1
  135. package/build-module/components/grid/grid-visualizer.js +20 -5
  136. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  137. package/build-module/components/height-control/index.js +1 -0
  138. package/build-module/components/height-control/index.js.map +1 -1
  139. package/build-module/components/iframe/index.js +4 -2
  140. package/build-module/components/iframe/index.js.map +1 -1
  141. package/build-module/components/image-editor/zoom-dropdown.js +12 -8
  142. package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
  143. package/build-module/components/inner-blocks/button-block-appender.js +7 -6
  144. package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
  145. package/build-module/components/inner-blocks/default-block-appender.js +6 -23
  146. package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
  147. package/build-module/components/inner-blocks/index.js +9 -11
  148. package/build-module/components/inner-blocks/index.js.map +1 -1
  149. package/build-module/components/inserter/library.js +4 -2
  150. package/build-module/components/inserter/library.js.map +1 -1
  151. package/build-module/components/inserter/menu.js +30 -12
  152. package/build-module/components/inserter/menu.js.map +1 -1
  153. package/build-module/components/inserter/quick-inserter.js +5 -1
  154. package/build-module/components/inserter/quick-inserter.js.map +1 -1
  155. package/build-module/components/line-height-control/index.js +3 -0
  156. package/build-module/components/line-height-control/index.js.map +1 -1
  157. package/build-module/components/media-placeholder/index.js +9 -4
  158. package/build-module/components/media-placeholder/index.js.map +1 -1
  159. package/build-module/components/media-upload/index.native.js +4 -1
  160. package/build-module/components/media-upload/index.native.js.map +1 -1
  161. package/build-module/components/multi-selection-inspector/index.js +12 -12
  162. package/build-module/components/multi-selection-inspector/index.js.map +1 -1
  163. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +4 -2
  164. package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
  165. package/build-module/components/text-alignment-control/index.js +13 -8
  166. package/build-module/components/text-alignment-control/index.js.map +1 -1
  167. package/build-module/components/text-decoration-control/index.js +13 -8
  168. package/build-module/components/text-decoration-control/index.js.map +1 -1
  169. package/build-module/components/text-transform-control/index.js +13 -8
  170. package/build-module/components/text-transform-control/index.js.map +1 -1
  171. package/build-module/components/url-popover/image-url-input-ui.js +2 -0
  172. package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
  173. package/build-module/components/use-block-drop-zone/index.js +14 -2
  174. package/build-module/components/use-block-drop-zone/index.js.map +1 -1
  175. package/build-module/components/writing-mode-control/index.js +13 -8
  176. package/build-module/components/writing-mode-control/index.js.map +1 -1
  177. package/build-module/hooks/background.js +19 -23
  178. package/build-module/hooks/background.js.map +1 -1
  179. package/build-module/hooks/block-bindings.js +38 -80
  180. package/build-module/hooks/block-bindings.js.map +1 -1
  181. package/build-module/layouts/constrained.js +1 -0
  182. package/build-module/layouts/constrained.js.map +1 -1
  183. package/build-module/layouts/flex.js +2 -0
  184. package/build-module/layouts/flex.js.map +1 -1
  185. package/build-module/layouts/grid.js +3 -0
  186. package/build-module/layouts/grid.js.map +1 -1
  187. package/build-module/private-apis.js +3 -1
  188. package/build-module/private-apis.js.map +1 -1
  189. package/build-module/store/private-selectors.js +27 -0
  190. package/build-module/store/private-selectors.js.map +1 -1
  191. package/build-module/store/reducer.js +9 -1
  192. package/build-module/store/reducer.js.map +1 -1
  193. package/build-module/utils/block-bindings.js +105 -0
  194. package/build-module/utils/block-bindings.js.map +1 -0
  195. package/build-style/content-rtl.css +7 -14
  196. package/build-style/content.css +7 -14
  197. package/build-style/default-editor-styles-rtl.css +2 -2
  198. package/build-style/default-editor-styles.css +2 -2
  199. package/build-style/style-rtl.css +36 -38
  200. package/build-style/style.css +36 -38
  201. package/package.json +32 -32
  202. package/src/autocompleters/block.js +2 -1
  203. package/src/components/block-list/content.scss +5 -13
  204. package/src/components/block-list/use-block-props/index.js +2 -2
  205. package/src/components/block-list/use-in-between-inserter.js +17 -5
  206. package/src/components/block-settings-menu/block-mode-toggle.js +28 -31
  207. package/src/components/block-settings-menu/test/block-mode-toggle.js +26 -23
  208. package/src/components/block-tools/insertion-point.js +11 -0
  209. package/src/components/block-tools/style.scss +1 -1
  210. package/src/components/block-tools/use-show-block-tools.js +4 -1
  211. package/src/components/block-tools/zoom-out-mode-inserters.js +7 -1
  212. package/src/components/block-variation-transforms/style.scss +1 -1
  213. package/src/components/border-radius-control/index.js +1 -0
  214. package/src/components/border-radius-control/style.scss +0 -10
  215. package/src/components/convert-to-group-buttons/index.js +1 -1
  216. package/src/components/date-format-picker/index.js +2 -0
  217. package/src/components/font-appearance-control/index.js +3 -0
  218. package/src/components/font-family/README.md +11 -2
  219. package/src/components/font-family/index.js +3 -0
  220. package/src/components/global-styles/background-panel.js +132 -53
  221. package/src/components/global-styles/get-global-styles-changes.js +4 -1
  222. package/src/components/global-styles/hooks.js +0 -5
  223. package/src/components/global-styles/index.js +0 -1
  224. package/src/components/global-styles/style.scss +13 -2
  225. package/src/components/global-styles/test/use-global-styles-output.js +20 -4
  226. package/src/components/global-styles/use-global-styles-output.js +5 -6
  227. package/src/components/global-styles/utils.js +7 -29
  228. package/src/components/grid/grid-visualizer.js +22 -7
  229. package/src/components/height-control/index.js +1 -0
  230. package/src/components/iframe/index.js +4 -2
  231. package/src/components/image-editor/zoom-dropdown.js +17 -9
  232. package/src/components/inner-blocks/button-block-appender.js +5 -7
  233. package/src/components/inner-blocks/default-block-appender.js +4 -23
  234. package/src/components/inner-blocks/index.js +10 -9
  235. package/src/components/inserter/library.js +2 -0
  236. package/src/components/inserter/menu.js +32 -27
  237. package/src/components/inserter/quick-inserter.js +4 -1
  238. package/src/components/inserter/style.scss +1 -1
  239. package/src/components/inserter-list-item/style.scss +1 -0
  240. package/src/components/line-height-control/README.md +7 -0
  241. package/src/components/line-height-control/index.js +3 -0
  242. package/src/components/link-control/style.scss +1 -1
  243. package/src/components/media-placeholder/index.js +12 -7
  244. package/src/components/media-upload/README.md +2 -0
  245. package/src/components/media-upload/index.native.js +2 -0
  246. package/src/components/multi-selection-inspector/index.js +8 -9
  247. package/src/components/responsive-block-control/README.md +1 -0
  248. package/src/components/responsive-block-control/test/index.js +1 -0
  249. package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -4
  250. package/src/components/spacing-sizes-control/style.scss +16 -16
  251. package/src/components/text-alignment-control/index.js +20 -8
  252. package/src/components/text-decoration-control/index.js +20 -8
  253. package/src/components/text-decoration-control/stories/index.story.js +0 -4
  254. package/src/components/text-transform-control/index.js +20 -8
  255. package/src/components/text-transform-control/stories/index.story.js +0 -4
  256. package/src/components/url-input/style.scss +2 -2
  257. package/src/components/url-popover/image-url-input-ui.js +2 -0
  258. package/src/components/use-block-drop-zone/index.js +21 -3
  259. package/src/components/writing-mode-control/index.js +20 -8
  260. package/src/hooks/background.js +21 -27
  261. package/src/hooks/block-bindings.js +27 -84
  262. package/src/hooks/block-bindings.scss +1 -1
  263. package/src/hooks/test/background.js +60 -0
  264. package/src/layouts/constrained.js +1 -0
  265. package/src/layouts/flex.js +2 -0
  266. package/src/layouts/grid.js +3 -0
  267. package/src/private-apis.js +2 -0
  268. package/src/store/private-selectors.js +36 -0
  269. package/src/store/reducer.js +7 -0
  270. package/src/store/test/private-selectors.js +89 -0
  271. package/src/style.scss +0 -1
  272. package/src/utils/block-bindings.js +98 -0
  273. package/src/utils/test/transform-styles.js +49 -0
  274. package/build/components/global-styles/theme-file-uri-utils.js +0 -21
  275. package/build/components/global-styles/theme-file-uri-utils.js.map +0 -1
  276. package/build/components/inner-blocks/with-client-id.js +0 -28
  277. package/build/components/inner-blocks/with-client-id.js.map +0 -1
  278. package/build/components/segmented-text-control/index.js +0 -63
  279. package/build/components/segmented-text-control/index.js.map +0 -1
  280. package/build-module/components/global-styles/theme-file-uri-utils.js +0 -15
  281. package/build-module/components/global-styles/theme-file-uri-utils.js.map +0 -1
  282. package/build-module/components/inner-blocks/with-client-id.js +0 -21
  283. package/build-module/components/inner-blocks/with-client-id.js.map +0 -1
  284. package/build-module/components/segmented-text-control/index.js +0 -58
  285. package/build-module/components/segmented-text-control/index.js.map +0 -1
  286. package/src/components/global-styles/test/theme-file-uri-utils.js +0 -41
  287. package/src/components/global-styles/theme-file-uri-utils.js +0 -18
  288. package/src/components/inner-blocks/with-client-id.js +0 -19
  289. package/src/components/segmented-text-control/index.js +0 -63
  290. package/src/components/segmented-text-control/style.scss +0 -15
@@ -25,6 +25,7 @@ export function useInBetweenInserter() {
25
25
  getBlockIndex,
26
26
  isMultiSelecting,
27
27
  getSelectedBlockClientIds,
28
+ getSettings,
28
29
  getTemplateLock,
29
30
  __unstableIsWithinBlockOverlay,
30
31
  getBlockEditingMode,
@@ -88,9 +89,11 @@ export function useInBetweenInserter() {
88
89
  return;
89
90
  }
90
91
 
92
+ const blockListSettings = getBlockListSettings( rootClientId );
91
93
  const orientation =
92
- getBlockListSettings( rootClientId )?.orientation ||
93
- 'vertical';
94
+ blockListSettings?.orientation || 'vertical';
95
+ const captureToolbars =
96
+ !! blockListSettings?.__experimentalCaptureToolbars;
94
97
  const offsetTop = event.clientY;
95
98
  const offsetLeft = event.clientX;
96
99
 
@@ -135,9 +138,18 @@ export function useInBetweenInserter() {
135
138
  return;
136
139
  }
137
140
 
138
- // Don't show the inserter when hovering above (conflicts with
139
- // block toolbar) or inside selected block(s).
140
- if ( getSelectedBlockClientIds().includes( clientId ) ) {
141
+ // Don't show the inserter if the following conditions are met,
142
+ // as it conflicts with the block toolbar:
143
+ // 1. when hovering above or inside selected block(s)
144
+ // 2. when the orientation is vertical
145
+ // 3. when the __experimentalCaptureToolbars is not enabled
146
+ // 4. when the Top Toolbar is not disabled
147
+ if (
148
+ getSelectedBlockClientIds().includes( clientId ) &&
149
+ orientation === 'vertical' &&
150
+ ! captureToolbars &&
151
+ ! getSettings().hasFixedToolbar
152
+ ) {
141
153
  return;
142
154
  }
143
155
  const elementRect = element.getBoundingClientRect();
@@ -4,8 +4,7 @@
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import { MenuItem } from '@wordpress/components';
6
6
  import { getBlockType, hasBlockSupport } from '@wordpress/blocks';
7
- import { withSelect, withDispatch } from '@wordpress/data';
8
- import { compose } from '@wordpress/compose';
7
+ import { useDispatch, useSelect } from '@wordpress/data';
9
8
 
10
9
  /**
11
10
  * Internal dependencies
@@ -14,13 +13,23 @@ import { store as blockEditorStore } from '../../store';
14
13
 
15
14
  const noop = () => {};
16
15
 
17
- export function BlockModeToggle( {
18
- blockType,
19
- mode,
20
- onToggleMode,
21
- small = false,
22
- isCodeEditingEnabled = true,
23
- } ) {
16
+ export default function BlockModeToggle( { clientId, onToggle = noop } ) {
17
+ const { blockType, mode, isCodeEditingEnabled } = useSelect(
18
+ ( select ) => {
19
+ const { getBlock, getBlockMode, getSettings } =
20
+ select( blockEditorStore );
21
+ const block = getBlock( clientId );
22
+
23
+ return {
24
+ mode: getBlockMode( clientId ),
25
+ blockType: block ? getBlockType( block.name ) : null,
26
+ isCodeEditingEnabled: getSettings().codeEditingEnabled,
27
+ };
28
+ },
29
+ [ clientId ]
30
+ );
31
+ const { toggleBlockMode } = useDispatch( blockEditorStore );
32
+
24
33
  if (
25
34
  ! blockType ||
26
35
  ! hasBlockSupport( blockType, 'html', true ) ||
@@ -32,26 +41,14 @@ export function BlockModeToggle( {
32
41
  const label =
33
42
  mode === 'visual' ? __( 'Edit as HTML' ) : __( 'Edit visually' );
34
43
 
35
- return <MenuItem onClick={ onToggleMode }>{ ! small && label }</MenuItem>;
44
+ return (
45
+ <MenuItem
46
+ onClick={ () => {
47
+ toggleBlockMode( clientId );
48
+ onToggle();
49
+ } }
50
+ >
51
+ { label }
52
+ </MenuItem>
53
+ );
36
54
  }
37
-
38
- export default compose( [
39
- withSelect( ( select, { clientId } ) => {
40
- const { getBlock, getBlockMode, getSettings } =
41
- select( blockEditorStore );
42
- const block = getBlock( clientId );
43
- const isCodeEditingEnabled = getSettings().codeEditingEnabled;
44
-
45
- return {
46
- mode: getBlockMode( clientId ),
47
- blockType: block ? getBlockType( block.name ) : null,
48
- isCodeEditingEnabled,
49
- };
50
- } ),
51
- withDispatch( ( dispatch, { onToggle = noop, clientId } ) => ( {
52
- onToggleMode() {
53
- dispatch( blockEditorStore ).toggleBlockMode( clientId );
54
- onToggle();
55
- },
56
- } ) ),
57
- ] )( BlockModeToggle );
@@ -3,16 +3,32 @@
3
3
  */
4
4
  import { render, screen } from '@testing-library/react';
5
5
 
6
+ /**
7
+ * WordPress dependencies
8
+ */
9
+ import { useSelect } from '@wordpress/data';
10
+
6
11
  /**
7
12
  * Internal dependencies
8
13
  */
9
- import { BlockModeToggle } from '../block-mode-toggle';
14
+ import BlockModeToggle from '../block-mode-toggle';
15
+
16
+ jest.mock( '@wordpress/data/src/components/use-select', () => jest.fn() );
17
+
18
+ function setupUseSelectMock( mode, blockType, codeEditingEnabled = true ) {
19
+ useSelect.mockImplementation( () => {
20
+ return {
21
+ mode,
22
+ blockType,
23
+ isCodeEditingEnabled: codeEditingEnabled,
24
+ };
25
+ } );
26
+ }
10
27
 
11
28
  describe( 'BlockModeToggle', () => {
12
29
  it( "should not render the HTML mode button if the block doesn't support it", () => {
13
- render(
14
- <BlockModeToggle blockType={ { supports: { html: false } } } />
15
- );
30
+ setupUseSelectMock( undefined, { supports: { html: false } } );
31
+ render( <BlockModeToggle /> );
16
32
 
17
33
  expect(
18
34
  screen.queryByRole( 'menuitem', { name: 'Edit as HTML' } )
@@ -20,12 +36,8 @@ describe( 'BlockModeToggle', () => {
20
36
  } );
21
37
 
22
38
  it( 'should render the HTML mode button', () => {
23
- render(
24
- <BlockModeToggle
25
- blockType={ { supports: { html: true } } }
26
- mode="visual"
27
- />
28
- );
39
+ setupUseSelectMock( 'visual', { supports: { html: true } } );
40
+ render( <BlockModeToggle /> );
29
41
 
30
42
  expect(
31
43
  screen.getByRole( 'menuitem', { name: 'Edit as HTML' } )
@@ -33,12 +45,8 @@ describe( 'BlockModeToggle', () => {
33
45
  } );
34
46
 
35
47
  it( 'should render the Visual mode button', () => {
36
- render(
37
- <BlockModeToggle
38
- blockType={ { supports: { html: true } } }
39
- mode="html"
40
- />
41
- );
48
+ setupUseSelectMock( 'html', { supports: { html: true } } );
49
+ render( <BlockModeToggle /> );
42
50
 
43
51
  expect(
44
52
  screen.getByRole( 'menuitem', { name: 'Edit visually' } )
@@ -46,13 +54,8 @@ describe( 'BlockModeToggle', () => {
46
54
  } );
47
55
 
48
56
  it( 'should not render the Visual mode button if code editing is disabled', () => {
49
- render(
50
- <BlockModeToggle
51
- blockType={ { supports: { html: true } } }
52
- mode="html"
53
- isCodeEditingEnabled={ false }
54
- />
55
- );
57
+ setupUseSelectMock( 'html', { supports: { html: true } }, false );
58
+ render( <BlockModeToggle /> );
56
59
 
57
60
  expect(
58
61
  screen.queryByRole( 'menuitem', { name: 'Edit visually' } )
@@ -38,6 +38,7 @@ function InbetweenInsertionPointPopover( {
38
38
  isInserterShown,
39
39
  isDistractionFree,
40
40
  isNavigationMode,
41
+ isZoomOutMode,
41
42
  } = useSelect( ( select ) => {
42
43
  const {
43
44
  getBlockOrder,
@@ -48,6 +49,7 @@ function InbetweenInsertionPointPopover( {
48
49
  getNextBlockClientId,
49
50
  getSettings,
50
51
  isNavigationMode: _isNavigationMode,
52
+ __unstableGetEditorMode,
51
53
  } = select( blockEditorStore );
52
54
  const insertionPoint = getBlockInsertionPoint();
53
55
  const order = getBlockOrder( insertionPoint.rootClientId );
@@ -79,6 +81,7 @@ function InbetweenInsertionPointPopover( {
79
81
  isNavigationMode: _isNavigationMode(),
80
82
  isDistractionFree: settings.isDistractionFree,
81
83
  isInserterShown: insertionPoint?.__unstableWithInserter,
84
+ isZoomOutMode: __unstableGetEditorMode() === 'zoom-out',
82
85
  };
83
86
  }, [] );
84
87
  const { getBlockEditingMode } = useSelect( blockEditorStore );
@@ -145,6 +148,14 @@ function InbetweenInsertionPointPopover( {
145
148
  return null;
146
149
  }
147
150
 
151
+ // Zoom out mode should only show the insertion point for the insert operation.
152
+ // Other operations such as "group" are when the editor tries to create a row
153
+ // block by grouping the block being dragged with the block it's being dropped
154
+ // onto.
155
+ if ( isZoomOutMode && operation !== 'insert' ) {
156
+ return null;
157
+ }
158
+
148
159
  const orientationClassname =
149
160
  orientation === 'horizontal' || operation === 'group'
150
161
  ? 'is-horizontal'
@@ -231,7 +231,7 @@
231
231
  }
232
232
 
233
233
  .block-editor-block-parent-selector__button {
234
- border: 1px solid $gray-900;
234
+ border: $border-width solid $gray-900;
235
235
  padding-right: 6px;
236
236
  padding-left: 6px;
237
237
  background-color: $white;
@@ -20,6 +20,7 @@ export function useShowBlockTools() {
20
20
  getSelectedBlockClientId,
21
21
  getFirstMultiSelectedBlockClientId,
22
22
  getBlock,
23
+ getBlockMode,
23
24
  getSettings,
24
25
  hasMultiSelection,
25
26
  __unstableGetEditorMode,
@@ -33,7 +34,9 @@ export function useShowBlockTools() {
33
34
  const editorMode = __unstableGetEditorMode();
34
35
  const hasSelectedBlock = !! clientId && !! block;
35
36
  const isEmptyDefaultBlock =
36
- hasSelectedBlock && isUnmodifiedDefaultBlock( block );
37
+ hasSelectedBlock &&
38
+ isUnmodifiedDefaultBlock( block ) &&
39
+ getBlockMode( clientId ) !== 'html';
37
40
  const _showEmptyBlockSideInserter =
38
41
  clientId &&
39
42
  ! isTyping() &&
@@ -23,6 +23,7 @@ function ZoomOutModeInserters() {
23
23
  sectionRootClientId,
24
24
  selectedBlockClientId,
25
25
  hoveredBlockClientId,
26
+ inserterSearchInputRef,
26
27
  } = useSelect( ( select ) => {
27
28
  const {
28
29
  getSettings,
@@ -32,8 +33,11 @@ function ZoomOutModeInserters() {
32
33
  getSelectedBlockClientId,
33
34
  getHoveredBlockClientId,
34
35
  isBlockInsertionPointVisible,
35
- } = select( blockEditorStore );
36
+ getInserterSearchInputRef,
37
+ } = unlock( select( blockEditorStore ) );
38
+
36
39
  const { sectionRootClientId: root } = unlock( getSettings() );
40
+
37
41
  return {
38
42
  hasSelection: !! getSelectionStart().clientId,
39
43
  blockInsertionPoint: getBlockInsertionPoint(),
@@ -44,6 +48,7 @@ function ZoomOutModeInserters() {
44
48
  getSettings().__experimentalSetIsInserterOpened,
45
49
  selectedBlockClientId: getSelectedBlockClientId(),
46
50
  hoveredBlockClientId: getHoveredBlockClientId(),
51
+ inserterSearchInputRef: getInserterSearchInputRef(),
47
52
  };
48
53
  }, [] );
49
54
 
@@ -110,6 +115,7 @@ function ZoomOutModeInserters() {
110
115
  showInsertionPoint( sectionRootClientId, index, {
111
116
  operation: 'insert',
112
117
  } );
118
+ inserterSearchInputRef?.current?.focus();
113
119
  } }
114
120
  />
115
121
  ) }
@@ -3,7 +3,7 @@
3
3
  width: 100%;
4
4
 
5
5
  .components-dropdown-menu__toggle {
6
- border: 1px solid $gray-700;
6
+ border: $border-width solid $gray-700;
7
7
  border-radius: $radius-block-ui;
8
8
  min-height: 30px;
9
9
  width: 100%;
@@ -104,6 +104,7 @@ export default function BorderRadiusControl( { onChange, values } ) {
104
104
  units={ units }
105
105
  />
106
106
  <RangeControl
107
+ __next40pxDefaultSize
107
108
  label={ __( 'Border radius' ) }
108
109
  hideLabelFromVision
109
110
  className="components-border-radius-control__range-control"
@@ -20,16 +20,6 @@
20
20
  .components-border-radius-control__range-control {
21
21
  flex: 1;
22
22
  margin-right: $grid-unit-15;
23
-
24
- > div {
25
- height: 40px;
26
- display: flex;
27
- align-items: center;
28
- }
29
- }
30
-
31
- > span {
32
- flex: 0 0 auto;
33
23
  }
34
24
  }
35
25
 
@@ -82,7 +82,7 @@ function ConvertToGroupButton( {
82
82
  >
83
83
  { _x(
84
84
  'Ungroup',
85
- 'Ungrouping blocks from within a grouping block back into individual blocks within the Editor '
85
+ 'Ungrouping blocks from within a grouping block back into individual blocks within the Editor'
86
86
  ) }
87
87
  </MenuItem>
88
88
  ) }
@@ -129,6 +129,7 @@ function NonDefaultControls( { format, onChange } ) {
129
129
  return (
130
130
  <VStack>
131
131
  <CustomSelectControl
132
+ __next40pxDefaultSize
132
133
  label={ __( 'Choose a format' ) }
133
134
  options={ [ ...suggestedOptions, customOption ] }
134
135
  value={
@@ -149,6 +150,7 @@ function NonDefaultControls( { format, onChange } ) {
149
150
  />
150
151
  { isCustom && (
151
152
  <TextControl
153
+ __next40pxDefaultSize
152
154
  __nextHasNoMarginBottom
153
155
  label={ __( 'Custom format' ) }
154
156
  hideLabelFromVision
@@ -39,6 +39,8 @@ const getFontAppearanceLabel = ( hasFontStyles, hasFontWeights ) => {
39
39
  */
40
40
  export default function FontAppearanceControl( props ) {
41
41
  const {
42
+ /** Start opting into the larger default height that will become the default size in a future version. */
43
+ __next40pxDefaultSize = false,
42
44
  onChange,
43
45
  hasFontStyles = true,
44
46
  hasFontWeights = true,
@@ -150,6 +152,7 @@ export default function FontAppearanceControl( props ) {
150
152
  <CustomSelectControl
151
153
  { ...otherProps }
152
154
  className="components-font-appearance-control"
155
+ __next40pxDefaultSize={ __next40pxDefaultSize }
153
156
  label={ label }
154
157
  describedBy={ getDescribedBy() }
155
158
  options={ selectOptions }
@@ -71,9 +71,18 @@ The current font family value.
71
71
 
72
72
  The rest of the props are passed down to the underlying `<SelectControl />` instance.
73
73
 
74
+ #### `__next40pxDefaultSize`
75
+
76
+ - Type: `boolean`
77
+ - Required: No
78
+ - Default: `false`
79
+
80
+ Start opting into the larger default height that will become the default size in a future version.
81
+
74
82
  #### `__nextHasNoMarginBottom`
75
83
 
76
- - **Type:** `boolean`
77
- - **Default:** `false`
84
+ - Type: `boolean`
85
+ - Required: No
86
+ - Default: `false`
78
87
 
79
88
  Start opting into the new margin-free styles that will become the default in a future version.
@@ -11,6 +11,8 @@ import { __ } from '@wordpress/i18n';
11
11
  import { useSettings } from '../use-settings';
12
12
 
13
13
  export default function FontFamilyControl( {
14
+ /** Start opting into the larger default height that will become the default size in a future version. */
15
+ __next40pxDefaultSize = false,
14
16
  /** Start opting into the new margin-free styles that will become the default in a future version. */
15
17
  __nextHasNoMarginBottom = false,
16
18
  value = '',
@@ -50,6 +52,7 @@ export default function FontFamilyControl( {
50
52
 
51
53
  return (
52
54
  <SelectControl
55
+ __next40pxDefaultSize={ __next40pxDefaultSize }
53
56
  __nextHasNoMarginBottom={ __nextHasNoMarginBottom }
54
57
  label={ __( 'Font' ) }
55
58
  options={ options }