article block: resolve parent/inner focus toggle issue

This commit is contained in:
2026-02-11 15:49:44 +00:00
parent d5c99ea9dc
commit b0501de08f
3 changed files with 41 additions and 8 deletions

View File

@@ -5,7 +5,7 @@ export function containerClassNames(attributes, extraClasses = [])
'container', 'container',
]; ];
if('container_width' in attributes) if('container_width' in attributes && !['', '0'].includes(attributes.container_width))
classNames.push(`container-${attributes.container_width}`); classNames.push(`container-${attributes.container_width}`);
if('alignment' in attributes) if('alignment' in attributes)

View File

@@ -1,8 +1,31 @@
@use "../../../css/global/variables/spacing"; @use "../../../css/global/variables/spacing";
.wp-block-badegg-article { .wp-block-badegg-article {
position: relative;
.wp-block-pullquote { .wp-block-pullquote {
padding: 0; padding: 0;
margin: spacing.$innerLarge auto; margin: spacing.$innerLarge auto;
} }
.badegg-article-select-parent {
appearance: none;
display: block;
position: absolute;
inset: 0;
background: transparent;
border: none;
}
.block-editor-block-list {
&__layout {
> *:first-child {
margin-top: 0;
}
> *:last-child {
margin-bottom: 0;
}
}
}
} }

View File

@@ -15,18 +15,28 @@ import BackgroundImage from '../../../js/blocks/components/BackgroundImage';
import BlockSettings from '../../../js/blocks/components/BlockSettings'; import BlockSettings from '../../../js/blocks/components/BlockSettings';
registerBlockType(metadata.name, { registerBlockType(metadata.name, {
edit({ attributes, setAttributes }) { edit({ attributes, setAttributes, clientId }) {
const blockProps = useBlockProps(); const blockProps = useBlockProps();
blockProps.className = sectionClassNames(attributes, blockProps.className).join(' ');
blockProps.className = containerClassNames(attributes, [ 'wysiwyg' ]).join(' ');
return ( return (
<div { ...blockProps }> <div className={ sectionClassNames(attributes, 'wp-block-badegg-article').join(' ') }>
<BlockSettings <BlockSettings
attributes={ attributes } attributes={ attributes }
setAttributes={ setAttributes } setAttributes={ setAttributes }
/> />
<div className={ containerClassNames(attributes, [ 'wysiwyg' ]).join(' ') }> <button
className="badegg-article-select-parent"
onClick={() => {
wp.data.dispatch('core/block-editor').selectBlock(clientId);
}}
>
<span className="visually-hidden">Select Block</span>
</button>
<div { ...blockProps }>
<InnerBlocks <InnerBlocks
allowedBlocks={ allowedBlocks } allowedBlocks={ allowedBlocks }
defaultBlock={ defaultBlock={
@@ -47,11 +57,11 @@ registerBlockType(metadata.name, {
}, },
save({ attributes }) { save({ attributes }) {
const blockProps = useBlockProps.save(); const blockProps = useBlockProps.save();
blockProps.className = sectionClassNames(attributes, blockProps.className ).join(' '); blockProps.className = containerClassNames(attributes, [ 'wysiwyg' ]).join(' ');
return ( return (
<div { ...blockProps }> <div className={ sectionClassNames(attributes, 'wp-block-badegg-article').join(' ') }>
<div className={ containerClassNames(attributes, [ 'wysiwyg' ]).join(' ') }> <div { ...blockProps }>
<InnerBlocks.Content /> <InnerBlocks.Content />
</div> </div>