From 339aa2c1b965df39c1d95887b6b3ad0a933ca472 Mon Sep 17 00:00:00 2001 From: Dave Smith <getdavemail@gmail.com> Date: Thu, 5 Jan 2023 11:09:40 +0000 Subject: [PATCH] Nav offcanvas disable direct insertion (#46898) * Add new shouldDirectInsert prop to enabling disabling of direct insertion * Disable direct insertion in Offcanvas --- .../src/components/inserter/index.js | 87 ++++++++++--------- .../components/off-canvas-editor/appender.js | 1 + 2 files changed, 47 insertions(+), 41 deletions(-) diff --git a/packages/block-editor/src/components/inserter/index.js b/packages/block-editor/src/components/inserter/index.js index 258faff2b826ab..680a967ba3a625 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() { 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 814d0dd90b3c43..7ed5d3577506bc 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 } />