@wordpress/block-library 9.28.0 → 9.29.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/edit.js +123 -0
- package/build/accordion/edit.js.map +1 -0
- package/build/accordion/icon.js +33 -0
- package/build/accordion/icon.js.map +1 -0
- package/build/accordion/index.js +100 -0
- package/build/accordion/index.js.map +1 -0
- package/build/accordion/init.js +12 -0
- package/build/accordion/init.js.map +1 -0
- package/build/accordion/save.js +36 -0
- package/build/accordion/save.js.map +1 -0
- package/build/accordion/view.js +49 -0
- package/build/accordion/view.js.map +1 -0
- package/build/accordion-content/edit.js +129 -0
- package/build/accordion-content/edit.js.map +1 -0
- package/build/accordion-content/icon.js +35 -0
- package/build/accordion-content/icon.js.map +1 -0
- package/build/accordion-content/icons.js +30 -0
- package/build/accordion-content/icons.js.map +1 -0
- package/build/accordion-content/index.js +76 -0
- package/build/accordion-content/index.js.map +1 -0
- package/build/accordion-content/init.js +12 -0
- package/build/accordion-content/init.js.map +1 -0
- package/build/accordion-content/save.js +37 -0
- package/build/accordion-content/save.js.map +1 -0
- package/build/accordion-header/edit.js +118 -0
- package/build/accordion-header/edit.js.map +1 -0
- package/build/accordion-header/icon.js +25 -0
- package/build/accordion-header/icon.js.map +1 -0
- package/build/accordion-header/index.js +121 -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-panel/edit.js +59 -0
- package/build/accordion-panel/edit.js.map +1 -0
- package/build/accordion-panel/icon.js +22 -0
- package/build/accordion-panel/icon.js.map +1 -0
- package/build/accordion-panel/index.js +105 -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/cover/index.js +2 -1
- package/build/cover/index.js.map +1 -1
- package/build/freeform/edit.js +6 -0
- package/build/freeform/edit.js.map +1 -1
- package/build/index.js +10 -0
- package/build/index.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/post-comments-link/edit.js +6 -1
- package/build/post-comments-link/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 +56 -41
- 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/video/edit-common-settings.js +6 -3
- package/build/video/edit-common-settings.js.map +1 -1
- package/build-module/accordion/edit.js +116 -0
- package/build-module/accordion/edit.js.map +1 -0
- package/build-module/accordion/icon.js +27 -0
- package/build-module/accordion/icon.js.map +1 -0
- package/build-module/accordion/index.js +92 -0
- package/build-module/accordion/index.js.map +1 -0
- package/build-module/accordion/init.js +6 -0
- package/build-module/accordion/init.js.map +1 -0
- package/build-module/accordion/save.js +27 -0
- package/build-module/accordion/save.js.map +1 -0
- package/build-module/accordion/view.js +46 -0
- package/build-module/accordion/view.js.map +1 -0
- package/build-module/accordion-content/edit.js +120 -0
- package/build-module/accordion-content/edit.js.map +1 -0
- package/build-module/accordion-content/icon.js +29 -0
- package/build-module/accordion-content/icon.js.map +1 -0
- package/build-module/accordion-content/icons.js +22 -0
- package/build-module/accordion-content/icons.js.map +1 -0
- package/build-module/accordion-content/index.js +68 -0
- package/build-module/accordion-content/index.js.map +1 -0
- package/build-module/accordion-content/init.js +6 -0
- package/build-module/accordion-content/init.js.map +1 -0
- package/build-module/accordion-content/save.js +28 -0
- package/build-module/accordion-content/save.js.map +1 -0
- package/build-module/accordion-header/edit.js +108 -0
- package/build-module/accordion-header/edit.js.map +1 -0
- package/build-module/accordion-header/icon.js +19 -0
- package/build-module/accordion-header/icon.js.map +1 -0
- package/build-module/accordion-header/index.js +113 -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-panel/edit.js +50 -0
- package/build-module/accordion-panel/edit.js.map +1 -0
- package/build-module/accordion-panel/icon.js +16 -0
- package/build-module/accordion-panel/icon.js.map +1 -0
- package/build-module/accordion-panel/index.js +97 -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/cover/index.js +2 -1
- package/build-module/cover/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/index.js +10 -0
- package/build-module/index.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/post-comments-link/edit.js +6 -1
- package/build-module/post-comments-link/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 +57 -42
- 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/video/edit-common-settings.js +6 -3
- package/build-module/video/edit-common-settings.js.map +1 -1
- package/build-style/accordion/style-rtl.css +223 -0
- package/build-style/accordion/style.css +223 -0
- package/build-style/style-rtl.css +88 -0
- package/build-style/style.css +88 -0
- package/package.json +36 -35
- package/src/accordion/block.json +69 -0
- package/src/accordion/edit.js +133 -0
- package/src/accordion/icon.js +23 -0
- package/src/accordion/index.js +21 -0
- package/src/accordion/index.php +61 -0
- package/src/accordion/init.js +6 -0
- package/src/accordion/save.js +23 -0
- package/src/accordion/style.scss +91 -0
- package/src/accordion/view.js +38 -0
- package/src/accordion-content/block.json +45 -0
- package/src/accordion-content/edit.js +149 -0
- package/src/accordion-content/icon.js +28 -0
- package/src/accordion-content/icons.js +23 -0
- package/src/accordion-content/index.js +21 -0
- package/src/accordion-content/index.php +73 -0
- package/src/accordion-content/init.js +6 -0
- package/src/accordion-content/save.js +25 -0
- package/src/accordion-header/block.json +93 -0
- package/src/accordion-header/edit.js +131 -0
- package/src/accordion-header/icon.js +16 -0
- package/src/accordion-header/index.js +21 -0
- package/src/accordion-header/init.js +6 -0
- package/src/accordion-header/save.js +79 -0
- package/src/accordion-panel/block.json +74 -0
- package/src/accordion-panel/edit.js +61 -0
- package/src/accordion-panel/icon.js +15 -0
- package/src/accordion-panel/index.js +21 -0
- package/src/accordion-panel/init.js +6 -0
- package/src/accordion-panel/save.js +51 -0
- package/src/block/index.php +16 -14
- package/src/cover/block.json +2 -1
- package/src/file/index.php +28 -22
- package/src/freeform/edit.js +7 -0
- package/src/index.js +12 -0
- package/src/media-text/media-container.js +1 -0
- package/src/media-text/transforms.js +5 -1
- package/src/navigation/edit/test/navigation-menu-selector.js +2 -2
- package/src/post-comments-link/edit.js +7 -1
- package/src/post-excerpt/index.php +16 -12
- 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 +33 -12
- package/src/site-title/edit.js +24 -16
- package/src/social-link/README.md +4 -1
- package/src/social-link/index.php +1 -1
- package/src/style.scss +1 -0
- package/src/video/edit-common-settings.js +14 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/block-library",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.29.0",
|
|
4
4
|
"description": "Block library for the WordPress editor.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"react-native": "src/index",
|
|
28
28
|
"wpScript": true,
|
|
29
29
|
"wpScriptModuleExports": {
|
|
30
|
+
"./accordion/view": "./build-module/accordion/view.js",
|
|
30
31
|
"./file/view": "./build-module/file/view.js",
|
|
31
32
|
"./form/view": "./build-module/form/view.js",
|
|
32
33
|
"./image/view": "./build-module/image/view.js",
|
|
@@ -41,39 +42,39 @@
|
|
|
41
42
|
],
|
|
42
43
|
"dependencies": {
|
|
43
44
|
"@babel/runtime": "7.25.7",
|
|
44
|
-
"@wordpress/a11y": "^4.
|
|
45
|
-
"@wordpress/api-fetch": "^7.
|
|
46
|
-
"@wordpress/autop": "^4.
|
|
47
|
-
"@wordpress/blob": "^4.
|
|
48
|
-
"@wordpress/block-editor": "^15.
|
|
49
|
-
"@wordpress/blocks": "^15.
|
|
50
|
-
"@wordpress/components": "^30.
|
|
51
|
-
"@wordpress/compose": "^7.
|
|
52
|
-
"@wordpress/core-data": "^7.
|
|
53
|
-
"@wordpress/data": "^10.
|
|
54
|
-
"@wordpress/date": "^5.
|
|
55
|
-
"@wordpress/deprecated": "^4.
|
|
56
|
-
"@wordpress/dom": "^4.
|
|
57
|
-
"@wordpress/element": "^6.
|
|
58
|
-
"@wordpress/escape-html": "^3.
|
|
59
|
-
"@wordpress/hooks": "^4.
|
|
60
|
-
"@wordpress/html-entities": "^4.
|
|
61
|
-
"@wordpress/i18n": "^6.
|
|
62
|
-
"@wordpress/icons": "^10.
|
|
63
|
-
"@wordpress/interactivity": "^6.
|
|
64
|
-
"@wordpress/interactivity-router": "^2.
|
|
65
|
-
"@wordpress/keyboard-shortcuts": "^5.
|
|
66
|
-
"@wordpress/keycodes": "^4.
|
|
67
|
-
"@wordpress/notices": "^5.
|
|
68
|
-
"@wordpress/patterns": "^2.
|
|
69
|
-
"@wordpress/primitives": "^4.
|
|
70
|
-
"@wordpress/private-apis": "^1.
|
|
71
|
-
"@wordpress/reusable-blocks": "^5.
|
|
72
|
-
"@wordpress/rich-text": "^7.
|
|
73
|
-
"@wordpress/server-side-render": "^6.
|
|
74
|
-
"@wordpress/url": "^4.
|
|
75
|
-
"@wordpress/viewport": "^6.
|
|
76
|
-
"@wordpress/wordcount": "^4.
|
|
45
|
+
"@wordpress/a11y": "^4.29.0",
|
|
46
|
+
"@wordpress/api-fetch": "^7.29.0",
|
|
47
|
+
"@wordpress/autop": "^4.29.0",
|
|
48
|
+
"@wordpress/blob": "^4.29.0",
|
|
49
|
+
"@wordpress/block-editor": "^15.2.0",
|
|
50
|
+
"@wordpress/blocks": "^15.2.0",
|
|
51
|
+
"@wordpress/components": "^30.2.0",
|
|
52
|
+
"@wordpress/compose": "^7.29.0",
|
|
53
|
+
"@wordpress/core-data": "^7.29.0",
|
|
54
|
+
"@wordpress/data": "^10.29.0",
|
|
55
|
+
"@wordpress/date": "^5.29.0",
|
|
56
|
+
"@wordpress/deprecated": "^4.29.0",
|
|
57
|
+
"@wordpress/dom": "^4.29.0",
|
|
58
|
+
"@wordpress/element": "^6.29.0",
|
|
59
|
+
"@wordpress/escape-html": "^3.29.0",
|
|
60
|
+
"@wordpress/hooks": "^4.29.0",
|
|
61
|
+
"@wordpress/html-entities": "^4.29.0",
|
|
62
|
+
"@wordpress/i18n": "^6.2.0",
|
|
63
|
+
"@wordpress/icons": "^10.29.0",
|
|
64
|
+
"@wordpress/interactivity": "^6.29.0",
|
|
65
|
+
"@wordpress/interactivity-router": "^2.29.0",
|
|
66
|
+
"@wordpress/keyboard-shortcuts": "^5.29.0",
|
|
67
|
+
"@wordpress/keycodes": "^4.29.0",
|
|
68
|
+
"@wordpress/notices": "^5.29.0",
|
|
69
|
+
"@wordpress/patterns": "^2.29.0",
|
|
70
|
+
"@wordpress/primitives": "^4.29.0",
|
|
71
|
+
"@wordpress/private-apis": "^1.29.0",
|
|
72
|
+
"@wordpress/reusable-blocks": "^5.29.0",
|
|
73
|
+
"@wordpress/rich-text": "^7.29.0",
|
|
74
|
+
"@wordpress/server-side-render": "^6.5.0",
|
|
75
|
+
"@wordpress/url": "^4.29.0",
|
|
76
|
+
"@wordpress/viewport": "^6.29.0",
|
|
77
|
+
"@wordpress/wordcount": "^4.29.0",
|
|
77
78
|
"change-case": "^4.1.2",
|
|
78
79
|
"clsx": "^2.1.1",
|
|
79
80
|
"colord": "^2.7.0",
|
|
@@ -91,5 +92,5 @@
|
|
|
91
92
|
"publishConfig": {
|
|
92
93
|
"access": "public"
|
|
93
94
|
},
|
|
94
|
-
"gitHead": "
|
|
95
|
+
"gitHead": "445ede01e8abc8e49a1101b21a3651adbe852120"
|
|
95
96
|
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://schemas.wp.org/trunk/block.json",
|
|
3
|
+
"apiVersion": 3,
|
|
4
|
+
"name": "core/accordion",
|
|
5
|
+
"title": "Accordion",
|
|
6
|
+
"category": "design",
|
|
7
|
+
"description": "Displays a group of accordion headers and associated expandable content.",
|
|
8
|
+
"example": {},
|
|
9
|
+
"__experimental": true,
|
|
10
|
+
"supports": {
|
|
11
|
+
"html": false,
|
|
12
|
+
"align": [ "wide", "full" ],
|
|
13
|
+
"background": {
|
|
14
|
+
"backgroundImage": true,
|
|
15
|
+
"backgroundSize": true,
|
|
16
|
+
"__experimentalDefaultControls": {
|
|
17
|
+
"backgroundImage": true
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"color": {
|
|
21
|
+
"background": true,
|
|
22
|
+
"gradient": true
|
|
23
|
+
},
|
|
24
|
+
"__experimentalBorder": {
|
|
25
|
+
"color": true,
|
|
26
|
+
"radius": true,
|
|
27
|
+
"style": true,
|
|
28
|
+
"width": true,
|
|
29
|
+
"__experimentalDefaultControls": {
|
|
30
|
+
"color": true,
|
|
31
|
+
"radius": true,
|
|
32
|
+
"style": true,
|
|
33
|
+
"width": true
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"spacing": {
|
|
37
|
+
"padding": true,
|
|
38
|
+
"margin": [ "top", "bottom" ],
|
|
39
|
+
"blockGap": true
|
|
40
|
+
},
|
|
41
|
+
"shadow": true,
|
|
42
|
+
"layout": true,
|
|
43
|
+
"interactivity": true
|
|
44
|
+
},
|
|
45
|
+
"attributes": {
|
|
46
|
+
"iconPosition": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"default": "right"
|
|
49
|
+
},
|
|
50
|
+
"showIcon": {
|
|
51
|
+
"type": "boolean",
|
|
52
|
+
"default": true
|
|
53
|
+
},
|
|
54
|
+
"autoclose": {
|
|
55
|
+
"type": "boolean",
|
|
56
|
+
"default": false
|
|
57
|
+
},
|
|
58
|
+
"allowedBlocks": {
|
|
59
|
+
"type": "array"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"providesContext": {
|
|
63
|
+
"core/accordion-icon-position": "iconPosition",
|
|
64
|
+
"core/accordion-show-icon": "showIcon"
|
|
65
|
+
},
|
|
66
|
+
"allowedBlocks": [ "core/accordion-content" ],
|
|
67
|
+
"textdomain": "default",
|
|
68
|
+
"style": "wp-block-accordion"
|
|
69
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import {
|
|
5
|
+
useBlockProps,
|
|
6
|
+
useInnerBlocksProps,
|
|
7
|
+
InspectorControls,
|
|
8
|
+
} from '@wordpress/block-editor';
|
|
9
|
+
import { __ } from '@wordpress/i18n';
|
|
10
|
+
import {
|
|
11
|
+
ToggleControl,
|
|
12
|
+
__experimentalToggleGroupControl as ToggleGroupControl,
|
|
13
|
+
__experimentalToggleGroupControlOption as ToggleGroupControlOption,
|
|
14
|
+
__experimentalToolsPanel as ToolsPanel,
|
|
15
|
+
__experimentalToolsPanelItem as ToolsPanelItem,
|
|
16
|
+
} from '@wordpress/components';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Internal dependencies
|
|
20
|
+
*/
|
|
21
|
+
import { useToolsPanelDropdownMenuProps } from '../utils/hooks';
|
|
22
|
+
|
|
23
|
+
const ACCORDION_BLOCK_NAME = 'core/accordion-content';
|
|
24
|
+
const ACCORDION_BLOCK = {
|
|
25
|
+
name: ACCORDION_BLOCK_NAME,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export default function Edit( {
|
|
29
|
+
attributes: { autoclose, iconPosition, showIcon },
|
|
30
|
+
setAttributes,
|
|
31
|
+
} ) {
|
|
32
|
+
const blockProps = useBlockProps();
|
|
33
|
+
const dropdownMenuProps = useToolsPanelDropdownMenuProps();
|
|
34
|
+
|
|
35
|
+
const innerBlocksProps = useInnerBlocksProps( blockProps, {
|
|
36
|
+
template: [ [ ACCORDION_BLOCK_NAME ], [ ACCORDION_BLOCK_NAME ] ],
|
|
37
|
+
defaultBlock: ACCORDION_BLOCK,
|
|
38
|
+
directInsert: true,
|
|
39
|
+
templateInsertUpdatesSelection: true,
|
|
40
|
+
} );
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<>
|
|
44
|
+
<InspectorControls key="setting">
|
|
45
|
+
<ToolsPanel
|
|
46
|
+
label={ __( 'Settings' ) }
|
|
47
|
+
resetAll={ () => {
|
|
48
|
+
setAttributes( {
|
|
49
|
+
autoclose: false,
|
|
50
|
+
showIcon: true,
|
|
51
|
+
iconPosition: 'right',
|
|
52
|
+
} );
|
|
53
|
+
} }
|
|
54
|
+
dropdownMenuProps={ dropdownMenuProps }
|
|
55
|
+
>
|
|
56
|
+
<ToolsPanelItem
|
|
57
|
+
label={ __( 'Auto-close' ) }
|
|
58
|
+
isShownByDefault
|
|
59
|
+
hasValue={ () => !! autoclose }
|
|
60
|
+
onDeselect={ () =>
|
|
61
|
+
setAttributes( { autoclose: false } )
|
|
62
|
+
}
|
|
63
|
+
>
|
|
64
|
+
<ToggleControl
|
|
65
|
+
isBlock
|
|
66
|
+
__nextHasNoMarginBottom
|
|
67
|
+
label={ __( 'Auto-close' ) }
|
|
68
|
+
onChange={ ( value ) => {
|
|
69
|
+
setAttributes( {
|
|
70
|
+
autoclose: value,
|
|
71
|
+
} );
|
|
72
|
+
} }
|
|
73
|
+
checked={ autoclose }
|
|
74
|
+
help={ __(
|
|
75
|
+
'Automatically close accordions when a new one is opened.'
|
|
76
|
+
) }
|
|
77
|
+
/>
|
|
78
|
+
</ToolsPanelItem>
|
|
79
|
+
<ToolsPanelItem
|
|
80
|
+
label={ __( 'Show icon' ) }
|
|
81
|
+
isShownByDefault
|
|
82
|
+
hasValue={ () => ! showIcon }
|
|
83
|
+
onDeselect={ () => setAttributes( { showIcon: true } ) }
|
|
84
|
+
>
|
|
85
|
+
<ToggleControl
|
|
86
|
+
isBlock
|
|
87
|
+
__nextHasNoMarginBottom
|
|
88
|
+
label={ __( 'Show icon' ) }
|
|
89
|
+
onChange={ ( value ) => {
|
|
90
|
+
setAttributes( {
|
|
91
|
+
showIcon: value,
|
|
92
|
+
} );
|
|
93
|
+
} }
|
|
94
|
+
checked={ showIcon }
|
|
95
|
+
help={ __(
|
|
96
|
+
'Display a plus icon next to the accordion header.'
|
|
97
|
+
) }
|
|
98
|
+
/>
|
|
99
|
+
</ToolsPanelItem>
|
|
100
|
+
<ToolsPanelItem
|
|
101
|
+
label={ __( 'Icon Position' ) }
|
|
102
|
+
isShownByDefault
|
|
103
|
+
hasValue={ () => iconPosition !== 'right' }
|
|
104
|
+
onDeselect={ () =>
|
|
105
|
+
setAttributes( { iconPosition: 'right' } )
|
|
106
|
+
}
|
|
107
|
+
>
|
|
108
|
+
<ToggleGroupControl
|
|
109
|
+
__nextHasNoMarginBottom
|
|
110
|
+
__next40pxDefaultSize
|
|
111
|
+
isBlock
|
|
112
|
+
label={ __( 'Icon Position' ) }
|
|
113
|
+
value={ iconPosition }
|
|
114
|
+
onChange={ ( value ) => {
|
|
115
|
+
setAttributes( { iconPosition: value } );
|
|
116
|
+
} }
|
|
117
|
+
>
|
|
118
|
+
<ToggleGroupControlOption
|
|
119
|
+
label={ __( 'Left' ) }
|
|
120
|
+
value="left"
|
|
121
|
+
/>
|
|
122
|
+
<ToggleGroupControlOption
|
|
123
|
+
label={ __( 'Right' ) }
|
|
124
|
+
value="right"
|
|
125
|
+
/>
|
|
126
|
+
</ToggleGroupControl>
|
|
127
|
+
</ToolsPanelItem>
|
|
128
|
+
</ToolsPanel>
|
|
129
|
+
</InspectorControls>
|
|
130
|
+
<div { ...innerBlocksProps } />
|
|
131
|
+
</>
|
|
132
|
+
);
|
|
133
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { SVG, Path } from '@wordpress/primitives';
|
|
5
|
+
|
|
6
|
+
export default (
|
|
7
|
+
<SVG xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
8
|
+
<Path
|
|
9
|
+
fillRule="evenodd"
|
|
10
|
+
clipRule="evenodd"
|
|
11
|
+
d="M19.5 9.25L9.5 9.25L9.5 7.75L19.5 7.75L19.5 9.25Z"
|
|
12
|
+
fill="currentColor"
|
|
13
|
+
/>
|
|
14
|
+
<Path d="M4.5 6L8.5 8.5L4.5 11L4.5 6Z" fill="currentColor" />
|
|
15
|
+
<Path
|
|
16
|
+
fillRule="evenodd"
|
|
17
|
+
clipRule="evenodd"
|
|
18
|
+
d="M19.5 16.25L9.5 16.25L9.5 14.75L19.5 14.75L19.5 16.25Z"
|
|
19
|
+
fill="currentColor"
|
|
20
|
+
/>
|
|
21
|
+
<Path d="M4.5 13L8.5 15.5L4.5 18L4.5 13Z" fill="currentColor" />
|
|
22
|
+
</SVG>
|
|
23
|
+
);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal dependencies
|
|
3
|
+
*/
|
|
4
|
+
import edit from './edit';
|
|
5
|
+
import save from './save';
|
|
6
|
+
import metadata from './block.json';
|
|
7
|
+
import initBlock from '../utils/init-block';
|
|
8
|
+
import icon from './icon';
|
|
9
|
+
|
|
10
|
+
const { name } = metadata;
|
|
11
|
+
|
|
12
|
+
export { metadata, name };
|
|
13
|
+
|
|
14
|
+
export const settings = {
|
|
15
|
+
icon,
|
|
16
|
+
example: {},
|
|
17
|
+
edit,
|
|
18
|
+
save,
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const init = () => initBlock( { name, metadata, settings } );
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
/**
|
|
3
|
+
* Server-side rendering of the `core/accordion` block.
|
|
4
|
+
*
|
|
5
|
+
* @package WordPress
|
|
6
|
+
* @since 6.6.0
|
|
7
|
+
*
|
|
8
|
+
* @param array $attributes The block attributes.
|
|
9
|
+
* @param string $content The block content.
|
|
10
|
+
*
|
|
11
|
+
* @return string Returns the updated markup.
|
|
12
|
+
*/
|
|
13
|
+
function render_block_core_accordion( $attributes, $content ) {
|
|
14
|
+
if ( ! $content ) {
|
|
15
|
+
return $content;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
$suffix = wp_scripts_get_suffix();
|
|
19
|
+
if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) {
|
|
20
|
+
$module_url = gutenberg_url( '/build-module/block-library/accordion/view.min.js' );
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
wp_register_script_module(
|
|
24
|
+
'@wordpress/block-library/accordion',
|
|
25
|
+
isset( $module_url ) ? $module_url : includes_url( "blocks/accordion/view{$suffix}.js" ),
|
|
26
|
+
array( '@wordpress/interactivity' ),
|
|
27
|
+
defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' )
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
wp_enqueue_script_module( '@wordpress/block-library/accordion' );
|
|
31
|
+
|
|
32
|
+
$p = new WP_HTML_Tag_Processor( $content );
|
|
33
|
+
$autoclose = $attributes['autoclose'] ? 'true' : 'false';
|
|
34
|
+
$icon = $attributes['icon'] ?? 'plus';
|
|
35
|
+
$icon_position = $attributes['iconPosition'] ?? 'right';
|
|
36
|
+
|
|
37
|
+
if ( $p->next_tag( array( 'class_name' => 'wp-block-accordion' ) ) ) {
|
|
38
|
+
$p->set_attribute( 'data-wp-interactive', 'core/accordion' );
|
|
39
|
+
$p->set_attribute( 'data-wp-context', '{ "autoclose": ' . $autoclose . ', "isOpen": [], "icon": "' . $icon . '", "iconPosition": "' . $icon_position . '" }' );
|
|
40
|
+
|
|
41
|
+
// Only modify content if directives have been set.
|
|
42
|
+
$content = $p->get_updated_html();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return $content;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Registers the `core/accordion` block on server.
|
|
50
|
+
*
|
|
51
|
+
* @since 6.6.0
|
|
52
|
+
*/
|
|
53
|
+
function register_block_core_accordion() {
|
|
54
|
+
register_block_type_from_metadata(
|
|
55
|
+
__DIR__ . '/accordion',
|
|
56
|
+
array(
|
|
57
|
+
'render_callback' => 'render_block_core_accordion',
|
|
58
|
+
)
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
add_action( 'init', 'register_block_core_accordion' );
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
/**
|
|
6
|
+
* WordPress dependencies
|
|
7
|
+
*/
|
|
8
|
+
import { useBlockProps, useInnerBlocksProps } from '@wordpress/block-editor';
|
|
9
|
+
|
|
10
|
+
export default function save( { attributes } ) {
|
|
11
|
+
const { iconPosition } = attributes;
|
|
12
|
+
const blockProps = useBlockProps.save();
|
|
13
|
+
const className = clsx(
|
|
14
|
+
{
|
|
15
|
+
'icon-position-left': iconPosition === 'left',
|
|
16
|
+
},
|
|
17
|
+
blockProps.className
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<div { ...useInnerBlocksProps.save( { ...blockProps, className } ) } />
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
.wp-block-accordion-content {
|
|
2
|
+
display: grid;
|
|
3
|
+
grid-template-rows: max-content 0fr;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.wp-block-accordion-content.is-open {
|
|
7
|
+
grid-template-rows: max-content 1fr;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.accordion-content__heading {
|
|
11
|
+
margin-block-start: 0;
|
|
12
|
+
margin-block-end: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.accordion-content__toggle {
|
|
16
|
+
font-family: inherit;
|
|
17
|
+
font-size: inherit;
|
|
18
|
+
font-weight: inherit;
|
|
19
|
+
line-height: inherit;
|
|
20
|
+
letter-spacing: inherit;
|
|
21
|
+
text-transform: inherit;
|
|
22
|
+
text-decoration: inherit;
|
|
23
|
+
word-spacing: inherit;
|
|
24
|
+
background: none;
|
|
25
|
+
border: none;
|
|
26
|
+
color: inherit;
|
|
27
|
+
padding: var(--wp--preset--spacing--20, 1em) 0;
|
|
28
|
+
cursor: pointer;
|
|
29
|
+
outline: none;
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: center;
|
|
32
|
+
text-align: inherit;
|
|
33
|
+
position: relative;
|
|
34
|
+
width: 100%;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.accordion-content__toggle > span {
|
|
38
|
+
width: 100%;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.is-layout-flow > .wp-block-accordion-panel,
|
|
42
|
+
.wp-block-accordion-panel {
|
|
43
|
+
overflow: hidden;
|
|
44
|
+
margin: 0;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.accordion-panel__wrapper {
|
|
48
|
+
padding-bottom: var(--wp--preset--spacing--20, 1em);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* No icon block style */
|
|
52
|
+
.is-style-no-icon .accordion-content__toggle-icon {
|
|
53
|
+
background-color: unset;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.wp-block-accordion-header.icon-position-left .accordion-content__toggle {
|
|
57
|
+
/* stylelint-disable-next-line declaration-property-value-allowed-list -- This should be refactored to not use the row-reverse value. */
|
|
58
|
+
flex-direction: row-reverse;
|
|
59
|
+
}
|
|
60
|
+
|
|
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
|
+
.accordion-content__toggle:focus-visible {
|
|
72
|
+
outline: 2px solid -webkit-focus-ring-color;
|
|
73
|
+
outline-offset: 2px;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Add transitions only for users who do not prefer reduced motion */
|
|
77
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
78
|
+
.wp-block-accordion-content .accordion-content__toggle-icon {
|
|
79
|
+
transition: transform 0.2s ease-in-out;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.wp-block-accordion-content {
|
|
83
|
+
transition: grid-template-rows 0.3s ease-out;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.is-open {
|
|
88
|
+
.accordion-content__toggle-icon.has-icon-plus {
|
|
89
|
+
transform: rotate(45deg);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { store, getContext } from '@wordpress/interactivity';
|
|
5
|
+
|
|
6
|
+
const { state } = store( 'core/accordion', {
|
|
7
|
+
state: {
|
|
8
|
+
get isOpen() {
|
|
9
|
+
const { isOpen, id } = getContext();
|
|
10
|
+
return isOpen.includes( id );
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
actions: {
|
|
14
|
+
toggle: () => {
|
|
15
|
+
const context = getContext();
|
|
16
|
+
const { id, autoclose } = context;
|
|
17
|
+
|
|
18
|
+
if ( autoclose ) {
|
|
19
|
+
context.isOpen = state.isOpen ? [] : [ id ];
|
|
20
|
+
} else if ( state.isOpen ) {
|
|
21
|
+
context.isOpen = context.isOpen.filter(
|
|
22
|
+
( item ) => item !== id
|
|
23
|
+
);
|
|
24
|
+
} else {
|
|
25
|
+
context.isOpen.push( id );
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
callbacks: {
|
|
30
|
+
initIsOpen: () => {
|
|
31
|
+
const context = getContext();
|
|
32
|
+
const { id, openByDefault } = context;
|
|
33
|
+
if ( openByDefault ) {
|
|
34
|
+
context.isOpen.push( id );
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
} );
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://schemas.wp.org/trunk/block.json",
|
|
3
|
+
"apiVersion": 3,
|
|
4
|
+
"name": "core/accordion-content",
|
|
5
|
+
"version": "0.1.0",
|
|
6
|
+
"title": "Accordion Content",
|
|
7
|
+
"category": "design",
|
|
8
|
+
"description": "Displays a section of content in an accordion, including a header and expandable content.",
|
|
9
|
+
"example": {},
|
|
10
|
+
"__experimental": true,
|
|
11
|
+
"parent": [ "core/accordion" ],
|
|
12
|
+
"allowedBlocks": [ "core/accordion-header", "core/accordion-panel" ],
|
|
13
|
+
"supports": {
|
|
14
|
+
"align": [ "wide", "full" ],
|
|
15
|
+
"color": {
|
|
16
|
+
"background": true,
|
|
17
|
+
"gradient": true
|
|
18
|
+
},
|
|
19
|
+
"interactivity": true,
|
|
20
|
+
"spacing": {
|
|
21
|
+
"margin": [ "top", "bottom" ],
|
|
22
|
+
"blockGap": true
|
|
23
|
+
},
|
|
24
|
+
"__experimentalBorder": {
|
|
25
|
+
"color": true,
|
|
26
|
+
"radius": true,
|
|
27
|
+
"style": true,
|
|
28
|
+
"width": true,
|
|
29
|
+
"__experimentalDefaultControls": {
|
|
30
|
+
"color": true,
|
|
31
|
+
"radius": true,
|
|
32
|
+
"style": true,
|
|
33
|
+
"width": true
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"shadow": true
|
|
37
|
+
},
|
|
38
|
+
"attributes": {
|
|
39
|
+
"openByDefault": {
|
|
40
|
+
"type": "boolean",
|
|
41
|
+
"default": false
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"textdomain": "default"
|
|
45
|
+
}
|