@wordpress/block-library 9.27.1-next.46f643fa0.0 → 9.28.1-next.0f6f9d12c.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/accordion-header/edit.js +118 -0
- package/build/accordion-header/edit.js.map +1 -0
- package/build/accordion-header/index.js +124 -0
- package/build/accordion-header/index.js.map +1 -0
- package/build/accordion-header/init.js +12 -0
- package/build/accordion-header/init.js.map +1 -0
- package/build/accordion-header/save.js +81 -0
- package/build/accordion-header/save.js.map +1 -0
- package/build/accordion-item/edit.js +129 -0
- package/build/accordion-item/edit.js.map +1 -0
- package/build/accordion-item/icons.js +30 -0
- package/build/accordion-item/icons.js.map +1 -0
- package/build/accordion-item/index.js +79 -0
- package/build/accordion-item/index.js.map +1 -0
- package/build/accordion-item/init.js +12 -0
- package/build/accordion-item/init.js.map +1 -0
- package/build/accordion-item/save.js +37 -0
- package/build/accordion-item/save.js.map +1 -0
- package/build/accordion-panel/edit.js +59 -0
- package/build/accordion-panel/edit.js.map +1 -0
- package/build/accordion-panel/index.js +108 -0
- package/build/accordion-panel/index.js.map +1 -0
- package/build/accordion-panel/init.js +12 -0
- package/build/accordion-panel/init.js.map +1 -0
- package/build/accordion-panel/save.js +46 -0
- package/build/accordion-panel/save.js.map +1 -0
- package/build/accordions/edit.js +123 -0
- package/build/accordions/edit.js.map +1 -0
- package/build/accordions/index.js +103 -0
- package/build/accordions/index.js.map +1 -0
- package/build/accordions/init.js +12 -0
- package/build/accordions/init.js.map +1 -0
- package/build/accordions/save.js +36 -0
- package/build/accordions/save.js.map +1 -0
- package/build/accordions/view.js +49 -0
- package/build/accordions/view.js.map +1 -0
- package/build/cover/edit/index.js +1 -1
- package/build/cover/edit/index.js.map +1 -1
- package/build/cover/edit/inspector-controls.js +1 -1
- package/build/cover/edit/inspector-controls.js.map +1 -1
- package/build/cover/index.js +2 -1
- package/build/cover/index.js.map +1 -1
- package/build/file/edit.js +4 -2
- package/build/file/edit.js.map +1 -1
- package/build/file/edit.native.js +1 -1
- package/build/file/edit.native.js.map +1 -1
- package/build/file/transforms.js +6 -6
- package/build/file/transforms.js.map +1 -1
- package/build/file/utils/index.js +5 -0
- package/build/file/utils/index.js.map +1 -1
- package/build/freeform/edit.js +6 -0
- package/build/freeform/edit.js.map +1 -1
- package/build/gallery/use-get-media.js +3 -3
- package/build/gallery/use-get-media.js.map +1 -1
- package/build/gallery/use-get-media.native.js +3 -3
- package/build/gallery/use-get-media.native.js.map +1 -1
- package/build/image/edit.native.js +2 -2
- package/build/image/edit.native.js.map +1 -1
- package/build/image/image.js +1 -1
- package/build/image/image.js.map +1 -1
- package/build/index.js +10 -0
- package/build/index.js.map +1 -1
- package/build/list-item/edit.js +3 -0
- package/build/list-item/edit.js.map +1 -1
- package/build/media-text/edit.js +2 -2
- package/build/media-text/edit.js.map +1 -1
- package/build/media-text/media-container.js +2 -1
- package/build/media-text/media-container.js.map +1 -1
- package/build/media-text/transforms.js +7 -3
- package/build/media-text/transforms.js.map +1 -1
- package/build/more/edit.js +13 -28
- package/build/more/edit.js.map +1 -1
- package/build/post-comments-count/index.js +3 -0
- package/build/post-comments-count/index.js.map +1 -1
- package/build/post-comments-link/index.js +3 -0
- package/build/post-comments-link/index.js.map +1 -1
- package/build/post-featured-image/edit.js +2 -2
- package/build/post-featured-image/edit.js.map +1 -1
- package/build/query-title/edit.js +52 -2
- package/build/query-title/edit.js.map +1 -1
- package/build/query-title/index.js +1 -0
- package/build/query-title/index.js.map +1 -1
- package/build/query-title/use-post-type-label.js +42 -0
- package/build/query-title/use-post-type-label.js.map +1 -0
- package/build/query-title/variations.js +10 -0
- package/build/query-title/variations.js.map +1 -1
- package/build/site-logo/edit.js +58 -43
- package/build/site-logo/edit.js.map +1 -1
- package/build/site-title/edit.js +9 -3
- package/build/site-title/edit.js.map +1 -1
- package/build/social-link/icons/tiktok.js +2 -2
- package/build/social-link/icons/tiktok.js.map +1 -1
- package/build/utils/poster-image.js +54 -6
- package/build/utils/poster-image.js.map +1 -1
- package/build-module/accordion-header/edit.js +108 -0
- package/build-module/accordion-header/edit.js.map +1 -0
- package/build-module/accordion-header/index.js +116 -0
- package/build-module/accordion-header/index.js.map +1 -0
- package/build-module/accordion-header/init.js +6 -0
- package/build-module/accordion-header/init.js.map +1 -0
- package/build-module/accordion-header/save.js +71 -0
- package/build-module/accordion-header/save.js.map +1 -0
- package/build-module/accordion-item/edit.js +120 -0
- package/build-module/accordion-item/edit.js.map +1 -0
- package/build-module/accordion-item/icons.js +22 -0
- package/build-module/accordion-item/icons.js.map +1 -0
- package/build-module/accordion-item/index.js +71 -0
- package/build-module/accordion-item/index.js.map +1 -0
- package/build-module/accordion-item/init.js +6 -0
- package/build-module/accordion-item/init.js.map +1 -0
- package/build-module/accordion-item/save.js +28 -0
- package/build-module/accordion-item/save.js.map +1 -0
- package/build-module/accordion-panel/edit.js +50 -0
- package/build-module/accordion-panel/edit.js.map +1 -0
- package/build-module/accordion-panel/index.js +100 -0
- package/build-module/accordion-panel/index.js.map +1 -0
- package/build-module/accordion-panel/init.js +6 -0
- package/build-module/accordion-panel/init.js.map +1 -0
- package/build-module/accordion-panel/save.js +37 -0
- package/build-module/accordion-panel/save.js.map +1 -0
- package/build-module/accordions/edit.js +116 -0
- package/build-module/accordions/edit.js.map +1 -0
- package/build-module/accordions/index.js +95 -0
- package/build-module/accordions/index.js.map +1 -0
- package/build-module/accordions/init.js +6 -0
- package/build-module/accordions/init.js.map +1 -0
- package/build-module/accordions/save.js +27 -0
- package/build-module/accordions/save.js.map +1 -0
- package/build-module/accordions/view.js +46 -0
- package/build-module/accordions/view.js.map +1 -0
- package/build-module/cover/edit/index.js +1 -1
- package/build-module/cover/edit/index.js.map +1 -1
- package/build-module/cover/edit/inspector-controls.js +1 -1
- package/build-module/cover/edit/inspector-controls.js.map +1 -1
- package/build-module/cover/index.js +2 -1
- package/build-module/cover/index.js.map +1 -1
- package/build-module/file/edit.js +4 -2
- package/build-module/file/edit.js.map +1 -1
- package/build-module/file/edit.native.js +1 -1
- package/build-module/file/edit.native.js.map +1 -1
- package/build-module/file/transforms.js +6 -6
- package/build-module/file/transforms.js.map +1 -1
- package/build-module/file/utils/index.js +5 -0
- package/build-module/file/utils/index.js.map +1 -1
- package/build-module/freeform/edit.js +6 -0
- package/build-module/freeform/edit.js.map +1 -1
- package/build-module/gallery/use-get-media.js +3 -3
- package/build-module/gallery/use-get-media.js.map +1 -1
- package/build-module/gallery/use-get-media.native.js +3 -3
- package/build-module/gallery/use-get-media.native.js.map +1 -1
- package/build-module/image/edit.native.js +2 -2
- package/build-module/image/edit.native.js.map +1 -1
- package/build-module/image/image.js +1 -1
- package/build-module/image/image.js.map +1 -1
- package/build-module/index.js +10 -0
- package/build-module/index.js.map +1 -1
- package/build-module/list-item/edit.js +3 -0
- package/build-module/list-item/edit.js.map +1 -1
- package/build-module/media-text/edit.js +2 -2
- package/build-module/media-text/edit.js.map +1 -1
- package/build-module/media-text/media-container.js +2 -1
- package/build-module/media-text/media-container.js.map +1 -1
- package/build-module/media-text/transforms.js +7 -3
- package/build-module/media-text/transforms.js.map +1 -1
- package/build-module/more/edit.js +15 -29
- package/build-module/more/edit.js.map +1 -1
- package/build-module/post-comments-count/index.js +3 -0
- package/build-module/post-comments-count/index.js.map +1 -1
- package/build-module/post-comments-link/index.js +3 -0
- package/build-module/post-comments-link/index.js.map +1 -1
- package/build-module/post-featured-image/edit.js +2 -2
- package/build-module/post-featured-image/edit.js.map +1 -1
- package/build-module/query-title/edit.js +52 -2
- package/build-module/query-title/edit.js.map +1 -1
- package/build-module/query-title/index.js +1 -0
- package/build-module/query-title/index.js.map +1 -1
- package/build-module/query-title/use-post-type-label.js +36 -0
- package/build-module/query-title/use-post-type-label.js.map +1 -0
- package/build-module/query-title/variations.js +10 -0
- package/build-module/query-title/variations.js.map +1 -1
- package/build-module/site-logo/edit.js +59 -44
- package/build-module/site-logo/edit.js.map +1 -1
- package/build-module/site-title/edit.js +10 -4
- package/build-module/site-title/edit.js.map +1 -1
- package/build-module/social-link/icons/tiktok.js +2 -2
- package/build-module/social-link/icons/tiktok.js.map +1 -1
- package/build-module/utils/poster-image.js +57 -9
- package/build-module/utils/poster-image.js.map +1 -1
- package/build-style/accordions/style-rtl.css +223 -0
- package/build-style/accordions/style.css +223 -0
- package/build-style/editor-rtl.css +23 -26
- package/build-style/editor.css +23 -26
- package/build-style/gallery/style-rtl.css +1 -2
- package/build-style/gallery/style.css +1 -2
- package/build-style/image/style-rtl.css +1 -2
- package/build-style/image/style.css +1 -2
- package/build-style/more/editor-rtl.css +3 -11
- package/build-style/more/editor.css +3 -11
- package/build-style/post-featured-image/editor-rtl.css +1 -2
- package/build-style/post-featured-image/editor.css +1 -2
- package/build-style/style-rtl.css +90 -4
- package/build-style/style.css +90 -4
- package/package.json +36 -35
- package/src/accordion-header/block.json +93 -0
- package/src/accordion-header/edit.js +128 -0
- package/src/accordion-header/index.js +24 -0
- package/src/accordion-header/init.js +6 -0
- package/src/accordion-header/save.js +79 -0
- package/src/accordion-item/block.json +45 -0
- package/src/accordion-item/edit.js +149 -0
- package/src/accordion-item/icons.js +23 -0
- package/src/accordion-item/index.js +24 -0
- package/src/accordion-item/index.php +73 -0
- package/src/accordion-item/init.js +6 -0
- package/src/accordion-item/save.js +25 -0
- package/src/accordion-panel/block.json +74 -0
- package/src/accordion-panel/edit.js +61 -0
- package/src/accordion-panel/index.js +24 -0
- package/src/accordion-panel/init.js +6 -0
- package/src/accordion-panel/save.js +51 -0
- package/src/accordions/block.json +69 -0
- package/src/accordions/edit.js +133 -0
- package/src/accordions/index.js +24 -0
- package/src/accordions/index.php +61 -0
- package/src/accordions/init.js +6 -0
- package/src/accordions/save.js +23 -0
- package/src/accordions/style.scss +91 -0
- package/src/accordions/view.js +38 -0
- package/src/block/index.php +35 -20
- package/src/cover/block.json +2 -1
- package/src/cover/edit/index.js +8 -3
- package/src/cover/edit/inspector-controls.js +6 -1
- package/src/file/edit.js +9 -4
- package/src/file/edit.native.js +5 -1
- package/src/file/index.php +28 -22
- package/src/file/transforms.js +6 -6
- package/src/file/utils/index.js +5 -0
- package/src/form-input/index.php +4 -2
- package/src/freeform/edit.js +7 -0
- package/src/gallery/use-get-media.js +9 -5
- package/src/gallery/use-get-media.native.js +10 -6
- package/src/image/edit.native.js +4 -2
- package/src/image/image.js +6 -1
- package/src/image/index.php +1 -1
- package/src/image/test/edit.native.js +16 -10
- package/src/index.js +12 -0
- package/src/list-item/edit.js +3 -0
- package/src/loginout/index.php +4 -2
- package/src/media-text/edit.js +16 -6
- package/src/media-text/media-container.js +1 -0
- package/src/media-text/transforms.js +5 -1
- package/src/more/edit.js +27 -33
- package/src/more/editor.scss +3 -12
- package/src/post-comments-count/block.json +3 -0
- package/src/post-comments-link/block.json +3 -0
- package/src/post-date/index.php +28 -32
- package/src/post-excerpt/index.php +16 -12
- package/src/post-featured-image/edit.js +2 -2
- package/src/query-title/block.json +1 -0
- package/src/query-title/edit.js +58 -1
- package/src/query-title/index.php +30 -5
- package/src/query-title/use-post-type-label.js +34 -0
- package/src/query-title/variations.js +13 -0
- package/src/site-logo/edit.js +44 -16
- package/src/site-title/edit.js +24 -16
- package/src/social-link/icons/tiktok.js +2 -2
- package/src/social-link/index.php +1 -1
- package/src/style.scss +1 -0
- package/src/utils/poster-image.js +62 -17
- package/src/utils/poster-image.scss +23 -16
package/src/file/transforms.js
CHANGED
|
@@ -104,8 +104,8 @@ const transforms = {
|
|
|
104
104
|
if ( ! id ) {
|
|
105
105
|
return false;
|
|
106
106
|
}
|
|
107
|
-
const {
|
|
108
|
-
const media =
|
|
107
|
+
const { getEntityRecord } = select( coreStore );
|
|
108
|
+
const media = getEntityRecord( 'postType', 'attachment', id );
|
|
109
109
|
return !! media && media.mime_type.includes( 'audio' );
|
|
110
110
|
},
|
|
111
111
|
transform: ( attributes ) => {
|
|
@@ -124,8 +124,8 @@ const transforms = {
|
|
|
124
124
|
if ( ! id ) {
|
|
125
125
|
return false;
|
|
126
126
|
}
|
|
127
|
-
const {
|
|
128
|
-
const media =
|
|
127
|
+
const { getEntityRecord } = select( coreStore );
|
|
128
|
+
const media = getEntityRecord( 'postType', 'attachment', id );
|
|
129
129
|
return !! media && media.mime_type.includes( 'video' );
|
|
130
130
|
},
|
|
131
131
|
transform: ( attributes ) => {
|
|
@@ -144,8 +144,8 @@ const transforms = {
|
|
|
144
144
|
if ( ! id ) {
|
|
145
145
|
return false;
|
|
146
146
|
}
|
|
147
|
-
const {
|
|
148
|
-
const media =
|
|
147
|
+
const { getEntityRecord } = select( coreStore );
|
|
148
|
+
const media = getEntityRecord( 'postType', 'attachment', id );
|
|
149
149
|
return !! media && media.mime_type.includes( 'image' );
|
|
150
150
|
},
|
|
151
151
|
transform: ( attributes ) => {
|
package/src/file/utils/index.js
CHANGED
|
@@ -5,6 +5,11 @@
|
|
|
5
5
|
* @return {boolean} Whether or not the browser supports inline PDFs.
|
|
6
6
|
*/
|
|
7
7
|
export const browserSupportsPdfs = () => {
|
|
8
|
+
// Use native feature detection if available.
|
|
9
|
+
if ( window.navigator.pdfViewerEnabled ) {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
|
|
8
13
|
// Most mobile devices include "Mobi" in their UA.
|
|
9
14
|
if ( window.navigator.userAgent.indexOf( 'Mobi' ) > -1 ) {
|
|
10
15
|
return false;
|
package/src/form-input/index.php
CHANGED
|
@@ -19,10 +19,12 @@ function render_block_core_form_input( $attributes, $content ) {
|
|
|
19
19
|
$visibility_permissions = $attributes['visibilityPermissions'];
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
$user_logged_in = is_user_logged_in();
|
|
23
|
+
|
|
24
|
+
if ( 'logged-in' === $visibility_permissions && ! $user_logged_in ) {
|
|
23
25
|
return '';
|
|
24
26
|
}
|
|
25
|
-
if ( 'logged-out' === $visibility_permissions &&
|
|
27
|
+
if ( 'logged-out' === $visibility_permissions && $user_logged_in ) {
|
|
26
28
|
return '';
|
|
27
29
|
}
|
|
28
30
|
return $content;
|
package/src/freeform/edit.js
CHANGED
|
@@ -188,6 +188,13 @@ function ClassicEdit( {
|
|
|
188
188
|
}
|
|
189
189
|
} );
|
|
190
190
|
|
|
191
|
+
editor.on( 'paste', ( event ) => {
|
|
192
|
+
// TinyMCE selection isn’t synced with the block editor selection store.
|
|
193
|
+
// This event handler prevents paste from bubbling so the useClipboardHandler
|
|
194
|
+
// won’t replace the block.
|
|
195
|
+
event.stopPropagation();
|
|
196
|
+
} );
|
|
197
|
+
|
|
191
198
|
editor.on( 'init', () => {
|
|
192
199
|
const rootNode = editor.getBody();
|
|
193
200
|
|
|
@@ -26,11 +26,15 @@ export default function useGetMedia( innerBlockImages ) {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
return (
|
|
29
|
-
select( coreStore ).
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
select( coreStore ).getEntityRecords(
|
|
30
|
+
'postType',
|
|
31
|
+
'attachment',
|
|
32
|
+
{
|
|
33
|
+
include: imageIds.join( ',' ),
|
|
34
|
+
per_page: -1,
|
|
35
|
+
orderby: 'include',
|
|
36
|
+
}
|
|
37
|
+
) ?? EMPTY_IMAGE_MEDIA
|
|
34
38
|
);
|
|
35
39
|
},
|
|
36
40
|
[ innerBlockImages ]
|
|
@@ -32,12 +32,16 @@ export default function useGetMedia( innerBlockImages = [] ) {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
return (
|
|
35
|
-
select( coreStore ).
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
select( coreStore ).getEntityRecords(
|
|
36
|
+
'postType',
|
|
37
|
+
'attachment',
|
|
38
|
+
{
|
|
39
|
+
include: imageIds.join( ',' ),
|
|
40
|
+
per_page:
|
|
41
|
+
imageIds.length /* 'hard' limit necessary as unbounded queries aren't supported on native */,
|
|
42
|
+
orderby: 'include',
|
|
43
|
+
}
|
|
44
|
+
) ?? EMPTY_IMAGE_MEDIA
|
|
41
45
|
);
|
|
42
46
|
},
|
|
43
47
|
[ innerBlockImages ]
|
package/src/image/edit.native.js
CHANGED
|
@@ -905,7 +905,7 @@ export class ImageEdit extends Component {
|
|
|
905
905
|
|
|
906
906
|
export default compose( [
|
|
907
907
|
withSelect( ( select, props ) => {
|
|
908
|
-
const {
|
|
908
|
+
const { getEntityRecord } = select( coreStore );
|
|
909
909
|
const { getSettings, wasBlockJustInserted } =
|
|
910
910
|
select( blockEditorStore );
|
|
911
911
|
const { getEditedPostAttribute } = select( 'core/editor' );
|
|
@@ -926,7 +926,9 @@ export default compose( [
|
|
|
926
926
|
isNotFileUrl &&
|
|
927
927
|
url &&
|
|
928
928
|
! hasQueryArg( url, 'w' ) );
|
|
929
|
-
const image = shouldGetMedia
|
|
929
|
+
const image = shouldGetMedia
|
|
930
|
+
? getEntityRecord( 'postType', 'attachment', id )
|
|
931
|
+
: null;
|
|
930
932
|
|
|
931
933
|
return {
|
|
932
934
|
image,
|
package/src/image/image.js
CHANGED
|
@@ -306,7 +306,12 @@ export default function Image( {
|
|
|
306
306
|
const image = useSelect(
|
|
307
307
|
( select ) =>
|
|
308
308
|
id && isSingleSelected
|
|
309
|
-
? select( coreStore ).
|
|
309
|
+
? select( coreStore ).getEntityRecord(
|
|
310
|
+
'postType',
|
|
311
|
+
'attachment',
|
|
312
|
+
id,
|
|
313
|
+
{ context: 'view' }
|
|
314
|
+
)
|
|
310
315
|
: null,
|
|
311
316
|
[ id, isSingleSelected ]
|
|
312
317
|
);
|
package/src/image/index.php
CHANGED
|
@@ -100,7 +100,7 @@ function render_block_core_image( $attributes, $content, $block ) {
|
|
|
100
100
|
*
|
|
101
101
|
* @param array $block Block data.
|
|
102
102
|
*
|
|
103
|
-
* @return array Filtered block data.
|
|
103
|
+
* @return array|null Filtered block data.
|
|
104
104
|
*/
|
|
105
105
|
function block_core_image_get_lightbox_settings( $block ) {
|
|
106
106
|
// Gets the lightbox setting from the block attributes.
|
|
@@ -42,7 +42,9 @@ sendMediaUpload.mockImplementation( ( payload ) => {
|
|
|
42
42
|
} );
|
|
43
43
|
|
|
44
44
|
function mockGetMedia( media ) {
|
|
45
|
-
jest.spyOn( select( coreStore ), '
|
|
45
|
+
jest.spyOn( select( coreStore ), 'getEntityRecord' ).mockReturnValue(
|
|
46
|
+
media
|
|
47
|
+
);
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
const FETCH_MEDIA = {
|
|
@@ -71,8 +73,12 @@ beforeEach( () => {
|
|
|
71
73
|
// Mock media fetch requests
|
|
72
74
|
setupApiFetch( [ FETCH_MEDIA ] );
|
|
73
75
|
|
|
74
|
-
// Invalidate `
|
|
75
|
-
dispatch( coreStore ).
|
|
76
|
+
// Invalidate `getEntityRecord` resolutions to allow requesting to the API the same media id
|
|
77
|
+
dispatch( coreStore ).invalidateResolution( 'getEntityRecord', [
|
|
78
|
+
'postType',
|
|
79
|
+
'attachment',
|
|
80
|
+
1,
|
|
81
|
+
] );
|
|
76
82
|
} );
|
|
77
83
|
|
|
78
84
|
afterEach( () => {
|
|
@@ -99,7 +105,7 @@ describe( 'Image Block', () => {
|
|
|
99
105
|
<figcaption class="wp-element-caption">Mountain</figcaption></figure>
|
|
100
106
|
<!-- /wp:image -->`;
|
|
101
107
|
const screen = await initializeEditor( { initialHtml } );
|
|
102
|
-
// Check that image is fetched via `
|
|
108
|
+
// Check that image is fetched via `getEntityRecord`
|
|
103
109
|
expect( apiFetch ).toHaveBeenCalledWith( FETCH_MEDIA.request );
|
|
104
110
|
|
|
105
111
|
const [ imageBlock ] = screen.getAllByLabelText( /Image Block/ );
|
|
@@ -126,7 +132,7 @@ describe( 'Image Block', () => {
|
|
|
126
132
|
<figcaption class="wp-element-caption">Mountain</figcaption></figure>
|
|
127
133
|
<!-- /wp:image -->`;
|
|
128
134
|
const screen = await initializeEditor( { initialHtml } );
|
|
129
|
-
// Check that image is fetched via `
|
|
135
|
+
// Check that image is fetched via `getEntityRecord`
|
|
130
136
|
expect( apiFetch ).toHaveBeenCalledWith( FETCH_MEDIA.request );
|
|
131
137
|
|
|
132
138
|
const [ imageBlock ] = screen.getAllByLabelText( /Image Block/ );
|
|
@@ -153,7 +159,7 @@ describe( 'Image Block', () => {
|
|
|
153
159
|
<figcaption class="wp-element-caption">Mountain</figcaption></figure>
|
|
154
160
|
<!-- /wp:image -->`;
|
|
155
161
|
const screen = await initializeEditor( { initialHtml } );
|
|
156
|
-
// Check that image is fetched via `
|
|
162
|
+
// Check that image is fetched via `getEntityRecord`
|
|
157
163
|
expect( apiFetch ).toHaveBeenCalledWith( FETCH_MEDIA.request );
|
|
158
164
|
|
|
159
165
|
const [ imageBlock ] = screen.getAllByLabelText( /Image Block/ );
|
|
@@ -190,7 +196,7 @@ describe( 'Image Block', () => {
|
|
|
190
196
|
<figcaption class="wp-element-caption">Mountain</figcaption></figure>
|
|
191
197
|
<!-- /wp:image -->`;
|
|
192
198
|
const screen = await initializeEditor( { initialHtml } );
|
|
193
|
-
// Check that image is fetched via `
|
|
199
|
+
// Check that image is fetched via `getEntityRecord`
|
|
194
200
|
expect( apiFetch ).toHaveBeenCalledWith( FETCH_MEDIA.request );
|
|
195
201
|
|
|
196
202
|
const [ imageBlock ] = screen.getAllByLabelText( /Image Block/ );
|
|
@@ -223,7 +229,7 @@ describe( 'Image Block', () => {
|
|
|
223
229
|
<figcaption class="wp-element-caption">Mountain</figcaption></figure>
|
|
224
230
|
<!-- /wp:image -->`;
|
|
225
231
|
const screen = await initializeEditor( { initialHtml } );
|
|
226
|
-
// Check that image is not fetched via `
|
|
232
|
+
// Check that image is not fetched via `getEntityRecord` due to the presence of query parameters in the URL.
|
|
227
233
|
expect( apiFetch ).not.toHaveBeenCalledWith( FETCH_MEDIA.request );
|
|
228
234
|
|
|
229
235
|
const [ imageBlock ] = screen.getAllByLabelText( /Image Block/ );
|
|
@@ -248,7 +254,7 @@ describe( 'Image Block', () => {
|
|
|
248
254
|
<figcaption class="wp-element-caption">Mountain</figcaption></figure>
|
|
249
255
|
<!-- /wp:image -->`;
|
|
250
256
|
const screen = await initializeEditor( { initialHtml } );
|
|
251
|
-
// Check that image is fetched via `
|
|
257
|
+
// Check that image is fetched via `getEntityRecord`
|
|
252
258
|
expect( apiFetch ).toHaveBeenCalledWith( FETCH_MEDIA.request );
|
|
253
259
|
|
|
254
260
|
const [ imageBlock ] = screen.getAllByLabelText( /Image Block/ );
|
|
@@ -279,7 +285,7 @@ describe( 'Image Block', () => {
|
|
|
279
285
|
</figure>
|
|
280
286
|
<!-- /wp:image -->`;
|
|
281
287
|
const screen = await initializeEditor( { initialHtml } );
|
|
282
|
-
// Check that image is fetched via `
|
|
288
|
+
// Check that image is fetched via `getEntityRecord`
|
|
283
289
|
expect( apiFetch ).toHaveBeenCalledWith( FETCH_MEDIA.request );
|
|
284
290
|
|
|
285
291
|
const [ imageBlock ] = screen.getAllByLabelText( /Image Block/ );
|
package/src/index.js
CHANGED
|
@@ -20,6 +20,10 @@ import {
|
|
|
20
20
|
// production build to make the final bundle smaller.
|
|
21
21
|
//
|
|
22
22
|
// See https://github.com/WordPress/gutenberg/pull/40655 for more context.
|
|
23
|
+
import * as accordions from './accordions';
|
|
24
|
+
import * as accordionItem from './accordion-item';
|
|
25
|
+
import * as accordionHeader from './accordion-header';
|
|
26
|
+
import * as accordionPanel from './accordion-panel';
|
|
23
27
|
import * as archives from './archives';
|
|
24
28
|
import * as avatar from './avatar';
|
|
25
29
|
import * as audio from './audio';
|
|
@@ -234,6 +238,14 @@ const getAllBlocks = () => {
|
|
|
234
238
|
queryTitle,
|
|
235
239
|
postAuthorBiography,
|
|
236
240
|
];
|
|
241
|
+
|
|
242
|
+
if ( window?.__experimentalEnableBlockExperiments ) {
|
|
243
|
+
blocks.push( accordions );
|
|
244
|
+
blocks.push( accordionItem );
|
|
245
|
+
blocks.push( accordionHeader );
|
|
246
|
+
blocks.push( accordionPanel );
|
|
247
|
+
}
|
|
248
|
+
|
|
237
249
|
if ( window?.__experimentalEnableFormBlocks ) {
|
|
238
250
|
blocks.push( form );
|
|
239
251
|
blocks.push( formInput );
|
package/src/list-item/edit.js
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
} from '@wordpress/icons';
|
|
19
19
|
import { useMergeRefs } from '@wordpress/compose';
|
|
20
20
|
import { useSelect } from '@wordpress/data';
|
|
21
|
+
import { displayShortcut } from '@wordpress/keycodes';
|
|
21
22
|
|
|
22
23
|
/**
|
|
23
24
|
* Internal dependencies
|
|
@@ -53,6 +54,7 @@ export function IndentUI( { clientId } ) {
|
|
|
53
54
|
<ToolbarButton
|
|
54
55
|
icon={ isRTL() ? formatOutdentRTL : formatOutdent }
|
|
55
56
|
title={ __( 'Outdent' ) }
|
|
57
|
+
shortcut={ displayShortcut.shift( 'Tab' ) }
|
|
56
58
|
description={ __( 'Outdent list item' ) }
|
|
57
59
|
disabled={ ! canOutdent }
|
|
58
60
|
onClick={ () => outdentListItem() }
|
|
@@ -60,6 +62,7 @@ export function IndentUI( { clientId } ) {
|
|
|
60
62
|
<ToolbarButton
|
|
61
63
|
icon={ isRTL() ? formatIndentRTL : formatIndent }
|
|
62
64
|
title={ __( 'Indent' ) }
|
|
65
|
+
shortcut="Tab"
|
|
63
66
|
description={ __( 'Indent list item' ) }
|
|
64
67
|
disabled={ ! canIndent }
|
|
65
68
|
onClick={ () => indentListItem() }
|
package/src/loginout/index.php
CHANGED
|
@@ -23,14 +23,16 @@ function render_block_core_loginout( $attributes ) {
|
|
|
23
23
|
*/
|
|
24
24
|
$current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
|
25
25
|
|
|
26
|
-
$
|
|
26
|
+
$user_logged_in = is_user_logged_in();
|
|
27
|
+
|
|
28
|
+
$classes = $user_logged_in ? 'logged-in' : 'logged-out';
|
|
27
29
|
$contents = wp_loginout(
|
|
28
30
|
isset( $attributes['redirectToCurrent'] ) && $attributes['redirectToCurrent'] ? $current_url : '',
|
|
29
31
|
false
|
|
30
32
|
);
|
|
31
33
|
|
|
32
34
|
// If logged-out and displayLoginAsForm is true, show the login form.
|
|
33
|
-
if ( !
|
|
35
|
+
if ( ! $user_logged_in && ! empty( $attributes['displayLoginAsForm'] ) ) {
|
|
34
36
|
// Add a class.
|
|
35
37
|
$classes .= ' has-login-form';
|
|
36
38
|
|
package/src/media-text/edit.js
CHANGED
|
@@ -199,9 +199,14 @@ function MediaTextEdit( {
|
|
|
199
199
|
return {
|
|
200
200
|
featuredImageMedia:
|
|
201
201
|
featuredImage && useFeaturedImage
|
|
202
|
-
? select( coreStore ).
|
|
203
|
-
|
|
204
|
-
|
|
202
|
+
? select( coreStore ).getEntityRecord(
|
|
203
|
+
'postType',
|
|
204
|
+
'attachment',
|
|
205
|
+
featuredImage,
|
|
206
|
+
{
|
|
207
|
+
context: 'view',
|
|
208
|
+
}
|
|
209
|
+
)
|
|
205
210
|
: undefined,
|
|
206
211
|
};
|
|
207
212
|
},
|
|
@@ -213,9 +218,14 @@ function MediaTextEdit( {
|
|
|
213
218
|
return {
|
|
214
219
|
image:
|
|
215
220
|
mediaId && isSelected
|
|
216
|
-
? select( coreStore ).
|
|
217
|
-
|
|
218
|
-
|
|
221
|
+
? select( coreStore ).getEntityRecord(
|
|
222
|
+
'postType',
|
|
223
|
+
'attachment',
|
|
224
|
+
mediaId,
|
|
225
|
+
{
|
|
226
|
+
context: 'view',
|
|
227
|
+
}
|
|
228
|
+
)
|
|
219
229
|
: null,
|
|
220
230
|
};
|
|
221
231
|
},
|
|
@@ -200,6 +200,7 @@ function MediaContainer( props, ref ) {
|
|
|
200
200
|
}
|
|
201
201
|
mediaId={ mediaId }
|
|
202
202
|
toggleUseFeaturedImage={ toggleUseFeaturedImage }
|
|
203
|
+
useFeaturedImage={ useFeaturedImage }
|
|
203
204
|
/>
|
|
204
205
|
{ ( mediaTypeRenderers[ mediaType ] || noop )() }
|
|
205
206
|
{ isTemporaryMedia && <Spinner /> }
|
|
@@ -45,6 +45,7 @@ const transforms = {
|
|
|
45
45
|
style,
|
|
46
46
|
textColor,
|
|
47
47
|
url,
|
|
48
|
+
useFeaturedImage,
|
|
48
49
|
},
|
|
49
50
|
innerBlocks
|
|
50
51
|
) => {
|
|
@@ -90,6 +91,7 @@ const transforms = {
|
|
|
90
91
|
mediaType: backgroundType,
|
|
91
92
|
mediaUrl: url,
|
|
92
93
|
textColor,
|
|
94
|
+
useFeaturedImage,
|
|
93
95
|
...additionalAttributes,
|
|
94
96
|
},
|
|
95
97
|
innerBlocks
|
|
@@ -143,6 +145,7 @@ const transforms = {
|
|
|
143
145
|
mediaUrl,
|
|
144
146
|
style,
|
|
145
147
|
textColor,
|
|
148
|
+
useFeaturedImage,
|
|
146
149
|
},
|
|
147
150
|
innerBlocks
|
|
148
151
|
) => {
|
|
@@ -169,13 +172,14 @@ const transforms = {
|
|
|
169
172
|
alt: mediaAlt,
|
|
170
173
|
anchor,
|
|
171
174
|
backgroundType: mediaType,
|
|
172
|
-
dimRatio: !! mediaUrl ? 50 : 100,
|
|
175
|
+
dimRatio: !! mediaUrl || useFeaturedImage ? 50 : 100,
|
|
173
176
|
focalPoint,
|
|
174
177
|
gradient,
|
|
175
178
|
id: mediaId,
|
|
176
179
|
overlayColor: backgroundColor,
|
|
177
180
|
textColor,
|
|
178
181
|
url: mediaUrl,
|
|
182
|
+
useFeaturedImage,
|
|
179
183
|
...additionalAttributes,
|
|
180
184
|
};
|
|
181
185
|
|
package/src/more/edit.js
CHANGED
|
@@ -7,9 +7,13 @@ import {
|
|
|
7
7
|
__experimentalToolsPanelItem as ToolsPanelItem,
|
|
8
8
|
ToggleControl,
|
|
9
9
|
} from '@wordpress/components';
|
|
10
|
-
import {
|
|
11
|
-
|
|
10
|
+
import {
|
|
11
|
+
InspectorControls,
|
|
12
|
+
PlainText,
|
|
13
|
+
useBlockProps,
|
|
14
|
+
} from '@wordpress/block-editor';
|
|
12
15
|
import { getDefaultBlockName, createBlock } from '@wordpress/blocks';
|
|
16
|
+
|
|
13
17
|
/**
|
|
14
18
|
* Internal dependencies
|
|
15
19
|
*/
|
|
@@ -22,29 +26,6 @@ export default function MoreEdit( {
|
|
|
22
26
|
insertBlocksAfter,
|
|
23
27
|
setAttributes,
|
|
24
28
|
} ) {
|
|
25
|
-
const onChangeInput = ( event ) => {
|
|
26
|
-
setAttributes( {
|
|
27
|
-
customText: event.target.value,
|
|
28
|
-
} );
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const onKeyDown = ( { keyCode } ) => {
|
|
32
|
-
if ( keyCode === ENTER ) {
|
|
33
|
-
insertBlocksAfter( [ createBlock( getDefaultBlockName() ) ] );
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
const getHideExcerptHelp = ( checked ) =>
|
|
38
|
-
checked
|
|
39
|
-
? __( 'The excerpt is hidden.' )
|
|
40
|
-
: __( 'The excerpt is visible.' );
|
|
41
|
-
|
|
42
|
-
const toggleHideExcerpt = () => setAttributes( { noTeaser: ! noTeaser } );
|
|
43
|
-
|
|
44
|
-
const style = {
|
|
45
|
-
width: `${ ( customText ? customText : DEFAULT_TEXT ).length + 1.2 }em`,
|
|
46
|
-
};
|
|
47
|
-
|
|
48
29
|
const dropdownMenuProps = useToolsPanelDropdownMenuProps();
|
|
49
30
|
|
|
50
31
|
return (
|
|
@@ -73,21 +54,34 @@ export default function MoreEdit( {
|
|
|
73
54
|
'Hide the excerpt on the full content page'
|
|
74
55
|
) }
|
|
75
56
|
checked={ !! noTeaser }
|
|
76
|
-
onChange={
|
|
77
|
-
|
|
57
|
+
onChange={ () =>
|
|
58
|
+
setAttributes( { noTeaser: ! noTeaser } )
|
|
59
|
+
}
|
|
60
|
+
help={ ( checked ) =>
|
|
61
|
+
checked
|
|
62
|
+
? __( 'The excerpt is hidden.' )
|
|
63
|
+
: __( 'The excerpt is visible.' )
|
|
64
|
+
}
|
|
78
65
|
/>
|
|
79
66
|
</ToolsPanelItem>
|
|
80
67
|
</ToolsPanel>
|
|
81
68
|
</InspectorControls>
|
|
82
69
|
<div { ...useBlockProps() }>
|
|
83
|
-
<
|
|
84
|
-
|
|
85
|
-
|
|
70
|
+
<PlainText
|
|
71
|
+
__experimentalVersion={ 2 }
|
|
72
|
+
tagName="span"
|
|
73
|
+
aria-label={ __( '"Read more" text' ) }
|
|
86
74
|
value={ customText }
|
|
87
75
|
placeholder={ DEFAULT_TEXT }
|
|
88
|
-
onChange={
|
|
89
|
-
|
|
90
|
-
|
|
76
|
+
onChange={ ( value ) =>
|
|
77
|
+
setAttributes( { customText: value } )
|
|
78
|
+
}
|
|
79
|
+
disableLineBreaks
|
|
80
|
+
__unstableOnSplitAtEnd={ () =>
|
|
81
|
+
insertBlocksAfter(
|
|
82
|
+
createBlock( getDefaultBlockName() )
|
|
83
|
+
)
|
|
84
|
+
}
|
|
91
85
|
/>
|
|
92
86
|
</div>
|
|
93
87
|
</>
|
package/src/more/editor.scss
CHANGED
|
@@ -11,27 +11,18 @@
|
|
|
11
11
|
white-space: nowrap;
|
|
12
12
|
|
|
13
13
|
// Label
|
|
14
|
-
|
|
14
|
+
.rich-text {
|
|
15
15
|
position: relative;
|
|
16
16
|
font-size: $default-font-size;
|
|
17
17
|
text-transform: uppercase;
|
|
18
18
|
font-weight: 600;
|
|
19
19
|
font-family: $default-font;
|
|
20
20
|
color: $gray-700;
|
|
21
|
-
|
|
22
|
-
box-shadow: none;
|
|
21
|
+
display: inline-flex;
|
|
23
22
|
white-space: nowrap;
|
|
24
23
|
text-align: center;
|
|
25
|
-
margin: 0;
|
|
26
|
-
border-radius: 4px;
|
|
27
24
|
background: $white;
|
|
28
|
-
padding:
|
|
29
|
-
height: $button-size-small;
|
|
30
|
-
max-width: 100%;
|
|
31
|
-
|
|
32
|
-
&:focus {
|
|
33
|
-
box-shadow: none;
|
|
34
|
-
}
|
|
25
|
+
padding: 10px 36px;
|
|
35
26
|
}
|
|
36
27
|
|
|
37
28
|
// Dashed line
|
package/src/post-date/index.php
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* Renders the `core/post-date` block on the server.
|
|
10
10
|
*
|
|
11
11
|
* @since 5.8.0
|
|
12
|
+
* @since 6.9.0 Added `datetime` attribute and Block Bindings support.
|
|
12
13
|
*
|
|
13
14
|
* @param array $attributes Block attributes.
|
|
14
15
|
* @param string $content Block default content.
|
|
@@ -18,44 +19,39 @@
|
|
|
18
19
|
function render_block_core_post_date( $attributes, $content, $block ) {
|
|
19
20
|
$classes = array();
|
|
20
21
|
|
|
21
|
-
if (
|
|
22
|
+
if (
|
|
23
|
+
isset( $attributes['metadata']['bindings']['datetime']['source'] ) &&
|
|
24
|
+
isset( $attributes['metadata']['bindings']['datetime']['args'] )
|
|
25
|
+
) {
|
|
22
26
|
/*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* 2. The `datetime` attribute is bound to a Block Bindings source, but we're on a version of WordPress
|
|
27
|
-
* that doesn't support binding that attribute to a Block Bindings source.
|
|
28
|
-
*
|
|
29
|
-
* In both cases, we set the `datetime` attribute to its correct value by applying Block Bindings manually.
|
|
27
|
+
* We might be running on a version of WordPress that doesn't support binding the block's `datetime` attribute
|
|
28
|
+
* to a Block Bindings source. In this case, we need to manually set the `datetime` attribute to its correct value.
|
|
29
|
+
* This branch can be removed once the minimum required WordPress version is 6.9 or newer.
|
|
30
30
|
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
31
|
+
$source = get_block_bindings_source( $attributes['metadata']['bindings']['datetime']['source'] );
|
|
32
|
+
$source_args = $attributes['metadata']['bindings']['datetime']['args'];
|
|
33
|
+
|
|
34
|
+
$attributes['datetime'] = $source->get_value( $source_args, $block, 'datetime' );
|
|
35
|
+
} elseif ( ! isset( $attributes['datetime'] ) ) {
|
|
36
|
+
/*
|
|
37
|
+
* This is the legacy version of the block that didn't have the `datetime` attribute.
|
|
38
|
+
* This branch needs to be kept for backward compatibility.
|
|
39
|
+
*/
|
|
40
|
+
$source = get_block_bindings_source( 'core/post-data' );
|
|
41
|
+
if ( isset( $attributes['displayType'] ) && 'modified' === $attributes['displayType'] ) {
|
|
42
|
+
$source_args = array(
|
|
43
|
+
'key' => 'modified',
|
|
44
|
+
);
|
|
39
45
|
} else {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if ( isset( $attributes['displayType'] ) && 'modified' === $attributes['displayType'] ) {
|
|
44
|
-
$source_args = array(
|
|
45
|
-
'key' => 'modified',
|
|
46
|
-
);
|
|
47
|
-
} else {
|
|
48
|
-
$source_args = array(
|
|
49
|
-
'key' => 'date',
|
|
50
|
-
);
|
|
51
|
-
}
|
|
46
|
+
$source_args = array(
|
|
47
|
+
'key' => 'date',
|
|
48
|
+
);
|
|
52
49
|
}
|
|
53
|
-
|
|
54
50
|
$attributes['datetime'] = $source->get_value( $source_args, $block, 'datetime' );
|
|
51
|
+
}
|
|
55
52
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
53
|
+
if ( isset( $source_args['key'] ) && 'modified' === $source_args['key'] ) {
|
|
54
|
+
$classes[] = 'wp-block-post-date__modified-date';
|
|
59
55
|
}
|
|
60
56
|
|
|
61
57
|
if ( empty( $attributes['datetime'] ) ) {
|