From 3b8f38b8cb03519cbbba1b6b98adabc5a702c9e1 Mon Sep 17 00:00:00 2001 From: Dave Smith Date: Thu, 5 Jan 2023 09:57:18 +0000 Subject: [PATCH 1/2] Add new shouldDirectInsert prop to enabling disabling of direct insertion --- .../src/components/inserter/index.js | 87 ++++++++++--------- 1 file changed, 46 insertions(+), 41 deletions(-) diff --git a/packages/block-editor/src/components/inserter/index.js b/packages/block-editor/src/components/inserter/index.js index 258faff2b826a..680a967ba3a62 100644 --- a/packages/block-editor/src/components/inserter/index.js +++ b/packages/block-editor/src/components/inserter/index.js @@ -220,48 +220,53 @@ class Inserter extends Component { } export default compose( [ - withSelect( ( select, { clientId, rootClientId } ) => { - const { - getBlockRootClientId, - hasInserterItems, - __experimentalGetAllowedBlocks, - __experimentalGetDirectInsertBlock, - getSettings, - } = select( blockEditorStore ); - - const { getBlockVariations } = select( blocksStore ); - - rootClientId = - rootClientId || getBlockRootClientId( clientId ) || undefined; - - const allowedBlocks = __experimentalGetAllowedBlocks( rootClientId ); - - const directInsertBlock = - __experimentalGetDirectInsertBlock( rootClientId ); - - const settings = getSettings(); - - const hasSingleBlockType = - allowedBlocks?.length === 1 && - getBlockVariations( allowedBlocks[ 0 ].name, 'inserter' ) - ?.length === 0; - - let allowedBlockType = false; - if ( hasSingleBlockType ) { - allowedBlockType = allowedBlocks[ 0 ]; + withSelect( + ( select, { clientId, rootClientId, shouldDirectInsert = true } ) => { + const { + getBlockRootClientId, + hasInserterItems, + __experimentalGetAllowedBlocks, + __experimentalGetDirectInsertBlock, + getSettings, + } = select( blockEditorStore ); + + const { getBlockVariations } = select( blocksStore ); + + rootClientId = + rootClientId || getBlockRootClientId( clientId ) || undefined; + + const allowedBlocks = + __experimentalGetAllowedBlocks( rootClientId ); + + const directInsertBlock = + shouldDirectInsert && + __experimentalGetDirectInsertBlock( rootClientId ); + + const settings = getSettings(); + + const hasSingleBlockType = + allowedBlocks?.length === 1 && + getBlockVariations( allowedBlocks[ 0 ].name, 'inserter' ) + ?.length === 0; + + let allowedBlockType = false; + if ( hasSingleBlockType ) { + allowedBlockType = allowedBlocks[ 0 ]; + } + + return { + hasItems: hasInserterItems( rootClientId ), + hasSingleBlockType, + blockTitle: allowedBlockType ? allowedBlockType.title : '', + allowedBlockType, + directInsertBlock, + rootClientId, + prioritizePatterns: + settings.__experimentalPreferPatternsOnRoot && + ! rootClientId, + }; } - - return { - hasItems: hasInserterItems( rootClientId ), - hasSingleBlockType, - blockTitle: allowedBlockType ? allowedBlockType.title : '', - allowedBlockType, - directInsertBlock, - rootClientId, - prioritizePatterns: - settings.__experimentalPreferPatternsOnRoot && ! rootClientId, - }; - } ), + ), withDispatch( ( dispatch, ownProps, { select } ) => { return { insertOnlyAllowedBlock() { From ea470ae7b59a5831e146e4957029ced7296a958d Mon Sep 17 00:00:00 2001 From: Dave Smith Date: Thu, 5 Jan 2023 09:57:35 +0000 Subject: [PATCH 2/2] Disable direct insertion in Offcanvas --- .../block-editor/src/components/off-canvas-editor/appender.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/block-editor/src/components/off-canvas-editor/appender.js b/packages/block-editor/src/components/off-canvas-editor/appender.js index 814d0dd90b3c4..7ed5d3577506b 100644 --- a/packages/block-editor/src/components/off-canvas-editor/appender.js +++ b/packages/block-editor/src/components/off-canvas-editor/appender.js @@ -39,6 +39,7 @@ export const Appender = forwardRef( ( props, ref ) => { position="bottom right" isAppender={ true } selectBlockOnInsert={ false } + shouldDirectInsert={ false } __experimentalIsQuick { ...props } />