From 9641814a629825ffa2b86431c46fd6bcb5ecc39f Mon Sep 17 00:00:00 2001 From: Daniel Richards Date: Wed, 2 Oct 2024 17:04:35 +0200 Subject: [PATCH] Support indent and outdent --- packages/block-editor/src/store/selectors.js | 11 ++++++++--- packages/block-library/src/list-item/edit.js | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/block-editor/src/store/selectors.js b/packages/block-editor/src/store/selectors.js index 75521e2d6c4482..5457d0d6e0e540 100644 --- a/packages/block-editor/src/store/selectors.js +++ b/packages/block-editor/src/store/selectors.js @@ -1635,7 +1635,7 @@ const canInsertBlockTypeUnmemoized = ( } const _isSectionBlock = !! isSectionBlock( state, rootClientId ); - if ( _isSectionBlock ) { + if ( _isSectionBlock && ! allowsContentOnlyInsertion ) { return false; } @@ -1784,12 +1784,17 @@ export function canRemoveBlock( state, clientId ) { } const rootClientId = getBlockRootClientId( state, clientId ); - if ( getTemplateLock( state, rootClientId ) ) { + const templateLock = getTemplateLock( state, rootClientId ); + const parentBlockListSettings = getBlockListSettings( state, rootClientId ); + const allowsContentOnlyInsertion = + templateLock === 'contentOnly' && + !! parentBlockListSettings?.contentOnlyInsertion; + if ( templateLock && ! allowsContentOnlyInsertion ) { return false; } const isBlockWithinSection = !! getParentSectionBlock( state, clientId ); - if ( isBlockWithinSection ) { + if ( isBlockWithinSection && ! allowsContentOnlyInsertion ) { return false; } diff --git a/packages/block-library/src/list-item/edit.js b/packages/block-library/src/list-item/edit.js index 8c5fa7bdc7bf6a..6553f08413d8d3 100644 --- a/packages/block-library/src/list-item/edit.js +++ b/packages/block-library/src/list-item/edit.js @@ -79,6 +79,7 @@ export default function ListItemEdit( { const innerBlocksProps = useInnerBlocksProps( blockProps, { renderAppender: false, __unstableDisableDropZone: true, + contentOnlyInsertion: true, } ); const useEnterRef = useEnter( { content, clientId } ); const useSpaceRef = useSpace( clientId );