@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
package/src/page-list/edit.js
CHANGED
|
@@ -25,9 +25,9 @@ import {
|
|
|
25
25
|
Button,
|
|
26
26
|
} from '@wordpress/components';
|
|
27
27
|
import { __, sprintf } from '@wordpress/i18n';
|
|
28
|
-
import { useMemo, useState, useEffect } from '@wordpress/element';
|
|
28
|
+
import { useMemo, useState, useEffect, useCallback } from '@wordpress/element';
|
|
29
29
|
import { useEntityRecords } from '@wordpress/core-data';
|
|
30
|
-
import { useSelect } from '@wordpress/data';
|
|
30
|
+
import { useSelect, useDispatch } from '@wordpress/data';
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
33
|
* Internal dependencies
|
|
@@ -53,7 +53,9 @@ function BlockContent( {
|
|
|
53
53
|
if ( ! hasResolvedPages ) {
|
|
54
54
|
return (
|
|
55
55
|
<div { ...blockProps }>
|
|
56
|
-
<
|
|
56
|
+
<div className="wp-block-page-list__loading-indicator-container">
|
|
57
|
+
<Spinner className="wp-block-page-list__loading-indicator" />
|
|
58
|
+
</div>
|
|
57
59
|
</div>
|
|
58
60
|
);
|
|
59
61
|
}
|
|
@@ -111,29 +113,6 @@ function BlockContent( {
|
|
|
111
113
|
}
|
|
112
114
|
}
|
|
113
115
|
|
|
114
|
-
function ConvertToLinks( { onClick, disabled } ) {
|
|
115
|
-
const [ isOpen, setOpen ] = useState( false );
|
|
116
|
-
const openModal = () => setOpen( true );
|
|
117
|
-
const closeModal = () => setOpen( false );
|
|
118
|
-
|
|
119
|
-
return (
|
|
120
|
-
<>
|
|
121
|
-
<BlockControls group="other">
|
|
122
|
-
<ToolbarButton title={ __( 'Edit' ) } onClick={ openModal }>
|
|
123
|
-
{ __( 'Edit' ) }
|
|
124
|
-
</ToolbarButton>
|
|
125
|
-
</BlockControls>
|
|
126
|
-
{ isOpen && (
|
|
127
|
-
<ConvertToLinksModal
|
|
128
|
-
onClick={ onClick }
|
|
129
|
-
onClose={ closeModal }
|
|
130
|
-
disabled={ disabled }
|
|
131
|
-
/>
|
|
132
|
-
) }
|
|
133
|
-
</>
|
|
134
|
-
);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
116
|
export default function PageListEdit( {
|
|
138
117
|
context,
|
|
139
118
|
clientId,
|
|
@@ -141,6 +120,9 @@ export default function PageListEdit( {
|
|
|
141
120
|
setAttributes,
|
|
142
121
|
} ) {
|
|
143
122
|
const { parentPageID } = attributes;
|
|
123
|
+
const [ isOpen, setOpen ] = useState( false );
|
|
124
|
+
const openModal = useCallback( () => setOpen( true ), [] );
|
|
125
|
+
const closeModal = () => setOpen( false );
|
|
144
126
|
|
|
145
127
|
const { records: pages, hasResolved: hasResolvedPages } = useEntityRecords(
|
|
146
128
|
'postType',
|
|
@@ -218,7 +200,11 @@ export default function PageListEdit( {
|
|
|
218
200
|
const hasChildren = pagesByParentId.has( page.id );
|
|
219
201
|
const pageProps = {
|
|
220
202
|
id: page.id,
|
|
221
|
-
label:
|
|
203
|
+
label:
|
|
204
|
+
// translators: displayed when a page has an empty title.
|
|
205
|
+
page.title?.rendered?.trim() !== ''
|
|
206
|
+
? page.title?.rendered
|
|
207
|
+
: __( '(no title)' ),
|
|
222
208
|
title: page.title?.rendered,
|
|
223
209
|
link: page.url,
|
|
224
210
|
hasChildren,
|
|
@@ -261,34 +247,69 @@ export default function PageListEdit( {
|
|
|
261
247
|
parentPageID,
|
|
262
248
|
] );
|
|
263
249
|
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
value: blockList,
|
|
272
|
-
} );
|
|
273
|
-
|
|
274
|
-
const { isNested } = useSelect(
|
|
250
|
+
const {
|
|
251
|
+
isNested,
|
|
252
|
+
hasSelectedChild,
|
|
253
|
+
parentBlock,
|
|
254
|
+
hasDraggedChild,
|
|
255
|
+
isChildOfNavigation,
|
|
256
|
+
} = useSelect(
|
|
275
257
|
( select ) => {
|
|
276
|
-
const {
|
|
258
|
+
const {
|
|
259
|
+
getBlockParentsByBlockName,
|
|
260
|
+
hasSelectedInnerBlock,
|
|
261
|
+
getBlockRootClientId,
|
|
262
|
+
hasDraggedInnerBlock,
|
|
263
|
+
} = select( blockEditorStore );
|
|
277
264
|
const blockParents = getBlockParentsByBlockName(
|
|
278
265
|
clientId,
|
|
279
266
|
'core/navigation-submenu',
|
|
280
267
|
true
|
|
281
268
|
);
|
|
269
|
+
const navigationBlockParents = getBlockParentsByBlockName(
|
|
270
|
+
clientId,
|
|
271
|
+
'core/navigation',
|
|
272
|
+
true
|
|
273
|
+
);
|
|
282
274
|
return {
|
|
283
275
|
isNested: blockParents.length > 0,
|
|
276
|
+
isChildOfNavigation: navigationBlockParents.length > 0,
|
|
277
|
+
hasSelectedChild: hasSelectedInnerBlock( clientId, true ),
|
|
278
|
+
hasDraggedChild: hasDraggedInnerBlock( clientId, true ),
|
|
279
|
+
parentBlock: getBlockRootClientId( clientId ),
|
|
284
280
|
};
|
|
285
281
|
},
|
|
286
282
|
[ clientId ]
|
|
287
283
|
);
|
|
288
284
|
|
|
285
|
+
const innerBlocksProps = useInnerBlocksProps( blockProps, {
|
|
286
|
+
allowedBlocks: [ 'core/page-list-item' ],
|
|
287
|
+
renderAppender: false,
|
|
288
|
+
__unstableDisableDropZone: true,
|
|
289
|
+
templateLock: isChildOfNavigation ? false : 'all',
|
|
290
|
+
onInput: NOOP,
|
|
291
|
+
onChange: NOOP,
|
|
292
|
+
value: blockList,
|
|
293
|
+
} );
|
|
294
|
+
|
|
295
|
+
const { selectBlock } = useDispatch( blockEditorStore );
|
|
296
|
+
|
|
297
|
+
useEffect( () => {
|
|
298
|
+
if ( hasSelectedChild || hasDraggedChild ) {
|
|
299
|
+
openModal();
|
|
300
|
+
selectBlock( parentBlock );
|
|
301
|
+
}
|
|
302
|
+
}, [
|
|
303
|
+
hasSelectedChild,
|
|
304
|
+
hasDraggedChild,
|
|
305
|
+
parentBlock,
|
|
306
|
+
selectBlock,
|
|
307
|
+
openModal,
|
|
308
|
+
] );
|
|
309
|
+
|
|
289
310
|
useEffect( () => {
|
|
290
311
|
setAttributes( { isNested } );
|
|
291
|
-
}, [ isNested ] );
|
|
312
|
+
}, [ isNested, setAttributes ] );
|
|
292
313
|
|
|
293
314
|
return (
|
|
294
315
|
<>
|
|
@@ -323,10 +344,23 @@ export default function PageListEdit( {
|
|
|
323
344
|
) }
|
|
324
345
|
</InspectorControls>
|
|
325
346
|
{ allowConvertToLinks && (
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
347
|
+
<>
|
|
348
|
+
<BlockControls group="other">
|
|
349
|
+
<ToolbarButton
|
|
350
|
+
title={ __( 'Edit' ) }
|
|
351
|
+
onClick={ openModal }
|
|
352
|
+
>
|
|
353
|
+
{ __( 'Edit' ) }
|
|
354
|
+
</ToolbarButton>
|
|
355
|
+
</BlockControls>
|
|
356
|
+
{ isOpen && (
|
|
357
|
+
<ConvertToLinksModal
|
|
358
|
+
onClick={ convertToNavigationLinks }
|
|
359
|
+
onClose={ closeModal }
|
|
360
|
+
disabled={ ! hasResolvedPages }
|
|
361
|
+
/>
|
|
362
|
+
) }
|
|
363
|
+
</>
|
|
330
364
|
) }
|
|
331
365
|
<BlockContent
|
|
332
366
|
blockProps={ blockProps }
|
|
@@ -61,3 +61,9 @@
|
|
|
61
61
|
.wp-block-page-list .components-notice {
|
|
62
62
|
margin-left: 0;
|
|
63
63
|
}
|
|
64
|
+
|
|
65
|
+
// Space spinner to give it breathing
|
|
66
|
+
// room when block is selected and has focus outline.
|
|
67
|
+
.wp-block-page-list__loading-indicator-container {
|
|
68
|
+
padding: $grid-unit-10 $grid-unit-15;
|
|
69
|
+
}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
4
|
import classnames from 'classnames';
|
|
5
|
-
|
|
6
5
|
/**
|
|
7
6
|
* WordPress dependencies
|
|
8
7
|
*/
|
|
@@ -36,7 +35,7 @@ function useFrontPageId() {
|
|
|
36
35
|
}
|
|
37
36
|
|
|
38
37
|
export default function PageListItemEdit( { context, attributes } ) {
|
|
39
|
-
const { id, label, link, hasChildren } = attributes;
|
|
38
|
+
const { id, label, link, hasChildren, title } = attributes;
|
|
40
39
|
const isNavigationChild = 'showSubmenuIcon' in context;
|
|
41
40
|
const frontPageId = useFrontPageId();
|
|
42
41
|
|
|
@@ -81,7 +80,7 @@ export default function PageListItemEdit( { context, attributes } ) {
|
|
|
81
80
|
} ) }
|
|
82
81
|
href={ link }
|
|
83
82
|
>
|
|
84
|
-
{ decodeEntities(
|
|
83
|
+
{ decodeEntities( title ) }
|
|
85
84
|
</a>
|
|
86
85
|
) }
|
|
87
86
|
{ hasChildren && (
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Paragraph 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:paragraph -->
|
|
7
|
+
<p>Example text</p>
|
|
8
|
+
<!-- /wp:paragraph --></div>
|
|
9
|
+
<!-- /wp:column --></div>
|
|
10
|
+
<!-- /wp:columns -->"
|
|
11
|
+
`;
|
|
12
|
+
|
|
13
|
+
exports[`Paragraph block transforms to Group block 1`] = `
|
|
14
|
+
"<!-- wp:group {"layout":{"type":"constrained"}} -->
|
|
15
|
+
<div class="wp-block-group"><!-- wp:paragraph -->
|
|
16
|
+
<p>Example text</p>
|
|
17
|
+
<!-- /wp:paragraph --></div>
|
|
18
|
+
<!-- /wp:group -->"
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
exports[`Paragraph block transforms to Heading block 1`] = `
|
|
22
|
+
"<!-- wp:heading -->
|
|
23
|
+
<h2 class="wp-block-heading">Example text</h2>
|
|
24
|
+
<!-- /wp:heading -->"
|
|
25
|
+
`;
|
|
26
|
+
|
|
27
|
+
exports[`Paragraph block transforms to List block 1`] = `
|
|
28
|
+
"<!-- wp:list -->
|
|
29
|
+
<ul><!-- wp:list-item -->
|
|
30
|
+
<li>Example text</li>
|
|
31
|
+
<!-- /wp:list-item --></ul>
|
|
32
|
+
<!-- /wp:list -->"
|
|
33
|
+
`;
|
|
34
|
+
|
|
35
|
+
exports[`Paragraph block transforms to Preformatted block 1`] = `
|
|
36
|
+
"<!-- wp:preformatted -->
|
|
37
|
+
<pre class="wp-block-preformatted">Example text</pre>
|
|
38
|
+
<!-- /wp:preformatted -->"
|
|
39
|
+
`;
|
|
40
|
+
|
|
41
|
+
exports[`Paragraph block transforms to Pullquote block 1`] = `
|
|
42
|
+
"<!-- wp:pullquote -->
|
|
43
|
+
<figure class="wp-block-pullquote"><blockquote><p>Example text</p></blockquote></figure>
|
|
44
|
+
<!-- /wp:pullquote -->"
|
|
45
|
+
`;
|
|
46
|
+
|
|
47
|
+
exports[`Paragraph block transforms to Quote block 1`] = `
|
|
48
|
+
"<!-- wp:quote -->
|
|
49
|
+
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
|
|
50
|
+
<p>Example text</p>
|
|
51
|
+
<!-- /wp:paragraph --></blockquote>
|
|
52
|
+
<!-- /wp:quote -->"
|
|
53
|
+
`;
|
|
54
|
+
|
|
55
|
+
exports[`Paragraph block transforms to Verse block 1`] = `
|
|
56
|
+
"<!-- wp:verse -->
|
|
57
|
+
<pre class="wp-block-verse">Example text</pre>
|
|
58
|
+
<!-- /wp:verse -->"
|
|
59
|
+
`;
|
|
@@ -0,0 +1,50 @@
|
|
|
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 = 'Paragraph';
|
|
13
|
+
const initialHtml = `
|
|
14
|
+
<!-- wp:paragraph -->
|
|
15
|
+
<p>Example text</p>
|
|
16
|
+
<!-- /wp:paragraph -->`;
|
|
17
|
+
|
|
18
|
+
// NOTE: Paragraph block can be transformed to Buttons block in web,
|
|
19
|
+
// however this transform is not supported in the native version.
|
|
20
|
+
const transformsWithInnerBlocks = [ 'List', 'Quote', 'Columns', 'Group' ];
|
|
21
|
+
const blockTransforms = [
|
|
22
|
+
'Heading',
|
|
23
|
+
'Preformatted',
|
|
24
|
+
'Pullquote',
|
|
25
|
+
'Verse',
|
|
26
|
+
...transformsWithInnerBlocks,
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
setupCoreBlocks();
|
|
30
|
+
|
|
31
|
+
describe( `${ block } block transforms`, () => {
|
|
32
|
+
test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
|
|
33
|
+
const screen = await initializeEditor( { initialHtml } );
|
|
34
|
+
const newBlock = await transformBlock( screen, block, blockTransform, {
|
|
35
|
+
hasInnerBlocks:
|
|
36
|
+
transformsWithInnerBlocks.includes( blockTransform ),
|
|
37
|
+
} );
|
|
38
|
+
expect( newBlock ).toBeVisible();
|
|
39
|
+
expect( getEditorHtml() ).toMatchSnapshot();
|
|
40
|
+
} );
|
|
41
|
+
|
|
42
|
+
it( 'matches expected transformation options', async () => {
|
|
43
|
+
const screen = await initializeEditor( { initialHtml } );
|
|
44
|
+
const transformOptions = await getBlockTransformOptions(
|
|
45
|
+
screen,
|
|
46
|
+
block
|
|
47
|
+
);
|
|
48
|
+
expect( transformOptions ).toHaveLength( blockTransforms.length );
|
|
49
|
+
} );
|
|
50
|
+
} );
|
package/src/post-content/edit.js
CHANGED
|
@@ -58,8 +58,12 @@ function EditableContent( { context = {} } ) {
|
|
|
58
58
|
|
|
59
59
|
function Content( props ) {
|
|
60
60
|
const { context: { queryId, postType, postId } = {} } = props;
|
|
61
|
-
const isDescendentOfQueryLoop = Number.isFinite( queryId );
|
|
62
61
|
const userCanEdit = useCanEditEntity( 'postType', postType, postId );
|
|
62
|
+
if ( userCanEdit === undefined ) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const isDescendentOfQueryLoop = Number.isFinite( queryId );
|
|
63
67
|
const isEditable = userCanEdit && ! isDescendentOfQueryLoop;
|
|
64
68
|
|
|
65
69
|
return isEditable ? (
|
|
@@ -84,8 +84,7 @@ add_action( 'init', 'register_block_core_post_excerpt' );
|
|
|
84
84
|
* Returns 100 because 100 is the max length in the setting.
|
|
85
85
|
*/
|
|
86
86
|
if ( is_admin() ||
|
|
87
|
-
defined( 'REST_REQUEST' )
|
|
88
|
-
'REST_REQUEST' ) {
|
|
87
|
+
defined( 'REST_REQUEST' ) && REST_REQUEST ) {
|
|
89
88
|
add_filter(
|
|
90
89
|
'excerpt_length',
|
|
91
90
|
function() {
|
|
@@ -96,10 +96,6 @@ const DimensionControls = ( {
|
|
|
96
96
|
label: __( 'Square' ),
|
|
97
97
|
value: '1',
|
|
98
98
|
},
|
|
99
|
-
{
|
|
100
|
-
label: __( '16:10' ),
|
|
101
|
-
value: '16/10',
|
|
102
|
-
},
|
|
103
99
|
{
|
|
104
100
|
label: __( '16:9' ),
|
|
105
101
|
value: '16/9',
|
|
@@ -112,10 +108,6 @@ const DimensionControls = ( {
|
|
|
112
108
|
label: __( '3:2' ),
|
|
113
109
|
value: '3/2',
|
|
114
110
|
},
|
|
115
|
-
{
|
|
116
|
-
label: __( '10:16' ),
|
|
117
|
-
value: '10/16',
|
|
118
|
-
},
|
|
119
111
|
{
|
|
120
112
|
label: __( '9:16' ),
|
|
121
113
|
value: '9/16',
|
|
@@ -139,7 +139,7 @@ export default function PostFeaturedImageEdit( {
|
|
|
139
139
|
imageSizeOptions={ imageSizeOptions }
|
|
140
140
|
/>
|
|
141
141
|
<InspectorControls>
|
|
142
|
-
<PanelBody title={ __( '
|
|
142
|
+
<PanelBody title={ __( 'Settings' ) }>
|
|
143
143
|
<ToggleControl
|
|
144
144
|
__nextHasNoMarginBottom
|
|
145
145
|
label={
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Preformatted block transforms to Code block 1`] = `
|
|
4
|
+
"<!-- wp:code -->
|
|
5
|
+
<pre class="wp-block-code"><code>Some <em>preformatted</em> text...<br />And more!</code></pre>
|
|
6
|
+
<!-- /wp:code -->"
|
|
7
|
+
`;
|
|
8
|
+
|
|
9
|
+
exports[`Preformatted block transforms to Columns block 1`] = `
|
|
10
|
+
"<!-- wp:columns -->
|
|
11
|
+
<div class="wp-block-columns"><!-- wp:column {"width":"100%"} -->
|
|
12
|
+
<div class="wp-block-column" style="flex-basis:100%"><!-- wp:preformatted -->
|
|
13
|
+
<pre class="wp-block-preformatted">Some <em>preformatted</em> text...<br />And more!</pre>
|
|
14
|
+
<!-- /wp:preformatted --></div>
|
|
15
|
+
<!-- /wp:column --></div>
|
|
16
|
+
<!-- /wp:columns -->"
|
|
17
|
+
`;
|
|
18
|
+
|
|
19
|
+
exports[`Preformatted block transforms to Group block 1`] = `
|
|
20
|
+
"<!-- wp:group {"layout":{"type":"constrained"}} -->
|
|
21
|
+
<div class="wp-block-group"><!-- wp:preformatted -->
|
|
22
|
+
<pre class="wp-block-preformatted">Some <em>preformatted</em> text...<br />And more!</pre>
|
|
23
|
+
<!-- /wp:preformatted --></div>
|
|
24
|
+
<!-- /wp:group -->"
|
|
25
|
+
`;
|
|
26
|
+
|
|
27
|
+
exports[`Preformatted block transforms to Paragraph block 1`] = `
|
|
28
|
+
"<!-- wp:paragraph -->
|
|
29
|
+
<p>Some <em>preformatted</em> text...<br />And more!</p>
|
|
30
|
+
<!-- /wp:paragraph -->"
|
|
31
|
+
`;
|
|
@@ -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 = 'Preformatted';
|
|
13
|
+
const initialHtml = `
|
|
14
|
+
<!-- wp:preformatted -->
|
|
15
|
+
<pre class="wp-block-preformatted">Some <em>preformatted</em> text...<br>And more!</pre>
|
|
16
|
+
<!-- /wp:preformatted -->`;
|
|
17
|
+
|
|
18
|
+
const transformsWithInnerBlocks = [ 'Columns', 'Group' ];
|
|
19
|
+
const blockTransforms = [ 'Paragraph', 'Code', ...transformsWithInnerBlocks ];
|
|
20
|
+
|
|
21
|
+
setupCoreBlocks();
|
|
22
|
+
|
|
23
|
+
describe( `${ block } block transforms`, () => {
|
|
24
|
+
test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
|
|
25
|
+
const screen = await initializeEditor( { initialHtml } );
|
|
26
|
+
const newBlock = await transformBlock( screen, block, blockTransform, {
|
|
27
|
+
hasInnerBlocks:
|
|
28
|
+
transformsWithInnerBlocks.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
|
+
} );
|
|
@@ -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
|
|
@@ -435,11 +434,8 @@ const v2 = {
|
|
|
435
434
|
// Is normal style and a named color is being used, we need to retrieve the color value to set the style,
|
|
436
435
|
// as there is no expectation that themes create classes that set border colors.
|
|
437
436
|
} else if ( mainColor ) {
|
|
438
|
-
const colors =
|
|
439
|
-
select( blockEditorStore ).getSettings()
|
|
440
|
-
[ 'colors' ],
|
|
441
|
-
[]
|
|
442
|
-
);
|
|
437
|
+
const colors =
|
|
438
|
+
select( blockEditorStore ).getSettings().colors ?? [];
|
|
443
439
|
const colorObject = getColorObjectByAttributeValues(
|
|
444
440
|
colors,
|
|
445
441
|
mainColor
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`Pullquote 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:pullquote -->
|
|
7
|
+
<figure class="wp-block-pullquote"><blockquote><p>One of the hardest things to do in technology is disrupt yourself.</p><cite>Matt Mullenweg</cite></blockquote></figure>
|
|
8
|
+
<!-- /wp:pullquote --></div>
|
|
9
|
+
<!-- /wp:column --></div>
|
|
10
|
+
<!-- /wp:columns -->"
|
|
11
|
+
`;
|
|
12
|
+
|
|
13
|
+
exports[`Pullquote block transforms to Group block 1`] = `
|
|
14
|
+
"<!-- wp:group {"layout":{"type":"constrained"}} -->
|
|
15
|
+
<div class="wp-block-group"><!-- wp:pullquote -->
|
|
16
|
+
<figure class="wp-block-pullquote"><blockquote><p>One of the hardest things to do in technology is disrupt yourself.</p><cite>Matt Mullenweg</cite></blockquote></figure>
|
|
17
|
+
<!-- /wp:pullquote --></div>
|
|
18
|
+
<!-- /wp:group -->"
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
exports[`Pullquote block transforms to Heading block 1`] = `
|
|
22
|
+
"<!-- wp:heading -->
|
|
23
|
+
<h2 class="wp-block-heading">One of the hardest things to do in technology is disrupt yourself.</h2>
|
|
24
|
+
<!-- /wp:heading -->
|
|
25
|
+
|
|
26
|
+
<!-- wp:heading -->
|
|
27
|
+
<h2 class="wp-block-heading">Matt Mullenweg</h2>
|
|
28
|
+
<!-- /wp:heading -->"
|
|
29
|
+
`;
|
|
30
|
+
|
|
31
|
+
exports[`Pullquote block transforms to Paragraph block 1`] = `
|
|
32
|
+
"<!-- wp:paragraph -->
|
|
33
|
+
<p>One of the hardest things to do in technology is disrupt yourself.</p>
|
|
34
|
+
<!-- /wp:paragraph -->
|
|
35
|
+
|
|
36
|
+
<!-- wp:paragraph -->
|
|
37
|
+
<p>Matt Mullenweg</p>
|
|
38
|
+
<!-- /wp:paragraph -->"
|
|
39
|
+
`;
|
|
40
|
+
|
|
41
|
+
exports[`Pullquote block transforms to Quote block 1`] = `
|
|
42
|
+
"<!-- wp:quote -->
|
|
43
|
+
<blockquote class="wp-block-quote"><!-- wp:paragraph -->
|
|
44
|
+
<p>One of the hardest things to do in technology is disrupt yourself.</p>
|
|
45
|
+
<!-- /wp:paragraph --><cite>Matt Mullenweg</cite></blockquote>
|
|
46
|
+
<!-- /wp:quote -->"
|
|
47
|
+
`;
|
|
@@ -0,0 +1,46 @@
|
|
|
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 = 'Pullquote';
|
|
13
|
+
const initialHtml = `
|
|
14
|
+
<!-- wp:pullquote -->
|
|
15
|
+
<figure class="wp-block-pullquote"><blockquote><p>One of the hardest things to do in technology is disrupt yourself.</p><cite>Matt Mullenweg</cite></blockquote></figure>
|
|
16
|
+
<!-- /wp:pullquote -->`;
|
|
17
|
+
|
|
18
|
+
const transformsWithInnerBlocks = [ 'Quote', 'Columns', 'Group' ];
|
|
19
|
+
const blockTransforms = [
|
|
20
|
+
'Paragraph',
|
|
21
|
+
'Heading',
|
|
22
|
+
...transformsWithInnerBlocks,
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
setupCoreBlocks();
|
|
26
|
+
|
|
27
|
+
describe( `${ block } block transforms`, () => {
|
|
28
|
+
test.each( blockTransforms )( 'to %s block', async ( blockTransform ) => {
|
|
29
|
+
const screen = await initializeEditor( { initialHtml } );
|
|
30
|
+
const newBlock = await transformBlock( screen, block, blockTransform, {
|
|
31
|
+
hasInnerBlocks:
|
|
32
|
+
transformsWithInnerBlocks.includes( blockTransform ),
|
|
33
|
+
} );
|
|
34
|
+
expect( newBlock ).toBeVisible();
|
|
35
|
+
expect( getEditorHtml() ).toMatchSnapshot();
|
|
36
|
+
} );
|
|
37
|
+
|
|
38
|
+
it( 'matches expected transformation options', async () => {
|
|
39
|
+
const screen = await initializeEditor( { initialHtml } );
|
|
40
|
+
const transformOptions = await getBlockTransformOptions(
|
|
41
|
+
screen,
|
|
42
|
+
block
|
|
43
|
+
);
|
|
44
|
+
expect( transformOptions ).toHaveLength( blockTransforms.length );
|
|
45
|
+
} );
|
|
46
|
+
} );
|
|
@@ -19,7 +19,7 @@ import { __ } from '@wordpress/i18n';
|
|
|
19
19
|
/**
|
|
20
20
|
* Internal dependencies
|
|
21
21
|
*/
|
|
22
|
-
import { useScopedBlockVariations } from '../utils';
|
|
22
|
+
import { useScopedBlockVariations, useBlockNameForPatterns } from '../utils';
|
|
23
23
|
|
|
24
24
|
export default function QueryPlaceholder( {
|
|
25
25
|
attributes,
|
|
@@ -30,6 +30,10 @@ export default function QueryPlaceholder( {
|
|
|
30
30
|
} ) {
|
|
31
31
|
const [ isStartingBlank, setIsStartingBlank ] = useState( false );
|
|
32
32
|
const blockProps = useBlockProps();
|
|
33
|
+
const blockNameForPatterns = useBlockNameForPatterns(
|
|
34
|
+
clientId,
|
|
35
|
+
attributes
|
|
36
|
+
);
|
|
33
37
|
|
|
34
38
|
const { blockType, allVariations, hasPatterns } = useSelect(
|
|
35
39
|
( select ) => {
|
|
@@ -37,15 +41,16 @@ export default function QueryPlaceholder( {
|
|
|
37
41
|
const { getBlockRootClientId, getPatternsByBlockTypes } =
|
|
38
42
|
select( blockEditorStore );
|
|
39
43
|
const rootClientId = getBlockRootClientId( clientId );
|
|
40
|
-
|
|
41
44
|
return {
|
|
42
45
|
blockType: getBlockType( name ),
|
|
43
46
|
allVariations: getBlockVariations( name ),
|
|
44
|
-
hasPatterns: !! getPatternsByBlockTypes(
|
|
45
|
-
|
|
47
|
+
hasPatterns: !! getPatternsByBlockTypes(
|
|
48
|
+
blockNameForPatterns,
|
|
49
|
+
rootClientId
|
|
50
|
+
).length,
|
|
46
51
|
};
|
|
47
52
|
},
|
|
48
|
-
[ name, clientId ]
|
|
53
|
+
[ name, blockNameForPatterns, clientId ]
|
|
49
54
|
);
|
|
50
55
|
|
|
51
56
|
const matchingVariation = getMatchingVariation( attributes, allVariations );
|
package/src/query/test/utils.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Internal dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { terms } from './fixtures';
|
|
5
|
-
import { getEntitiesInfo } from '../utils';
|
|
5
|
+
import { getEntitiesInfo, getValueFromObjectPath } from '../utils';
|
|
6
6
|
|
|
7
7
|
describe( 'Query block utils', () => {
|
|
8
8
|
describe( 'getEntitiesInfo', () => {
|
|
@@ -29,4 +29,36 @@ describe( 'Query block utils', () => {
|
|
|
29
29
|
);
|
|
30
30
|
} );
|
|
31
31
|
} );
|
|
32
|
+
|
|
33
|
+
describe( 'getValueFromObjectPath', () => {
|
|
34
|
+
it( 'should return undefined when path is empty', () => {
|
|
35
|
+
const object = { foo: 'bar' };
|
|
36
|
+
const result = getValueFromObjectPath( object, '' );
|
|
37
|
+
expect( result ).toBeUndefined();
|
|
38
|
+
} );
|
|
39
|
+
|
|
40
|
+
it( 'should return undefined when path does not exist', () => {
|
|
41
|
+
const object = { foo: 'bar' };
|
|
42
|
+
const result = getValueFromObjectPath( object, 'baz' );
|
|
43
|
+
expect( result ).toBeUndefined();
|
|
44
|
+
} );
|
|
45
|
+
|
|
46
|
+
it( 'should return undefined when a deeper path does not exist', () => {
|
|
47
|
+
const object = { foo: { bar: 'baz' } };
|
|
48
|
+
const result = getValueFromObjectPath( object, 'foo.test' );
|
|
49
|
+
expect( result ).toBeUndefined();
|
|
50
|
+
} );
|
|
51
|
+
|
|
52
|
+
it( 'should return the corresponding value of a single level path', () => {
|
|
53
|
+
const object = { foo: 'bar' };
|
|
54
|
+
const result = getValueFromObjectPath( object, 'foo' );
|
|
55
|
+
expect( result ).toBe( 'bar' );
|
|
56
|
+
} );
|
|
57
|
+
|
|
58
|
+
it( 'should return the value of a deeper path', () => {
|
|
59
|
+
const object = { foo: { bar: { baz: 'test' } } };
|
|
60
|
+
const result = getValueFromObjectPath( object, 'foo.bar.baz' );
|
|
61
|
+
expect( result ).toBe( 'test' );
|
|
62
|
+
} );
|
|
63
|
+
} );
|
|
32
64
|
} );
|