@wordpress/block-library 9.29.1-next.f34ab90e9.0 → 9.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/accordion/edit.js +18 -1
  3. package/build/accordion/edit.js.map +1 -1
  4. package/build/accordion/index.js +0 -3
  5. package/build/accordion/index.js.map +1 -1
  6. package/build/accordion-content/index.js +0 -4
  7. package/build/accordion-content/index.js.map +1 -1
  8. package/build/accordion-header/index.js +0 -4
  9. package/build/accordion-header/index.js.map +1 -1
  10. package/build/accordion-panel/edit.js +5 -30
  11. package/build/accordion-panel/edit.js.map +1 -1
  12. package/build/accordion-panel/index.js +0 -4
  13. package/build/accordion-panel/index.js.map +1 -1
  14. package/build/accordion-panel/save.js +3 -29
  15. package/build/accordion-panel/save.js.map +1 -1
  16. package/build/audio/edit.js +3 -1
  17. package/build/audio/edit.js.map +1 -1
  18. package/build/gallery/index.js +2 -1
  19. package/build/gallery/index.js.map +1 -1
  20. package/build/group/variations.js +0 -12
  21. package/build/group/variations.js.map +1 -1
  22. package/build/image/image.js +1 -1
  23. package/build/image/image.js.map +1 -1
  24. package/build/navigation-link/link-ui.js +5 -1
  25. package/build/navigation-link/link-ui.js.map +1 -1
  26. package/build/query/edit/index.js.map +1 -1
  27. package/build/query/edit/query-content.js +7 -6
  28. package/build/query/edit/query-content.js.map +1 -1
  29. package/build/query/edit/query-placeholder.js +30 -9
  30. package/build/query/edit/query-placeholder.js.map +1 -1
  31. package/build/query/edit/query-toolbar.js +4 -2
  32. package/build/query/edit/query-toolbar.js.map +1 -1
  33. package/build/template-part/edit/placeholder.js +2 -1
  34. package/build/template-part/edit/placeholder.js.map +1 -1
  35. package/build/video/edit.js +3 -1
  36. package/build/video/edit.js.map +1 -1
  37. package/build-module/accordion/edit.js +20 -3
  38. package/build-module/accordion/edit.js.map +1 -1
  39. package/build-module/accordion/index.js +0 -3
  40. package/build-module/accordion/index.js.map +1 -1
  41. package/build-module/accordion-content/index.js +0 -4
  42. package/build-module/accordion-content/index.js.map +1 -1
  43. package/build-module/accordion-header/index.js +0 -4
  44. package/build-module/accordion-header/index.js.map +1 -1
  45. package/build-module/accordion-panel/edit.js +6 -29
  46. package/build-module/accordion-panel/edit.js.map +1 -1
  47. package/build-module/accordion-panel/index.js +0 -4
  48. package/build-module/accordion-panel/index.js.map +1 -1
  49. package/build-module/accordion-panel/save.js +4 -28
  50. package/build-module/accordion-panel/save.js.map +1 -1
  51. package/build-module/audio/edit.js +4 -2
  52. package/build-module/audio/edit.js.map +1 -1
  53. package/build-module/gallery/index.js +2 -1
  54. package/build-module/gallery/index.js.map +1 -1
  55. package/build-module/group/variations.js +0 -12
  56. package/build-module/group/variations.js.map +1 -1
  57. package/build-module/image/image.js +1 -1
  58. package/build-module/image/image.js.map +1 -1
  59. package/build-module/navigation-link/link-ui.js +6 -2
  60. package/build-module/navigation-link/link-ui.js.map +1 -1
  61. package/build-module/query/edit/index.js.map +1 -1
  62. package/build-module/query/edit/query-content.js +8 -7
  63. package/build-module/query/edit/query-content.js.map +1 -1
  64. package/build-module/query/edit/query-placeholder.js +30 -10
  65. package/build-module/query/edit/query-placeholder.js.map +1 -1
  66. package/build-module/query/edit/query-toolbar.js +4 -2
  67. package/build-module/query/edit/query-toolbar.js.map +1 -1
  68. package/build-module/template-part/edit/placeholder.js +2 -1
  69. package/build-module/template-part/edit/placeholder.js.map +1 -1
  70. package/build-module/video/edit.js +4 -2
  71. package/build-module/video/edit.js.map +1 -1
  72. package/build-style/accordion/style-rtl.css +4 -13
  73. package/build-style/accordion/style.css +4 -13
  74. package/build-style/editor-rtl.css +4 -0
  75. package/build-style/editor.css +4 -0
  76. package/build-style/query/editor-rtl.css +4 -0
  77. package/build-style/query/editor.css +4 -0
  78. package/build-style/style-rtl.css +4 -14
  79. package/build-style/style.css +4 -14
  80. package/package.json +35 -35
  81. package/src/accordion/block.json +0 -3
  82. package/src/accordion/edit.js +20 -0
  83. package/src/accordion/style.scss +7 -16
  84. package/src/accordion-content/block.json +0 -3
  85. package/src/accordion-content/index.js +0 -1
  86. package/src/accordion-header/block.json +0 -3
  87. package/src/accordion-header/index.js +0 -1
  88. package/src/accordion-panel/block.json +0 -3
  89. package/src/accordion-panel/edit.js +11 -51
  90. package/src/accordion-panel/index.js +0 -1
  91. package/src/accordion-panel/save.js +4 -45
  92. package/src/audio/edit.js +6 -1
  93. package/src/gallery/block.json +2 -1
  94. package/src/gallery/index.php +1 -1
  95. package/src/gallery/test/helpers.native.js +3 -3
  96. package/src/group/variations.js +0 -12
  97. package/src/image/image.js +2 -1
  98. package/src/navigation-link/link-ui.js +7 -1
  99. package/src/post-date/index.php +2 -1
  100. package/src/query/edit/index.js +1 -0
  101. package/src/query/edit/query-content.js +8 -4
  102. package/src/query/edit/query-placeholder.js +47 -17
  103. package/src/query/edit/query-toolbar.js +10 -2
  104. package/src/query/editor.scss +6 -1
  105. package/src/template-part/edit/placeholder.js +2 -1
  106. package/src/video/edit.js +6 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-library",
3
- "version": "9.29.1-next.f34ab90e9.0",
3
+ "version": "9.30.0",
4
4
  "description": "Block library for the WordPress editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -42,39 +42,39 @@
42
42
  ],
43
43
  "dependencies": {
44
44
  "@babel/runtime": "7.25.7",
45
- "@wordpress/a11y": "^4.29.1-next.f34ab90e9.0",
46
- "@wordpress/api-fetch": "^7.29.1-next.f34ab90e9.0",
47
- "@wordpress/autop": "^4.29.1-next.f34ab90e9.0",
48
- "@wordpress/blob": "^4.29.1-next.f34ab90e9.0",
49
- "@wordpress/block-editor": "^15.2.1-next.f34ab90e9.0",
50
- "@wordpress/blocks": "^15.2.1-next.f34ab90e9.0",
51
- "@wordpress/components": "^30.2.1-next.f34ab90e9.0",
52
- "@wordpress/compose": "^7.29.1-next.f34ab90e9.0",
53
- "@wordpress/core-data": "^7.29.1-next.f34ab90e9.0",
54
- "@wordpress/data": "^10.29.1-next.f34ab90e9.0",
55
- "@wordpress/date": "^5.29.1-next.f34ab90e9.0",
56
- "@wordpress/deprecated": "^4.29.1-next.f34ab90e9.0",
57
- "@wordpress/dom": "^4.29.1-next.f34ab90e9.0",
58
- "@wordpress/element": "^6.29.1-next.f34ab90e9.0",
59
- "@wordpress/escape-html": "^3.29.1-next.f34ab90e9.0",
60
- "@wordpress/hooks": "^4.29.1-next.f34ab90e9.0",
61
- "@wordpress/html-entities": "^4.29.1-next.f34ab90e9.0",
62
- "@wordpress/i18n": "^6.2.1-next.f34ab90e9.0",
63
- "@wordpress/icons": "^10.29.1-next.f34ab90e9.0",
64
- "@wordpress/interactivity": "^6.29.1-next.f34ab90e9.0",
65
- "@wordpress/interactivity-router": "^2.29.1-next.f34ab90e9.0",
66
- "@wordpress/keyboard-shortcuts": "^5.29.1-next.f34ab90e9.0",
67
- "@wordpress/keycodes": "^4.29.1-next.f34ab90e9.0",
68
- "@wordpress/notices": "^5.29.1-next.f34ab90e9.0",
69
- "@wordpress/patterns": "^2.29.1-next.f34ab90e9.0",
70
- "@wordpress/primitives": "^4.29.1-next.f34ab90e9.0",
71
- "@wordpress/private-apis": "^1.29.1-next.f34ab90e9.0",
72
- "@wordpress/reusable-blocks": "^5.29.1-next.f34ab90e9.0",
73
- "@wordpress/rich-text": "^7.29.1-next.f34ab90e9.0",
74
- "@wordpress/server-side-render": "^6.5.1-next.f34ab90e9.0",
75
- "@wordpress/url": "^4.29.1-next.f34ab90e9.0",
76
- "@wordpress/viewport": "^6.29.1-next.f34ab90e9.0",
77
- "@wordpress/wordcount": "^4.29.1-next.f34ab90e9.0",
45
+ "@wordpress/a11y": "^4.30.0",
46
+ "@wordpress/api-fetch": "^7.30.0",
47
+ "@wordpress/autop": "^4.30.0",
48
+ "@wordpress/blob": "^4.30.0",
49
+ "@wordpress/block-editor": "^15.3.0",
50
+ "@wordpress/blocks": "^15.3.0",
51
+ "@wordpress/components": "^30.3.0",
52
+ "@wordpress/compose": "^7.30.0",
53
+ "@wordpress/core-data": "^7.30.0",
54
+ "@wordpress/data": "^10.30.0",
55
+ "@wordpress/date": "^5.30.0",
56
+ "@wordpress/deprecated": "^4.30.0",
57
+ "@wordpress/dom": "^4.30.0",
58
+ "@wordpress/element": "^6.30.0",
59
+ "@wordpress/escape-html": "^3.30.0",
60
+ "@wordpress/hooks": "^4.30.0",
61
+ "@wordpress/html-entities": "^4.30.0",
62
+ "@wordpress/i18n": "^6.3.0",
63
+ "@wordpress/icons": "^10.30.0",
64
+ "@wordpress/interactivity": "^6.30.0",
65
+ "@wordpress/interactivity-router": "^2.30.0",
66
+ "@wordpress/keyboard-shortcuts": "^5.30.0",
67
+ "@wordpress/keycodes": "^4.30.0",
68
+ "@wordpress/notices": "^5.30.0",
69
+ "@wordpress/patterns": "^2.30.0",
70
+ "@wordpress/primitives": "^4.30.0",
71
+ "@wordpress/private-apis": "^1.30.0",
72
+ "@wordpress/reusable-blocks": "^5.30.0",
73
+ "@wordpress/rich-text": "^7.30.0",
74
+ "@wordpress/server-side-render": "^6.6.0",
75
+ "@wordpress/url": "^4.30.0",
76
+ "@wordpress/viewport": "^6.30.0",
77
+ "@wordpress/wordcount": "^4.30.0",
78
78
  "change-case": "^4.1.2",
79
79
  "clsx": "^2.1.1",
80
80
  "colord": "^2.7.0",
@@ -92,5 +92,5 @@
92
92
  "publishConfig": {
93
93
  "access": "public"
94
94
  },
95
- "gitHead": "91f58004986ec6faf118825f925ac7873d171986"
95
+ "gitHead": "c66cb089eed19d4f4956962fa7b4c81abe6dd513"
96
96
  }
@@ -54,9 +54,6 @@
54
54
  "autoclose": {
55
55
  "type": "boolean",
56
56
  "default": false
57
- },
58
- "allowedBlocks": {
59
- "type": "array"
60
57
  }
61
58
  },
62
59
  "providesContext": {
@@ -5,6 +5,8 @@ import {
5
5
  useBlockProps,
6
6
  useInnerBlocksProps,
7
7
  InspectorControls,
8
+ BlockControls,
9
+ store as blockEditorStore,
8
10
  } from '@wordpress/block-editor';
9
11
  import { __ } from '@wordpress/i18n';
10
12
  import {
@@ -13,7 +15,10 @@ import {
13
15
  __experimentalToggleGroupControlOption as ToggleGroupControlOption,
14
16
  __experimentalToolsPanel as ToolsPanel,
15
17
  __experimentalToolsPanelItem as ToolsPanelItem,
18
+ ToolbarButton,
16
19
  } from '@wordpress/components';
20
+ import { useDispatch } from '@wordpress/data';
21
+ import { createBlock } from '@wordpress/blocks';
17
22
 
18
23
  /**
19
24
  * Internal dependencies
@@ -27,10 +32,12 @@ const ACCORDION_BLOCK = {
27
32
 
28
33
  export default function Edit( {
29
34
  attributes: { autoclose, iconPosition, showIcon },
35
+ clientId,
30
36
  setAttributes,
31
37
  } ) {
32
38
  const blockProps = useBlockProps();
33
39
  const dropdownMenuProps = useToolsPanelDropdownMenuProps();
40
+ const { insertBlock } = useDispatch( blockEditorStore );
34
41
 
35
42
  const innerBlocksProps = useInnerBlocksProps( blockProps, {
36
43
  template: [ [ ACCORDION_BLOCK_NAME ], [ ACCORDION_BLOCK_NAME ] ],
@@ -39,8 +46,21 @@ export default function Edit( {
39
46
  templateInsertUpdatesSelection: true,
40
47
  } );
41
48
 
49
+ const addAccordionContentBlock = () => {
50
+ const newAccordionContent = createBlock( ACCORDION_BLOCK_NAME );
51
+ insertBlock( newAccordionContent, undefined, clientId );
52
+ };
53
+
42
54
  return (
43
55
  <>
56
+ <BlockControls group="other">
57
+ <ToolbarButton
58
+ label={ __( 'Add accordion content block' ) }
59
+ onClick={ addAccordionContentBlock }
60
+ >
61
+ { __( 'Add' ) }
62
+ </ToolbarButton>
63
+ </BlockControls>
44
64
  <InspectorControls key="setting">
45
65
  <ToolsPanel
46
66
  label={ __( 'Settings' ) }
@@ -5,6 +5,12 @@
5
5
 
6
6
  .wp-block-accordion-content.is-open {
7
7
  grid-template-rows: max-content 1fr;
8
+
9
+ > .wp-block-accordion-header {
10
+ .accordion-content__toggle-icon.has-icon-plus {
11
+ transform: rotate(45deg);
12
+ }
13
+ }
8
14
  }
9
15
 
10
16
  .accordion-content__heading {
@@ -27,6 +33,7 @@
27
33
  padding: var(--wp--preset--spacing--20, 1em) 0;
28
34
  cursor: pointer;
29
35
  outline: none;
36
+ overflow: hidden;
30
37
  display: flex;
31
38
  align-items: center;
32
39
  text-align: inherit;
@@ -58,16 +65,6 @@
58
65
  flex-direction: row-reverse;
59
66
  }
60
67
 
61
- /* RTL language support */
62
- [dir="rtl"] .wp-block-accordion-header:not(.icon-position-left) .accordion-content__toggle {
63
- /* stylelint-disable-next-line declaration-property-value-allowed-list -- Automatically adjust icon position for RTL languages. */
64
- flex-direction: row-reverse;
65
- }
66
-
67
- [dir="rtl"] .wp-block-accordion-header.icon-position-left .accordion-content__toggle {
68
- flex-direction: row;
69
- }
70
-
71
68
  .accordion-content__toggle:focus-visible {
72
69
  outline: 2px solid -webkit-focus-ring-color;
73
70
  outline-offset: 2px;
@@ -83,9 +80,3 @@
83
80
  transition: grid-template-rows 0.3s ease-out;
84
81
  }
85
82
  }
86
-
87
- .is-open {
88
- .accordion-content__toggle-icon.has-icon-plus {
89
- transform: rotate(45deg);
90
- }
91
- }
@@ -2,16 +2,13 @@
2
2
  "$schema": "https://schemas.wp.org/trunk/block.json",
3
3
  "apiVersion": 3,
4
4
  "name": "core/accordion-content",
5
- "version": "0.1.0",
6
5
  "title": "Accordion Content",
7
6
  "category": "design",
8
7
  "description": "Displays a section of content in an accordion, including a header and expandable content.",
9
- "example": {},
10
8
  "__experimental": true,
11
9
  "parent": [ "core/accordion" ],
12
10
  "allowedBlocks": [ "core/accordion-header", "core/accordion-panel" ],
13
11
  "supports": {
14
- "align": [ "wide", "full" ],
15
12
  "color": {
16
13
  "background": true,
17
14
  "gradient": true
@@ -13,7 +13,6 @@ export { metadata, name };
13
13
 
14
14
  export const settings = {
15
15
  icon,
16
- example: {},
17
16
  edit,
18
17
  save,
19
18
  };
@@ -2,11 +2,9 @@
2
2
  "$schema": "https://schemas.wp.org/trunk/block.json",
3
3
  "apiVersion": 3,
4
4
  "name": "core/accordion-header",
5
- "version": "0.1.0",
6
5
  "title": "Accordion Header",
7
6
  "category": "design",
8
7
  "description": "Displays an accordion header.",
9
- "example": {},
10
8
  "__experimental": true,
11
9
  "parent": [ "core/accordion-content" ],
12
10
  "usesContext": [
@@ -20,7 +18,6 @@
20
18
  "gradient": true
21
19
  },
22
20
  "align": false,
23
- "border": true,
24
21
  "interactivity": true,
25
22
  "spacing": {
26
23
  "padding": true,
@@ -13,7 +13,6 @@ export { metadata, name };
13
13
 
14
14
  export const settings = {
15
15
  icon,
16
- example: {},
17
16
  edit,
18
17
  save,
19
18
  };
@@ -2,11 +2,9 @@
2
2
  "$schema": "https://schemas.wp.org/trunk/block.json",
3
3
  "apiVersion": 3,
4
4
  "name": "core/accordion-panel",
5
- "version": "0.1.0",
6
5
  "title": "Accordion Panel",
7
6
  "category": "design",
8
7
  "description": "Displays an accordion panel.",
9
- "example": {},
10
8
  "__experimental": true,
11
9
  "parent": [ "core/accordion-content" ],
12
10
  "supports": {
@@ -14,7 +12,6 @@
14
12
  "background": true,
15
13
  "gradient": true
16
14
  },
17
- "border": true,
18
15
  "interactivity": true,
19
16
  "spacing": {
20
17
  "padding": true,
@@ -1,61 +1,21 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import {
5
- useBlockProps,
6
- useInnerBlocksProps,
7
- __experimentalUseBorderProps as useBorderProps,
8
- __experimentalUseColorProps as useColorProps,
9
- __experimentalGetSpacingClassesAndStyles as useSpacingProps,
10
- __experimentalGetShadowClassesAndStyles as useShadowProps,
11
- } from '@wordpress/block-editor';
12
- /**
13
- * External dependencies
14
- */
15
- import clsx from 'clsx';
4
+ import { useBlockProps, useInnerBlocksProps } from '@wordpress/block-editor';
16
5
 
17
6
  export default function Edit( { attributes } ) {
18
7
  const { allowedBlocks, templateLock, openByDefault, isSelected } =
19
8
  attributes;
20
- const borderProps = useBorderProps( attributes );
21
- const colorProps = useColorProps( attributes );
22
- const spacingProps = useSpacingProps( attributes );
23
- const shadowProps = useShadowProps( attributes );
24
9
 
25
- const blockProps = useBlockProps();
26
- const innerBlocksProps = useInnerBlocksProps(
27
- {
28
- className: 'accordion-content__wrapper',
29
- style: {
30
- ...spacingProps.style,
31
- },
32
- },
33
- {
34
- allowedBlocks,
35
- template: [ [ 'core/paragraph', {} ] ],
36
- templateLock,
37
- }
38
- );
10
+ const blockProps = useBlockProps( {
11
+ 'aria-hidden': ! isSelected && ! openByDefault,
12
+ } );
13
+
14
+ const innerBlocksProps = useInnerBlocksProps( blockProps, {
15
+ allowedBlocks,
16
+ template: [ [ 'core/paragraph', {} ] ],
17
+ templateLock,
18
+ } );
39
19
 
40
- return (
41
- <div
42
- { ...blockProps }
43
- className={ clsx(
44
- blockProps.className,
45
- colorProps.className,
46
- borderProps.className,
47
- {
48
- [ `has-custom-font-size` ]: blockProps?.style?.fontSize,
49
- }
50
- ) }
51
- style={ {
52
- ...borderProps.style,
53
- ...colorProps.style,
54
- ...shadowProps.style,
55
- } }
56
- aria-hidden={ ! isSelected && ! openByDefault }
57
- >
58
- <div { ...innerBlocksProps } />
59
- </div>
60
- );
20
+ return <div { ...innerBlocksProps } />;
61
21
  }
@@ -13,7 +13,6 @@ export { metadata, name };
13
13
 
14
14
  export const settings = {
15
15
  icon,
16
- example: {},
17
16
  edit,
18
17
  save,
19
18
  };
@@ -1,51 +1,10 @@
1
1
  /**
2
2
  * WordPress dependencies
3
3
  */
4
- import {
5
- InnerBlocks,
6
- useBlockProps,
7
- __experimentalGetBorderClassesAndStyles as getBorderClassesAndStyles,
8
- __experimentalGetColorClassesAndStyles as getColorClassesAndStyles,
9
- __experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,
10
- __experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,
11
- } from '@wordpress/block-editor';
12
- /**
13
- * External dependencies
14
- */
15
- import clsx from 'clsx';
4
+ import { useBlockProps, useInnerBlocksProps } from '@wordpress/block-editor';
16
5
 
17
- export default function save( { attributes } ) {
6
+ export default function save() {
18
7
  const blockProps = useBlockProps.save();
19
- const borderProps = getBorderClassesAndStyles( attributes );
20
- const colorProps = getColorClassesAndStyles( attributes );
21
- const spacingProps = getSpacingClassesAndStyles( attributes );
22
- const shadowProps = getShadowClassesAndStyles( attributes );
23
-
24
- return (
25
- <div
26
- { ...blockProps }
27
- className={ clsx(
28
- blockProps.className,
29
- colorProps.className,
30
- borderProps.className,
31
- {
32
- [ `has-custom-font-size` ]: blockProps?.style?.fontSize,
33
- }
34
- ) }
35
- style={ {
36
- ...borderProps.style,
37
- ...colorProps.style,
38
- ...shadowProps.style,
39
- } }
40
- >
41
- <div
42
- className="accordion-content__wrapper"
43
- style={ {
44
- ...spacingProps.style,
45
- } }
46
- >
47
- <InnerBlocks.Content />
48
- </div>
49
- </div>
50
- );
8
+ const innerBlocksProps = useInnerBlocksProps.save( blockProps );
9
+ return <div { ...innerBlocksProps } />;
51
10
  }
package/src/audio/edit.js CHANGED
@@ -22,6 +22,7 @@ import {
22
22
  MediaPlaceholder,
23
23
  MediaReplaceFlow,
24
24
  useBlockProps,
25
+ useBlockEditingMode,
25
26
  } from '@wordpress/block-editor';
26
27
  import { __, _x } from '@wordpress/i18n';
27
28
  import { useDispatch } from '@wordpress/data';
@@ -51,6 +52,8 @@ function AudioEdit( {
51
52
  } ) {
52
53
  const { id, autoplay, loop, preload, src } = attributes;
53
54
  const [ temporaryURL, setTemporaryURL ] = useState( attributes.blob );
55
+ const blockEditingMode = useBlockEditingMode();
56
+ const hasNonContentControls = blockEditingMode === 'default';
54
57
 
55
58
  useUploadMediaFromBlobURL( {
56
59
  url: temporaryURL,
@@ -264,7 +267,9 @@ function AudioEdit( {
264
267
  isSelected={ isSingleSelected }
265
268
  insertBlocksAfter={ insertBlocksAfter }
266
269
  label={ __( 'Audio caption text' ) }
267
- showToolbarButton={ isSingleSelected }
270
+ showToolbarButton={
271
+ isSingleSelected && hasNonContentControls
272
+ }
268
273
  />
269
274
  </figure>
270
275
  </>
@@ -75,7 +75,8 @@
75
75
  "caption": {
76
76
  "type": "rich-text",
77
77
  "source": "rich-text",
78
- "selector": ".blocks-gallery-caption"
78
+ "selector": ".blocks-gallery-caption",
79
+ "role": "content"
79
80
  },
80
81
  "imageCrop": {
81
82
  "type": "boolean",
@@ -142,7 +142,7 @@ function block_core_gallery_render( $attributes, $content ) {
142
142
 
143
143
  // This pattern matches figure elements with the `wp-block-image` class to
144
144
  // avoid the gallery's wrapping `figure` element and extract images only.
145
- $pattern = '/<figure[^>]*\bwp-block-image\b[^>]*>.*?<\/figure>/';
145
+ $pattern = '/<figure[^>]*\bwp-block-image\b[^>]*>.*?<\/figure>/s';
146
146
 
147
147
  // Find all Image blocks.
148
148
  preg_match_all( $pattern, $updated_content, $matches );
@@ -65,9 +65,9 @@ export const initializeWithGalleryBlock = async ( {
65
65
  /**
66
66
  * Gets a gallery item within a Gallery block.
67
67
  *
68
- * @param {import('react-test-renderer').ReactTestInstance} galleryBlock Gallery block instance.
69
- * @param {number} rowIndex Row position within the Gallery block.
70
- * @return {import('react-test-renderer').ReactTestInstance} Gallery item.
68
+ * @param {ReturnType<import('@testing-library/react-native').RenderAPI['getByTestId']>} galleryBlock Gallery block instance.
69
+ * @param {number} rowIndex Row position within the Gallery block.
70
+ * @return {ReturnType<import('@testing-library/react-native').RenderAPI['getByTestId']>} Gallery item.
71
71
  */
72
72
  export const getGalleryItem = ( galleryBlock, rowIndex ) =>
73
73
  getInnerBlock( galleryBlock, 'Image', { rowIndex } );
@@ -9,48 +9,36 @@ const example = {
9
9
  {
10
10
  name: 'core/paragraph',
11
11
  attributes: {
12
- customTextColor: '#cf2e2e',
13
- fontSize: 'large',
14
12
  content: __( 'One.' ),
15
13
  },
16
14
  },
17
15
  {
18
16
  name: 'core/paragraph',
19
17
  attributes: {
20
- customTextColor: '#ff6900',
21
- fontSize: 'large',
22
18
  content: __( 'Two.' ),
23
19
  },
24
20
  },
25
21
  {
26
22
  name: 'core/paragraph',
27
23
  attributes: {
28
- customTextColor: '#fcb900',
29
- fontSize: 'large',
30
24
  content: __( 'Three.' ),
31
25
  },
32
26
  },
33
27
  {
34
28
  name: 'core/paragraph',
35
29
  attributes: {
36
- customTextColor: '#00d084',
37
- fontSize: 'large',
38
30
  content: __( 'Four.' ),
39
31
  },
40
32
  },
41
33
  {
42
34
  name: 'core/paragraph',
43
35
  attributes: {
44
- customTextColor: '#0693e3',
45
- fontSize: 'large',
46
36
  content: __( 'Five.' ),
47
37
  },
48
38
  },
49
39
  {
50
40
  name: 'core/paragraph',
51
41
  attributes: {
52
- customTextColor: '#9b51e0',
53
- fontSize: 'large',
54
42
  content: __( 'Six.' ),
55
43
  },
56
44
  },
@@ -706,7 +706,8 @@ export default function Image( {
706
706
  ! lockHrefControls &&
707
707
  ! lockUrlControls;
708
708
 
709
- const showCoverControls = isSingleSelected && canInsertCover;
709
+ const showCoverControls =
710
+ isSingleSelected && canInsertCover && ! isContentOnlyMode;
710
711
 
711
712
  const showBlockControls = showUrlInput || allowCrop || showCoverControls;
712
713
 
@@ -13,6 +13,7 @@ import {
13
13
  LinkControl,
14
14
  store as blockEditorStore,
15
15
  privateApis as blockEditorPrivateApis,
16
+ useBlockEditingMode,
16
17
  } from '@wordpress/block-editor';
17
18
  import {
18
19
  createInterpolateElement,
@@ -157,6 +158,10 @@ function UnforwardedLinkUI( props, ref ) {
157
158
  name: postType,
158
159
  } );
159
160
 
161
+ // Check if we're in contentOnly mode
162
+ const blockEditingMode = useBlockEditingMode();
163
+ const isDefaultBlockEditingMode = blockEditingMode === 'default';
164
+
160
165
  async function handleCreate( pageTitle ) {
161
166
  const page = await saveEntityRecord( 'postType', postType, {
162
167
  title: pageTitle,
@@ -261,7 +266,8 @@ function UnforwardedLinkUI( props, ref ) {
261
266
  onRemove={ props.onRemove }
262
267
  onCancel={ props.onCancel }
263
268
  renderControlBottom={ () =>
264
- ! link?.url?.length && (
269
+ ! link?.url?.length &&
270
+ isDefaultBlockEditingMode && (
265
271
  <LinkUITools
266
272
  focusAddBlockButton={ focusAddBlockButton }
267
273
  setAddingBlock={ () => {
@@ -76,7 +76,8 @@ function render_block_core_post_date( $attributes, $content, $block ) {
76
76
  $formatted_date = sprintf( __( '%s ago' ), human_time_diff( $post_timestamp ) );
77
77
  }
78
78
  } else {
79
- $formatted_date = gmdate( empty( $attributes['format'] ) ? get_option( 'date_format' ) : $attributes['format'], $post_timestamp );
79
+ $format = empty( $attributes['format'] ) ? get_option( 'date_format' ) : $attributes['format'];
80
+ $formatted_date = wp_date( $format, $post_timestamp );
80
81
  }
81
82
 
82
83
  if ( isset( $attributes['textAlign'] ) ) {
@@ -22,6 +22,7 @@ const QueryEdit = ( props ) => {
22
22
  [ clientId ]
23
23
  );
24
24
  const Component = hasInnerBlocks ? QueryContent : QueryPlaceholder;
25
+
25
26
  return (
26
27
  <>
27
28
  <Component
@@ -5,12 +5,12 @@ import { useSelect, useDispatch } from '@wordpress/data';
5
5
  import { useInstanceId } from '@wordpress/compose';
6
6
  import { useEffect, useCallback } from '@wordpress/element';
7
7
  import {
8
- BlockControls,
9
8
  InspectorControls,
10
9
  useBlockProps,
11
10
  store as blockEditorStore,
12
11
  useInnerBlocksProps,
13
12
  privateApis as blockEditorPrivateApis,
13
+ BlockControls,
14
14
  } from '@wordpress/block-editor';
15
15
  import { __ } from '@wordpress/i18n';
16
16
  import { store as coreStore } from '@wordpress/core-data';
@@ -130,6 +130,13 @@ export default function QueryContent( {
130
130
 
131
131
  return (
132
132
  <>
133
+ <BlockControls>
134
+ <QueryToolbar
135
+ clientId={ clientId }
136
+ attributes={ attributes }
137
+ hasInnerBlocks
138
+ />
139
+ </BlockControls>
133
140
  <EnhancedPaginationModal
134
141
  attributes={ attributes }
135
142
  setAttributes={ setAttributes }
@@ -145,9 +152,6 @@ export default function QueryContent( {
145
152
  isSingular={ isSingular }
146
153
  />
147
154
  </InspectorControls>
148
- <BlockControls>
149
- <QueryToolbar attributes={ attributes } clientId={ clientId } />
150
- </BlockControls>
151
155
  <InspectorControls group="advanced">
152
156
  <HTMLElementControl
153
157
  tagName={ TagName }