diff --git a/packages/block-editor/src/components/block-actions/index.js b/packages/block-editor/src/components/block-actions/index.js index ffb14ffca8c5e..3e12269b074e3 100644 --- a/packages/block-editor/src/components/block-actions/index.js +++ b/packages/block-editor/src/components/block-actions/index.js @@ -11,48 +11,57 @@ import { withSelect, withDispatch } from '@wordpress/data'; import { cloneBlock, hasBlockSupport, switchToBlockType } from '@wordpress/blocks'; function BlockActions( { + canDuplicate, + canInsertDefaultBlock, + children, + isLocked, onDuplicate, - onRemove, - onInsertBefore, - onInsertAfter, onGroup, + onInsertAfter, + onInsertBefore, + onRemove, onUngroup, - isLocked, - canDuplicate, - children, } ) { return children( { + canDuplicate, + canInsertDefaultBlock, + isLocked, onDuplicate, - onRemove, + onGroup, onInsertAfter, onInsertBefore, - onGroup, + onRemove, onUngroup, - isLocked, - canDuplicate, } ); } export default compose( [ withSelect( ( select, props ) => { const { + canInsertBlockType, + getBlockRootClientId, getBlocksByClientId, getTemplateLock, - getBlockRootClientId, } = select( 'core/block-editor' ); + const { getDefaultBlockName } = select( 'core/blocks' ); const blocks = getBlocksByClientId( props.clientIds ); const canDuplicate = every( blocks, ( block ) => { return !! block && hasBlockSupport( block.name, 'multiple', true ); } ); const rootClientId = getBlockRootClientId( props.clientIds[ 0 ] ); + const canInsertDefaultBlock = canInsertBlockType( + getDefaultBlockName(), + rootClientId + ); return { - isLocked: !! getTemplateLock( rootClientId ), blocks, canDuplicate, - rootClientId, + canInsertDefaultBlock, extraProps: props, + isLocked: !! getTemplateLock( rootClientId ), + rootClientId, }; } ), withDispatch( ( dispatch, props, { select } ) => { diff --git a/packages/block-editor/src/components/block-settings-menu/index.js b/packages/block-editor/src/components/block-settings-menu/index.js index 005be38e380b4..527f84ab0ca98 100644 --- a/packages/block-editor/src/components/block-settings-menu/index.js +++ b/packages/block-editor/src/components/block-settings-menu/index.js @@ -32,7 +32,15 @@ export function BlockSettingsMenu( { clientIds } ) { return ( - { ( { onDuplicate, onRemove, onInsertAfter, onInsertBefore, canDuplicate, isLocked } ) => ( + { ( { + canDuplicate, + canInsertDefaultBlock, + isLocked, + onDuplicate, + onInsertAfter, + onInsertBefore, + onRemove, + } ) => ( ) } - { ! isLocked && ( + { canInsertDefaultBlock && ( <>