@wordpress/block-library 9.40.2-next.v.202602271551.0 → 9.40.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 (250) hide show
  1. package/build/accordion/view.cjs +34 -0
  2. package/build/accordion/view.cjs.map +2 -2
  3. package/build/comment-reply-link/edit.cjs +2 -1
  4. package/build/comment-reply-link/edit.cjs.map +2 -2
  5. package/build/comments/edit/placeholder.cjs +2 -1
  6. package/build/comments/edit/placeholder.cjs.map +2 -2
  7. package/build/cover/edit/index.cjs +39 -26
  8. package/build/cover/edit/index.cjs.map +2 -2
  9. package/build/cover/embed-video-utils.cjs +8 -6
  10. package/build/cover/embed-video-utils.cjs.map +2 -2
  11. package/build/embed/embed-preview.cjs +2 -1
  12. package/build/embed/embed-preview.cjs.map +2 -2
  13. package/build/html/block.json +2 -1
  14. package/build/html/modal.cjs +147 -230
  15. package/build/html/modal.cjs.map +3 -3
  16. package/build/icon/block.json +3 -12
  17. package/build/image/image.cjs +1 -1
  18. package/build/image/image.cjs.map +2 -2
  19. package/build/latest-comments/deprecated.cjs +33 -0
  20. package/build/latest-comments/deprecated.cjs.map +2 -2
  21. package/build/navigation/edit/index.cjs +125 -123
  22. package/build/navigation/edit/index.cjs.map +3 -3
  23. package/build/navigation/edit/leaf-more-menu.cjs +6 -68
  24. package/build/navigation/edit/leaf-more-menu.cjs.map +3 -3
  25. package/build/navigation/edit/menu-inspector-controls.cjs +91 -20
  26. package/build/navigation/edit/menu-inspector-controls.cjs.map +3 -3
  27. package/build/navigation/edit/navigation-menu-selector.cjs +4 -5
  28. package/build/navigation/edit/navigation-menu-selector.cjs.map +3 -3
  29. package/build/navigation/edit/placeholder/index.cjs +2 -2
  30. package/build/navigation/edit/placeholder/index.cjs.map +3 -3
  31. package/build/navigation/use-navigation-entities.cjs +67 -0
  32. package/build/navigation/use-navigation-entities.cjs.map +7 -0
  33. package/build/navigation/view.cjs +9 -2
  34. package/build/navigation/view.cjs.map +2 -2
  35. package/build/navigation-link/edit.cjs +2 -1
  36. package/build/navigation-link/edit.cjs.map +2 -2
  37. package/build/navigation-link/shared/use-handle-link-change.cjs +19 -3
  38. package/build/navigation-link/shared/use-handle-link-change.cjs.map +3 -3
  39. package/build/navigation-link/shared/use-link-preview.cjs +2 -2
  40. package/build/navigation-link/shared/use-link-preview.cjs.map +2 -2
  41. package/build/navigation-submenu/edit.cjs +8 -22
  42. package/build/navigation-submenu/edit.cjs.map +2 -2
  43. package/build/nextpage/block.json +0 -1
  44. package/build/paragraph/edit.cjs +1 -1
  45. package/build/paragraph/edit.cjs.map +1 -1
  46. package/build/post-navigation-link/block.json +3 -1
  47. package/build/post-navigation-link/edit.cjs +36 -2
  48. package/build/post-navigation-link/edit.cjs.map +3 -3
  49. package/build/post-navigation-link/index.cjs +0 -2
  50. package/build/post-navigation-link/index.cjs.map +3 -3
  51. package/build/post-title/block.json +3 -1
  52. package/build/post-title/deprecated.cjs +1 -82
  53. package/build/post-title/deprecated.cjs.map +3 -3
  54. package/build/post-title/edit.cjs +36 -10
  55. package/build/post-title/edit.cjs.map +3 -3
  56. package/build/query-title/block.json +3 -1
  57. package/build/query-title/deprecated.cjs +1 -70
  58. package/build/query-title/deprecated.cjs.map +3 -3
  59. package/build/query-title/edit.cjs +35 -17
  60. package/build/query-title/edit.cjs.map +3 -3
  61. package/build/shortcode/block.json +2 -1
  62. package/build/site-tagline/block.json +4 -6
  63. package/build/site-tagline/deprecated.cjs +1 -66
  64. package/build/site-tagline/deprecated.cjs.map +3 -3
  65. package/build/site-tagline/edit.cjs +28 -14
  66. package/build/site-tagline/edit.cjs.map +3 -3
  67. package/build/site-title/block.json +3 -1
  68. package/build/site-title/deprecated.cjs +1 -79
  69. package/build/site-title/deprecated.cjs.map +3 -3
  70. package/build/site-title/edit.cjs +30 -14
  71. package/build/site-title/edit.cjs.map +3 -3
  72. package/build/tabs-menu-item/block.json +26 -1
  73. package/build/tabs-menu-item/controls.cjs +100 -2
  74. package/build/tabs-menu-item/controls.cjs.map +3 -3
  75. package/build/tabs-menu-item/edit.cjs +65 -6
  76. package/build/tabs-menu-item/edit.cjs.map +2 -2
  77. package/build/tabs-menu-item/save.cjs +15 -1
  78. package/build/tabs-menu-item/save.cjs.map +2 -2
  79. package/build-module/accordion/view.mjs +35 -1
  80. package/build-module/accordion/view.mjs.map +2 -2
  81. package/build-module/comment-reply-link/edit.mjs +3 -2
  82. package/build-module/comment-reply-link/edit.mjs.map +2 -2
  83. package/build-module/comments/edit/placeholder.mjs +3 -2
  84. package/build-module/comments/edit/placeholder.mjs.map +2 -2
  85. package/build-module/cover/edit/index.mjs +47 -29
  86. package/build-module/cover/edit/index.mjs.map +2 -2
  87. package/build-module/cover/embed-video-utils.mjs +7 -5
  88. package/build-module/cover/embed-video-utils.mjs.map +2 -2
  89. package/build-module/embed/embed-preview.mjs +2 -1
  90. package/build-module/embed/embed-preview.mjs.map +2 -2
  91. package/build-module/html/block.json +2 -1
  92. package/build-module/html/modal.mjs +149 -232
  93. package/build-module/html/modal.mjs.map +2 -2
  94. package/build-module/icon/block.json +3 -12
  95. package/build-module/image/image.mjs +1 -1
  96. package/build-module/image/image.mjs.map +2 -2
  97. package/build-module/latest-comments/deprecated.mjs +33 -0
  98. package/build-module/latest-comments/deprecated.mjs.map +2 -2
  99. package/build-module/navigation/edit/index.mjs +125 -123
  100. package/build-module/navigation/edit/index.mjs.map +2 -2
  101. package/build-module/navigation/edit/leaf-more-menu.mjs +7 -73
  102. package/build-module/navigation/edit/leaf-more-menu.mjs.map +2 -2
  103. package/build-module/navigation/edit/menu-inspector-controls.mjs +101 -21
  104. package/build-module/navigation/edit/menu-inspector-controls.mjs.map +2 -2
  105. package/build-module/navigation/edit/navigation-menu-selector.mjs +5 -6
  106. package/build-module/navigation/edit/navigation-menu-selector.mjs.map +2 -2
  107. package/build-module/navigation/edit/placeholder/index.mjs +2 -2
  108. package/build-module/navigation/edit/placeholder/index.mjs.map +2 -2
  109. package/build-module/navigation/use-navigation-entities.mjs +46 -0
  110. package/build-module/navigation/use-navigation-entities.mjs.map +7 -0
  111. package/build-module/navigation/view.mjs +9 -2
  112. package/build-module/navigation/view.mjs.map +2 -2
  113. package/build-module/navigation-link/edit.mjs +2 -1
  114. package/build-module/navigation-link/edit.mjs.map +2 -2
  115. package/build-module/navigation-link/shared/use-handle-link-change.mjs +19 -3
  116. package/build-module/navigation-link/shared/use-handle-link-change.mjs.map +2 -2
  117. package/build-module/navigation-link/shared/use-link-preview.mjs +2 -2
  118. package/build-module/navigation-link/shared/use-link-preview.mjs.map +2 -2
  119. package/build-module/navigation-submenu/edit.mjs +9 -23
  120. package/build-module/navigation-submenu/edit.mjs.map +2 -2
  121. package/build-module/nextpage/block.json +0 -1
  122. package/build-module/paragraph/edit.mjs +2 -2
  123. package/build-module/paragraph/edit.mjs.map +1 -1
  124. package/build-module/post-navigation-link/block.json +3 -1
  125. package/build-module/post-navigation-link/edit.mjs +30 -3
  126. package/build-module/post-navigation-link/edit.mjs.map +2 -2
  127. package/build-module/post-navigation-link/index.mjs +0 -2
  128. package/build-module/post-navigation-link/index.mjs.map +2 -2
  129. package/build-module/post-title/block.json +3 -1
  130. package/build-module/post-title/deprecated.mjs +1 -82
  131. package/build-module/post-title/deprecated.mjs.map +2 -2
  132. package/build-module/post-title/edit.mjs +27 -10
  133. package/build-module/post-title/edit.mjs.map +2 -2
  134. package/build-module/query-title/block.json +3 -1
  135. package/build-module/query-title/deprecated.mjs +1 -70
  136. package/build-module/query-title/deprecated.mjs.map +2 -2
  137. package/build-module/query-title/edit.mjs +36 -17
  138. package/build-module/query-title/edit.mjs.map +2 -2
  139. package/build-module/shortcode/block.json +2 -1
  140. package/build-module/site-tagline/block.json +4 -6
  141. package/build-module/site-tagline/deprecated.mjs +1 -66
  142. package/build-module/site-tagline/deprecated.mjs.map +2 -2
  143. package/build-module/site-tagline/edit.mjs +29 -14
  144. package/build-module/site-tagline/edit.mjs.map +2 -2
  145. package/build-module/site-title/block.json +3 -1
  146. package/build-module/site-title/deprecated.mjs +1 -79
  147. package/build-module/site-title/deprecated.mjs.map +2 -2
  148. package/build-module/site-title/edit.mjs +31 -14
  149. package/build-module/site-title/edit.mjs.map +2 -2
  150. package/build-module/tabs-menu-item/block.json +26 -1
  151. package/build-module/tabs-menu-item/controls.mjs +104 -3
  152. package/build-module/tabs-menu-item/controls.mjs.map +2 -2
  153. package/build-module/tabs-menu-item/edit.mjs +66 -6
  154. package/build-module/tabs-menu-item/edit.mjs.map +2 -2
  155. package/build-module/tabs-menu-item/save.mjs +15 -1
  156. package/build-module/tabs-menu-item/save.mjs.map +2 -2
  157. package/build-style/editor-rtl.css +20 -6
  158. package/build-style/editor.css +20 -6
  159. package/build-style/html/editor-rtl.css +10 -6
  160. package/build-style/html/editor.css +10 -6
  161. package/build-style/icon/editor-rtl.css +5 -0
  162. package/build-style/icon/editor.css +5 -0
  163. package/build-style/navigation/style-rtl.css +15 -1
  164. package/build-style/navigation/style.css +15 -1
  165. package/build-style/navigation-overlay-close/style-rtl.css +3 -3
  166. package/build-style/navigation-overlay-close/style.css +3 -3
  167. package/build-style/style-rtl.css +30 -7
  168. package/build-style/style.css +30 -7
  169. package/build-style/tabs-menu-item/editor-rtl.css +5 -0
  170. package/build-style/tabs-menu-item/editor.css +5 -0
  171. package/build-style/tabs-menu-item/style-rtl.css +12 -3
  172. package/build-style/tabs-menu-item/style.css +12 -3
  173. package/package.json +38 -38
  174. package/src/accordion/view.js +44 -1
  175. package/src/accordion-item/index.php +18 -5
  176. package/src/comment-reply-link/edit.js +5 -2
  177. package/src/comments/edit/placeholder.js +5 -2
  178. package/src/cover/edit/index.js +72 -35
  179. package/src/cover/embed-video-utils.js +9 -7
  180. package/src/cover/index.php +12 -4
  181. package/src/details/index.php +47 -0
  182. package/src/embed/embed-preview.js +6 -5
  183. package/src/html/block.json +2 -1
  184. package/src/html/editor.scss +15 -5
  185. package/src/html/modal.js +32 -99
  186. package/src/icon/block.json +3 -12
  187. package/src/icon/editor.scss +5 -0
  188. package/src/icon/index.php +3 -1
  189. package/src/image/image.js +14 -15
  190. package/src/image/index.php +7 -5
  191. package/src/latest-comments/deprecated.js +33 -0
  192. package/src/navigation/edit/index.js +136 -134
  193. package/src/navigation/edit/leaf-more-menu.js +11 -86
  194. package/src/navigation/edit/menu-inspector-controls.js +142 -23
  195. package/src/navigation/edit/navigation-menu-selector.js +5 -6
  196. package/src/navigation/edit/placeholder/index.js +2 -3
  197. package/src/navigation/edit/test/navigation-menu-selector.js +20 -23
  198. package/src/navigation/index.php +62 -9
  199. package/src/navigation/style.scss +17 -1
  200. package/src/navigation/use-navigation-entities.js +72 -0
  201. package/src/navigation/view.js +14 -2
  202. package/src/navigation-link/edit.js +1 -0
  203. package/src/navigation-link/shared/test/use-handle-link-change.test.js +212 -0
  204. package/src/navigation-link/shared/test/use-link-preview.test.js +9 -0
  205. package/src/navigation-link/shared/use-handle-link-change.js +36 -9
  206. package/src/navigation-link/shared/use-link-preview.js +6 -9
  207. package/src/navigation-overlay-close/style.scss +3 -3
  208. package/src/navigation-submenu/edit.js +11 -28
  209. package/src/nextpage/block.json +0 -1
  210. package/src/page-list/index.php +1 -1
  211. package/src/paragraph/edit.js +2 -2
  212. package/src/post-featured-image/index.php +4 -2
  213. package/src/post-navigation-link/block.json +3 -1
  214. package/src/post-navigation-link/edit.js +35 -2
  215. package/src/post-navigation-link/index.js +0 -2
  216. package/src/post-title/block.json +3 -1
  217. package/src/post-title/deprecated.js +1 -86
  218. package/src/post-title/edit.js +18 -2
  219. package/src/query-title/block.json +3 -1
  220. package/src/query-title/deprecated.js +1 -74
  221. package/src/query-title/edit.js +27 -11
  222. package/src/query-title/index.php +1 -1
  223. package/src/shortcode/block.json +2 -1
  224. package/src/site-tagline/block.json +4 -6
  225. package/src/site-tagline/deprecated.js +1 -70
  226. package/src/site-tagline/edit.js +22 -9
  227. package/src/site-title/block.json +3 -1
  228. package/src/site-title/deprecated.js +1 -83
  229. package/src/site-title/edit.js +22 -9
  230. package/src/tabs-menu-item/block.json +26 -1
  231. package/src/tabs-menu-item/controls.js +108 -0
  232. package/src/tabs-menu-item/edit.js +79 -6
  233. package/src/tabs-menu-item/editor.scss +6 -0
  234. package/src/tabs-menu-item/save.js +26 -1
  235. package/src/tabs-menu-item/style.scss +14 -3
  236. package/build/navigation/edit/navigation-link-ui.cjs +0 -97
  237. package/build/navigation/edit/navigation-link-ui.cjs.map +0 -7
  238. package/build/navigation/edit/navigation-list-view-header.cjs +0 -86
  239. package/build/navigation/edit/navigation-list-view-header.cjs.map +0 -7
  240. package/build/post-navigation-link/deprecated.cjs +0 -100
  241. package/build/post-navigation-link/deprecated.cjs.map +0 -7
  242. package/build-module/navigation/edit/navigation-link-ui.mjs +0 -76
  243. package/build-module/navigation/edit/navigation-link-ui.mjs.map +0 -7
  244. package/build-module/navigation/edit/navigation-list-view-header.mjs +0 -58
  245. package/build-module/navigation/edit/navigation-list-view-header.mjs.map +0 -7
  246. package/build-module/post-navigation-link/deprecated.mjs +0 -69
  247. package/build-module/post-navigation-link/deprecated.mjs.map +0 -7
  248. package/src/navigation/edit/navigation-link-ui.js +0 -115
  249. package/src/navigation/edit/navigation-list-view-header.js +0 -62
  250. package/src/post-navigation-link/deprecated.js +0 -72
@@ -10,7 +10,9 @@
10
10
  *
11
11
  * @since 7.0.0
12
12
  *
13
- * @param array $attributes The block attributes.
13
+ * @param array $attributes The block attributes.
14
+ * @param string $content The block content.
15
+ * @param WP_Block $block The block instance.
14
16
  *
15
17
  * @return string Returns the Icon.
16
18
  */
@@ -1241,21 +1241,20 @@ export default function Image( {
1241
1241
  } );
1242
1242
  };
1243
1243
 
1244
- const featuredImageControl = (
1245
- <BlockSettingsMenuControls>
1246
- { ( { selectedClientIds } ) =>
1247
- selectedClientIds.length === 1 &&
1248
- ! isDescendentOfQueryLoop &&
1249
- postId &&
1250
- id &&
1251
- clientId === selectedClientIds[ 0 ] && (
1252
- <MenuItem onClick={ setPostFeatureImage }>
1253
- { __( 'Set as featured image' ) }
1254
- </MenuItem>
1255
- )
1256
- }
1257
- </BlockSettingsMenuControls>
1258
- );
1244
+ const featuredImageControl =
1245
+ ! isDescendentOfQueryLoop && postId && id ? (
1246
+ <BlockSettingsMenuControls>
1247
+ { ( { canEdit, selectedClientIds } ) =>
1248
+ canEdit &&
1249
+ selectedClientIds.length === 1 &&
1250
+ clientId === selectedClientIds[ 0 ] && (
1251
+ <MenuItem onClick={ setPostFeatureImage }>
1252
+ { __( 'Set as featured image' ) }
1253
+ </MenuItem>
1254
+ )
1255
+ }
1256
+ </BlockSettingsMenuControls>
1257
+ ) : null;
1259
1258
 
1260
1259
  return (
1261
1260
  <>
@@ -205,8 +205,8 @@ function block_core_image_render_lightbox( $block_content, $block, $block_instan
205
205
  array(
206
206
  'defaultAriaLabel' => __( 'Enlarged image' ),
207
207
  'closeButtonText' => esc_html__( 'Close' ),
208
- 'prevButtonText' => esc_html__( 'Previous' ),
209
- 'nextButtonText' => esc_html__( 'Next' ),
208
+ 'prevButtonText' => esc_html_x( 'Previous', 'previous image in lightbox' ),
209
+ 'nextButtonText' => esc_html_x( 'Next', 'next image in lightbox' ),
210
210
  )
211
211
  );
212
212
 
@@ -218,7 +218,9 @@ function block_core_image_render_lightbox( $block_content, $block, $block_instan
218
218
  if ( isset( $block['attrs']['id'] ) ) {
219
219
  $img_uploaded_src = wp_get_attachment_url( $block['attrs']['id'] );
220
220
  $img_metadata = wp_get_attachment_metadata( $block['attrs']['id'] );
221
- $img_srcset = wp_get_attachment_image_srcset( $block['attrs']['id'] );
221
+ $has_dimensions = ( $img_metadata['width'] ?? '' ) && ( $img_metadata['height'] ?? '' );
222
+ $srcset_size = $has_dimensions ? array( $img_metadata['width'], $img_metadata['height'] ) : 'large';
223
+ $img_srcset = wp_get_attachment_image_srcset( $block['attrs']['id'], $srcset_size );
222
224
  $img_width = $img_metadata['width'] ?? 'none';
223
225
  $img_height = $img_metadata['height'] ?? 'none';
224
226
  }
@@ -321,8 +323,8 @@ function block_core_image_render_lightbox( $block_content, $block, $block_instan
321
323
  function block_core_image_print_lightbox_overlay() {
322
324
  $dialog_label = esc_attr__( 'Enlarged images' );
323
325
  $close_button_text = esc_attr__( 'Close' );
324
- $prev_button_text = esc_attr__( 'Previous' );
325
- $next_button_text = esc_attr__( 'Next' );
326
+ $prev_button_text = esc_attr_x( 'Previous', 'previous image in lightbox' );
327
+ $next_button_text = esc_attr_x( 'Next', 'next image in lightbox' );
326
328
  $close_button_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" focusable="false"><path d="m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z"></path></svg>';
327
329
  $prev_button_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28" aria-hidden="true" focusable="false"><path d="M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"></path></svg>';
328
330
  $next_button_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="28" height="28" aria-hidden="true" focusable="false"><path d="M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"></path></svg>';
@@ -23,6 +23,39 @@ const v1 = {
23
23
  default: true,
24
24
  },
25
25
  },
26
+ supports: {
27
+ align: true,
28
+ color: {
29
+ gradients: true,
30
+ link: true,
31
+ __experimentalDefaultControls: {
32
+ background: true,
33
+ text: true,
34
+ link: true,
35
+ },
36
+ },
37
+ html: false,
38
+ spacing: {
39
+ margin: true,
40
+ padding: true,
41
+ },
42
+ typography: {
43
+ fontSize: true,
44
+ lineHeight: true,
45
+ __experimentalFontFamily: true,
46
+ __experimentalFontWeight: true,
47
+ __experimentalFontStyle: true,
48
+ __experimentalTextTransform: true,
49
+ __experimentalTextDecoration: true,
50
+ __experimentalLetterSpacing: true,
51
+ __experimentalDefaultControls: {
52
+ fontSize: true,
53
+ },
54
+ },
55
+ interactivity: {
56
+ clientNavigation: true,
57
+ },
58
+ },
26
59
  isEligible( attributes ) {
27
60
  return attributes?.displayExcerpt === false;
28
61
  },
@@ -55,6 +55,7 @@ import { useInstanceId } from '@wordpress/compose';
55
55
  * Internal dependencies
56
56
  */
57
57
  import useNavigationMenu from '../use-navigation-menu';
58
+ import useNavigationEntities from '../use-navigation-entities';
58
59
  import Placeholder from './placeholder';
59
60
  import ResponsiveWrapper from './responsive-wrapper';
60
61
  import NavigationInnerBlocks from './inner-blocks';
@@ -338,10 +339,7 @@ function Navigation( {
338
339
 
339
340
  // Preload classic menus, so that they don't suddenly pop-in when viewing
340
341
  // the Select Menu dropdown.
341
- const { records: classicMenus } = useEntityRecords( 'root', 'menu', {
342
- per_page: -1,
343
- context: 'view',
344
- } );
342
+ const { menus: classicMenus } = useNavigationEntities();
345
343
 
346
344
  const [ showNavigationMenuStatusNotice, hideNavigationMenuStatusNotice ] =
347
345
  useNavigationNotice( {
@@ -954,16 +952,7 @@ function Navigation( {
954
952
 
955
953
  if ( hasUnsavedBlocks && ! isCreatingNavigationMenu ) {
956
954
  return (
957
- <TagName
958
- { ...blockProps }
959
- aria-describedby={
960
- ! isPlaceholder ? accessibleDescriptionId : undefined
961
- }
962
- >
963
- <AccessibleDescription id={ accessibleDescriptionId }>
964
- { __( 'Unsaved Navigation Menu.' ) }
965
- </AccessibleDescription>
966
-
955
+ <>
967
956
  <MenuInspectorControls
968
957
  clientId={ clientId }
969
958
  createNavigationMenuIsSuccess={
@@ -980,26 +969,36 @@ function Navigation( {
980
969
  blockEditingMode={ blockEditingMode }
981
970
  />
982
971
  { blockEditingMode === 'default' && stylingInspectorControls }
983
- <ResponsiveWrapper
984
- id={ clientId }
985
- onToggle={ setResponsiveMenuVisibility }
986
- isOpen={ isResponsiveMenuOpen }
987
- hasIcon={ hasIcon }
988
- icon={ icon }
989
- isResponsive={ isResponsive }
990
- isHiddenByDefault={ isHiddenByDefault }
991
- overlayBackgroundColor={ overlayBackgroundColor }
992
- overlayTextColor={ overlayTextColor }
993
- overlay={ overlay }
994
- onNavigateToEntityRecord={ onNavigateToEntityRecord }
972
+ <TagName
973
+ { ...blockProps }
974
+ aria-describedby={
975
+ ! isPlaceholder ? accessibleDescriptionId : undefined
976
+ }
995
977
  >
996
- <UnsavedInnerBlocks
997
- createNavigationMenu={ createNavigationMenu }
998
- blocks={ uncontrolledInnerBlocks }
999
- hasSelection={ isSelected || isInnerBlockSelected }
1000
- />
1001
- </ResponsiveWrapper>
1002
- </TagName>
978
+ <AccessibleDescription id={ accessibleDescriptionId }>
979
+ { __( 'Unsaved Navigation Menu.' ) }
980
+ </AccessibleDescription>
981
+ <ResponsiveWrapper
982
+ id={ clientId }
983
+ onToggle={ setResponsiveMenuVisibility }
984
+ isOpen={ isResponsiveMenuOpen }
985
+ hasIcon={ hasIcon }
986
+ icon={ icon }
987
+ isResponsive={ isResponsive }
988
+ isHiddenByDefault={ isHiddenByDefault }
989
+ overlayBackgroundColor={ overlayBackgroundColor }
990
+ overlayTextColor={ overlayTextColor }
991
+ overlay={ overlay }
992
+ onNavigateToEntityRecord={ onNavigateToEntityRecord }
993
+ >
994
+ <UnsavedInnerBlocks
995
+ createNavigationMenu={ createNavigationMenu }
996
+ blocks={ uncontrolledInnerBlocks }
997
+ hasSelection={ isSelected || isInnerBlockSelected }
998
+ />
999
+ </ResponsiveWrapper>
1000
+ </TagName>
1001
+ </>
1003
1002
  );
1004
1003
  }
1005
1004
 
@@ -1007,7 +1006,7 @@ function Navigation( {
1007
1006
  // TODO - the user should be able to select a new one?
1008
1007
  if ( ref && isNavigationMenuMissing ) {
1009
1008
  return (
1010
- <TagName { ...blockProps }>
1009
+ <>
1011
1010
  <MenuInspectorControls
1012
1011
  clientId={ clientId }
1013
1012
  createNavigationMenuIsSuccess={
@@ -1023,10 +1022,12 @@ function Navigation( {
1023
1022
  isLoading={ isLoading }
1024
1023
  blockEditingMode={ blockEditingMode }
1025
1024
  />
1026
- <DeletedNavigationWarning
1027
- onCreateNew={ createUntitledEmptyNavigationMenu }
1028
- />
1029
- </TagName>
1025
+ <TagName { ...blockProps }>
1026
+ <DeletedNavigationWarning
1027
+ onCreateNew={ createUntitledEmptyNavigationMenu }
1028
+ />
1029
+ </TagName>
1030
+ </>
1030
1031
  );
1031
1032
  }
1032
1033
 
@@ -1076,105 +1077,106 @@ function Navigation( {
1076
1077
  }
1077
1078
 
1078
1079
  return (
1079
- <EntityProvider kind="postType" type="wp_navigation" id={ ref }>
1080
- <RecursionProvider uniqueId={ recursionId }>
1081
- <MenuInspectorControls
1082
- clientId={ clientId }
1083
- createNavigationMenuIsSuccess={
1084
- createNavigationMenuIsSuccess
1085
- }
1086
- createNavigationMenuIsError={ createNavigationMenuIsError }
1087
- currentMenuId={ ref }
1088
- isNavigationMenuMissing={ isNavigationMenuMissing }
1089
- isManageMenusButtonDisabled={ isManageMenusButtonDisabled }
1090
- onCreateNew={ createUntitledEmptyNavigationMenu }
1091
- onSelectClassicMenu={ onSelectClassicMenu }
1092
- onSelectNavigationMenu={ onSelectNavigationMenu }
1093
- isLoading={ isLoading }
1094
- blockEditingMode={ blockEditingMode }
1095
- />
1096
- { blockEditingMode === 'default' && stylingInspectorControls }
1097
- { blockEditingMode === 'contentOnly' && isEntityAvailable && (
1098
- <NavigationAddPageButton clientId={ clientId } />
1099
- ) }
1100
- { blockEditingMode === 'default' && isEntityAvailable && (
1101
- <InspectorControls group="advanced">
1102
- { hasResolvedCanUserUpdateNavigationMenu &&
1103
- canUserUpdateNavigationMenu && (
1104
- <NavigationMenuNameControl />
1105
- ) }
1106
- { hasResolvedCanUserDeleteNavigationMenu &&
1107
- canUserDeleteNavigationMenu && (
1108
- <NavigationMenuDeleteControl
1109
- onDelete={ () => {
1110
- replaceInnerBlocks( clientId, [] );
1111
- showNavigationMenuStatusNotice(
1112
- __(
1113
- 'Navigation Menu successfully deleted.'
1114
- )
1115
- );
1116
- } }
1117
- />
1118
- ) }
1119
- <ManageMenusButton
1120
- disabled={ isManageMenusButtonDisabled }
1121
- className="wp-block-navigation-manage-menus-button"
1122
- />
1123
- </InspectorControls>
1124
- ) }
1125
-
1126
- <TagName
1127
- { ...blockProps }
1128
- aria-describedby={
1129
- ! isPlaceholder && ! isLoading
1130
- ? accessibleDescriptionId
1131
- : undefined
1132
- }
1133
- >
1134
- { isLoading && ! isHiddenByDefault && (
1135
- <div className="wp-block-navigation__loading-indicator-container">
1136
- <Spinner className="wp-block-navigation__loading-indicator" />
1137
- </div>
1138
- ) }
1139
-
1140
- { ( ! isLoading || isHiddenByDefault ) && (
1141
- <>
1142
- <AccessibleMenuDescription
1143
- id={ accessibleDescriptionId }
1144
- />
1145
- <ResponsiveWrapper
1146
- id={ clientId }
1147
- onToggle={ setResponsiveMenuVisibility }
1148
- hasIcon={ hasIcon }
1149
- icon={ icon }
1150
- isOpen={ isResponsiveMenuOpen }
1151
- isResponsive={ isResponsive }
1152
- isHiddenByDefault={ isHiddenByDefault }
1153
- overlayBackgroundColor={
1154
- overlayBackgroundColor
1155
- }
1156
- overlayTextColor={ overlayTextColor }
1157
- overlay={ overlay }
1158
- onNavigateToEntityRecord={
1159
- onNavigateToEntityRecord
1160
- }
1161
- >
1162
- { isEntityAvailable && (
1163
- <NavigationInnerBlocks
1164
- clientId={ clientId }
1165
- hasCustomPlaceholder={
1166
- !! CustomPlaceholder
1167
- }
1168
- templateLock={ templateLock }
1169
- orientation={ orientation }
1080
+ <>
1081
+ <MenuInspectorControls
1082
+ clientId={ clientId }
1083
+ createNavigationMenuIsSuccess={ createNavigationMenuIsSuccess }
1084
+ createNavigationMenuIsError={ createNavigationMenuIsError }
1085
+ currentMenuId={ ref }
1086
+ isNavigationMenuMissing={ isNavigationMenuMissing }
1087
+ isManageMenusButtonDisabled={ isManageMenusButtonDisabled }
1088
+ onCreateNew={ createUntitledEmptyNavigationMenu }
1089
+ onSelectClassicMenu={ onSelectClassicMenu }
1090
+ onSelectNavigationMenu={ onSelectNavigationMenu }
1091
+ isLoading={ isLoading }
1092
+ blockEditingMode={ blockEditingMode }
1093
+ />
1094
+ { blockEditingMode === 'default' && stylingInspectorControls }
1095
+ <EntityProvider kind="postType" type="wp_navigation" id={ ref }>
1096
+ <RecursionProvider uniqueId={ recursionId }>
1097
+ { blockEditingMode === 'contentOnly' &&
1098
+ isEntityAvailable && (
1099
+ <NavigationAddPageButton clientId={ clientId } />
1100
+ ) }
1101
+ { blockEditingMode === 'default' && isEntityAvailable && (
1102
+ <InspectorControls group="advanced">
1103
+ { hasResolvedCanUserUpdateNavigationMenu &&
1104
+ canUserUpdateNavigationMenu && (
1105
+ <NavigationMenuNameControl />
1106
+ ) }
1107
+ { hasResolvedCanUserDeleteNavigationMenu &&
1108
+ canUserDeleteNavigationMenu && (
1109
+ <NavigationMenuDeleteControl
1110
+ onDelete={ () => {
1111
+ replaceInnerBlocks( clientId, [] );
1112
+ showNavigationMenuStatusNotice(
1113
+ __(
1114
+ 'Navigation Menu successfully deleted.'
1115
+ )
1116
+ );
1117
+ } }
1170
1118
  />
1171
1119
  ) }
1172
- </ResponsiveWrapper>
1173
- </>
1120
+ <ManageMenusButton
1121
+ disabled={ isManageMenusButtonDisabled }
1122
+ className="wp-block-navigation-manage-menus-button"
1123
+ />
1124
+ </InspectorControls>
1174
1125
  ) }
1175
- </TagName>
1176
- </RecursionProvider>
1177
- </EntityProvider>
1126
+
1127
+ <TagName
1128
+ { ...blockProps }
1129
+ aria-describedby={
1130
+ ! isPlaceholder && ! isLoading
1131
+ ? accessibleDescriptionId
1132
+ : undefined
1133
+ }
1134
+ >
1135
+ { isLoading && ! isHiddenByDefault && (
1136
+ <div className="wp-block-navigation__loading-indicator-container">
1137
+ <Spinner className="wp-block-navigation__loading-indicator" />
1138
+ </div>
1139
+ ) }
1140
+
1141
+ { ( ! isLoading || isHiddenByDefault ) && (
1142
+ <>
1143
+ <AccessibleMenuDescription
1144
+ id={ accessibleDescriptionId }
1145
+ />
1146
+ <ResponsiveWrapper
1147
+ id={ clientId }
1148
+ onToggle={ setResponsiveMenuVisibility }
1149
+ hasIcon={ hasIcon }
1150
+ icon={ icon }
1151
+ isOpen={ isResponsiveMenuOpen }
1152
+ isResponsive={ isResponsive }
1153
+ isHiddenByDefault={ isHiddenByDefault }
1154
+ overlayBackgroundColor={
1155
+ overlayBackgroundColor
1156
+ }
1157
+ overlayTextColor={ overlayTextColor }
1158
+ overlay={ overlay }
1159
+ onNavigateToEntityRecord={
1160
+ onNavigateToEntityRecord
1161
+ }
1162
+ >
1163
+ { isEntityAvailable && (
1164
+ <NavigationInnerBlocks
1165
+ clientId={ clientId }
1166
+ hasCustomPlaceholder={
1167
+ !! CustomPlaceholder
1168
+ }
1169
+ templateLock={ templateLock }
1170
+ orientation={ orientation }
1171
+ />
1172
+ ) }
1173
+ </ResponsiveWrapper>
1174
+ </>
1175
+ ) }
1176
+ </TagName>
1177
+ </RecursionProvider>
1178
+ </EntityProvider>
1179
+ </>
1178
1180
  );
1179
1181
  }
1180
1182
 
@@ -1,11 +1,7 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import {
5
- createBlock,
6
- hasBlockSupport,
7
- store as blocksStore,
8
- } from '@wordpress/blocks';
4
+ import { createBlock } from '@wordpress/blocks';
9
5
  import {
10
6
  addSubmenu,
11
7
  chevronUp,
@@ -107,14 +103,8 @@ export default function LeafMoreMenu( props ) {
107
103
  const { block } = props;
108
104
  const { clientId } = block;
109
105
 
110
- const {
111
- moveBlocksDown,
112
- moveBlocksUp,
113
- removeBlocks,
114
- duplicateBlocks,
115
- insertBeforeBlock,
116
- insertAfterBlock,
117
- } = useDispatch( blockEditorStore );
106
+ const { moveBlocksDown, moveBlocksUp, removeBlocks } =
107
+ useDispatch( blockEditorStore );
118
108
 
119
109
  const removeLabel = sprintf(
120
110
  /* translators: %s: block name */
@@ -122,45 +112,14 @@ export default function LeafMoreMenu( props ) {
122
112
  BlockTitle( { clientId, maximumLength: 25 } )
123
113
  );
124
114
 
125
- const { rootClientId, canDuplicate, canInsertBlock, isFirst, isLast } =
126
- useSelect(
127
- ( select ) => {
128
- const {
129
- getBlockRootClientId,
130
- canInsertBlockType,
131
- getDirectInsertBlock,
132
- getBlockIndex,
133
- getBlockCount,
134
- } = select( blockEditorStore );
135
- const { getDefaultBlockName } = select( blocksStore );
136
-
137
- const _rootClientId = getBlockRootClientId( clientId );
138
- const canInsertDefaultBlock = canInsertBlockType(
139
- getDefaultBlockName(),
140
- _rootClientId
141
- );
142
- const directInsertBlock = _rootClientId
143
- ? getDirectInsertBlock( _rootClientId )
144
- : null;
145
-
146
- return {
147
- rootClientId: _rootClientId,
148
- canDuplicate:
149
- !! block &&
150
- hasBlockSupport( block.name, 'multiple', true ) &&
151
- canInsertBlockType( block.name, _rootClientId ),
152
- canInsertBlock:
153
- ( canInsertDefaultBlock || !! directInsertBlock ) &&
154
- !! block &&
155
- canInsertBlockType( block.name, _rootClientId ),
156
- isFirst: getBlockIndex( clientId ) === 0,
157
- isLast:
158
- getBlockIndex( clientId ) ===
159
- getBlockCount( _rootClientId ) - 1,
160
- };
161
- },
162
- [ clientId, block ]
163
- );
115
+ const rootClientId = useSelect(
116
+ ( select ) => {
117
+ const { getBlockRootClientId } = select( blockEditorStore );
118
+
119
+ return getBlockRootClientId( clientId );
120
+ },
121
+ [ clientId ]
122
+ );
164
123
 
165
124
  return (
166
125
  <DropdownMenu
@@ -176,8 +135,6 @@ export default function LeafMoreMenu( props ) {
176
135
  <MenuGroup>
177
136
  <MenuItem
178
137
  icon={ chevronUp }
179
- disabled={ isFirst }
180
- accessibleWhenDisabled
181
138
  onClick={ () => {
182
139
  moveBlocksUp( [ clientId ], rootClientId );
183
140
  onClose();
@@ -187,8 +144,6 @@ export default function LeafMoreMenu( props ) {
187
144
  </MenuItem>
188
145
  <MenuItem
189
146
  icon={ chevronDown }
190
- disabled={ isLast }
191
- accessibleWhenDisabled
192
147
  onClick={ () => {
193
148
  moveBlocksDown( [ clientId ], rootClientId );
194
149
  onClose();
@@ -203,36 +158,6 @@ export default function LeafMoreMenu( props ) {
203
158
  expand={ props.expand }
204
159
  setInsertedBlock={ props.setInsertedBlock }
205
160
  />
206
- { canDuplicate && (
207
- <MenuItem
208
- onClick={ () => {
209
- duplicateBlocks( [ clientId ] );
210
- onClose();
211
- } }
212
- >
213
- { __( 'Duplicate' ) }
214
- </MenuItem>
215
- ) }
216
- { canInsertBlock && (
217
- <>
218
- <MenuItem
219
- onClick={ () => {
220
- insertBeforeBlock( clientId );
221
- onClose();
222
- } }
223
- >
224
- { __( 'Add before' ) }
225
- </MenuItem>
226
- <MenuItem
227
- onClick={ () => {
228
- insertAfterBlock( clientId );
229
- onClose();
230
- } }
231
- >
232
- { __( 'Add after' ) }
233
- </MenuItem>
234
- </>
235
- ) }
236
161
  </MenuGroup>
237
162
  <MenuGroup>
238
163
  <MenuItem