@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.
- package/CHANGELOG.md +2 -0
- package/build/buttons/edit.native.js +1 -1
- package/build/buttons/edit.native.js.map +1 -1
- package/build/columns/edit.js +10 -8
- package/build/columns/edit.js.map +1 -1
- package/build/columns/edit.native.js +1 -1
- package/build/columns/edit.native.js.map +1 -1
- package/build/comments/edit/placeholder.js +8 -5
- package/build/comments/edit/placeholder.js.map +1 -1
- package/build/cover/index.js +13 -4
- package/build/cover/index.js.map +1 -1
- package/build/cover/variations.js +29 -0
- package/build/cover/variations.js.map +1 -0
- package/build/embed/edit.js +13 -14
- package/build/embed/edit.js.map +1 -1
- package/build/embed/edit.native.js +18 -14
- package/build/embed/edit.native.js.map +1 -1
- package/build/embed/util.js +39 -12
- package/build/embed/util.js.map +1 -1
- package/build/gallery/edit.js +1 -0
- package/build/gallery/edit.js.map +1 -1
- package/build/latest-posts/edit.js +10 -10
- package/build/latest-posts/edit.js.map +1 -1
- package/build/latest-posts/edit.native.js +3 -3
- package/build/latest-posts/edit.native.js.map +1 -1
- package/build/media-text/constants.js +17 -1
- package/build/media-text/constants.js.map +1 -1
- package/build/media-text/edit.js +7 -19
- package/build/media-text/edit.js.map +1 -1
- package/build/media-text/edit.native.js +6 -5
- package/build/media-text/edit.native.js.map +1 -1
- package/build/media-text/transforms.js +32 -44
- package/build/media-text/transforms.js.map +1 -1
- package/build/navigation/edit/index.js +56 -86
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/edit/inner-blocks.js +4 -1
- package/build/navigation/edit/inner-blocks.js.map +1 -1
- package/build/navigation/edit/menu-inspector-controls.js +2 -5
- package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
- package/build/navigation/edit/navigation-menu-selector.js +26 -22
- package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
- package/build/navigation/edit/unsaved-inner-blocks.js +14 -1
- package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +2 -4
- package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
- package/build/navigation/edit/use-create-navigation-menu.js +1 -1
- package/build/navigation/edit/use-create-navigation-menu.js.map +1 -1
- package/build/navigation/edit/use-navigation-notice.js +1 -1
- package/build/navigation/edit/use-navigation-notice.js.map +1 -1
- package/build/navigation-link/edit.js +0 -11
- package/build/navigation-link/edit.js.map +1 -1
- package/build/navigation-link/link-ui.js +0 -1
- package/build/navigation-link/link-ui.js.map +1 -1
- package/build/navigation-submenu/edit.js +1 -13
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/page-list/edit.js +59 -45
- package/build/page-list/edit.js.map +1 -1
- package/build/page-list-item/edit.js +3 -2
- package/build/page-list-item/edit.js.map +1 -1
- package/build/post-content/edit.js +6 -1
- package/build/post-content/edit.js.map +1 -1
- package/build/post-featured-image/dimension-controls.js +0 -6
- package/build/post-featured-image/dimension-controls.js.map +1 -1
- package/build/post-featured-image/edit.js +1 -1
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/pullquote/deprecated.js +3 -3
- package/build/pullquote/deprecated.js.map +1 -1
- package/build/query/edit/query-placeholder.js +3 -2
- package/build/query/edit/query-placeholder.js.map +1 -1
- package/build/query/utils.js +26 -9
- package/build/query/utils.js.map +1 -1
- package/build/table/state.js +12 -4
- package/build/table/state.js.map +1 -1
- package/build/template-part/edit/import-controls.js +4 -24
- package/build/template-part/edit/import-controls.js.map +1 -1
- package/build/template-part/edit/utils/transformers.js +69 -19
- package/build/template-part/edit/utils/transformers.js.map +1 -1
- package/build/text-columns/edit.js +3 -7
- package/build/text-columns/edit.js.map +1 -1
- package/build/text-columns/save.js +11 -13
- package/build/text-columns/save.js.map +1 -1
- package/build-module/buttons/edit.native.js +1 -1
- package/build-module/buttons/edit.native.js.map +1 -1
- package/build-module/columns/edit.js +10 -7
- package/build-module/columns/edit.js.map +1 -1
- package/build-module/columns/edit.native.js +1 -1
- package/build-module/columns/edit.native.js.map +1 -1
- package/build-module/comments/edit/placeholder.js +9 -5
- package/build-module/comments/edit/placeholder.js.map +1 -1
- package/build-module/cover/index.js +12 -4
- package/build-module/cover/index.js.map +1 -1
- package/build-module/cover/variations.js +19 -0
- package/build-module/cover/variations.js.map +1 -0
- package/build-module/embed/edit.js +14 -15
- package/build-module/embed/edit.js.map +1 -1
- package/build-module/embed/edit.native.js +19 -15
- package/build-module/embed/edit.native.js.map +1 -1
- package/build-module/embed/util.js +34 -10
- package/build-module/embed/util.js.map +1 -1
- package/build-module/gallery/edit.js +1 -0
- package/build-module/gallery/edit.js.map +1 -1
- package/build-module/latest-posts/edit.js +10 -9
- package/build-module/latest-posts/edit.js.map +1 -1
- package/build-module/latest-posts/edit.native.js +3 -3
- package/build-module/latest-posts/edit.native.js.map +1 -1
- package/build-module/media-text/constants.js +10 -0
- package/build-module/media-text/constants.js.map +1 -1
- package/build-module/media-text/edit.js +2 -14
- package/build-module/media-text/edit.js.map +1 -1
- package/build-module/media-text/edit.native.js +4 -3
- package/build-module/media-text/edit.native.js.map +1 -1
- package/build-module/media-text/transforms.js +32 -44
- package/build-module/media-text/transforms.js.map +1 -1
- package/build-module/navigation/edit/index.js +58 -88
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/edit/inner-blocks.js +4 -1
- package/build-module/navigation/edit/inner-blocks.js.map +1 -1
- package/build-module/navigation/edit/menu-inspector-controls.js +2 -5
- package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
- package/build-module/navigation/edit/navigation-menu-selector.js +25 -22
- package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
- package/build-module/navigation/edit/unsaved-inner-blocks.js +14 -1
- package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
- package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +2 -4
- package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
- package/build-module/navigation/edit/use-create-navigation-menu.js +1 -1
- package/build-module/navigation/edit/use-create-navigation-menu.js.map +1 -1
- package/build-module/navigation/edit/use-navigation-notice.js +1 -1
- package/build-module/navigation/edit/use-navigation-notice.js.map +1 -1
- package/build-module/navigation-link/edit.js +0 -11
- package/build-module/navigation-link/edit.js.map +1 -1
- package/build-module/navigation-link/link-ui.js +0 -1
- package/build-module/navigation-link/link-ui.js.map +1 -1
- package/build-module/navigation-submenu/edit.js +1 -13
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/page-list/edit.js +61 -47
- package/build-module/page-list/edit.js.map +1 -1
- package/build-module/page-list-item/edit.js +3 -2
- package/build-module/page-list-item/edit.js.map +1 -1
- package/build-module/post-content/edit.js +6 -1
- package/build-module/post-content/edit.js.map +1 -1
- package/build-module/post-featured-image/dimension-controls.js +0 -6
- package/build-module/post-featured-image/dimension-controls.js.map +1 -1
- package/build-module/post-featured-image/edit.js +1 -1
- package/build-module/post-featured-image/edit.js.map +1 -1
- package/build-module/pullquote/deprecated.js +3 -2
- package/build-module/pullquote/deprecated.js.map +1 -1
- package/build-module/query/edit/query-placeholder.js +4 -3
- package/build-module/query/edit/query-placeholder.js.map +1 -1
- package/build-module/query/utils.js +21 -6
- package/build-module/query/utils.js.map +1 -1
- package/build-module/table/state.js +13 -5
- package/build-module/table/state.js.map +1 -1
- package/build-module/template-part/edit/import-controls.js +4 -23
- package/build-module/template-part/edit/import-controls.js.map +1 -1
- package/build-module/template-part/edit/utils/transformers.js +69 -20
- package/build-module/template-part/edit/utils/transformers.js.map +1 -1
- package/build-module/text-columns/edit.js +3 -6
- package/build-module/text-columns/edit.js.map +1 -1
- package/build-module/text-columns/save.js +11 -12
- package/build-module/text-columns/save.js.map +1 -1
- package/build-style/cover/style-rtl.css +11 -5
- package/build-style/cover/style.css +11 -5
- package/build-style/editor-rtl.css +5 -1
- package/build-style/editor.css +5 -1
- package/build-style/navigation/editor-rtl.css +1 -1
- package/build-style/navigation/editor.css +1 -1
- package/build-style/page-list/editor-rtl.css +4 -0
- package/build-style/page-list/editor.css +4 -0
- package/build-style/post-featured-image/style-rtl.css +1 -0
- package/build-style/post-featured-image/style.css +1 -0
- package/build-style/style-rtl.css +12 -5
- package/build-style/style.css +12 -5
- package/package.json +31 -31
- package/src/audio/test/__snapshots__/edit.native.js.snap +44 -4
- package/src/audio/test/__snapshots__/transforms.native.js.snap +25 -0
- package/src/audio/test/transforms.native.js +42 -0
- package/src/block/test/__snapshots__/transforms.native.js.snap +15 -0
- package/src/block/test/transforms.native.js +40 -0
- package/src/buttons/edit.native.js +1 -1
- package/src/buttons/test/__snapshots__/transforms.native.js.snap +31 -0
- package/src/buttons/test/transforms.native.js +48 -0
- package/src/columns/edit.js +28 -17
- package/src/columns/edit.native.js +1 -1
- package/src/columns/test/__snapshots__/transforms.native.js.snap +61 -0
- package/src/columns/test/transforms.native.js +91 -0
- package/src/comment-template/index.php +1 -2
- package/src/comments/edit/placeholder.js +16 -4
- package/src/cover/block.json +9 -3
- package/src/cover/index.js +2 -0
- package/src/cover/style.scss +16 -7
- package/src/cover/test/__snapshots__/transforms.native.js.snap +73 -0
- package/src/cover/test/transforms.native.js +112 -0
- package/src/cover/variations.js +20 -0
- package/src/embed/edit.js +16 -12
- package/src/embed/edit.native.js +28 -18
- package/src/embed/test/__snapshots__/transforms.native.js.snap +23 -0
- package/src/embed/test/index.js +12 -0
- package/src/embed/test/transforms.native.js +44 -0
- package/src/embed/util.js +29 -8
- package/src/file/test/__snapshots__/edit.native.js.snap +18 -2
- package/src/file/test/__snapshots__/transforms.native.js.snap +19 -0
- package/src/file/test/transforms.native.js +42 -0
- package/src/freeform/test/__snapshots__/transforms.native.js.snap +19 -0
- package/src/freeform/test/transforms.native.js +39 -0
- package/src/gallery/edit.js +3 -0
- package/src/gallery/test/__snapshots__/transforms.native.js.snap +53 -0
- package/src/gallery/test/transforms.native.js +52 -0
- package/src/group/test/__snapshots__/transforms.native.js.snap +35 -0
- package/src/group/test/transforms.native.js +75 -0
- package/src/heading/test/__snapshots__/transforms.native.js.snap +47 -0
- package/src/heading/test/transforms.native.js +46 -0
- package/src/image/test/__snapshots__/transforms.native.js.snap +49 -0
- package/src/image/test/transforms.native.js +48 -0
- package/src/latest-posts/edit.js +11 -16
- package/src/latest-posts/edit.native.js +3 -3
- package/src/latest-posts/test/__snapshots__/transforms.native.js.snap +15 -0
- package/src/latest-posts/test/transforms.native.js +61 -0
- package/src/list/test/__snapshots__/transforms.native.js.snap +85 -0
- package/src/list/test/transforms.native.js +56 -0
- package/src/media-text/constants.js +16 -0
- package/src/media-text/edit.js +8 -18
- package/src/media-text/edit.native.js +3 -9
- package/src/media-text/test/__snapshots__/transforms.native.js.snap +73 -0
- package/src/media-text/test/transforms.native.js +112 -0
- package/src/media-text/transforms.js +24 -51
- package/src/missing/test/__snapshots__/edit.native.js.snap +20 -2
- package/src/more/test/__snapshots__/transforms.native.js.snap +19 -0
- package/src/more/test/transforms.native.js +42 -0
- package/src/navigation/edit/index.js +104 -107
- package/src/navigation/edit/inner-blocks.js +3 -0
- package/src/navigation/edit/menu-inspector-controls.js +2 -7
- package/src/navigation/edit/navigation-menu-selector.js +41 -25
- package/src/navigation/edit/unsaved-inner-blocks.js +46 -33
- package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +82 -83
- package/src/navigation/edit/use-create-navigation-menu.js +1 -1
- package/src/navigation/edit/use-navigation-notice.js +1 -1
- package/src/navigation/editor.scss +23 -20
- package/src/navigation/index.php +18 -39
- package/src/navigation-link/edit.js +0 -9
- package/src/navigation-link/index.php +5 -8
- package/src/navigation-link/link-ui.js +0 -1
- package/src/navigation-submenu/edit.js +0 -10
- package/src/navigation-submenu/index.php +23 -6
- package/src/nextpage/test/__snapshots__/transforms.native.js.snap +19 -0
- package/src/nextpage/test/transforms.native.js +42 -0
- package/src/page-list/edit.js +78 -44
- package/src/page-list/editor.scss +6 -0
- package/src/page-list-item/edit.js +2 -3
- package/src/paragraph/test/__snapshots__/transforms.native.js.snap +59 -0
- package/src/paragraph/test/transforms.native.js +50 -0
- package/src/post-content/edit.js +5 -1
- package/src/post-excerpt/index.php +1 -2
- package/src/post-featured-image/dimension-controls.js +0 -8
- package/src/post-featured-image/edit.js +1 -1
- package/src/post-featured-image/style.scss +1 -0
- package/src/preformatted/test/__snapshots__/transforms.native.js.snap +31 -0
- package/src/preformatted/test/transforms.native.js +42 -0
- package/src/pullquote/deprecated.js +2 -6
- package/src/pullquote/test/__snapshots__/transforms.native.js.snap +47 -0
- package/src/pullquote/test/transforms.native.js +46 -0
- package/src/query/edit/query-placeholder.js +10 -5
- package/src/query/test/utils.js +33 -1
- package/src/query/utils.js +19 -6
- package/src/quote/test/__snapshots__/transforms.native.js.snap +39 -0
- package/src/quote/test/transforms.native.js +67 -0
- package/src/search/test/__snapshots__/edit.native.js.snap +11 -1
- package/src/search/test/__snapshots__/transforms.native.js.snap +15 -0
- package/src/search/test/transforms.native.js +40 -0
- package/src/separator/test/__snapshots__/transforms.native.js.snap +19 -0
- package/src/separator/test/transforms.native.js +42 -0
- package/src/shortcode/test/__snapshots__/transforms.native.js.snap +19 -0
- package/src/shortcode/test/transforms.native.js +42 -0
- package/src/social-links/test/__snapshots__/transforms.native.js.snap +31 -0
- package/src/social-links/test/transforms.native.js +53 -0
- package/src/spacer/test/__snapshots__/transforms.native.js.snap +19 -0
- package/src/spacer/test/transforms.native.js +42 -0
- package/src/table/state.js +8 -17
- package/src/template-part/edit/import-controls.js +2 -29
- package/src/template-part/edit/utils/transformers.js +96 -19
- package/src/text-columns/edit.js +1 -6
- package/src/text-columns/save.js +1 -6
- package/src/verse/test/__snapshots__/transforms.native.js.snap +25 -0
- package/src/verse/test/transforms.native.js +42 -0
- package/src/video/test/__snapshots__/transforms.native.js.snap +41 -0
- package/src/video/test/transforms.native.js +48 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,112 @@
|
|
|
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 = 'Cover';
|
|
13
|
+
const initialHtmlWithImage = `
|
|
14
|
+
<!-- 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} -->
|
|
15
|
+
<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"} -->
|
|
16
|
+
<p class="has-text-align-center has-text-color has-very-light-gray-color has-large-font-size">Cool cover</p>
|
|
17
|
+
<!-- /wp:paragraph --></div></div>
|
|
18
|
+
<!-- /wp:cover -->`;
|
|
19
|
+
const initialHtmlWithVideo = `
|
|
20
|
+
<!-- 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} -->
|
|
21
|
+
<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"} -->
|
|
22
|
+
<p class="has-text-align-center has-text-color has-very-light-gray-color has-large-font-size">Cool cover</p>
|
|
23
|
+
<!-- /wp:paragraph --></div></div>
|
|
24
|
+
<!-- /wp:cover -->`;
|
|
25
|
+
|
|
26
|
+
const tranformsWithInnerBlocks = [ 'Columns', 'Group' ];
|
|
27
|
+
const blockTransformsWithImage = [
|
|
28
|
+
'Image',
|
|
29
|
+
'Media & Text',
|
|
30
|
+
...tranformsWithInnerBlocks,
|
|
31
|
+
];
|
|
32
|
+
const blockTransformsWithVideo = [
|
|
33
|
+
'Video',
|
|
34
|
+
'Media & Text',
|
|
35
|
+
...tranformsWithInnerBlocks,
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
setupCoreBlocks();
|
|
39
|
+
|
|
40
|
+
describe( `${ block } block transformations`, () => {
|
|
41
|
+
describe( 'with Image', () => {
|
|
42
|
+
test.each( blockTransformsWithImage )(
|
|
43
|
+
'to %s block',
|
|
44
|
+
async ( blockTransform ) => {
|
|
45
|
+
const screen = await initializeEditor( {
|
|
46
|
+
initialHtml: initialHtmlWithImage,
|
|
47
|
+
} );
|
|
48
|
+
const newBlock = await transformBlock(
|
|
49
|
+
screen,
|
|
50
|
+
block,
|
|
51
|
+
blockTransform,
|
|
52
|
+
{
|
|
53
|
+
isMediaBlock: true,
|
|
54
|
+
hasInnerBlocks:
|
|
55
|
+
tranformsWithInnerBlocks.includes( blockTransform ),
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
expect( newBlock ).toBeVisible();
|
|
59
|
+
expect( getEditorHtml() ).toMatchSnapshot();
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
it( 'matches expected transformation options', async () => {
|
|
64
|
+
const screen = await initializeEditor( {
|
|
65
|
+
initialHtml: initialHtmlWithImage,
|
|
66
|
+
} );
|
|
67
|
+
const transformOptions = await getBlockTransformOptions(
|
|
68
|
+
screen,
|
|
69
|
+
block
|
|
70
|
+
);
|
|
71
|
+
expect( transformOptions ).toHaveLength(
|
|
72
|
+
blockTransformsWithImage.length
|
|
73
|
+
);
|
|
74
|
+
} );
|
|
75
|
+
} );
|
|
76
|
+
|
|
77
|
+
describe( 'with Video', () => {
|
|
78
|
+
test.each( blockTransformsWithVideo )(
|
|
79
|
+
'to %s block',
|
|
80
|
+
async ( blockTransform ) => {
|
|
81
|
+
const screen = await initializeEditor( {
|
|
82
|
+
initialHtml: initialHtmlWithVideo,
|
|
83
|
+
} );
|
|
84
|
+
const newBlock = await transformBlock(
|
|
85
|
+
screen,
|
|
86
|
+
block,
|
|
87
|
+
blockTransform,
|
|
88
|
+
{
|
|
89
|
+
isMediaBlock: true,
|
|
90
|
+
hasInnerBlocks:
|
|
91
|
+
tranformsWithInnerBlocks.includes( blockTransform ),
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
expect( newBlock ).toBeVisible();
|
|
95
|
+
expect( getEditorHtml() ).toMatchSnapshot();
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
|
|
99
|
+
it( 'matches expected transformation options', async () => {
|
|
100
|
+
const screen = await initializeEditor( {
|
|
101
|
+
initialHtml: initialHtmlWithVideo,
|
|
102
|
+
} );
|
|
103
|
+
const transformOptions = await getBlockTransformOptions(
|
|
104
|
+
screen,
|
|
105
|
+
block
|
|
106
|
+
);
|
|
107
|
+
expect( transformOptions ).toHaveLength(
|
|
108
|
+
blockTransformsWithVideo.length
|
|
109
|
+
);
|
|
110
|
+
} );
|
|
111
|
+
} );
|
|
112
|
+
} );
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { __ } from '@wordpress/i18n';
|
|
5
|
+
import { cover } from '@wordpress/icons';
|
|
6
|
+
|
|
7
|
+
const variations = [
|
|
8
|
+
{
|
|
9
|
+
name: 'cover',
|
|
10
|
+
title: __( 'Cover' ),
|
|
11
|
+
description: __(
|
|
12
|
+
'Add an image or video with a text overlay — great for headers.'
|
|
13
|
+
),
|
|
14
|
+
attributes: { layout: { type: 'constrained' } },
|
|
15
|
+
isDefault: true,
|
|
16
|
+
icon: cover,
|
|
17
|
+
},
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
export default variations;
|
package/src/embed/edit.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import {
|
|
5
5
|
createUpgradedEmbedBlock,
|
|
6
6
|
getClassNames,
|
|
7
|
+
removeAspectRatioClasses,
|
|
7
8
|
fallback,
|
|
8
9
|
getEmbedInfoByProvider,
|
|
9
10
|
getMergedAttributesWithPreview,
|
|
@@ -99,16 +100,14 @@ const EmbedEdit = ( props ) => {
|
|
|
99
100
|
/**
|
|
100
101
|
* Returns the attributes derived from the preview, merged with the current attributes.
|
|
101
102
|
*
|
|
102
|
-
* @param {boolean} ignorePreviousClassName Determines if the previous className attribute should be ignored when merging.
|
|
103
103
|
* @return {Object} Merged attributes.
|
|
104
104
|
*/
|
|
105
|
-
const getMergedAttributes = (
|
|
105
|
+
const getMergedAttributes = () =>
|
|
106
106
|
getMergedAttributesWithPreview(
|
|
107
107
|
attributes,
|
|
108
108
|
preview,
|
|
109
109
|
title,
|
|
110
|
-
responsive
|
|
111
|
-
ignorePreviousClassName
|
|
110
|
+
responsive
|
|
112
111
|
);
|
|
113
112
|
|
|
114
113
|
const toggleResponsive = () => {
|
|
@@ -136,21 +135,20 @@ const EmbedEdit = ( props ) => {
|
|
|
136
135
|
setURL( newURL );
|
|
137
136
|
setIsEditingURL( false );
|
|
138
137
|
setAttributes( { url: newURL } );
|
|
139
|
-
}, [ preview?.html, attributesUrl ] );
|
|
138
|
+
}, [ preview?.html, attributesUrl, cannotEmbed, fetching ] );
|
|
140
139
|
|
|
141
140
|
// Handle incoming preview.
|
|
142
141
|
useEffect( () => {
|
|
143
142
|
if ( preview && ! isEditingURL ) {
|
|
144
|
-
// When obtaining an incoming preview,
|
|
145
|
-
//
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
setAttributes( getMergedAttributes( true ) );
|
|
143
|
+
// When obtaining an incoming preview,
|
|
144
|
+
// we set the attributes derived from the preview data.
|
|
145
|
+
const mergedAttributes = getMergedAttributes();
|
|
146
|
+
setAttributes( mergedAttributes );
|
|
149
147
|
|
|
150
148
|
if ( onReplace ) {
|
|
151
149
|
const upgradedBlock = createUpgradedEmbedBlock(
|
|
152
150
|
props,
|
|
153
|
-
|
|
151
|
+
mergedAttributes
|
|
154
152
|
);
|
|
155
153
|
|
|
156
154
|
if ( upgradedBlock ) {
|
|
@@ -188,8 +186,14 @@ const EmbedEdit = ( props ) => {
|
|
|
188
186
|
event.preventDefault();
|
|
189
187
|
}
|
|
190
188
|
|
|
189
|
+
// If the embed URL was changed, we need to reset the aspect ratio class.
|
|
190
|
+
// To do this we have to remove the existing ratio class so it can be recalculated.
|
|
191
|
+
const blockClass = removeAspectRatioClasses(
|
|
192
|
+
attributes.className
|
|
193
|
+
);
|
|
194
|
+
|
|
191
195
|
setIsEditingURL( false );
|
|
192
|
-
setAttributes( { url } );
|
|
196
|
+
setAttributes( { url, className: blockClass } );
|
|
193
197
|
} }
|
|
194
198
|
value={ url }
|
|
195
199
|
cannotEmbed={ cannotEmbed }
|
package/src/embed/edit.native.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import {
|
|
5
5
|
createUpgradedEmbedBlock,
|
|
6
6
|
getClassNames,
|
|
7
|
+
removeAspectRatioClasses,
|
|
7
8
|
fallback,
|
|
8
9
|
getEmbedInfoByProvider,
|
|
9
10
|
getMergedAttributesWithPreview,
|
|
@@ -123,16 +124,14 @@ const EmbedEdit = ( props ) => {
|
|
|
123
124
|
/**
|
|
124
125
|
* Returns the attributes derived from the preview, merged with the current attributes.
|
|
125
126
|
*
|
|
126
|
-
* @param {boolean} ignorePreviousClassName Determines if the previous className attribute should be ignored when merging.
|
|
127
127
|
* @return {Object} Merged attributes.
|
|
128
128
|
*/
|
|
129
|
-
const getMergedAttributes = (
|
|
129
|
+
const getMergedAttributes = () =>
|
|
130
130
|
getMergedAttributesWithPreview(
|
|
131
131
|
attributes,
|
|
132
132
|
preview,
|
|
133
133
|
title,
|
|
134
|
-
responsive
|
|
135
|
-
ignorePreviousClassName
|
|
134
|
+
responsive
|
|
136
135
|
);
|
|
137
136
|
|
|
138
137
|
const toggleResponsive = () => {
|
|
@@ -159,21 +158,20 @@ const EmbedEdit = ( props ) => {
|
|
|
159
158
|
const newURL = url.replace( /\/$/, '' );
|
|
160
159
|
setIsEditingURL( false );
|
|
161
160
|
setAttributes( { url: newURL } );
|
|
162
|
-
}, [ preview?.html, url ] );
|
|
161
|
+
}, [ preview?.html, url, cannotEmbed, fetching ] );
|
|
163
162
|
|
|
164
163
|
// Handle incoming preview.
|
|
165
164
|
useEffect( () => {
|
|
166
165
|
if ( preview && ! isEditingURL ) {
|
|
167
|
-
// When obtaining an incoming preview,
|
|
168
|
-
//
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
setAttributes( getMergedAttributes( true ) );
|
|
166
|
+
// When obtaining an incoming preview,
|
|
167
|
+
// we set the attributes derived from the preview data.
|
|
168
|
+
const mergedAttributes = getMergedAttributes();
|
|
169
|
+
setAttributes( mergedAttributes );
|
|
172
170
|
|
|
173
171
|
if ( onReplace ) {
|
|
174
172
|
const upgradedBlock = createUpgradedEmbedBlock(
|
|
175
173
|
props,
|
|
176
|
-
|
|
174
|
+
mergedAttributes
|
|
177
175
|
);
|
|
178
176
|
|
|
179
177
|
if ( upgradedBlock ) {
|
|
@@ -188,13 +186,25 @@ const EmbedEdit = ( props ) => {
|
|
|
188
186
|
[ isEditingURL ]
|
|
189
187
|
);
|
|
190
188
|
|
|
191
|
-
const onEditURL = useCallback(
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
189
|
+
const onEditURL = useCallback(
|
|
190
|
+
( value ) => {
|
|
191
|
+
// If the embed URL was changed, we need to reset the aspect ratio class.
|
|
192
|
+
// To do this we have to remove the existing ratio class so it can be recalculated.
|
|
193
|
+
if ( attributes.url !== value ) {
|
|
194
|
+
const blockClass = removeAspectRatioClasses(
|
|
195
|
+
attributes.className
|
|
196
|
+
);
|
|
197
|
+
setAttributes( { className: blockClass } );
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// The order of the following calls is important, we need to update the URL attribute before changing `isEditingURL`,
|
|
201
|
+
// otherwise the side-effect that potentially replaces the block when updating the local state won't use the new URL
|
|
202
|
+
// for creating the new block.
|
|
203
|
+
setAttributes( { url: value } );
|
|
204
|
+
setIsEditingURL( false );
|
|
205
|
+
},
|
|
206
|
+
[ attributes, setAttributes ]
|
|
207
|
+
);
|
|
198
208
|
|
|
199
209
|
const blockProps = useBlockProps();
|
|
200
210
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Embed 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:embed {"url":"https://twitter.com/notnownikki","type":"rich","providerNameSlug":"twitter","responsive":true} -->
|
|
7
|
+
<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
|
|
8
|
+
https://twitter.com/notnownikki
|
|
9
|
+
</div></figure>
|
|
10
|
+
<!-- /wp:embed --></div>
|
|
11
|
+
<!-- /wp:column --></div>
|
|
12
|
+
<!-- /wp:columns -->"
|
|
13
|
+
`;
|
|
14
|
+
|
|
15
|
+
exports[`Embed block transforms to Group block 1`] = `
|
|
16
|
+
"<!-- wp:group {"layout":{"type":"constrained"}} -->
|
|
17
|
+
<div class="wp-block-group"><!-- wp:embed {"url":"https://twitter.com/notnownikki","type":"rich","providerNameSlug":"twitter","responsive":true} -->
|
|
18
|
+
<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
|
|
19
|
+
https://twitter.com/notnownikki
|
|
20
|
+
</div></figure>
|
|
21
|
+
<!-- /wp:embed --></div>
|
|
22
|
+
<!-- /wp:group -->"
|
|
23
|
+
`;
|
package/src/embed/test/index.js
CHANGED
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
createUpgradedEmbedBlock,
|
|
18
18
|
getEmbedInfoByProvider,
|
|
19
19
|
removeAspectRatioClasses,
|
|
20
|
+
hasAspectRatioClass,
|
|
20
21
|
} from '../util';
|
|
21
22
|
import { embedInstagramIcon } from '../icons';
|
|
22
23
|
import variations from '../variations';
|
|
@@ -101,6 +102,17 @@ describe( 'utils', () => {
|
|
|
101
102
|
).toEqual( expected );
|
|
102
103
|
} );
|
|
103
104
|
} );
|
|
105
|
+
describe( 'hasAspectRatioClass', () => {
|
|
106
|
+
it( 'should return false if an aspect ratio class does not exist', () => {
|
|
107
|
+
const existingClassNames = 'wp-block-embed is-type-video';
|
|
108
|
+
expect( hasAspectRatioClass( existingClassNames ) ).toBe( false );
|
|
109
|
+
} );
|
|
110
|
+
it( 'should return true if an aspect ratio class exists', () => {
|
|
111
|
+
const existingClassNames =
|
|
112
|
+
'wp-block-embed is-type-video wp-embed-aspect-16-9 wp-has-aspect-ratio';
|
|
113
|
+
expect( hasAspectRatioClass( existingClassNames ) ).toBe( true );
|
|
114
|
+
} );
|
|
115
|
+
} );
|
|
104
116
|
describe( 'removeAspectRatioClasses', () => {
|
|
105
117
|
it( 'should return the same falsy value as received', () => {
|
|
106
118
|
const existingClassNames = undefined;
|
|
@@ -0,0 +1,44 @@
|
|
|
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 = 'Embed';
|
|
13
|
+
const initialHtml = `
|
|
14
|
+
<!-- wp:embed {"url":"https://twitter.com/notnownikki","type":"rich","providerNameSlug":"twitter","responsive":true} -->
|
|
15
|
+
<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
|
|
16
|
+
https://twitter.com/notnownikki
|
|
17
|
+
</div></figure>
|
|
18
|
+
<!-- /wp:embed -->`;
|
|
19
|
+
|
|
20
|
+
const transformsWithInnerBlocks = [ 'Columns', 'Group' ];
|
|
21
|
+
const blockTransforms = [ ...transformsWithInnerBlocks ];
|
|
22
|
+
|
|
23
|
+
setupCoreBlocks();
|
|
24
|
+
|
|
25
|
+
describe( `${ block } block transforms`, () => {
|
|
26
|
+
test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
|
|
27
|
+
const screen = await initializeEditor( { initialHtml } );
|
|
28
|
+
const newBlock = await transformBlock( screen, block, blockTransform, {
|
|
29
|
+
hasInnerBlocks:
|
|
30
|
+
transformsWithInnerBlocks.includes( blockTransform ),
|
|
31
|
+
} );
|
|
32
|
+
expect( newBlock ).toBeVisible();
|
|
33
|
+
expect( getEditorHtml() ).toMatchSnapshot();
|
|
34
|
+
} );
|
|
35
|
+
|
|
36
|
+
it( 'matches expected transformation options', async () => {
|
|
37
|
+
const screen = await initializeEditor( { initialHtml } );
|
|
38
|
+
const transformOptions = await getBlockTransformOptions(
|
|
39
|
+
screen,
|
|
40
|
+
block
|
|
41
|
+
);
|
|
42
|
+
expect( transformOptions ).toHaveLength( blockTransforms.length );
|
|
43
|
+
} );
|
|
44
|
+
} );
|
package/src/embed/util.js
CHANGED
|
@@ -152,6 +152,21 @@ export const createUpgradedEmbedBlock = (
|
|
|
152
152
|
} );
|
|
153
153
|
};
|
|
154
154
|
|
|
155
|
+
/**
|
|
156
|
+
* Determine if the block already has an aspect ratio class applied.
|
|
157
|
+
*
|
|
158
|
+
* @param {string} existingClassNames Existing block classes.
|
|
159
|
+
* @return {boolean} True or false if the classnames contain an aspect ratio class.
|
|
160
|
+
*/
|
|
161
|
+
export const hasAspectRatioClass = ( existingClassNames ) => {
|
|
162
|
+
if ( ! existingClassNames ) {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
return ASPECT_RATIOS.some( ( { className } ) =>
|
|
166
|
+
existingClassNames.includes( className )
|
|
167
|
+
);
|
|
168
|
+
};
|
|
169
|
+
|
|
155
170
|
/**
|
|
156
171
|
* Removes all previously set aspect ratio related classes and return the rest
|
|
157
172
|
* existing class names.
|
|
@@ -283,6 +298,13 @@ export const getAttributesFromPreview = memoize(
|
|
|
283
298
|
attributes.providerNameSlug = providerNameSlug;
|
|
284
299
|
}
|
|
285
300
|
|
|
301
|
+
// Aspect ratio classes are removed when the embed URL is updated.
|
|
302
|
+
// If the embed already has an aspect ratio class, that means the URL has not changed.
|
|
303
|
+
// Which also means no need to regenerate it with getClassNames.
|
|
304
|
+
if ( hasAspectRatioClass( currentClassNames ) ) {
|
|
305
|
+
return attributes;
|
|
306
|
+
}
|
|
307
|
+
|
|
286
308
|
attributes.className = getClassNames(
|
|
287
309
|
html,
|
|
288
310
|
currentClassNames,
|
|
@@ -296,27 +318,26 @@ export const getAttributesFromPreview = memoize(
|
|
|
296
318
|
/**
|
|
297
319
|
* Returns the attributes derived from the preview, merged with the current attributes.
|
|
298
320
|
*
|
|
299
|
-
* @param {Object} currentAttributes
|
|
300
|
-
* @param {Object} preview
|
|
301
|
-
* @param {string} title
|
|
302
|
-
* @param {boolean} isResponsive
|
|
303
|
-
* @param {boolean} ignorePreviousClassName Determines if the previous className attribute should be ignored when merging.
|
|
321
|
+
* @param {Object} currentAttributes The current attributes of the block.
|
|
322
|
+
* @param {Object} preview The preview data.
|
|
323
|
+
* @param {string} title The block's title, e.g. Twitter.
|
|
324
|
+
* @param {boolean} isResponsive Boolean indicating if the block supports responsive content.
|
|
304
325
|
* @return {Object} Merged attributes.
|
|
305
326
|
*/
|
|
306
327
|
export const getMergedAttributesWithPreview = (
|
|
307
328
|
currentAttributes,
|
|
308
329
|
preview,
|
|
309
330
|
title,
|
|
310
|
-
isResponsive
|
|
311
|
-
ignorePreviousClassName = false
|
|
331
|
+
isResponsive
|
|
312
332
|
) => {
|
|
313
333
|
const { allowResponsive, className } = currentAttributes;
|
|
334
|
+
|
|
314
335
|
return {
|
|
315
336
|
...currentAttributes,
|
|
316
337
|
...getAttributesFromPreview(
|
|
317
338
|
preview,
|
|
318
339
|
title,
|
|
319
|
-
|
|
340
|
+
className,
|
|
320
341
|
isResponsive,
|
|
321
342
|
allowResponsive
|
|
322
343
|
),
|
|
@@ -115,7 +115,15 @@ exports[`File block renders file error state without crashing 1`] = `
|
|
|
115
115
|
/>
|
|
116
116
|
</View>
|
|
117
117
|
<View>
|
|
118
|
-
Svg
|
|
118
|
+
<Svg
|
|
119
|
+
height={24}
|
|
120
|
+
style={{}}
|
|
121
|
+
viewBox="-2 -2 24 24"
|
|
122
|
+
width={24}
|
|
123
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
124
|
+
>
|
|
125
|
+
Path
|
|
126
|
+
</Svg>
|
|
119
127
|
<TextInput
|
|
120
128
|
editable={false}
|
|
121
129
|
fontFamily="serif"
|
|
@@ -464,7 +472,15 @@ exports[`File block renders placeholder without crashing 1`] = `
|
|
|
464
472
|
<View
|
|
465
473
|
style={{}}
|
|
466
474
|
>
|
|
467
|
-
Svg
|
|
475
|
+
<Svg
|
|
476
|
+
height={24}
|
|
477
|
+
style={{}}
|
|
478
|
+
viewBox="0 0 24 24"
|
|
479
|
+
width={24}
|
|
480
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
481
|
+
>
|
|
482
|
+
Path
|
|
483
|
+
</Svg>
|
|
468
484
|
</View>
|
|
469
485
|
</View>
|
|
470
486
|
<Text>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`File block transformations 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:file {"id":3,"href":"https://wordpress.org/latest.zip"} -->
|
|
7
|
+
<div class="wp-block-file"><a href="https://wordpress.org/latest.zip">WordPress.zip</a><a href="https://wordpress.org/latest.zip" class="wp-block-file__button wp-element-button" download>Download</a></div>
|
|
8
|
+
<!-- /wp:file --></div>
|
|
9
|
+
<!-- /wp:column --></div>
|
|
10
|
+
<!-- /wp:columns -->"
|
|
11
|
+
`;
|
|
12
|
+
|
|
13
|
+
exports[`File block transformations to Group block 1`] = `
|
|
14
|
+
"<!-- wp:group {"layout":{"type":"constrained"}} -->
|
|
15
|
+
<div class="wp-block-group"><!-- wp:file {"id":3,"href":"https://wordpress.org/latest.zip"} -->
|
|
16
|
+
<div class="wp-block-file"><a href="https://wordpress.org/latest.zip">WordPress.zip</a><a href="https://wordpress.org/latest.zip" class="wp-block-file__button wp-element-button" download>Download</a></div>
|
|
17
|
+
<!-- /wp:file --></div>
|
|
18
|
+
<!-- /wp:group -->"
|
|
19
|
+
`;
|
|
@@ -0,0 +1,42 @@
|
|
|
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 = 'File';
|
|
13
|
+
const initialHtml = `
|
|
14
|
+
<!-- wp:file {"id":3,"href":"https://wordpress.org/latest.zip"} -->
|
|
15
|
+
<div class="wp-block-file"><a href="https://wordpress.org/latest.zip">WordPress.zip</a><a href="https://wordpress.org/latest.zip" class="wp-block-file__button wp-element-button" download>Download</a></div>
|
|
16
|
+
<!-- /wp:file -->`;
|
|
17
|
+
|
|
18
|
+
const tranformsWithInnerBlocks = [ 'Columns', 'Group' ];
|
|
19
|
+
const blockTransforms = [ ...tranformsWithInnerBlocks ];
|
|
20
|
+
|
|
21
|
+
setupCoreBlocks();
|
|
22
|
+
|
|
23
|
+
describe( `${ block } block transformations`, () => {
|
|
24
|
+
test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
|
|
25
|
+
const screen = await initializeEditor( { initialHtml } );
|
|
26
|
+
const newBlock = await transformBlock( screen, block, blockTransform, {
|
|
27
|
+
isMediaBlock: false,
|
|
28
|
+
hasInnerBlocks: tranformsWithInnerBlocks.includes( blockTransform ),
|
|
29
|
+
} );
|
|
30
|
+
expect( newBlock ).toBeVisible();
|
|
31
|
+
expect( getEditorHtml() ).toMatchSnapshot();
|
|
32
|
+
} );
|
|
33
|
+
|
|
34
|
+
it( 'matches expected transformation options', async () => {
|
|
35
|
+
const screen = await initializeEditor( { initialHtml } );
|
|
36
|
+
const transformOptions = await getBlockTransformOptions(
|
|
37
|
+
screen,
|
|
38
|
+
block
|
|
39
|
+
);
|
|
40
|
+
expect( transformOptions ).toHaveLength( blockTransforms.length );
|
|
41
|
+
} );
|
|
42
|
+
} );
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Classic 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:freeform -->
|
|
7
|
+
<p>Classic block</p>
|
|
8
|
+
<!-- /wp:freeform --></div>
|
|
9
|
+
<!-- /wp:column --></div>
|
|
10
|
+
<!-- /wp:columns -->"
|
|
11
|
+
`;
|
|
12
|
+
|
|
13
|
+
exports[`Classic block transforms to Group block 1`] = `
|
|
14
|
+
"<!-- wp:group {"layout":{"type":"constrained"}} -->
|
|
15
|
+
<div class="wp-block-group"><!-- wp:freeform -->
|
|
16
|
+
<p>Classic block</p>
|
|
17
|
+
<!-- /wp:freeform --></div>
|
|
18
|
+
<!-- /wp:group -->"
|
|
19
|
+
`;
|
|
@@ -0,0 +1,39 @@
|
|
|
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 = 'Classic';
|
|
13
|
+
const initialHtml = `Classic block`;
|
|
14
|
+
|
|
15
|
+
const transformsWithInnerBlocks = [ 'Columns', 'Group' ];
|
|
16
|
+
const blockTransforms = [ ...transformsWithInnerBlocks ];
|
|
17
|
+
|
|
18
|
+
setupCoreBlocks();
|
|
19
|
+
|
|
20
|
+
describe( `${ block } block transforms`, () => {
|
|
21
|
+
test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
|
|
22
|
+
const screen = await initializeEditor( { initialHtml } );
|
|
23
|
+
const newBlock = await transformBlock( screen, block, blockTransform, {
|
|
24
|
+
hasInnerBlocks:
|
|
25
|
+
transformsWithInnerBlocks.includes( blockTransform ),
|
|
26
|
+
} );
|
|
27
|
+
expect( newBlock ).toBeVisible();
|
|
28
|
+
expect( getEditorHtml() ).toMatchSnapshot();
|
|
29
|
+
} );
|
|
30
|
+
|
|
31
|
+
it( 'matches expected transformation options', async () => {
|
|
32
|
+
const screen = await initializeEditor( { initialHtml } );
|
|
33
|
+
const transformOptions = await getBlockTransformOptions(
|
|
34
|
+
screen,
|
|
35
|
+
block
|
|
36
|
+
);
|
|
37
|
+
expect( transformOptions ).toHaveLength( blockTransforms.length );
|
|
38
|
+
} );
|
|
39
|
+
} );
|
package/src/gallery/edit.js
CHANGED
|
@@ -591,6 +591,9 @@ function GalleryEdit( props ) {
|
|
|
591
591
|
<SelectControl
|
|
592
592
|
__nextHasNoMarginBottom
|
|
593
593
|
label={ __( 'Image size' ) }
|
|
594
|
+
help={ __(
|
|
595
|
+
'Select the size of the source images.'
|
|
596
|
+
) }
|
|
594
597
|
value={ sizeSlug }
|
|
595
598
|
options={ imageSizeOptions }
|
|
596
599
|
onChange={ updateImagesSize }
|