@wordpress/block-library 8.5.0 → 8.6.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 (287) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/buttons/edit.native.js +1 -1
  3. package/build/buttons/edit.native.js.map +1 -1
  4. package/build/columns/edit.js +10 -8
  5. package/build/columns/edit.js.map +1 -1
  6. package/build/columns/edit.native.js +1 -1
  7. package/build/columns/edit.native.js.map +1 -1
  8. package/build/comments/edit/placeholder.js +8 -5
  9. package/build/comments/edit/placeholder.js.map +1 -1
  10. package/build/cover/index.js +13 -4
  11. package/build/cover/index.js.map +1 -1
  12. package/build/cover/variations.js +29 -0
  13. package/build/cover/variations.js.map +1 -0
  14. package/build/embed/edit.js +13 -14
  15. package/build/embed/edit.js.map +1 -1
  16. package/build/embed/edit.native.js +18 -14
  17. package/build/embed/edit.native.js.map +1 -1
  18. package/build/embed/util.js +39 -12
  19. package/build/embed/util.js.map +1 -1
  20. package/build/gallery/edit.js +1 -0
  21. package/build/gallery/edit.js.map +1 -1
  22. package/build/latest-posts/edit.js +10 -10
  23. package/build/latest-posts/edit.js.map +1 -1
  24. package/build/latest-posts/edit.native.js +3 -3
  25. package/build/latest-posts/edit.native.js.map +1 -1
  26. package/build/media-text/constants.js +17 -1
  27. package/build/media-text/constants.js.map +1 -1
  28. package/build/media-text/edit.js +7 -19
  29. package/build/media-text/edit.js.map +1 -1
  30. package/build/media-text/edit.native.js +6 -5
  31. package/build/media-text/edit.native.js.map +1 -1
  32. package/build/media-text/transforms.js +32 -44
  33. package/build/media-text/transforms.js.map +1 -1
  34. package/build/navigation/edit/index.js +56 -86
  35. package/build/navigation/edit/index.js.map +1 -1
  36. package/build/navigation/edit/inner-blocks.js +4 -1
  37. package/build/navigation/edit/inner-blocks.js.map +1 -1
  38. package/build/navigation/edit/menu-inspector-controls.js +2 -5
  39. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  40. package/build/navigation/edit/navigation-menu-selector.js +26 -22
  41. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  42. package/build/navigation/edit/unsaved-inner-blocks.js +14 -1
  43. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  44. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +2 -4
  45. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  46. package/build/navigation/edit/use-create-navigation-menu.js +1 -1
  47. package/build/navigation/edit/use-create-navigation-menu.js.map +1 -1
  48. package/build/navigation/edit/use-navigation-notice.js +1 -1
  49. package/build/navigation/edit/use-navigation-notice.js.map +1 -1
  50. package/build/navigation-link/edit.js +0 -11
  51. package/build/navigation-link/edit.js.map +1 -1
  52. package/build/navigation-link/link-ui.js +0 -1
  53. package/build/navigation-link/link-ui.js.map +1 -1
  54. package/build/navigation-submenu/edit.js +1 -13
  55. package/build/navigation-submenu/edit.js.map +1 -1
  56. package/build/page-list/edit.js +59 -45
  57. package/build/page-list/edit.js.map +1 -1
  58. package/build/page-list-item/edit.js +3 -2
  59. package/build/page-list-item/edit.js.map +1 -1
  60. package/build/post-content/edit.js +6 -1
  61. package/build/post-content/edit.js.map +1 -1
  62. package/build/post-featured-image/dimension-controls.js +0 -6
  63. package/build/post-featured-image/dimension-controls.js.map +1 -1
  64. package/build/post-featured-image/edit.js +1 -1
  65. package/build/post-featured-image/edit.js.map +1 -1
  66. package/build/pullquote/deprecated.js +3 -3
  67. package/build/pullquote/deprecated.js.map +1 -1
  68. package/build/query/edit/query-placeholder.js +3 -2
  69. package/build/query/edit/query-placeholder.js.map +1 -1
  70. package/build/query/utils.js +26 -9
  71. package/build/query/utils.js.map +1 -1
  72. package/build/table/state.js +12 -4
  73. package/build/table/state.js.map +1 -1
  74. package/build/template-part/edit/import-controls.js +4 -24
  75. package/build/template-part/edit/import-controls.js.map +1 -1
  76. package/build/template-part/edit/utils/transformers.js +69 -19
  77. package/build/template-part/edit/utils/transformers.js.map +1 -1
  78. package/build/text-columns/edit.js +3 -7
  79. package/build/text-columns/edit.js.map +1 -1
  80. package/build/text-columns/save.js +11 -13
  81. package/build/text-columns/save.js.map +1 -1
  82. package/build-module/buttons/edit.native.js +1 -1
  83. package/build-module/buttons/edit.native.js.map +1 -1
  84. package/build-module/columns/edit.js +10 -7
  85. package/build-module/columns/edit.js.map +1 -1
  86. package/build-module/columns/edit.native.js +1 -1
  87. package/build-module/columns/edit.native.js.map +1 -1
  88. package/build-module/comments/edit/placeholder.js +9 -5
  89. package/build-module/comments/edit/placeholder.js.map +1 -1
  90. package/build-module/cover/index.js +12 -4
  91. package/build-module/cover/index.js.map +1 -1
  92. package/build-module/cover/variations.js +19 -0
  93. package/build-module/cover/variations.js.map +1 -0
  94. package/build-module/embed/edit.js +14 -15
  95. package/build-module/embed/edit.js.map +1 -1
  96. package/build-module/embed/edit.native.js +19 -15
  97. package/build-module/embed/edit.native.js.map +1 -1
  98. package/build-module/embed/util.js +34 -10
  99. package/build-module/embed/util.js.map +1 -1
  100. package/build-module/gallery/edit.js +1 -0
  101. package/build-module/gallery/edit.js.map +1 -1
  102. package/build-module/latest-posts/edit.js +10 -9
  103. package/build-module/latest-posts/edit.js.map +1 -1
  104. package/build-module/latest-posts/edit.native.js +3 -3
  105. package/build-module/latest-posts/edit.native.js.map +1 -1
  106. package/build-module/media-text/constants.js +10 -0
  107. package/build-module/media-text/constants.js.map +1 -1
  108. package/build-module/media-text/edit.js +2 -14
  109. package/build-module/media-text/edit.js.map +1 -1
  110. package/build-module/media-text/edit.native.js +4 -3
  111. package/build-module/media-text/edit.native.js.map +1 -1
  112. package/build-module/media-text/transforms.js +32 -44
  113. package/build-module/media-text/transforms.js.map +1 -1
  114. package/build-module/navigation/edit/index.js +58 -88
  115. package/build-module/navigation/edit/index.js.map +1 -1
  116. package/build-module/navigation/edit/inner-blocks.js +4 -1
  117. package/build-module/navigation/edit/inner-blocks.js.map +1 -1
  118. package/build-module/navigation/edit/menu-inspector-controls.js +2 -5
  119. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  120. package/build-module/navigation/edit/navigation-menu-selector.js +25 -22
  121. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  122. package/build-module/navigation/edit/unsaved-inner-blocks.js +14 -1
  123. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  124. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +2 -4
  125. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  126. package/build-module/navigation/edit/use-create-navigation-menu.js +1 -1
  127. package/build-module/navigation/edit/use-create-navigation-menu.js.map +1 -1
  128. package/build-module/navigation/edit/use-navigation-notice.js +1 -1
  129. package/build-module/navigation/edit/use-navigation-notice.js.map +1 -1
  130. package/build-module/navigation-link/edit.js +0 -11
  131. package/build-module/navigation-link/edit.js.map +1 -1
  132. package/build-module/navigation-link/link-ui.js +0 -1
  133. package/build-module/navigation-link/link-ui.js.map +1 -1
  134. package/build-module/navigation-submenu/edit.js +1 -13
  135. package/build-module/navigation-submenu/edit.js.map +1 -1
  136. package/build-module/page-list/edit.js +61 -47
  137. package/build-module/page-list/edit.js.map +1 -1
  138. package/build-module/page-list-item/edit.js +3 -2
  139. package/build-module/page-list-item/edit.js.map +1 -1
  140. package/build-module/post-content/edit.js +6 -1
  141. package/build-module/post-content/edit.js.map +1 -1
  142. package/build-module/post-featured-image/dimension-controls.js +0 -6
  143. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  144. package/build-module/post-featured-image/edit.js +1 -1
  145. package/build-module/post-featured-image/edit.js.map +1 -1
  146. package/build-module/pullquote/deprecated.js +3 -2
  147. package/build-module/pullquote/deprecated.js.map +1 -1
  148. package/build-module/query/edit/query-placeholder.js +4 -3
  149. package/build-module/query/edit/query-placeholder.js.map +1 -1
  150. package/build-module/query/utils.js +21 -6
  151. package/build-module/query/utils.js.map +1 -1
  152. package/build-module/table/state.js +13 -5
  153. package/build-module/table/state.js.map +1 -1
  154. package/build-module/template-part/edit/import-controls.js +4 -23
  155. package/build-module/template-part/edit/import-controls.js.map +1 -1
  156. package/build-module/template-part/edit/utils/transformers.js +69 -20
  157. package/build-module/template-part/edit/utils/transformers.js.map +1 -1
  158. package/build-module/text-columns/edit.js +3 -6
  159. package/build-module/text-columns/edit.js.map +1 -1
  160. package/build-module/text-columns/save.js +11 -12
  161. package/build-module/text-columns/save.js.map +1 -1
  162. package/build-style/cover/style-rtl.css +11 -5
  163. package/build-style/cover/style.css +11 -5
  164. package/build-style/editor-rtl.css +5 -1
  165. package/build-style/editor.css +5 -1
  166. package/build-style/navigation/editor-rtl.css +1 -1
  167. package/build-style/navigation/editor.css +1 -1
  168. package/build-style/page-list/editor-rtl.css +4 -0
  169. package/build-style/page-list/editor.css +4 -0
  170. package/build-style/post-featured-image/style-rtl.css +1 -0
  171. package/build-style/post-featured-image/style.css +1 -0
  172. package/build-style/style-rtl.css +12 -5
  173. package/build-style/style.css +12 -5
  174. package/package.json +31 -31
  175. package/src/audio/test/__snapshots__/edit.native.js.snap +44 -4
  176. package/src/audio/test/__snapshots__/transforms.native.js.snap +25 -0
  177. package/src/audio/test/transforms.native.js +42 -0
  178. package/src/block/test/__snapshots__/transforms.native.js.snap +15 -0
  179. package/src/block/test/transforms.native.js +40 -0
  180. package/src/buttons/edit.native.js +1 -1
  181. package/src/buttons/test/__snapshots__/transforms.native.js.snap +31 -0
  182. package/src/buttons/test/transforms.native.js +48 -0
  183. package/src/columns/edit.js +28 -17
  184. package/src/columns/edit.native.js +1 -1
  185. package/src/columns/test/__snapshots__/transforms.native.js.snap +61 -0
  186. package/src/columns/test/transforms.native.js +91 -0
  187. package/src/comment-template/index.php +1 -2
  188. package/src/comments/edit/placeholder.js +16 -4
  189. package/src/cover/block.json +9 -3
  190. package/src/cover/index.js +2 -0
  191. package/src/cover/style.scss +16 -7
  192. package/src/cover/test/__snapshots__/transforms.native.js.snap +73 -0
  193. package/src/cover/test/transforms.native.js +112 -0
  194. package/src/cover/variations.js +20 -0
  195. package/src/embed/edit.js +16 -12
  196. package/src/embed/edit.native.js +28 -18
  197. package/src/embed/test/__snapshots__/transforms.native.js.snap +23 -0
  198. package/src/embed/test/index.js +12 -0
  199. package/src/embed/test/transforms.native.js +44 -0
  200. package/src/embed/util.js +29 -8
  201. package/src/file/test/__snapshots__/edit.native.js.snap +18 -2
  202. package/src/file/test/__snapshots__/transforms.native.js.snap +19 -0
  203. package/src/file/test/transforms.native.js +42 -0
  204. package/src/freeform/test/__snapshots__/transforms.native.js.snap +19 -0
  205. package/src/freeform/test/transforms.native.js +39 -0
  206. package/src/gallery/edit.js +3 -0
  207. package/src/gallery/test/__snapshots__/transforms.native.js.snap +53 -0
  208. package/src/gallery/test/transforms.native.js +52 -0
  209. package/src/group/test/__snapshots__/transforms.native.js.snap +35 -0
  210. package/src/group/test/transforms.native.js +75 -0
  211. package/src/heading/test/__snapshots__/transforms.native.js.snap +47 -0
  212. package/src/heading/test/transforms.native.js +46 -0
  213. package/src/image/test/__snapshots__/transforms.native.js.snap +49 -0
  214. package/src/image/test/transforms.native.js +48 -0
  215. package/src/latest-posts/edit.js +11 -16
  216. package/src/latest-posts/edit.native.js +3 -3
  217. package/src/latest-posts/test/__snapshots__/transforms.native.js.snap +15 -0
  218. package/src/latest-posts/test/transforms.native.js +61 -0
  219. package/src/list/test/__snapshots__/transforms.native.js.snap +85 -0
  220. package/src/list/test/transforms.native.js +56 -0
  221. package/src/media-text/constants.js +16 -0
  222. package/src/media-text/edit.js +8 -18
  223. package/src/media-text/edit.native.js +3 -9
  224. package/src/media-text/test/__snapshots__/transforms.native.js.snap +73 -0
  225. package/src/media-text/test/transforms.native.js +112 -0
  226. package/src/media-text/transforms.js +24 -51
  227. package/src/missing/test/__snapshots__/edit.native.js.snap +20 -2
  228. package/src/more/test/__snapshots__/transforms.native.js.snap +19 -0
  229. package/src/more/test/transforms.native.js +42 -0
  230. package/src/navigation/edit/index.js +104 -107
  231. package/src/navigation/edit/inner-blocks.js +3 -0
  232. package/src/navigation/edit/menu-inspector-controls.js +2 -7
  233. package/src/navigation/edit/navigation-menu-selector.js +41 -25
  234. package/src/navigation/edit/unsaved-inner-blocks.js +46 -33
  235. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +82 -83
  236. package/src/navigation/edit/use-create-navigation-menu.js +1 -1
  237. package/src/navigation/edit/use-navigation-notice.js +1 -1
  238. package/src/navigation/editor.scss +23 -20
  239. package/src/navigation/index.php +18 -39
  240. package/src/navigation-link/edit.js +0 -9
  241. package/src/navigation-link/index.php +5 -8
  242. package/src/navigation-link/link-ui.js +0 -1
  243. package/src/navigation-submenu/edit.js +0 -10
  244. package/src/navigation-submenu/index.php +23 -6
  245. package/src/nextpage/test/__snapshots__/transforms.native.js.snap +19 -0
  246. package/src/nextpage/test/transforms.native.js +42 -0
  247. package/src/page-list/edit.js +78 -44
  248. package/src/page-list/editor.scss +6 -0
  249. package/src/page-list-item/edit.js +2 -3
  250. package/src/paragraph/test/__snapshots__/transforms.native.js.snap +59 -0
  251. package/src/paragraph/test/transforms.native.js +50 -0
  252. package/src/post-content/edit.js +5 -1
  253. package/src/post-excerpt/index.php +1 -2
  254. package/src/post-featured-image/dimension-controls.js +0 -8
  255. package/src/post-featured-image/edit.js +1 -1
  256. package/src/post-featured-image/style.scss +1 -0
  257. package/src/preformatted/test/__snapshots__/transforms.native.js.snap +31 -0
  258. package/src/preformatted/test/transforms.native.js +42 -0
  259. package/src/pullquote/deprecated.js +2 -6
  260. package/src/pullquote/test/__snapshots__/transforms.native.js.snap +47 -0
  261. package/src/pullquote/test/transforms.native.js +46 -0
  262. package/src/query/edit/query-placeholder.js +10 -5
  263. package/src/query/test/utils.js +33 -1
  264. package/src/query/utils.js +19 -6
  265. package/src/quote/test/__snapshots__/transforms.native.js.snap +39 -0
  266. package/src/quote/test/transforms.native.js +67 -0
  267. package/src/search/test/__snapshots__/edit.native.js.snap +11 -1
  268. package/src/search/test/__snapshots__/transforms.native.js.snap +15 -0
  269. package/src/search/test/transforms.native.js +40 -0
  270. package/src/separator/test/__snapshots__/transforms.native.js.snap +19 -0
  271. package/src/separator/test/transforms.native.js +42 -0
  272. package/src/shortcode/test/__snapshots__/transforms.native.js.snap +19 -0
  273. package/src/shortcode/test/transforms.native.js +42 -0
  274. package/src/social-links/test/__snapshots__/transforms.native.js.snap +31 -0
  275. package/src/social-links/test/transforms.native.js +53 -0
  276. package/src/spacer/test/__snapshots__/transforms.native.js.snap +19 -0
  277. package/src/spacer/test/transforms.native.js +42 -0
  278. package/src/table/state.js +8 -17
  279. package/src/template-part/edit/import-controls.js +2 -29
  280. package/src/template-part/edit/utils/transformers.js +96 -19
  281. package/src/text-columns/edit.js +1 -6
  282. package/src/text-columns/save.js +1 -6
  283. package/src/verse/test/__snapshots__/transforms.native.js.snap +25 -0
  284. package/src/verse/test/transforms.native.js +42 -0
  285. package/src/video/test/__snapshots__/transforms.native.js.snap +41 -0
  286. package/src/video/test/transforms.native.js +48 -0
  287. package/tsconfig.tsbuildinfo +1 -1
@@ -103,7 +103,7 @@ export default function ButtonsEdit( {
103
103
 
104
104
  const insertedBlock = createBlock( 'core/button' );
105
105
 
106
- insertBlock( insertedBlock, index, clientId );
106
+ insertBlock( insertedBlock, index, clientId, false );
107
107
  selectBlock( insertedBlock.clientId );
108
108
  }, 200 ),
109
109
  []
@@ -0,0 +1,31 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Buttons block transforms to Columns block 1`] = `
4
+ "<!-- wp:columns -->
5
+ <div class="wp-block-columns"><!-- wp:column {"width":"100%"} -->
6
+ <div class="wp-block-column" style="flex-basis:100%"><!-- wp:buttons -->
7
+ <div class="wp-block-buttons"><!-- wp:button -->
8
+ <div class="wp-block-button"><a class="wp-block-button__link wp-element-button">Solid Button</a></div>
9
+ <!-- /wp:button -->
10
+
11
+ <!-- wp:button {"gradient":"luminous-vivid-amber-to-luminous-vivid-orange"} -->
12
+ <div class="wp-block-button"><a class="wp-block-button__link has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background has-background wp-element-button">Gradient Button</a></div>
13
+ <!-- /wp:button --></div>
14
+ <!-- /wp:buttons --></div>
15
+ <!-- /wp:column --></div>
16
+ <!-- /wp:columns -->"
17
+ `;
18
+
19
+ exports[`Buttons block transforms to Group block 1`] = `
20
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
21
+ <div class="wp-block-group"><!-- wp:buttons -->
22
+ <div class="wp-block-buttons"><!-- wp:button -->
23
+ <div class="wp-block-button"><a class="wp-block-button__link wp-element-button">Solid Button</a></div>
24
+ <!-- /wp:button -->
25
+
26
+ <!-- wp:button {"gradient":"luminous-vivid-amber-to-luminous-vivid-orange"} -->
27
+ <div class="wp-block-button"><a class="wp-block-button__link has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background has-background wp-element-button">Gradient Button</a></div>
28
+ <!-- /wp:button --></div>
29
+ <!-- /wp:buttons --></div>
30
+ <!-- /wp:group -->"
31
+ `;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import {
5
+ getEditorHtml,
6
+ initializeEditor,
7
+ setupCoreBlocks,
8
+ transformBlock,
9
+ getBlockTransformOptions,
10
+ } from 'test/helpers';
11
+
12
+ const block = 'Buttons';
13
+ const initialHtml = `
14
+ <!-- wp:buttons -->
15
+ <div class="wp-block-buttons"><!-- wp:button -->
16
+ <div class="wp-block-button"><a class="wp-block-button__link wp-element-button">Solid Button</a></div>
17
+ <!-- /wp:button -->
18
+
19
+ <!-- wp:button {"gradient":"luminous-vivid-amber-to-luminous-vivid-orange"} -->
20
+ <div class="wp-block-button"><a class="wp-block-button__link has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background has-background wp-element-button">Gradient Button</a></div>
21
+ <!-- /wp:button --></div>
22
+ <!-- /wp:buttons -->`;
23
+
24
+ const transformsWithInnerBlocks = [ 'Columns', 'Group' ];
25
+ const blockTransforms = [ ...transformsWithInnerBlocks ];
26
+
27
+ setupCoreBlocks();
28
+
29
+ describe( `${ block } block transforms`, () => {
30
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
31
+ const screen = await initializeEditor( { initialHtml } );
32
+ const newBlock = await transformBlock( screen, block, blockTransform, {
33
+ hasInnerBlocks:
34
+ transformsWithInnerBlocks.includes( blockTransform ),
35
+ } );
36
+ expect( newBlock ).toBeVisible();
37
+ expect( getEditorHtml() ).toMatchSnapshot();
38
+ } );
39
+
40
+ it( 'matches expected transformation options', async () => {
41
+ const screen = await initializeEditor( { initialHtml } );
42
+ const transformOptions = await getBlockTransformOptions(
43
+ screen,
44
+ block
45
+ );
46
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
47
+ } );
48
+ } );
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
- import { get } from 'lodash';
6
5
 
7
6
  /**
8
7
  * WordPress dependencies
@@ -61,10 +60,13 @@ function ColumnsEditContainer( {
61
60
  } ) {
62
61
  const { isStackedOnMobile, verticalAlignment } = attributes;
63
62
 
64
- const { count } = useSelect(
63
+ const { count, canInsertColumnBlock } = useSelect(
65
64
  ( select ) => {
66
65
  return {
67
66
  count: select( blockEditorStore ).getBlockCount( clientId ),
67
+ canInsertColumnBlock: select(
68
+ blockEditorStore
69
+ ).canInsertBlockType( 'core/column', clientId ),
68
70
  };
69
71
  },
70
72
  [ clientId ]
@@ -94,20 +96,29 @@ function ColumnsEditContainer( {
94
96
  </BlockControls>
95
97
  <InspectorControls>
96
98
  <PanelBody>
97
- <RangeControl
98
- __nextHasNoMarginBottom
99
- label={ __( 'Columns' ) }
100
- value={ count }
101
- onChange={ ( value ) => updateColumns( count, value ) }
102
- min={ 1 }
103
- max={ Math.max( 6, count ) }
104
- />
105
- { count > 6 && (
106
- <Notice status="warning" isDismissible={ false }>
107
- { __(
108
- 'This column count exceeds the recommended amount and may cause visual breakage.'
99
+ { canInsertColumnBlock && (
100
+ <>
101
+ <RangeControl
102
+ __nextHasNoMarginBottom
103
+ label={ __( 'Columns' ) }
104
+ value={ count }
105
+ onChange={ ( value ) =>
106
+ updateColumns( count, value )
107
+ }
108
+ min={ 1 }
109
+ max={ Math.max( 6, count ) }
110
+ />
111
+ { count > 6 && (
112
+ <Notice
113
+ status="warning"
114
+ isDismissible={ false }
115
+ >
116
+ { __(
117
+ 'This column count exceeds the recommended amount and may cause visual breakage.'
118
+ ) }
119
+ </Notice>
109
120
  ) }
110
- </Notice>
121
+ </>
111
122
  ) }
112
123
  <ToggleControl
113
124
  __nextHasNoMarginBottom
@@ -248,8 +259,8 @@ function Placeholder( { clientId, name, setAttributes } ) {
248
259
  return (
249
260
  <div { ...blockProps }>
250
261
  <__experimentalBlockVariationPicker
251
- icon={ get( blockType, [ 'icon', 'src' ] ) }
252
- label={ get( blockType, [ 'title' ] ) }
262
+ icon={ blockType?.icon?.src }
263
+ label={ blockType?.title }
253
264
  variations={ variations }
254
265
  onSelect={ ( nextVariation = defaultVariation ) => {
255
266
  if ( nextVariation.attributes ) {
@@ -198,7 +198,7 @@ function ColumnsEditContainer( {
198
198
  return (
199
199
  <UnitControl
200
200
  label={ label }
201
- settingLabel="Width"
201
+ settingLabel={ __( 'Width' ) }
202
202
  key={ `${ column.clientId }-${
203
203
  getWidths( innerWidths ).length
204
204
  }` }
@@ -0,0 +1,61 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Columns block transforms to Group block 1`] = `
4
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
5
+ <div class="wp-block-group"><!-- wp:columns {"className":"gutenberg-landing\\u002d\\u002ddevelopers-columns has-2-columns"} -->
6
+ <div class="wp-block-columns gutenberg-landing--developers-columns has-2-columns"><!-- wp:column -->
7
+ <div class="wp-block-column"><!-- wp:paragraph {"align":"left"} -->
8
+ <p class="has-text-align-left"><strong>Built with modern technology.</strong></p>
9
+ <!-- /wp:paragraph -->
10
+
11
+ <!-- wp:paragraph {"align":"left"} -->
12
+ <p class="has-text-align-left">Gutenberg was developed on GitHub using the WordPress REST API, JavaScript, and React.</p>
13
+ <!-- /wp:paragraph -->
14
+
15
+ <!-- wp:paragraph {"align":"left","fontSize":"small"} -->
16
+ <p class="has-text-align-left has-small-font-size"><a href="https://wordpress.org/gutenberg/handbook/language/">Learn more</a></p>
17
+ <!-- /wp:paragraph --></div>
18
+ <!-- /wp:column -->
19
+
20
+ <!-- wp:column -->
21
+ <div class="wp-block-column"><!-- wp:paragraph {"align":"left"} -->
22
+ <p class="has-text-align-left"><strong>Designed for compatibility.</strong></p>
23
+ <!-- /wp:paragraph -->
24
+
25
+ <!-- wp:paragraph {"align":"left"} -->
26
+ <p class="has-text-align-left">We recommend migrating features to blocks, but support for existing WordPress functionality remains. There will be transition paths for shortcodes, meta-boxes, and Custom Post Types.</p>
27
+ <!-- /wp:paragraph -->
28
+
29
+ <!-- wp:paragraph {"align":"left","fontSize":"small"} -->
30
+ <p class="has-text-align-left has-small-font-size"><a href="https://wordpress.org/gutenberg/handbook/reference/faq/">Learn more</a></p>
31
+ <!-- /wp:paragraph --></div>
32
+ <!-- /wp:column --></div>
33
+ <!-- /wp:columns --></div>
34
+ <!-- /wp:group -->"
35
+ `;
36
+
37
+ exports[`Columns block transforms unwraps content 1`] = `
38
+ "<!-- wp:paragraph {"align":"left"} -->
39
+ <p class="has-text-align-left"><strong>Built with modern technology.</strong></p>
40
+ <!-- /wp:paragraph -->
41
+
42
+ <!-- wp:paragraph {"align":"left"} -->
43
+ <p class="has-text-align-left">Gutenberg was developed on GitHub using the WordPress REST API, JavaScript, and React.</p>
44
+ <!-- /wp:paragraph -->
45
+
46
+ <!-- wp:paragraph {"align":"left","fontSize":"small"} -->
47
+ <p class="has-text-align-left has-small-font-size"><a href="https://wordpress.org/gutenberg/handbook/language/">Learn more</a></p>
48
+ <!-- /wp:paragraph -->
49
+
50
+ <!-- wp:paragraph {"align":"left"} -->
51
+ <p class="has-text-align-left"><strong>Designed for compatibility.</strong></p>
52
+ <!-- /wp:paragraph -->
53
+
54
+ <!-- wp:paragraph {"align":"left"} -->
55
+ <p class="has-text-align-left">We recommend migrating features to blocks, but support for existing WordPress functionality remains. There will be transition paths for shortcodes, meta-boxes, and Custom Post Types.</p>
56
+ <!-- /wp:paragraph -->
57
+
58
+ <!-- wp:paragraph {"align":"left","fontSize":"small"} -->
59
+ <p class="has-text-align-left has-small-font-size"><a href="https://wordpress.org/gutenberg/handbook/reference/faq/">Learn more</a></p>
60
+ <!-- /wp:paragraph -->"
61
+ `;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import {
5
+ getEditorHtml,
6
+ initializeEditor,
7
+ setupCoreBlocks,
8
+ transformBlock,
9
+ getBlock,
10
+ openBlockActionsMenu,
11
+ fireEvent,
12
+ getBlockTransformOptions,
13
+ } from 'test/helpers';
14
+
15
+ const block = 'Columns';
16
+ const initialHtml = `
17
+ <!-- wp:columns {"className":"gutenberg-landing\u002d\u002ddevelopers-columns has-2-columns"} -->
18
+ <div class="wp-block-columns gutenberg-landing--developers-columns has-2-columns"><!-- wp:column -->
19
+ <div class="wp-block-column"><!-- wp:paragraph {"align":"left"} -->
20
+ <p class="has-text-align-left"><strong>Built with modern technology.</strong></p>
21
+ <!-- /wp:paragraph -->
22
+
23
+ <!-- wp:paragraph {"align":"left"} -->
24
+ <p class="has-text-align-left">Gutenberg was developed on GitHub using the WordPress REST API, JavaScript, and React.</p>
25
+ <!-- /wp:paragraph -->
26
+
27
+ <!-- wp:paragraph {"align":"left","fontSize":"small"} -->
28
+ <p class="has-text-align-left has-small-font-size"><a href="https://wordpress.org/gutenberg/handbook/language/">Learn more</a></p>
29
+ <!-- /wp:paragraph --></div>
30
+ <!-- /wp:column -->
31
+
32
+ <!-- wp:column -->
33
+ <div class="wp-block-column"><!-- wp:paragraph {"align":"left"} -->
34
+ <p class="has-text-align-left"><strong>Designed for compatibility.</strong></p>
35
+ <!-- /wp:paragraph -->
36
+
37
+ <!-- wp:paragraph {"align":"left"} -->
38
+ <p class="has-text-align-left">We recommend migrating features to blocks, but support for existing WordPress functionality remains. There will be transition paths for shortcodes, meta-boxes, and Custom Post Types.</p>
39
+ <!-- /wp:paragraph -->
40
+
41
+ <!-- wp:paragraph {"align":"left","fontSize":"small"} -->
42
+ <p class="has-text-align-left has-small-font-size"><a href="https://wordpress.org/gutenberg/handbook/reference/faq/">Learn more</a></p>
43
+ <!-- /wp:paragraph --></div>
44
+ <!-- /wp:column --></div>
45
+ <!-- /wp:columns -->`;
46
+
47
+ const transformsWithInnerBlocks = [ 'Group' ];
48
+ const blockTransforms = [ ...transformsWithInnerBlocks ];
49
+
50
+ setupCoreBlocks();
51
+
52
+ describe( `${ block } block transforms`, () => {
53
+ test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
54
+ const screen = await initializeEditor( { initialHtml } );
55
+ const newBlock = await transformBlock( screen, block, blockTransform, {
56
+ hasInnerBlocks:
57
+ transformsWithInnerBlocks.includes( blockTransform ),
58
+ } );
59
+ expect( newBlock ).toBeVisible();
60
+ expect( getEditorHtml() ).toMatchSnapshot();
61
+ } );
62
+
63
+ it( 'unwraps content', async () => {
64
+ const screen = await initializeEditor( { initialHtml } );
65
+ const { getByText } = screen;
66
+ fireEvent.press( getBlock( screen, block ) );
67
+
68
+ await openBlockActionsMenu( screen );
69
+ fireEvent.press( getByText( 'Transform block…' ) );
70
+ fireEvent.press( getByText( 'Unwrap' ) );
71
+
72
+ // The first block created is the content of the Paragraph block.
73
+ const paragraph = getBlock( screen, 'Paragraph', 0 );
74
+ expect( paragraph ).toBeVisible();
75
+ // The second block created is the content of the citation element.
76
+ const citation = getBlock( screen, 'Paragraph', 1 );
77
+ expect( citation ).toBeVisible();
78
+
79
+ expect( getEditorHtml() ).toMatchSnapshot();
80
+ } );
81
+
82
+ it( 'matches expected transformation options', async () => {
83
+ const screen = await initializeEditor( { initialHtml } );
84
+ const transformOptions = await getBlockTransformOptions(
85
+ screen,
86
+ block,
87
+ { canUnwrap: true }
88
+ );
89
+ expect( transformOptions ).toHaveLength( blockTransforms.length );
90
+ } );
91
+ } );
@@ -58,11 +58,10 @@ function block_core_comment_template_render_comments( $comments, $block ) {
58
58
  $block_content .= sprintf( '<ol>%1$s</ol>', $inner_content );
59
59
  --$comment_depth;
60
60
  } else {
61
- $inner_content = block_core_comment_template_render_comments(
61
+ $block_content .= block_core_comment_template_render_comments(
62
62
  $children,
63
63
  $block
64
64
  );
65
- $block_content .= sprintf( $inner_content );
66
65
  }
67
66
  }
68
67
 
@@ -5,6 +5,7 @@ import { store as blockEditorStore } from '@wordpress/block-editor';
5
5
  import { __, sprintf } from '@wordpress/i18n';
6
6
  import { useSelect } from '@wordpress/data';
7
7
  import { useEntityProp } from '@wordpress/core-data';
8
+ import { createInterpolateElement } from '@wordpress/element';
8
9
 
9
10
  /**
10
11
  * Internal dependencies
@@ -45,7 +46,7 @@ export default function PostCommentsPlaceholder( { postType, postId } ) {
45
46
  <footer className="comment-meta">
46
47
  <div className="comment-author vcard">
47
48
  <img
48
- alt="Commenter Avatar"
49
+ alt={ __( 'Commenter Avatar' ) }
49
50
  src={ avatarURL }
50
51
  className="avatar avatar-32 photo"
51
52
  height="32"
@@ -85,8 +86,17 @@ export default function PostCommentsPlaceholder( { postType, postId } ) {
85
86
  'To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.'
86
87
  ) }
87
88
  <br />
88
- { __( 'Commenter avatars come from' ) }{ ' ' }
89
- <a href="https://gravatar.com/">Gravatar</a>.
89
+ { createInterpolateElement(
90
+ __(
91
+ 'Commenter avatars come from <a>Gravatar</a>.'
92
+ ),
93
+ {
94
+ a: (
95
+ // eslint-disable-next-line jsx-a11y/anchor-has-content
96
+ <a href="https://gravatar.com/" />
97
+ ),
98
+ }
99
+ ) }
90
100
  </p>
91
101
  </div>
92
102
 
@@ -94,7 +104,9 @@ export default function PostCommentsPlaceholder( { postType, postId } ) {
94
104
  <a
95
105
  className="comment-reply-link"
96
106
  href="#top"
97
- aria-label="Reply to A WordPress Commenter"
107
+ aria-label={ __(
108
+ 'Reply to A WordPress Commenter'
109
+ ) }
98
110
  >
99
111
  { __( 'Reply' ) }
100
112
  </a>
@@ -88,14 +88,17 @@
88
88
  "spacing": {
89
89
  "padding": true,
90
90
  "margin": [ "top", "bottom" ],
91
+ "blockGap": true,
91
92
  "__experimentalDefaultControls": {
92
- "padding": true
93
+ "padding": true,
94
+ "blockGap": true
93
95
  }
94
96
  },
95
97
  "color": {
96
98
  "__experimentalDuotone": "> .wp-block-cover__image-background, > .wp-block-cover__video-background",
97
- "text": false,
98
- "background": false
99
+ "text": true,
100
+ "background": false,
101
+ "__experimentalSkipSerialization": [ "gradients" ]
99
102
  },
100
103
  "typography": {
101
104
  "fontSize": true,
@@ -109,6 +112,9 @@
109
112
  "__experimentalDefaultControls": {
110
113
  "fontSize": true
111
114
  }
115
+ },
116
+ "__experimentalLayout": {
117
+ "allowJustification": false
112
118
  }
113
119
  },
114
120
  "editorStyle": "wp-block-cover-editor",
@@ -13,6 +13,7 @@ import edit from './edit';
13
13
  import metadata from './block.json';
14
14
  import save from './save';
15
15
  import transforms from './transforms';
16
+ import variations from './variations';
16
17
 
17
18
  const { name } = metadata;
18
19
 
@@ -48,6 +49,7 @@ export const settings = {
48
49
  save,
49
50
  edit,
50
51
  deprecated,
52
+ variations,
51
53
  };
52
54
 
53
55
  export const init = () => initBlock( { name, metadata, settings } );
@@ -106,17 +106,11 @@
106
106
  .wp-block-cover__inner-container {
107
107
  width: 100%;
108
108
  z-index: z-index(".wp-block-cover__inner-container");
109
- color: $white;
109
+ color: inherit;
110
110
  // Reset the fixed LTR direction at the root of the block in RTL languages.
111
111
  /*rtl:raw: direction: rtl; */
112
112
  }
113
113
 
114
- &.is-light {
115
- .wp-block-cover__inner-container {
116
- color: $black;
117
- }
118
- }
119
-
120
114
  p,
121
115
  h1,
122
116
  h2,
@@ -285,3 +279,18 @@ section.wp-block-cover-image > h2,
285
279
  padding: 0.44em;
286
280
  text-align: center;
287
281
  }
282
+
283
+ // If Cover block's text color has not been set adjust default color
284
+ // based on if overlay is light or not. The following styles leverage
285
+ // `:where` to allow for generic global styles that have a low specificity to
286
+ // still take precedence.
287
+
288
+ :where(.wp-block-cover:not(.has-text-color)),
289
+ :where(.wp-block-cover-image:not(.has-text-color)) {
290
+ color: $white;
291
+ }
292
+
293
+ :where(.wp-block-cover.is-light:not(.has-text-color)),
294
+ :where(.wp-block-cover-image.is-light:not(.has-text-color)) {
295
+ color: $black;
296
+ }
@@ -0,0 +1,73 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Cover block transformations with Image to Columns block 1`] = `
4
+ "<!-- wp:columns -->
5
+ <div class="wp-block-columns"><!-- wp:column {"width":"100%"} -->
6
+ <div class="wp-block-column" style="flex-basis:100%"><!-- wp:cover {"url":"https://cldup.com/cXyG__fTLN.jpg","id":890,"dimRatio":20,"overlayColor":"luminous-vivid-orange","focalPoint":{"x":"0.63","y":"0.83"},"minHeight":219} -->
7
+ <div class="wp-block-cover" style="min-height:219px"><span aria-hidden="true" class="wp-block-cover__background has-luminous-vivid-orange-background-color has-background-dim-20 has-background-dim"></span><img class="wp-block-cover__image-background wp-image-890" alt="" src="https://cldup.com/cXyG__fTLN.jpg" style="object-position:63% 83%" data-object-fit="cover" data-object-position="63% 83%"/><div class="wp-block-cover__inner-container"><!-- wp:paragraph {"align":"center","placeholder":"Write title…","className":"has-text-color has-very-light-gray-color","fontSize":"large"} -->
8
+ <p class="has-text-align-center has-text-color has-very-light-gray-color has-large-font-size">Cool cover</p>
9
+ <!-- /wp:paragraph --></div></div>
10
+ <!-- /wp:cover --></div>
11
+ <!-- /wp:column --></div>
12
+ <!-- /wp:columns -->"
13
+ `;
14
+
15
+ exports[`Cover block transformations with Image to Group block 1`] = `
16
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
17
+ <div class="wp-block-group"><!-- wp:cover {"url":"https://cldup.com/cXyG__fTLN.jpg","id":890,"dimRatio":20,"overlayColor":"luminous-vivid-orange","focalPoint":{"x":"0.63","y":"0.83"},"minHeight":219} -->
18
+ <div class="wp-block-cover" style="min-height:219px"><span aria-hidden="true" class="wp-block-cover__background has-luminous-vivid-orange-background-color has-background-dim-20 has-background-dim"></span><img class="wp-block-cover__image-background wp-image-890" alt="" src="https://cldup.com/cXyG__fTLN.jpg" style="object-position:63% 83%" data-object-fit="cover" data-object-position="63% 83%"/><div class="wp-block-cover__inner-container"><!-- wp:paragraph {"align":"center","placeholder":"Write title…","className":"has-text-color has-very-light-gray-color","fontSize":"large"} -->
19
+ <p class="has-text-align-center has-text-color has-very-light-gray-color has-large-font-size">Cool cover</p>
20
+ <!-- /wp:paragraph --></div></div>
21
+ <!-- /wp:cover --></div>
22
+ <!-- /wp:group -->"
23
+ `;
24
+
25
+ exports[`Cover block transformations with Image to Image block 1`] = `
26
+ "<!-- wp:image {"id":890,"style":{"color":{}}} -->
27
+ <figure class="wp-block-image"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-890"/></figure>
28
+ <!-- /wp:image -->"
29
+ `;
30
+
31
+ exports[`Cover block transformations with Image to Media & Text block 1`] = `
32
+ "<!-- wp:media-text {"mediaId":890,"mediaType":"image","backgroundColor":"luminous-vivid-orange"} -->
33
+ <div class="wp-block-media-text alignwide is-stacked-on-mobile has-luminous-vivid-orange-background-color has-background"><figure class="wp-block-media-text__media"><img src="https://cldup.com/cXyG__fTLN.jpg" alt="" class="wp-image-890 size-full"/></figure><div class="wp-block-media-text__content"><!-- wp:paragraph {"align":"center","placeholder":"Write title…","className":"has-text-color has-very-light-gray-color","fontSize":"large"} -->
34
+ <p class="has-text-align-center has-text-color has-very-light-gray-color has-large-font-size">Cool cover</p>
35
+ <!-- /wp:paragraph --></div></div>
36
+ <!-- /wp:media-text -->"
37
+ `;
38
+
39
+ exports[`Cover block transformations with Video to Columns block 1`] = `
40
+ "<!-- wp:columns -->
41
+ <div class="wp-block-columns"><!-- wp:column {"width":"100%"} -->
42
+ <div class="wp-block-column" style="flex-basis:100%"><!-- wp:cover {"url":"https://i.cloudup.com/YtZFJbuQCE.mov","id":891,"dimRatio":20,"overlayColor":"luminous-vivid-orange","backgroundType":"video","focalPoint":{"x":"0.63","y":"0.83"},"minHeight":219,"isDark":false} -->
43
+ <div class="wp-block-cover is-light" style="min-height:219px"><span aria-hidden="true" class="wp-block-cover__background has-luminous-vivid-orange-background-color has-background-dim-20 has-background-dim"></span><video class="wp-block-cover__video-background intrinsic-ignore" autoplay muted loop playsinline src="https://i.cloudup.com/YtZFJbuQCE.mov" style="object-position:63% 83%" data-object-fit="cover" data-object-position="63% 83%"></video><div class="wp-block-cover__inner-container"><!-- wp:paragraph {"align":"center","placeholder":"Write title…","className":"has-text-color has-very-light-gray-color","fontSize":"large"} -->
44
+ <p class="has-text-align-center has-text-color has-very-light-gray-color has-large-font-size">Cool cover</p>
45
+ <!-- /wp:paragraph --></div></div>
46
+ <!-- /wp:cover --></div>
47
+ <!-- /wp:column --></div>
48
+ <!-- /wp:columns -->"
49
+ `;
50
+
51
+ exports[`Cover block transformations with Video to Group block 1`] = `
52
+ "<!-- wp:group {"layout":{"type":"constrained"}} -->
53
+ <div class="wp-block-group"><!-- wp:cover {"url":"https://i.cloudup.com/YtZFJbuQCE.mov","id":891,"dimRatio":20,"overlayColor":"luminous-vivid-orange","backgroundType":"video","focalPoint":{"x":"0.63","y":"0.83"},"minHeight":219,"isDark":false} -->
54
+ <div class="wp-block-cover is-light" style="min-height:219px"><span aria-hidden="true" class="wp-block-cover__background has-luminous-vivid-orange-background-color has-background-dim-20 has-background-dim"></span><video class="wp-block-cover__video-background intrinsic-ignore" autoplay muted loop playsinline src="https://i.cloudup.com/YtZFJbuQCE.mov" style="object-position:63% 83%" data-object-fit="cover" data-object-position="63% 83%"></video><div class="wp-block-cover__inner-container"><!-- wp:paragraph {"align":"center","placeholder":"Write title…","className":"has-text-color has-very-light-gray-color","fontSize":"large"} -->
55
+ <p class="has-text-align-center has-text-color has-very-light-gray-color has-large-font-size">Cool cover</p>
56
+ <!-- /wp:paragraph --></div></div>
57
+ <!-- /wp:cover --></div>
58
+ <!-- /wp:group -->"
59
+ `;
60
+
61
+ exports[`Cover block transformations with Video to Media & Text block 1`] = `
62
+ "<!-- wp:media-text {"mediaId":891,"mediaType":"video","backgroundColor":"luminous-vivid-orange"} -->
63
+ <div class="wp-block-media-text alignwide is-stacked-on-mobile has-luminous-vivid-orange-background-color has-background"><figure class="wp-block-media-text__media"><video controls src="https://i.cloudup.com/YtZFJbuQCE.mov"></video></figure><div class="wp-block-media-text__content"><!-- wp:paragraph {"align":"center","placeholder":"Write title…","className":"has-text-color has-very-light-gray-color","fontSize":"large"} -->
64
+ <p class="has-text-align-center has-text-color has-very-light-gray-color has-large-font-size">Cool cover</p>
65
+ <!-- /wp:paragraph --></div></div>
66
+ <!-- /wp:media-text -->"
67
+ `;
68
+
69
+ exports[`Cover block transformations with Video to Video block 1`] = `
70
+ "<!-- wp:video {"id":891} -->
71
+ <figure class="wp-block-video"><video controls src="https://i.cloudup.com/YtZFJbuQCE.mov"></video></figure>
72
+ <!-- /wp:video -->"
73
+ `;