@wordpress/block-library 9.31.1-next.233ccab9b.0 → 9.32.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 +62 -12
- package/build/accordion/edit.js.map +1 -1
- package/build/accordion/index.js +15 -7
- package/build/accordion/index.js.map +1 -1
- package/build/accordion/view.js +15 -15
- package/build/accordion/view.js.map +1 -1
- package/build/accordion-heading/edit.js +68 -0
- package/build/accordion-heading/edit.js.map +1 -0
- package/build/accordion-heading/icon.js.map +1 -0
- package/build/{accordion-header → accordion-heading}/index.js +9 -12
- package/build/accordion-heading/index.js.map +1 -0
- package/build/{accordion-content → accordion-heading}/init.js.map +1 -1
- package/build/{accordion-header → accordion-heading}/save.js +6 -8
- package/build/accordion-heading/save.js.map +1 -0
- package/build/{accordion-content → accordion-item}/edit.js +8 -2
- package/build/accordion-item/edit.js.map +1 -0
- package/build/accordion-item/icon.js.map +1 -0
- package/build/{accordion-content → accordion-item}/index.js +5 -5
- package/build/accordion-item/index.js.map +1 -0
- package/build/accordion-item/init.js.map +1 -0
- package/build/accordion-item/save.js.map +1 -0
- package/build/accordion-panel/index.js +3 -2
- package/build/accordion-panel/index.js.map +1 -1
- package/build/block/index.js +1 -0
- package/build/block/index.js.map +1 -1
- package/build/index.js +24 -4
- package/build/index.js.map +1 -1
- package/build/navigation-link/edit.js +3 -140
- package/build/navigation-link/edit.js.map +1 -1
- package/build/navigation-link/shared/controls.js +171 -0
- package/build/navigation-link/shared/controls.js.map +1 -0
- package/build/navigation-link/shared/index.js +13 -0
- package/build/navigation-link/shared/index.js.map +1 -0
- package/build/navigation-submenu/edit.js +5 -110
- package/build/navigation-submenu/edit.js.map +1 -1
- package/build/pattern/index.js +1 -0
- package/build/pattern/index.js.map +1 -1
- package/build/post-time-to-read/edit.js +16 -61
- package/build/post-time-to-read/edit.js.map +1 -1
- package/build/post-time-to-read/index.js +5 -7
- package/build/post-time-to-read/index.js.map +1 -1
- package/build/post-time-to-read/variations.js +41 -0
- package/build/post-time-to-read/variations.js.map +1 -0
- package/build/query-title/edit.js +1 -1
- package/build/query-title/edit.js.map +1 -1
- package/build/template-part/index.js +1 -0
- package/build/template-part/index.js.map +1 -1
- package/build/utils/get-transformed-metadata.js +7 -0
- package/build/utils/get-transformed-metadata.js.map +1 -1
- package/build-module/accordion/edit.js +66 -16
- package/build-module/accordion/edit.js.map +1 -1
- package/build-module/accordion/index.js +15 -7
- package/build-module/accordion/index.js.map +1 -1
- package/build-module/accordion/view.js +15 -15
- package/build-module/accordion/view.js.map +1 -1
- package/build-module/accordion-heading/edit.js +61 -0
- package/build-module/accordion-heading/edit.js.map +1 -0
- package/build-module/accordion-heading/icon.js.map +1 -0
- package/build-module/{accordion-header → accordion-heading}/index.js +9 -12
- package/build-module/accordion-heading/index.js.map +1 -0
- package/build-module/{accordion-content → accordion-heading}/init.js.map +1 -1
- package/build-module/{accordion-header → accordion-heading}/save.js +6 -8
- package/build-module/accordion-heading/save.js.map +1 -0
- package/build-module/{accordion-content → accordion-item}/edit.js +8 -2
- package/build-module/accordion-item/edit.js.map +1 -0
- package/build-module/accordion-item/icon.js.map +1 -0
- package/build-module/{accordion-content → accordion-item}/index.js +5 -5
- package/build-module/accordion-item/index.js.map +1 -0
- package/build-module/accordion-item/init.js.map +1 -0
- package/build-module/accordion-item/save.js.map +1 -0
- package/build-module/accordion-panel/index.js +3 -2
- package/build-module/accordion-panel/index.js.map +1 -1
- package/build-module/block/index.js +1 -0
- package/build-module/block/index.js.map +1 -1
- package/build-module/index.js +25 -5
- package/build-module/index.js.map +1 -1
- package/build-module/navigation-link/edit.js +4 -141
- package/build-module/navigation-link/edit.js.map +1 -1
- package/build-module/navigation-link/shared/controls.js +165 -0
- package/build-module/navigation-link/shared/controls.js.map +1 -0
- package/build-module/navigation-link/shared/index.js +9 -0
- package/build-module/navigation-link/shared/index.js.map +1 -0
- package/build-module/navigation-submenu/edit.js +6 -111
- package/build-module/navigation-submenu/edit.js.map +1 -1
- package/build-module/pattern/index.js +1 -0
- package/build-module/pattern/index.js.map +1 -1
- package/build-module/post-time-to-read/edit.js +17 -62
- package/build-module/post-time-to-read/edit.js.map +1 -1
- package/build-module/post-time-to-read/index.js +5 -7
- package/build-module/post-time-to-read/index.js.map +1 -1
- package/build-module/post-time-to-read/variations.js +33 -0
- package/build-module/post-time-to-read/variations.js.map +1 -0
- package/build-module/query-title/edit.js +1 -1
- package/build-module/query-title/edit.js.map +1 -1
- package/build-module/template-part/index.js +1 -0
- package/build-module/template-part/index.js.map +1 -1
- package/build-module/utils/get-transformed-metadata.js +7 -0
- package/build-module/utils/get-transformed-metadata.js.map +1 -1
- package/build-style/{accordion-header → accordion-heading}/style-rtl.css +8 -7
- package/build-style/{accordion-header → accordion-heading}/style.css +8 -7
- package/build-style/{accordion-content → accordion-item}/style-rtl.css +5 -5
- package/build-style/{accordion-content → accordion-item}/style.css +5 -5
- package/build-style/style-rtl.css +13 -12
- package/build-style/style.css +13 -12
- package/package.json +35 -35
- package/src/accordion/block.json +11 -3
- package/src/accordion/edit.js +70 -13
- package/src/accordion/index.js +4 -4
- package/src/accordion/index.php +1 -1
- package/src/accordion/view.js +15 -15
- package/src/{accordion-header → accordion-heading}/block.json +10 -12
- package/src/accordion-heading/edit.js +70 -0
- package/src/{accordion-header → accordion-heading}/save.js +6 -8
- package/src/{accordion-header → accordion-heading}/style.scss +11 -7
- package/src/{accordion-content → accordion-item}/block.json +5 -5
- package/src/{accordion-content → accordion-item}/edit.js +12 -2
- package/src/{accordion-content → accordion-item}/index.php +11 -11
- package/src/{accordion-content → accordion-item}/style.scss +3 -3
- package/src/accordion-panel/block.json +3 -2
- package/src/block/block.json +1 -0
- package/src/index.js +23 -4
- package/src/navigation-link/edit.js +3 -142
- package/src/navigation-link/shared/README.md +47 -0
- package/src/navigation-link/shared/controls.js +167 -0
- package/src/navigation-link/shared/index.js +8 -0
- package/src/navigation-link/shared/test/controls.js +210 -0
- package/src/navigation-submenu/edit.js +7 -125
- package/src/pattern/block.json +1 -0
- package/src/post-time-to-read/block.json +3 -7
- package/src/post-time-to-read/edit.js +36 -94
- package/src/post-time-to-read/index.js +2 -0
- package/src/post-time-to-read/index.php +12 -7
- package/src/post-time-to-read/variations.js +39 -0
- package/src/query-title/edit.js +2 -1
- package/src/query-title/index.php +3 -1
- package/src/style.scss +2 -2
- package/src/template-part/block.json +1 -0
- package/src/utils/get-transformed-metadata.js +8 -0
- package/build/accordion-content/edit.js.map +0 -1
- package/build/accordion-content/icon.js.map +0 -1
- package/build/accordion-content/index.js.map +0 -1
- package/build/accordion-content/save.js.map +0 -1
- package/build/accordion-header/edit.js +0 -84
- package/build/accordion-header/edit.js.map +0 -1
- package/build/accordion-header/icon.js.map +0 -1
- package/build/accordion-header/index.js.map +0 -1
- package/build/accordion-header/init.js.map +0 -1
- package/build/accordion-header/save.js.map +0 -1
- package/build-module/accordion-content/edit.js.map +0 -1
- package/build-module/accordion-content/icon.js.map +0 -1
- package/build-module/accordion-content/index.js.map +0 -1
- package/build-module/accordion-content/save.js.map +0 -1
- package/build-module/accordion-header/edit.js +0 -77
- package/build-module/accordion-header/edit.js.map +0 -1
- package/build-module/accordion-header/icon.js.map +0 -1
- package/build-module/accordion-header/index.js.map +0 -1
- package/build-module/accordion-header/init.js.map +0 -1
- package/build-module/accordion-header/save.js.map +0 -1
- package/src/accordion-header/edit.js +0 -87
- /package/build/{accordion-header → accordion-heading}/icon.js +0 -0
- /package/build/{accordion-content → accordion-heading}/init.js +0 -0
- /package/build/{accordion-content → accordion-item}/icon.js +0 -0
- /package/build/{accordion-header → accordion-item}/init.js +0 -0
- /package/build/{accordion-content → accordion-item}/save.js +0 -0
- /package/build-module/{accordion-header → accordion-heading}/icon.js +0 -0
- /package/build-module/{accordion-content → accordion-heading}/init.js +0 -0
- /package/build-module/{accordion-content → accordion-item}/icon.js +0 -0
- /package/build-module/{accordion-header → accordion-item}/init.js +0 -0
- /package/build-module/{accordion-content → accordion-item}/save.js +0 -0
- /package/src/{accordion-header → accordion-heading}/icon.js +0 -0
- /package/src/{accordion-content → accordion-heading}/index.js +0 -0
- /package/src/{accordion-content → accordion-heading}/init.js +0 -0
- /package/src/{accordion-content → accordion-item}/icon.js +0 -0
- /package/src/{accordion-header → accordion-item}/index.js +0 -0
- /package/src/{accordion-header → accordion-item}/init.js +0 -0
- /package/src/{accordion-content → accordion-item}/save.js +0 -0
|
@@ -37,6 +37,13 @@ function getTransformedMetadata(metadata, newBlockName, bindingsCallback) {
|
|
|
37
37
|
if (supports.renaming !== false) {
|
|
38
38
|
transformSupportedProps.push('name');
|
|
39
39
|
}
|
|
40
|
+
// If it supports block visibility (true by default), add the `blockVisibility` property.
|
|
41
|
+
if (supports.blockVisibility !== false) {
|
|
42
|
+
transformSupportedProps.push('blockVisibility');
|
|
43
|
+
}
|
|
44
|
+
if (window?.__experimentalEnableBlockComment) {
|
|
45
|
+
transformSupportedProps.push('commentId');
|
|
46
|
+
}
|
|
40
47
|
|
|
41
48
|
// Return early if no supported properties.
|
|
42
49
|
if (!transformSupportedProps.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_blocks","require","getTransformedMetadata","metadata","newBlockName","bindingsCallback","supports","getBlockType","BLOCK_BINDINGS_SUPPORTED_BLOCKS","transformSupportedProps","includes","push","renaming","length","newMetadata","Object","entries","reduce","obj","prop","value","keys","undefined"],"sources":["@wordpress/block-library/src/utils/get-transformed-metadata.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockType } from '@wordpress/blocks';\n\n/**\n * Transform the metadata attribute with only the values and bindings specified by each transform.\n * Returns `undefined` if the input metadata is falsy.\n *\n * @param {Object} metadata Original metadata attribute from the block that is being transformed.\n * @param {Object} newBlockName Name of the final block after the transformation.\n * @param {Function} bindingsCallback Optional callback to transform the `bindings` property object.\n * @return {Object|undefined} New metadata object only with the relevant properties.\n */\nexport function getTransformedMetadata(\n\tmetadata,\n\tnewBlockName,\n\tbindingsCallback\n) {\n\tif ( ! metadata ) {\n\t\treturn;\n\t}\n\tconst { supports } = getBlockType( newBlockName );\n\t// Fixed until an opt-in mechanism is implemented.\n\tconst BLOCK_BINDINGS_SUPPORTED_BLOCKS = [\n\t\t'core/paragraph',\n\t\t'core/heading',\n\t\t'core/image',\n\t\t'core/button',\n\t];\n\t// The metadata properties that should be preserved after the transform.\n\tconst transformSupportedProps = [];\n\t// If it support bindings, and there is a transform bindings callback, add the `id` and `bindings` properties.\n\tif (\n\t\tBLOCK_BINDINGS_SUPPORTED_BLOCKS.includes( newBlockName ) &&\n\t\tbindingsCallback\n\t) {\n\t\ttransformSupportedProps.push( 'id', 'bindings' );\n\t}\n\t// If it support block naming (true by default), add the `name` property.\n\tif ( supports.renaming !== false ) {\n\t\ttransformSupportedProps.push( 'name' );\n\t}\n\n\t// Return early if no supported properties.\n\tif ( ! transformSupportedProps.length ) {\n\t\treturn;\n\t}\n\n\tconst newMetadata = Object.entries( metadata ).reduce(\n\t\t( obj, [ prop, value ] ) => {\n\t\t\t// If prop is not supported, don't add it to the new metadata object.\n\t\t\tif ( ! transformSupportedProps.includes( prop ) ) {\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t\tobj[ prop ] =\n\t\t\t\tprop === 'bindings' ? bindingsCallback( value ) : value;\n\t\t\treturn obj;\n\t\t},\n\t\t{}\n\t);\n\n\t// Return undefined if object is empty.\n\treturn Object.keys( newMetadata ).length ? newMetadata : undefined;\n}\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,sBAAsBA,CACrCC,QAAQ,EACRC,YAAY,EACZC,gBAAgB,EACf;EACD,IAAK,CAAEF,QAAQ,EAAG;IACjB;EACD;EACA,MAAM;IAAEG;EAAS,CAAC,GAAG,IAAAC,oBAAY,EAAEH,YAAa,CAAC;EACjD;EACA,MAAMI,+BAA+B,GAAG,CACvC,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,aAAa,CACb;EACD;EACA,MAAMC,uBAAuB,GAAG,EAAE;EAClC;EACA,IACCD,+BAA+B,CAACE,QAAQ,CAAEN,YAAa,CAAC,IACxDC,gBAAgB,EACf;IACDI,uBAAuB,CAACE,IAAI,CAAE,IAAI,EAAE,UAAW,CAAC;EACjD;EACA;EACA,IAAKL,QAAQ,CAACM,QAAQ,KAAK,KAAK,EAAG;IAClCH,uBAAuB,CAACE,IAAI,CAAE,MAAO,CAAC;EACvC;;EAEA;EACA,IAAK,CAAEF,uBAAuB,
|
|
1
|
+
{"version":3,"names":["_blocks","require","getTransformedMetadata","metadata","newBlockName","bindingsCallback","supports","getBlockType","BLOCK_BINDINGS_SUPPORTED_BLOCKS","transformSupportedProps","includes","push","renaming","blockVisibility","window","__experimentalEnableBlockComment","length","newMetadata","Object","entries","reduce","obj","prop","value","keys","undefined"],"sources":["@wordpress/block-library/src/utils/get-transformed-metadata.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockType } from '@wordpress/blocks';\n\n/**\n * Transform the metadata attribute with only the values and bindings specified by each transform.\n * Returns `undefined` if the input metadata is falsy.\n *\n * @param {Object} metadata Original metadata attribute from the block that is being transformed.\n * @param {Object} newBlockName Name of the final block after the transformation.\n * @param {Function} bindingsCallback Optional callback to transform the `bindings` property object.\n * @return {Object|undefined} New metadata object only with the relevant properties.\n */\nexport function getTransformedMetadata(\n\tmetadata,\n\tnewBlockName,\n\tbindingsCallback\n) {\n\tif ( ! metadata ) {\n\t\treturn;\n\t}\n\tconst { supports } = getBlockType( newBlockName );\n\t// Fixed until an opt-in mechanism is implemented.\n\tconst BLOCK_BINDINGS_SUPPORTED_BLOCKS = [\n\t\t'core/paragraph',\n\t\t'core/heading',\n\t\t'core/image',\n\t\t'core/button',\n\t];\n\t// The metadata properties that should be preserved after the transform.\n\tconst transformSupportedProps = [];\n\t// If it support bindings, and there is a transform bindings callback, add the `id` and `bindings` properties.\n\tif (\n\t\tBLOCK_BINDINGS_SUPPORTED_BLOCKS.includes( newBlockName ) &&\n\t\tbindingsCallback\n\t) {\n\t\ttransformSupportedProps.push( 'id', 'bindings' );\n\t}\n\t// If it support block naming (true by default), add the `name` property.\n\tif ( supports.renaming !== false ) {\n\t\ttransformSupportedProps.push( 'name' );\n\t}\n\t// If it supports block visibility (true by default), add the `blockVisibility` property.\n\tif ( supports.blockVisibility !== false ) {\n\t\ttransformSupportedProps.push( 'blockVisibility' );\n\t}\n\n\tif ( window?.__experimentalEnableBlockComment ) {\n\t\ttransformSupportedProps.push( 'commentId' );\n\t}\n\n\t// Return early if no supported properties.\n\tif ( ! transformSupportedProps.length ) {\n\t\treturn;\n\t}\n\n\tconst newMetadata = Object.entries( metadata ).reduce(\n\t\t( obj, [ prop, value ] ) => {\n\t\t\t// If prop is not supported, don't add it to the new metadata object.\n\t\t\tif ( ! transformSupportedProps.includes( prop ) ) {\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t\tobj[ prop ] =\n\t\t\t\tprop === 'bindings' ? bindingsCallback( value ) : value;\n\t\t\treturn obj;\n\t\t},\n\t\t{}\n\t);\n\n\t// Return undefined if object is empty.\n\treturn Object.keys( newMetadata ).length ? newMetadata : undefined;\n}\n"],"mappings":";;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,sBAAsBA,CACrCC,QAAQ,EACRC,YAAY,EACZC,gBAAgB,EACf;EACD,IAAK,CAAEF,QAAQ,EAAG;IACjB;EACD;EACA,MAAM;IAAEG;EAAS,CAAC,GAAG,IAAAC,oBAAY,EAAEH,YAAa,CAAC;EACjD;EACA,MAAMI,+BAA+B,GAAG,CACvC,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,aAAa,CACb;EACD;EACA,MAAMC,uBAAuB,GAAG,EAAE;EAClC;EACA,IACCD,+BAA+B,CAACE,QAAQ,CAAEN,YAAa,CAAC,IACxDC,gBAAgB,EACf;IACDI,uBAAuB,CAACE,IAAI,CAAE,IAAI,EAAE,UAAW,CAAC;EACjD;EACA;EACA,IAAKL,QAAQ,CAACM,QAAQ,KAAK,KAAK,EAAG;IAClCH,uBAAuB,CAACE,IAAI,CAAE,MAAO,CAAC;EACvC;EACA;EACA,IAAKL,QAAQ,CAACO,eAAe,KAAK,KAAK,EAAG;IACzCJ,uBAAuB,CAACE,IAAI,CAAE,iBAAkB,CAAC;EAClD;EAEA,IAAKG,MAAM,EAAEC,gCAAgC,EAAG;IAC/CN,uBAAuB,CAACE,IAAI,CAAE,WAAY,CAAC;EAC5C;;EAEA;EACA,IAAK,CAAEF,uBAAuB,CAACO,MAAM,EAAG;IACvC;EACD;EAEA,MAAMC,WAAW,GAAGC,MAAM,CAACC,OAAO,CAAEhB,QAAS,CAAC,CAACiB,MAAM,CACpD,CAAEC,GAAG,EAAE,CAAEC,IAAI,EAAEC,KAAK,CAAE,KAAM;IAC3B;IACA,IAAK,CAAEd,uBAAuB,CAACC,QAAQ,CAAEY,IAAK,CAAC,EAAG;MACjD,OAAOD,GAAG;IACX;IACAA,GAAG,CAAEC,IAAI,CAAE,GACVA,IAAI,KAAK,UAAU,GAAGjB,gBAAgB,CAAEkB,KAAM,CAAC,GAAGA,KAAK;IACxD,OAAOF,GAAG;EACX,CAAC,EACD,CAAC,CACF,CAAC;;EAED;EACA,OAAOH,MAAM,CAACM,IAAI,CAAEP,WAAY,CAAC,CAACD,MAAM,GAAGC,WAAW,GAAGQ,SAAS;AACnE","ignoreList":[]}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress dependencies
|
|
3
3
|
*/
|
|
4
|
-
import { useBlockProps, useInnerBlocksProps, InspectorControls, BlockControls, store as blockEditorStore } from '@wordpress/block-editor';
|
|
4
|
+
import { useBlockProps, useInnerBlocksProps, InspectorControls, BlockControls, useBlockEditingMode, store as blockEditorStore, HeadingLevelDropdown } from '@wordpress/block-editor';
|
|
5
5
|
import { __ } from '@wordpress/i18n';
|
|
6
|
-
import { ToggleControl, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem, ToolbarButton } from '@wordpress/components';
|
|
7
|
-
import { useDispatch } from '@wordpress/data';
|
|
6
|
+
import { ToggleControl, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem, ToolbarButton, ToolbarGroup } from '@wordpress/components';
|
|
7
|
+
import { useDispatch, useSelect, useRegistry } from '@wordpress/data';
|
|
8
8
|
import { createBlock } from '@wordpress/blocks';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Internal dependencies
|
|
12
12
|
*/
|
|
13
13
|
import { useToolsPanelDropdownMenuProps } from '../utils/hooks';
|
|
14
|
-
import { jsx as _jsx,
|
|
15
|
-
const ACCORDION_BLOCK_NAME = 'core/accordion-
|
|
14
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
|
+
const ACCORDION_BLOCK_NAME = 'core/accordion-item';
|
|
16
|
+
const ACCORDION_HEADING_BLOCK_NAME = 'core/accordion-heading';
|
|
16
17
|
const ACCORDION_BLOCK = {
|
|
17
18
|
name: ACCORDION_BLOCK_NAME
|
|
18
19
|
};
|
|
@@ -20,34 +21,82 @@ export default function Edit({
|
|
|
20
21
|
attributes: {
|
|
21
22
|
autoclose,
|
|
22
23
|
iconPosition,
|
|
23
|
-
showIcon
|
|
24
|
+
showIcon,
|
|
25
|
+
headingLevel,
|
|
26
|
+
levelOptions
|
|
24
27
|
},
|
|
25
28
|
clientId,
|
|
26
29
|
setAttributes,
|
|
27
30
|
isSelected: isSingleSelected
|
|
28
31
|
}) {
|
|
32
|
+
const registry = useRegistry();
|
|
33
|
+
const {
|
|
34
|
+
getBlockOrder
|
|
35
|
+
} = useSelect(blockEditorStore);
|
|
29
36
|
const blockProps = useBlockProps();
|
|
30
37
|
const dropdownMenuProps = useToolsPanelDropdownMenuProps();
|
|
31
38
|
const {
|
|
39
|
+
updateBlockAttributes,
|
|
32
40
|
insertBlock
|
|
33
41
|
} = useDispatch(blockEditorStore);
|
|
42
|
+
const blockEditingMode = useBlockEditingMode();
|
|
43
|
+
const isContentOnlyMode = blockEditingMode === 'contentOnly';
|
|
34
44
|
const innerBlocksProps = useInnerBlocksProps(blockProps, {
|
|
35
45
|
template: [[ACCORDION_BLOCK_NAME], [ACCORDION_BLOCK_NAME]],
|
|
36
46
|
defaultBlock: ACCORDION_BLOCK,
|
|
37
47
|
directInsert: true,
|
|
38
48
|
templateInsertUpdatesSelection: true
|
|
39
49
|
});
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
50
|
+
const addAccordionItemBlock = () => {
|
|
51
|
+
// When adding, set the header's level to current headingLevel
|
|
52
|
+
const newAccordionItem = createBlock(ACCORDION_BLOCK_NAME, {}, [createBlock(ACCORDION_HEADING_BLOCK_NAME, {
|
|
53
|
+
level: headingLevel
|
|
54
|
+
}), createBlock('core/accordion-panel', {})]);
|
|
55
|
+
insertBlock(newAccordionItem, undefined, clientId);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Update all child Accordion Header blocks with a new heading level
|
|
60
|
+
* based on the accordion group setting.
|
|
61
|
+
* @param {number} newHeadingLevel The new heading level to set
|
|
62
|
+
*/
|
|
63
|
+
const updateHeadingLevel = newHeadingLevel => {
|
|
64
|
+
const innerBlockClientIds = getBlockOrder(clientId);
|
|
65
|
+
|
|
66
|
+
// Get all accordion-header blocks from all accordion-content blocks.
|
|
67
|
+
const accordionHeaderClientIds = [];
|
|
68
|
+
innerBlockClientIds.forEach(contentClientId => {
|
|
69
|
+
const headerClientIds = getBlockOrder(contentClientId);
|
|
70
|
+
accordionHeaderClientIds.push(...headerClientIds);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// Update own and child block heading levels.
|
|
74
|
+
registry.batch(() => {
|
|
75
|
+
setAttributes({
|
|
76
|
+
headingLevel: newHeadingLevel
|
|
77
|
+
});
|
|
78
|
+
updateBlockAttributes(accordionHeaderClientIds, {
|
|
79
|
+
level: newHeadingLevel
|
|
80
|
+
});
|
|
81
|
+
});
|
|
43
82
|
};
|
|
44
83
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
45
|
-
children: [isSingleSelected && /*#__PURE__*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
84
|
+
children: [isSingleSelected && !isContentOnlyMode && /*#__PURE__*/_jsxs(_Fragment, {
|
|
85
|
+
children: [/*#__PURE__*/_jsx(BlockControls, {
|
|
86
|
+
children: /*#__PURE__*/_jsx(ToolbarGroup, {
|
|
87
|
+
children: /*#__PURE__*/_jsx(HeadingLevelDropdown, {
|
|
88
|
+
value: headingLevel,
|
|
89
|
+
options: levelOptions,
|
|
90
|
+
onChange: updateHeadingLevel
|
|
91
|
+
})
|
|
92
|
+
})
|
|
93
|
+
}), /*#__PURE__*/_jsx(BlockControls, {
|
|
94
|
+
group: "other",
|
|
95
|
+
children: /*#__PURE__*/_jsx(ToolbarButton, {
|
|
96
|
+
onClick: addAccordionItemBlock,
|
|
97
|
+
children: __('Add')
|
|
98
|
+
})
|
|
99
|
+
})]
|
|
51
100
|
}), /*#__PURE__*/_jsx(InspectorControls, {
|
|
52
101
|
children: /*#__PURE__*/_jsxs(ToolsPanel, {
|
|
53
102
|
label: __('Settings'),
|
|
@@ -55,7 +104,8 @@ export default function Edit({
|
|
|
55
104
|
setAttributes({
|
|
56
105
|
autoclose: false,
|
|
57
106
|
showIcon: true,
|
|
58
|
-
iconPosition: 'right'
|
|
107
|
+
iconPosition: 'right',
|
|
108
|
+
headingLevel: 3
|
|
59
109
|
});
|
|
60
110
|
},
|
|
61
111
|
dropdownMenuProps: dropdownMenuProps,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useBlockProps","useInnerBlocksProps","InspectorControls","BlockControls","store","blockEditorStore","__","ToggleControl","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","ToolbarButton","useDispatch","createBlock","useToolsPanelDropdownMenuProps","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ACCORDION_BLOCK_NAME","ACCORDION_BLOCK","name","Edit","attributes","autoclose","iconPosition","showIcon","clientId","setAttributes","isSelected","isSingleSelected","blockProps","dropdownMenuProps","insertBlock","innerBlocksProps","template","defaultBlock","directInsert","templateInsertUpdatesSelection","addAccordionContentBlock","newAccordionContent","undefined","children","group","onClick","label","resetAll","isShownByDefault","hasValue","onDeselect","isBlock","__nextHasNoMarginBottom","onChange","value","checked","help","__next40pxDefaultSize"],"sources":["@wordpress/block-library/src/accordion/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tInspectorControls,\n\tBlockControls,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToolbarButton,\n} from '@wordpress/components';\nimport { useDispatch } from '@wordpress/data';\nimport { createBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst ACCORDION_BLOCK_NAME = 'core/accordion-content';\nconst ACCORDION_BLOCK = {\n\tname: ACCORDION_BLOCK_NAME,\n};\n\nexport default function Edit( {\n\tattributes: { autoclose, iconPosition, showIcon },\n\tclientId,\n\tsetAttributes,\n\tisSelected: isSingleSelected,\n} ) {\n\tconst blockProps = useBlockProps();\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst { insertBlock } = useDispatch( blockEditorStore );\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: [ [ ACCORDION_BLOCK_NAME ], [ ACCORDION_BLOCK_NAME ] ],\n\t\tdefaultBlock: ACCORDION_BLOCK,\n\t\tdirectInsert: true,\n\t\ttemplateInsertUpdatesSelection: true,\n\t} );\n\n\tconst addAccordionContentBlock = () => {\n\t\tconst newAccordionContent = createBlock( ACCORDION_BLOCK_NAME );\n\t\tinsertBlock( newAccordionContent, undefined, clientId );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{ isSingleSelected && (\n\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t<ToolbarButton onClick={ addAccordionContentBlock }>\n\t\t\t\t\t\t{ __( 'Add' ) }\n\t\t\t\t\t</ToolbarButton>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<InspectorControls key=\"setting\">\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tautoclose: false,\n\t\t\t\t\t\t\tshowIcon: true,\n\t\t\t\t\t\t\ticonPosition: 'right',\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Auto-close' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => !! autoclose }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { autoclose: false } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Auto-close' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tautoclose: value,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tchecked={ autoclose }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Automatically close accordions when a new one is opened.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Show icon' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => ! showIcon }\n\t\t\t\t\t\tonDeselect={ () => setAttributes( { showIcon: true } ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Show icon' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tshowIcon: value,\n\t\t\t\t\t\t\t\t\ticonPosition: value\n\t\t\t\t\t\t\t\t\t\t? iconPosition\n\t\t\t\t\t\t\t\t\t\t: 'right',\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tchecked={ showIcon }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Display a plus icon next to the accordion header.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t{ showIcon && (\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\tlabel={ __( 'Icon Position' ) }\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\thasValue={ () => iconPosition !== 'right' }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { iconPosition: 'right' } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\t\tlabel={ __( 'Icon Position' ) }\n\t\t\t\t\t\t\t\tvalue={ iconPosition }\n\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\tsetAttributes( { iconPosition: value } );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Left' ) }\n\t\t\t\t\t\t\t\t\tvalue=\"left\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Right' ) }\n\t\t\t\t\t\t\t\t\tvalue=\"right\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useBlockProps","useInnerBlocksProps","InspectorControls","BlockControls","useBlockEditingMode","store","blockEditorStore","HeadingLevelDropdown","__","ToggleControl","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","ToolbarButton","ToolbarGroup","useDispatch","useSelect","useRegistry","createBlock","useToolsPanelDropdownMenuProps","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ACCORDION_BLOCK_NAME","ACCORDION_HEADING_BLOCK_NAME","ACCORDION_BLOCK","name","Edit","attributes","autoclose","iconPosition","showIcon","headingLevel","levelOptions","clientId","setAttributes","isSelected","isSingleSelected","registry","getBlockOrder","blockProps","dropdownMenuProps","updateBlockAttributes","insertBlock","blockEditingMode","isContentOnlyMode","innerBlocksProps","template","defaultBlock","directInsert","templateInsertUpdatesSelection","addAccordionItemBlock","newAccordionItem","level","undefined","updateHeadingLevel","newHeadingLevel","innerBlockClientIds","accordionHeaderClientIds","forEach","contentClientId","headerClientIds","push","batch","children","value","options","onChange","group","onClick","label","resetAll","isShownByDefault","hasValue","onDeselect","isBlock","__nextHasNoMarginBottom","checked","help","__next40pxDefaultSize"],"sources":["@wordpress/block-library/src/accordion/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseBlockProps,\n\tuseInnerBlocksProps,\n\tInspectorControls,\n\tBlockControls,\n\tuseBlockEditingMode,\n\tstore as blockEditorStore,\n\tHeadingLevelDropdown,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport { useDispatch, useSelect, useRegistry } from '@wordpress/data';\nimport { createBlock } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\n\nconst ACCORDION_BLOCK_NAME = 'core/accordion-item';\nconst ACCORDION_HEADING_BLOCK_NAME = 'core/accordion-heading';\nconst ACCORDION_BLOCK = {\n\tname: ACCORDION_BLOCK_NAME,\n};\n\nexport default function Edit( {\n\tattributes: {\n\t\tautoclose,\n\t\ticonPosition,\n\t\tshowIcon,\n\t\theadingLevel,\n\t\tlevelOptions,\n\t},\n\tclientId,\n\tsetAttributes,\n\tisSelected: isSingleSelected,\n} ) {\n\tconst registry = useRegistry();\n\tconst { getBlockOrder } = useSelect( blockEditorStore );\n\tconst blockProps = useBlockProps();\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst { updateBlockAttributes, insertBlock } =\n\t\tuseDispatch( blockEditorStore );\n\tconst blockEditingMode = useBlockEditingMode();\n\tconst isContentOnlyMode = blockEditingMode === 'contentOnly';\n\n\tconst innerBlocksProps = useInnerBlocksProps( blockProps, {\n\t\ttemplate: [ [ ACCORDION_BLOCK_NAME ], [ ACCORDION_BLOCK_NAME ] ],\n\t\tdefaultBlock: ACCORDION_BLOCK,\n\t\tdirectInsert: true,\n\t\ttemplateInsertUpdatesSelection: true,\n\t} );\n\n\tconst addAccordionItemBlock = () => {\n\t\t// When adding, set the header's level to current headingLevel\n\t\tconst newAccordionItem = createBlock( ACCORDION_BLOCK_NAME, {}, [\n\t\t\tcreateBlock( ACCORDION_HEADING_BLOCK_NAME, {\n\t\t\t\tlevel: headingLevel,\n\t\t\t} ),\n\t\t\tcreateBlock( 'core/accordion-panel', {} ),\n\t\t] );\n\t\tinsertBlock( newAccordionItem, undefined, clientId );\n\t};\n\n\t/**\n\t * Update all child Accordion Header blocks with a new heading level\n\t * based on the accordion group setting.\n\t * @param {number} newHeadingLevel The new heading level to set\n\t */\n\tconst updateHeadingLevel = ( newHeadingLevel ) => {\n\t\tconst innerBlockClientIds = getBlockOrder( clientId );\n\n\t\t// Get all accordion-header blocks from all accordion-content blocks.\n\t\tconst accordionHeaderClientIds = [];\n\t\tinnerBlockClientIds.forEach( ( contentClientId ) => {\n\t\t\tconst headerClientIds = getBlockOrder( contentClientId );\n\t\t\taccordionHeaderClientIds.push( ...headerClientIds );\n\t\t} );\n\n\t\t// Update own and child block heading levels.\n\t\tregistry.batch( () => {\n\t\t\tsetAttributes( { headingLevel: newHeadingLevel } );\n\t\t\tupdateBlockAttributes( accordionHeaderClientIds, {\n\t\t\t\tlevel: newHeadingLevel,\n\t\t\t} );\n\t\t} );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{ isSingleSelected && ! isContentOnlyMode && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls>\n\t\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t\t<HeadingLevelDropdown\n\t\t\t\t\t\t\t\tvalue={ headingLevel }\n\t\t\t\t\t\t\t\toptions={ levelOptions }\n\t\t\t\t\t\t\t\tonChange={ updateHeadingLevel }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t\t<BlockControls group=\"other\">\n\t\t\t\t\t\t<ToolbarButton onClick={ addAccordionItemBlock }>\n\t\t\t\t\t\t\t{ __( 'Add' ) }\n\t\t\t\t\t\t</ToolbarButton>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<InspectorControls key=\"setting\">\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () => {\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tautoclose: false,\n\t\t\t\t\t\t\tshowIcon: true,\n\t\t\t\t\t\t\ticonPosition: 'right',\n\t\t\t\t\t\t\theadingLevel: 3,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} }\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Auto-close' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => !! autoclose }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { autoclose: false } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Auto-close' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tautoclose: value,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tchecked={ autoclose }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Automatically close accordions when a new one is opened.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Show icon' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => ! showIcon }\n\t\t\t\t\t\tonDeselect={ () => setAttributes( { showIcon: true } ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Show icon' ) }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tshowIcon: value,\n\t\t\t\t\t\t\t\t\ticonPosition: value\n\t\t\t\t\t\t\t\t\t\t? iconPosition\n\t\t\t\t\t\t\t\t\t\t: 'right',\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tchecked={ showIcon }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Display a plus icon next to the accordion header.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t{ showIcon && (\n\t\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\t\tlabel={ __( 'Icon Position' ) }\n\t\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\t\thasValue={ () => iconPosition !== 'right' }\n\t\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\t\tsetAttributes( { iconPosition: 'right' } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\tisBlock\n\t\t\t\t\t\t\t\tlabel={ __( 'Icon Position' ) }\n\t\t\t\t\t\t\t\tvalue={ iconPosition }\n\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\tsetAttributes( { iconPosition: value } );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Left' ) }\n\t\t\t\t\t\t\t\t\tvalue=\"left\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Right' ) }\n\t\t\t\t\t\t\t\t\tvalue=\"right\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t\t) }\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t\t<div { ...innerBlocksProps } />\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,7 +14,7 @@ const metadata = {
|
|
|
14
14
|
name: "core/accordion",
|
|
15
15
|
title: "Accordion",
|
|
16
16
|
category: "design",
|
|
17
|
-
description: "Displays a group of accordion
|
|
17
|
+
description: "Displays a group of accordion headings and associated expandable content.",
|
|
18
18
|
example: {},
|
|
19
19
|
__experimental: true,
|
|
20
20
|
supports: {
|
|
@@ -77,13 +77,21 @@ const metadata = {
|
|
|
77
77
|
autoclose: {
|
|
78
78
|
type: "boolean",
|
|
79
79
|
"default": false
|
|
80
|
+
},
|
|
81
|
+
headingLevel: {
|
|
82
|
+
type: "number",
|
|
83
|
+
"default": 3
|
|
84
|
+
},
|
|
85
|
+
levelOptions: {
|
|
86
|
+
type: "array"
|
|
80
87
|
}
|
|
81
88
|
},
|
|
82
89
|
providesContext: {
|
|
83
90
|
"core/accordion-icon-position": "iconPosition",
|
|
84
|
-
"core/accordion-show-icon": "showIcon"
|
|
91
|
+
"core/accordion-show-icon": "showIcon",
|
|
92
|
+
"core/accordion-heading-level": "headingLevel"
|
|
85
93
|
},
|
|
86
|
-
allowedBlocks: ["core/accordion-
|
|
94
|
+
allowedBlocks: ["core/accordion-item"],
|
|
87
95
|
textdomain: "default",
|
|
88
96
|
viewScriptModule: "@wordpress/block-library/accordion/view"
|
|
89
97
|
};
|
|
@@ -97,17 +105,17 @@ export const settings = {
|
|
|
97
105
|
icon,
|
|
98
106
|
example: {
|
|
99
107
|
innerBlocks: [{
|
|
100
|
-
name: 'core/accordion-
|
|
108
|
+
name: 'core/accordion-item',
|
|
101
109
|
innerBlocks: [{
|
|
102
|
-
name: 'core/accordion-
|
|
110
|
+
name: 'core/accordion-heading',
|
|
103
111
|
attributes: {
|
|
104
112
|
title: __('Lorem ipsum dolor sit amet, consectetur.')
|
|
105
113
|
}
|
|
106
114
|
}]
|
|
107
115
|
}, {
|
|
108
|
-
name: 'core/accordion-
|
|
116
|
+
name: 'core/accordion-item',
|
|
109
117
|
innerBlocks: [{
|
|
110
|
-
name: 'core/accordion-
|
|
118
|
+
name: 'core/accordion-heading',
|
|
111
119
|
attributes: {
|
|
112
120
|
title: __('Suspendisse commodo lacus, interdum et.')
|
|
113
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","edit","save","metadata","$schema","apiVersion","name","title","category","description","example","__experimental","supports","html","align","background","backgroundImage","backgroundSize","__experimentalDefaultControls","color","gradients","__experimentalBorder","radius","style","width","spacing","padding","margin","blockGap","shadow","layout","interactivity","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","attributes","iconPosition","type","showIcon","autoclose","providesContext","allowedBlocks","textdomain","viewScriptModule","initBlock","icon","settings","innerBlocks","init"],"sources":["@wordpress/block-library/src/accordion/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport edit from './edit';\nimport save from './save';\nimport metadata from './block.json';\nimport initBlock from '../utils/init-block';\nimport icon from './icon';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/accordion-
|
|
1
|
+
{"version":3,"names":["__","edit","save","metadata","$schema","apiVersion","name","title","category","description","example","__experimental","supports","html","align","background","backgroundImage","backgroundSize","__experimentalDefaultControls","color","gradients","__experimentalBorder","radius","style","width","spacing","padding","margin","blockGap","shadow","layout","interactivity","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","attributes","iconPosition","type","showIcon","autoclose","headingLevel","levelOptions","providesContext","allowedBlocks","textdomain","viewScriptModule","initBlock","icon","settings","innerBlocks","init"],"sources":["@wordpress/block-library/src/accordion/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport edit from './edit';\nimport save from './save';\nimport metadata from './block.json';\nimport initBlock from '../utils/init-block';\nimport icon from './icon';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tinnerBlocks: [\n\t\t\t{\n\t\t\t\tname: 'core/accordion-item',\n\t\t\t\tinnerBlocks: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'core/accordion-heading',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\ttitle: __(\n\t\t\t\t\t\t\t\t'Lorem ipsum dolor sit amet, consectetur.'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'core/accordion-item',\n\t\t\t\tinnerBlocks: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'core/accordion-heading',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\ttitle: __(\n\t\t\t\t\t\t\t\t'Suspendisse commodo lacus, interdum et.'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,IAAI,MAAM,QAAQ;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,OAAA;EAAAC,cAAA;EAAAC,QAAA;IAAAC,IAAA;IAAAC,KAAA;IAAAC,UAAA;MAAAC,eAAA;MAAAC,cAAA;MAAAC,6BAAA;QAAAF,eAAA;MAAA;IAAA;IAAAG,KAAA;MAAAJ,UAAA;MAAAK,SAAA;IAAA;IAAAC,oBAAA;MAAAF,KAAA;MAAAG,MAAA;MAAAC,KAAA;MAAAC,KAAA;MAAAN,6BAAA;QAAAC,KAAA;QAAAG,MAAA;QAAAC,KAAA;QAAAC,KAAA;MAAA;IAAA;IAAAC,OAAA;MAAAC,OAAA;MAAAC,MAAA;MAAAC,QAAA;IAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,aAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,wBAAA;MAAAC,uBAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,2BAAA;MAAAtB,6BAAA;QAAAe,QAAA;MAAA;IAAA;EAAA;EAAAQ,UAAA;IAAAC,YAAA;MAAAC,IAAA;MAAA;IAAA;IAAAC,QAAA;MAAAD,IAAA;MAAA;IAAA;IAAAE,SAAA;MAAAF,IAAA;MAAA;IAAA;IAAAG,YAAA;MAAAH,IAAA;MAAA;IAAA;IAAAI,YAAA;MAAAJ,IAAA;IAAA;EAAA;EAAAK,eAAA;IAAA;IAAA;IAAA;EAAA;EAAAC,aAAA;EAAAC,UAAA;EAAAC,gBAAA;AAAA;AAE1B,OAAOC,SAAS,MAAM,qBAAqB;AAC3C,OAAOC,IAAI,MAAM,QAAQ;AAEzB,MAAM;EAAE/C;AAAK,CAAC,GAAGH,QAAQ;AAEzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAMgD,QAAQ,GAAG;EACvBD,IAAI;EACJ3C,OAAO,EAAE;IACR6C,WAAW,EAAE,CACZ;MACCjD,IAAI,EAAE,qBAAqB;MAC3BiD,WAAW,EAAE,CACZ;QACCjD,IAAI,EAAE,wBAAwB;QAC9BmC,UAAU,EAAE;UACXlC,KAAK,EAAEP,EAAE,CACR,0CACD;QACD;MACD,CAAC;IAEH,CAAC,EACD;MACCM,IAAI,EAAE,qBAAqB;MAC3BiD,WAAW,EAAE,CACZ;QACCjD,IAAI,EAAE,wBAAwB;QAC9BmC,UAAU,EAAE;UACXlC,KAAK,EAAEP,EAAE,CACR,yCACD;QACD;MACD,CAAC;IAEH,CAAC;EAEH,CAAC;EACDC,IAAI;EACJC;AACD,CAAC;AAED,OAAO,MAAMsD,IAAI,GAAGA,CAAA,KAAMJ,SAAS,CAAE;EAAE9C,IAAI;EAAEH,QAAQ;EAAEmD;AAAS,CAAE,CAAC","ignoreList":[]}
|
|
@@ -7,10 +7,10 @@ store('core/accordion', {
|
|
|
7
7
|
get isOpen() {
|
|
8
8
|
const {
|
|
9
9
|
id,
|
|
10
|
-
|
|
10
|
+
accordionItems
|
|
11
11
|
} = getContext();
|
|
12
|
-
const
|
|
13
|
-
return
|
|
12
|
+
const accordionItem = accordionItems.find(item => item.id === id);
|
|
13
|
+
return accordionItem ? accordionItem.isOpen : false;
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
actions: {
|
|
@@ -19,15 +19,15 @@ store('core/accordion', {
|
|
|
19
19
|
const {
|
|
20
20
|
id,
|
|
21
21
|
autoclose,
|
|
22
|
-
|
|
22
|
+
accordionItems
|
|
23
23
|
} = context;
|
|
24
|
-
const
|
|
24
|
+
const accordionItem = accordionItems.find(item => item.id === id);
|
|
25
25
|
if (autoclose) {
|
|
26
|
-
|
|
27
|
-
item.isOpen = item.id === id ? !
|
|
26
|
+
accordionItems.forEach(item => {
|
|
27
|
+
item.isOpen = item.id === id ? !accordionItem.isOpen : false;
|
|
28
28
|
});
|
|
29
29
|
} else {
|
|
30
|
-
|
|
30
|
+
accordionItem.isOpen = !accordionItem.isOpen;
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
33
|
handleKeyDown: withSyncEvent(event => {
|
|
@@ -38,25 +38,25 @@ store('core/accordion', {
|
|
|
38
38
|
const context = getContext();
|
|
39
39
|
const {
|
|
40
40
|
id,
|
|
41
|
-
|
|
41
|
+
accordionItems
|
|
42
42
|
} = context;
|
|
43
|
-
const currentIndex =
|
|
43
|
+
const currentIndex = accordionItems.findIndex(item => item.id === id);
|
|
44
44
|
let nextIndex;
|
|
45
45
|
switch (event.key) {
|
|
46
46
|
case 'ArrowUp':
|
|
47
47
|
nextIndex = Math.max(0, currentIndex - 1);
|
|
48
48
|
break;
|
|
49
49
|
case 'ArrowDown':
|
|
50
|
-
nextIndex = Math.min(currentIndex + 1,
|
|
50
|
+
nextIndex = Math.min(currentIndex + 1, accordionItems.length - 1);
|
|
51
51
|
break;
|
|
52
52
|
case 'Home':
|
|
53
53
|
nextIndex = 0;
|
|
54
54
|
break;
|
|
55
55
|
case 'End':
|
|
56
|
-
nextIndex =
|
|
56
|
+
nextIndex = accordionItems.length - 1;
|
|
57
57
|
break;
|
|
58
58
|
}
|
|
59
|
-
const nextId =
|
|
59
|
+
const nextId = accordionItems[nextIndex].id;
|
|
60
60
|
const nextButton = document.getElementById(nextId);
|
|
61
61
|
if (nextButton) {
|
|
62
62
|
nextButton.focus();
|
|
@@ -64,13 +64,13 @@ store('core/accordion', {
|
|
|
64
64
|
})
|
|
65
65
|
},
|
|
66
66
|
callbacks: {
|
|
67
|
-
|
|
67
|
+
initAccordionItems: () => {
|
|
68
68
|
const context = getContext();
|
|
69
69
|
const {
|
|
70
70
|
id,
|
|
71
71
|
openByDefault
|
|
72
72
|
} = context;
|
|
73
|
-
context.
|
|
73
|
+
context.accordionItems.push({
|
|
74
74
|
id,
|
|
75
75
|
isOpen: openByDefault
|
|
76
76
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["store","getContext","withSyncEvent","state","isOpen","id","
|
|
1
|
+
{"version":3,"names":["store","getContext","withSyncEvent","state","isOpen","id","accordionItems","accordionItem","find","item","actions","toggle","context","autoclose","forEach","handleKeyDown","event","key","preventDefault","currentIndex","findIndex","nextIndex","Math","max","min","length","nextId","nextButton","document","getElementById","focus","callbacks","initAccordionItems","openByDefault","push"],"sources":["@wordpress/block-library/src/accordion/view.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store, getContext, withSyncEvent } from '@wordpress/interactivity';\n\nstore( 'core/accordion', {\n\tstate: {\n\t\tget isOpen() {\n\t\t\tconst { id, accordionItems } = getContext();\n\t\t\tconst accordionItem = accordionItems.find(\n\t\t\t\t( item ) => item.id === id\n\t\t\t);\n\t\t\treturn accordionItem ? accordionItem.isOpen : false;\n\t\t},\n\t},\n\tactions: {\n\t\ttoggle: () => {\n\t\t\tconst context = getContext();\n\t\t\tconst { id, autoclose, accordionItems } = context;\n\t\t\tconst accordionItem = accordionItems.find(\n\t\t\t\t( item ) => item.id === id\n\t\t\t);\n\n\t\t\tif ( autoclose ) {\n\t\t\t\taccordionItems.forEach( ( item ) => {\n\t\t\t\t\titem.isOpen =\n\t\t\t\t\t\titem.id === id ? ! accordionItem.isOpen : false;\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\taccordionItem.isOpen = ! accordionItem.isOpen;\n\t\t\t}\n\t\t},\n\t\thandleKeyDown: withSyncEvent( ( event ) => {\n\t\t\tif (\n\t\t\t\tevent.key !== 'ArrowUp' &&\n\t\t\t\tevent.key !== 'ArrowDown' &&\n\t\t\t\tevent.key !== 'Home' &&\n\t\t\t\tevent.key !== 'End'\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t\tconst context = getContext();\n\t\t\tconst { id, accordionItems } = context;\n\t\t\tconst currentIndex = accordionItems.findIndex(\n\t\t\t\t( item ) => item.id === id\n\t\t\t);\n\n\t\t\tlet nextIndex;\n\n\t\t\tswitch ( event.key ) {\n\t\t\t\tcase 'ArrowUp':\n\t\t\t\t\tnextIndex = Math.max( 0, currentIndex - 1 );\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowDown':\n\t\t\t\t\tnextIndex = Math.min(\n\t\t\t\t\t\tcurrentIndex + 1,\n\t\t\t\t\t\taccordionItems.length - 1\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'Home':\n\t\t\t\t\tnextIndex = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'End':\n\t\t\t\t\tnextIndex = accordionItems.length - 1;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst nextId = accordionItems[ nextIndex ].id;\n\t\t\tconst nextButton = document.getElementById( nextId );\n\t\t\tif ( nextButton ) {\n\t\t\t\tnextButton.focus();\n\t\t\t}\n\t\t} ),\n\t},\n\tcallbacks: {\n\t\tinitAccordionItems: () => {\n\t\t\tconst context = getContext();\n\t\t\tconst { id, openByDefault } = context;\n\t\t\tcontext.accordionItems.push( {\n\t\t\t\tid,\n\t\t\t\tisOpen: openByDefault,\n\t\t\t} );\n\t\t},\n\t},\n} );\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { __ } from '@wordpress/i18n';
|
|
5
|
+
import { useEffect } from '@wordpress/element';
|
|
6
|
+
import { useBlockProps, __experimentalGetSpacingClassesAndStyles as useSpacingProps, RichText } from '@wordpress/block-editor';
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
export default function Edit({
|
|
9
|
+
attributes,
|
|
10
|
+
setAttributes,
|
|
11
|
+
context
|
|
12
|
+
}) {
|
|
13
|
+
const {
|
|
14
|
+
title
|
|
15
|
+
} = attributes;
|
|
16
|
+
const {
|
|
17
|
+
'core/accordion-icon-position': iconPosition,
|
|
18
|
+
'core/accordion-show-icon': showIcon,
|
|
19
|
+
'core/accordion-heading-level': headingLevel
|
|
20
|
+
} = context;
|
|
21
|
+
const TagName = 'h' + headingLevel;
|
|
22
|
+
|
|
23
|
+
// Set icon attributes.
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (iconPosition !== undefined && showIcon !== undefined) {
|
|
26
|
+
setAttributes({
|
|
27
|
+
iconPosition,
|
|
28
|
+
showIcon
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}, [iconPosition, showIcon, setAttributes]);
|
|
32
|
+
const blockProps = useBlockProps();
|
|
33
|
+
const spacingProps = useSpacingProps(attributes);
|
|
34
|
+
return /*#__PURE__*/_jsx(TagName, {
|
|
35
|
+
...blockProps,
|
|
36
|
+
children: /*#__PURE__*/_jsxs("button", {
|
|
37
|
+
className: "wp-block-accordion-heading__toggle",
|
|
38
|
+
style: spacingProps.style,
|
|
39
|
+
children: [showIcon && iconPosition === 'left' && /*#__PURE__*/_jsx("span", {
|
|
40
|
+
className: "wp-block-accordion-heading__toggle-icon",
|
|
41
|
+
"aria-hidden": "true",
|
|
42
|
+
children: "+"
|
|
43
|
+
}), /*#__PURE__*/_jsx(RichText, {
|
|
44
|
+
withoutInteractiveFormatting: true,
|
|
45
|
+
disableLineBreaks: true,
|
|
46
|
+
tagName: "span",
|
|
47
|
+
value: title,
|
|
48
|
+
onChange: newTitle => setAttributes({
|
|
49
|
+
title: newTitle
|
|
50
|
+
}),
|
|
51
|
+
placeholder: __('Accordion title'),
|
|
52
|
+
className: "wp-block-accordion-heading__toggle-title"
|
|
53
|
+
}), showIcon && iconPosition === 'right' && /*#__PURE__*/_jsx("span", {
|
|
54
|
+
className: "wp-block-accordion-heading__toggle-icon",
|
|
55
|
+
"aria-hidden": "true",
|
|
56
|
+
children: "+"
|
|
57
|
+
})]
|
|
58
|
+
})
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__","useEffect","useBlockProps","__experimentalGetSpacingClassesAndStyles","useSpacingProps","RichText","jsx","_jsx","jsxs","_jsxs","Edit","attributes","setAttributes","context","title","iconPosition","showIcon","headingLevel","TagName","undefined","blockProps","spacingProps","children","className","style","withoutInteractiveFormatting","disableLineBreaks","tagName","value","onChange","newTitle","placeholder"],"sources":["@wordpress/block-library/src/accordion-heading/edit.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect } from '@wordpress/element';\nimport {\n\tuseBlockProps,\n\t__experimentalGetSpacingClassesAndStyles as useSpacingProps,\n\tRichText,\n} from '@wordpress/block-editor';\n\nexport default function Edit( { attributes, setAttributes, context } ) {\n\tconst { title } = attributes;\n\tconst {\n\t\t'core/accordion-icon-position': iconPosition,\n\t\t'core/accordion-show-icon': showIcon,\n\t\t'core/accordion-heading-level': headingLevel,\n\t} = context;\n\tconst TagName = 'h' + headingLevel;\n\n\t// Set icon attributes.\n\tuseEffect( () => {\n\t\tif ( iconPosition !== undefined && showIcon !== undefined ) {\n\t\t\tsetAttributes( {\n\t\t\t\ticonPosition,\n\t\t\t\tshowIcon,\n\t\t\t} );\n\t\t}\n\t}, [ iconPosition, showIcon, setAttributes ] );\n\n\tconst blockProps = useBlockProps();\n\tconst spacingProps = useSpacingProps( attributes );\n\n\treturn (\n\t\t<TagName { ...blockProps }>\n\t\t\t<button\n\t\t\t\tclassName=\"wp-block-accordion-heading__toggle\"\n\t\t\t\tstyle={ spacingProps.style }\n\t\t\t>\n\t\t\t\t{ showIcon && iconPosition === 'left' && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"wp-block-accordion-heading__toggle-icon\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t+\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<RichText\n\t\t\t\t\twithoutInteractiveFormatting\n\t\t\t\t\tdisableLineBreaks\n\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\tvalue={ title }\n\t\t\t\t\tonChange={ ( newTitle ) =>\n\t\t\t\t\t\tsetAttributes( { title: newTitle } )\n\t\t\t\t\t}\n\t\t\t\t\tplaceholder={ __( 'Accordion title' ) }\n\t\t\t\t\tclassName=\"wp-block-accordion-heading__toggle-title\"\n\t\t\t\t/>\n\t\t\t\t{ showIcon && iconPosition === 'right' && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"wp-block-accordion-heading__toggle-icon\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t+\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t</button>\n\t\t</TagName>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,QAAQ,oBAAoB;AAC9C,SACCC,aAAa,EACbC,wCAAwC,IAAIC,eAAe,EAC3DC,QAAQ,QACF,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEjC,eAAe,SAASC,IAAIA,CAAE;EAAEC,UAAU;EAAEC,aAAa;EAAEC;AAAQ,CAAC,EAAG;EACtE,MAAM;IAAEC;EAAM,CAAC,GAAGH,UAAU;EAC5B,MAAM;IACL,8BAA8B,EAAEI,YAAY;IAC5C,0BAA0B,EAAEC,QAAQ;IACpC,8BAA8B,EAAEC;EACjC,CAAC,GAAGJ,OAAO;EACX,MAAMK,OAAO,GAAG,GAAG,GAAGD,YAAY;;EAElC;EACAhB,SAAS,CAAE,MAAM;IAChB,IAAKc,YAAY,KAAKI,SAAS,IAAIH,QAAQ,KAAKG,SAAS,EAAG;MAC3DP,aAAa,CAAE;QACdG,YAAY;QACZC;MACD,CAAE,CAAC;IACJ;EACD,CAAC,EAAE,CAAED,YAAY,EAAEC,QAAQ,EAAEJ,aAAa,CAAG,CAAC;EAE9C,MAAMQ,UAAU,GAAGlB,aAAa,CAAC,CAAC;EAClC,MAAMmB,YAAY,GAAGjB,eAAe,CAAEO,UAAW,CAAC;EAElD,oBACCJ,IAAA,CAACW,OAAO;IAAA,GAAME,UAAU;IAAAE,QAAA,eACvBb,KAAA;MACCc,SAAS,EAAC,oCAAoC;MAC9CC,KAAK,EAAGH,YAAY,CAACG,KAAO;MAAAF,QAAA,GAE1BN,QAAQ,IAAID,YAAY,KAAK,MAAM,iBACpCR,IAAA;QACCgB,SAAS,EAAC,yCAAyC;QACnD,eAAY,MAAM;QAAAD,QAAA,EAClB;MAED,CAAM,CACN,eACDf,IAAA,CAACF,QAAQ;QACRoB,4BAA4B;QAC5BC,iBAAiB;QACjBC,OAAO,EAAC,MAAM;QACdC,KAAK,EAAGd,KAAO;QACfe,QAAQ,EAAKC,QAAQ,IACpBlB,aAAa,CAAE;UAAEE,KAAK,EAAEgB;QAAS,CAAE,CACnC;QACDC,WAAW,EAAG/B,EAAE,CAAE,iBAAkB,CAAG;QACvCuB,SAAS,EAAC;MAA0C,CACpD,CAAC,EACAP,QAAQ,IAAID,YAAY,KAAK,OAAO,iBACrCR,IAAA;QACCgB,SAAS,EAAC,yCAAyC;QACnD,eAAY,MAAM;QAAAD,QAAA,EAClB;MAED,CAAM,CACN;IAAA,CACM;EAAC,CACD,CAAC;AAEZ","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SVG","Path","jsx","_jsx","jsxs","_jsxs","xmlns","viewBox","children","fillRule","clipRule","d","fill"],"sources":["@wordpress/block-library/src/accordion-heading/icon.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nexport default (\n\t<SVG xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n\t\t<Path\n\t\t\tfillRule=\"evenodd\"\n\t\t\tclipRule=\"evenodd\"\n\t\t\td=\"M19.5 12.75L9.5 12.75L9.5 11.25L19.5 11.25L19.5 12.75Z\"\n\t\t\tfill=\"currentColor\"\n\t\t/>\n\t\t<Path d=\"M4.5 9.5L8.5 12L4.5 14.5L4.5 9.5Z\" fill=\"currentColor\" />\n\t</SVG>\n);\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,GAAG,EAAEC,IAAI,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAElD,4BACCA,KAAA,CAACL,GAAG;EAACM,KAAK,EAAC,4BAA4B;EAACC,OAAO,EAAC,WAAW;EAAAC,QAAA,gBAC1DL,IAAA,CAACF,IAAI;IACJQ,QAAQ,EAAC,SAAS;IAClBC,QAAQ,EAAC,SAAS;IAClBC,CAAC,EAAC,wDAAwD;IAC1DC,IAAI,EAAC;EAAc,CACnB,CAAC,eACFT,IAAA,CAACF,IAAI;IAACU,CAAC,EAAC,mCAAmC;IAACC,IAAI,EAAC;EAAc,CAAE,CAAC;AAAA,CAC9D,CAAC","ignoreList":[]}
|
|
@@ -6,13 +6,13 @@ import save from './save';
|
|
|
6
6
|
const metadata = {
|
|
7
7
|
$schema: "https://schemas.wp.org/trunk/block.json",
|
|
8
8
|
apiVersion: 3,
|
|
9
|
-
name: "core/accordion-
|
|
10
|
-
title: "Accordion
|
|
9
|
+
name: "core/accordion-heading",
|
|
10
|
+
title: "Accordion Heading",
|
|
11
11
|
category: "design",
|
|
12
|
-
description: "Displays an accordion
|
|
12
|
+
description: "Displays an accordion heading.",
|
|
13
13
|
__experimental: true,
|
|
14
|
-
parent: ["core/accordion-
|
|
15
|
-
usesContext: ["core/accordion-icon-position", "core/accordion-show-icon"],
|
|
14
|
+
parent: ["core/accordion-item"],
|
|
15
|
+
usesContext: ["core/accordion-icon-position", "core/accordion-show-icon", "core/accordion-heading-level"],
|
|
16
16
|
supports: {
|
|
17
17
|
anchor: true,
|
|
18
18
|
color: {
|
|
@@ -53,7 +53,8 @@ const metadata = {
|
|
|
53
53
|
fontFamily: true
|
|
54
54
|
}
|
|
55
55
|
},
|
|
56
|
-
shadow: true
|
|
56
|
+
shadow: true,
|
|
57
|
+
blockVisibility: false
|
|
57
58
|
},
|
|
58
59
|
attributes: {
|
|
59
60
|
openByDefault: {
|
|
@@ -63,15 +64,11 @@ const metadata = {
|
|
|
63
64
|
title: {
|
|
64
65
|
type: "rich-text",
|
|
65
66
|
source: "rich-text",
|
|
66
|
-
selector: ".wp-block-accordion-
|
|
67
|
+
selector: ".wp-block-accordion-heading__toggle-title",
|
|
67
68
|
role: "content"
|
|
68
69
|
},
|
|
69
70
|
level: {
|
|
70
|
-
type: "number"
|
|
71
|
-
"default": 3
|
|
72
|
-
},
|
|
73
|
-
levelOptions: {
|
|
74
|
-
type: "array"
|
|
71
|
+
type: "number"
|
|
75
72
|
},
|
|
76
73
|
iconPosition: {
|
|
77
74
|
type: "string",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["edit","save","metadata","$schema","apiVersion","name","title","category","description","__experimental","parent","usesContext","supports","anchor","color","background","gradients","align","interactivity","spacing","padding","__experimentalDefaultControls","__experimentalSkipSerialization","__experimentalBorder","radius","style","width","typography","fontSize","__experimentalFontFamily","__experimentalFontWeight","__experimentalFontStyle","__experimentalTextTransform","__experimentalTextDecoration","__experimentalLetterSpacing","fontFamily","shadow","blockVisibility","attributes","openByDefault","type","source","selector","role","level","iconPosition","showIcon","textdomain","initBlock","icon","settings","init"],"sources":["@wordpress/block-library/src/accordion-heading/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport edit from './edit';\nimport save from './save';\nimport metadata from './block.json';\nimport initBlock from '../utils/init-block';\nimport icon from './icon';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,QAAQ;AACzB,OAAOC,IAAI,MAAM,QAAQ;AAAC,MAAAC,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,cAAA;EAAAC,MAAA;EAAAC,WAAA;EAAAC,QAAA;IAAAC,MAAA;IAAAC,KAAA;MAAAC,UAAA;MAAAC,SAAA;IAAA;IAAAC,KAAA;IAAAC,aAAA;IAAAC,OAAA;MAAAC,OAAA;MAAAC,6BAAA;QAAAD,OAAA;MAAA;MAAAE,+BAAA;IAAA;IAAAC,oBAAA;MAAAT,KAAA;MAAAU,MAAA;MAAAC,KAAA;MAAAC,KAAA;MAAAL,6BAAA;QAAAP,KAAA;QAAAU,MAAA;QAAAC,KAAA;QAAAC,KAAA;MAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,wBAAA;MAAAC,wBAAA;MAAAC,uBAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,2BAAA;MAAAb,6BAAA;QAAAO,QAAA;QAAAO,UAAA;MAAA;IAAA;IAAAC,MAAA;IAAAC,eAAA;EAAA;EAAAC,UAAA;IAAAC,aAAA;MAAAC,IAAA;MAAA;IAAA;IAAAlC,KAAA;MAAAkC,IAAA;MAAAC,MAAA;MAAAC,QAAA;MAAAC,IAAA;IAAA;IAAAC,KAAA;MAAAJ,IAAA;IAAA;IAAAK,YAAA;MAAAL,IAAA;MAAA;MAAA;IAAA;IAAAM,QAAA;MAAAN,IAAA;MAAA;IAAA;EAAA;EAAAO,UAAA;AAAA;AAE1B,OAAOC,SAAS,MAAM,qBAAqB;AAC3C,OAAOC,IAAI,MAAM,QAAQ;AAEzB,MAAM;EAAE5C;AAAK,CAAC,GAAGH,QAAQ;AAEzB,SAASA,QAAQ,EAAEG,IAAI;AAEvB,OAAO,MAAM6C,QAAQ,GAAG;EACvBD,IAAI;EACJjD,IAAI;EACJC;AACD,CAAC;AAED,OAAO,MAAMkD,IAAI,GAAGA,CAAA,KAAMH,SAAS,CAAE;EAAE3C,IAAI;EAAEH,QAAQ;EAAEgD;AAAS,CAAE,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["init"],"sources":["@wordpress/block-library/src/accordion-
|
|
1
|
+
{"version":3,"names":["init"],"sources":["@wordpress/block-library/src/accordion-heading/init.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { init } from './';\n\nexport default init();\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,IAAI,QAAQ,IAAI;AAEzB,eAAeA,IAAI,CAAC,CAAC","ignoreList":[]}
|
|
@@ -12,26 +12,24 @@ export default function save({
|
|
|
12
12
|
iconPosition,
|
|
13
13
|
showIcon
|
|
14
14
|
} = attributes;
|
|
15
|
-
const TagName = 'h' + level;
|
|
15
|
+
const TagName = 'h' + (level || 3);
|
|
16
16
|
const blockProps = useBlockProps.save();
|
|
17
17
|
const spacingProps = getSpacingClassesAndStyles(attributes);
|
|
18
18
|
return /*#__PURE__*/_jsx(TagName, {
|
|
19
19
|
...blockProps,
|
|
20
20
|
children: /*#__PURE__*/_jsxs("button", {
|
|
21
|
-
className: "wp-block-accordion-
|
|
22
|
-
style:
|
|
23
|
-
...spacingProps.style
|
|
24
|
-
},
|
|
21
|
+
className: "wp-block-accordion-heading__toggle",
|
|
22
|
+
style: spacingProps.style,
|
|
25
23
|
children: [showIcon && iconPosition === 'left' && /*#__PURE__*/_jsx("span", {
|
|
26
|
-
className: "wp-block-accordion-
|
|
24
|
+
className: "wp-block-accordion-heading__toggle-icon",
|
|
27
25
|
"aria-hidden": "true",
|
|
28
26
|
children: "+"
|
|
29
27
|
}), /*#__PURE__*/_jsx(RichText.Content, {
|
|
30
|
-
className: "wp-block-accordion-
|
|
28
|
+
className: "wp-block-accordion-heading__toggle-title",
|
|
31
29
|
tagName: "span",
|
|
32
30
|
value: title
|
|
33
31
|
}), showIcon && iconPosition === 'right' && /*#__PURE__*/_jsx("span", {
|
|
34
|
-
className: "wp-block-accordion-
|
|
32
|
+
className: "wp-block-accordion-heading__toggle-icon",
|
|
35
33
|
"aria-hidden": "true",
|
|
36
34
|
children: "+"
|
|
37
35
|
})]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useBlockProps","__experimentalGetSpacingClassesAndStyles","getSpacingClassesAndStyles","RichText","jsx","_jsx","jsxs","_jsxs","save","attributes","level","title","iconPosition","showIcon","TagName","blockProps","spacingProps","children","className","style","Content","tagName","value"],"sources":["@wordpress/block-library/src/accordion-heading/save.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseBlockProps,\n\t__experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles,\n\tRichText,\n} from '@wordpress/block-editor';\n\nexport default function save( { attributes } ) {\n\tconst { level, title, iconPosition, showIcon } = attributes;\n\tconst TagName = 'h' + ( level || 3 );\n\n\tconst blockProps = useBlockProps.save();\n\tconst spacingProps = getSpacingClassesAndStyles( attributes );\n\n\treturn (\n\t\t<TagName { ...blockProps }>\n\t\t\t<button\n\t\t\t\tclassName=\"wp-block-accordion-heading__toggle\"\n\t\t\t\tstyle={ spacingProps.style }\n\t\t\t>\n\t\t\t\t{ showIcon && iconPosition === 'left' && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"wp-block-accordion-heading__toggle-icon\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t+\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<RichText.Content\n\t\t\t\t\tclassName=\"wp-block-accordion-heading__toggle-title\"\n\t\t\t\t\ttagName=\"span\"\n\t\t\t\t\tvalue={ title }\n\t\t\t\t/>\n\t\t\t\t{ showIcon && iconPosition === 'right' && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"wp-block-accordion-heading__toggle-icon\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t+\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t</button>\n\t\t</TagName>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SACCA,aAAa,EACbC,wCAAwC,IAAIC,0BAA0B,EACtEC,QAAQ,QACF,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEjC,eAAe,SAASC,IAAIA,CAAE;EAAEC;AAAW,CAAC,EAAG;EAC9C,MAAM;IAAEC,KAAK;IAAEC,KAAK;IAAEC,YAAY;IAAEC;EAAS,CAAC,GAAGJ,UAAU;EAC3D,MAAMK,OAAO,GAAG,GAAG,IAAKJ,KAAK,IAAI,CAAC,CAAE;EAEpC,MAAMK,UAAU,GAAGf,aAAa,CAACQ,IAAI,CAAC,CAAC;EACvC,MAAMQ,YAAY,GAAGd,0BAA0B,CAAEO,UAAW,CAAC;EAE7D,oBACCJ,IAAA,CAACS,OAAO;IAAA,GAAMC,UAAU;IAAAE,QAAA,eACvBV,KAAA;MACCW,SAAS,EAAC,oCAAoC;MAC9CC,KAAK,EAAGH,YAAY,CAACG,KAAO;MAAAF,QAAA,GAE1BJ,QAAQ,IAAID,YAAY,KAAK,MAAM,iBACpCP,IAAA;QACCa,SAAS,EAAC,yCAAyC;QACnD,eAAY,MAAM;QAAAD,QAAA,EAClB;MAED,CAAM,CACN,eACDZ,IAAA,CAACF,QAAQ,CAACiB,OAAO;QAChBF,SAAS,EAAC,0CAA0C;QACpDG,OAAO,EAAC,MAAM;QACdC,KAAK,EAAGX;MAAO,CACf,CAAC,EACAE,QAAQ,IAAID,YAAY,KAAK,OAAO,iBACrCP,IAAA;QACCa,SAAS,EAAC,yCAAyC;QACnD,eAAY,MAAM;QAAAD,QAAA,EAClB;MAED,CAAM,CACN;IAAA,CACM;EAAC,CACD,CAAC;AAEZ","ignoreList":[]}
|
|
@@ -19,7 +19,8 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
19
19
|
export default function Edit({
|
|
20
20
|
attributes,
|
|
21
21
|
clientId,
|
|
22
|
-
setAttributes
|
|
22
|
+
setAttributes,
|
|
23
|
+
context
|
|
23
24
|
}) {
|
|
24
25
|
const {
|
|
25
26
|
openByDefault
|
|
@@ -57,8 +58,13 @@ export default function Edit({
|
|
|
57
58
|
'is-open': openByDefault || isSelected
|
|
58
59
|
})
|
|
59
60
|
});
|
|
61
|
+
|
|
62
|
+
// Get heading level from context.
|
|
63
|
+
const headingLevel = context && context['core/accordion-heading-level'];
|
|
60
64
|
const innerBlocksProps = useInnerBlocksProps(blockProps, {
|
|
61
|
-
template: [['core/accordion-
|
|
65
|
+
template: [['core/accordion-heading', headingLevel ? {
|
|
66
|
+
level: headingLevel
|
|
67
|
+
} : {}], ['core/accordion-panel', {
|
|
62
68
|
openByDefault
|
|
63
69
|
}]],
|
|
64
70
|
templateLock: 'all',
|