From 8b4ae5eda2d3c3d2faca8cb276eebb7d227e0856 Mon Sep 17 00:00:00 2001 From: Kai Hao Date: Thu, 2 May 2024 16:05:35 +0800 Subject: [PATCH] Address code review and hide non pattern/template menu --- .../src/components/block-actions/index.js | 6 +- .../src/components/list-view/block.js | 68 +++++++++++-------- .../content-only-settings-menu.js | 7 +- 3 files changed, 50 insertions(+), 31 deletions(-) diff --git a/packages/block-editor/src/components/block-actions/index.js b/packages/block-editor/src/components/block-actions/index.js index 2b3c883dfc367..b34f8eea93615 100644 --- a/packages/block-editor/src/components/block-actions/index.js +++ b/packages/block-editor/src/components/block-actions/index.js @@ -31,10 +31,12 @@ export default function BlockActions( { getDirectInsertBlock, canMoveBlocks, canRemoveBlocks, + getBlockEditingMode, } = select( blockEditorStore ); const blocks = getBlocksByClientId( clientIds ); const rootClientId = getBlockRootClientId( clientIds[ 0 ] ); + const rootBlockEditingMode = getBlockEditingMode( rootClientId ); const canInsertDefaultBlock = canInsertBlockType( getDefaultBlockName(), rootClientId @@ -46,7 +48,9 @@ export default function BlockActions( { return { canMove: canMoveBlocks( clientIds, rootClientId ), canRemove: canRemoveBlocks( clientIds, rootClientId ), - canInsertBlock: canInsertDefaultBlock || !! directInsertBlock, + canInsertBlock: + ( canInsertDefaultBlock || !! directInsertBlock ) && + rootBlockEditingMode === 'default', canCopyStyles: blocks.every( ( block ) => { return ( !! block && diff --git a/packages/block-editor/src/components/list-view/block.js b/packages/block-editor/src/components/list-view/block.js index 31d5432a95412..3604c0c341e9f 100644 --- a/packages/block-editor/src/components/list-view/block.js +++ b/packages/block-editor/src/components/list-view/block.js @@ -104,34 +104,46 @@ function ListViewBlock( { const blockInformation = useBlockDisplayInformation( clientId ); - const { block, blockName, blockEditingMode, allowRightClickOverrides } = - useSelect( - ( select ) => { - const { - getBlock, - getBlockName, - getBlockEditingMode, - getSettings, - } = select( blockEditorStore ); - - return { - block: getBlock( clientId ), - blockName: getBlockName( clientId ), - blockEditingMode: getBlockEditingMode( clientId ), - allowRightClickOverrides: - getSettings().allowRightClickOverrides, - }; - }, - [ clientId ] - ); - - const showBlockActions = - // When a block hides its toolbar it also hides the block settings menu, - // since that menu is part of the toolbar in the editor canvas. - // List View respects this by also hiding the block settings menu. - hasBlockSupport( blockName, '__experimentalToolbar', true ) && - // Don't show the settings menu if block is disabled. - blockEditingMode !== 'disabled'; + const { block, allowRightClickOverrides, showBlockActions } = useSelect( + ( select ) => { + const { + getBlock, + getBlockName, + getSettings, + getContentLockingParent, + getBlockEditingMode, + getTemplateLock, + } = unlock( select( blockEditorStore ) ); + const _blockName = getBlockName( clientId ); + const isContentOnly = + getBlockEditingMode( clientId ) === 'contentOnly'; + const contentLockingParent = getContentLockingParent( clientId ); + // Don't show the block actions for template lock contentOnly. + // This block currently doesn't have any action to display in the menu dropdown. + const isContentLockingParentTemplateLock = + getTemplateLock( contentLockingParent ) === 'contentOnly'; + // When a block hides its toolbar it also hides the block settings menu, + // since that menu is part of the toolbar in the editor canvas. + // List View respects this by also hiding the block settings menu. + const hasToolbar = hasBlockSupport( + _blockName, + '__experimentalToolbar', + true + ); + + return { + block: getBlock( clientId ), + blockName: _blockName, + allowRightClickOverrides: + getSettings().allowRightClickOverrides, + showBlockActions: + hasToolbar && + ! ( isContentOnly && isContentLockingParentTemplateLock ), + }; + }, + [ clientId ] + ); + const instanceId = useInstanceId( ListViewBlock ); const descriptionId = `list-view-block-select-button__description-${ instanceId }`; diff --git a/packages/editor/src/components/block-settings-menu/content-only-settings-menu.js b/packages/editor/src/components/block-settings-menu/content-only-settings-menu.js index 13b298d4026d8..232ef0eafe6fa 100644 --- a/packages/editor/src/components/block-settings-menu/content-only-settings-menu.js +++ b/packages/editor/src/components/block-settings-menu/content-only-settings-menu.js @@ -42,8 +42,11 @@ function ContentOnlySettingsMenuItems( { clientId } ) { getBlockAttributes( patternParent ).ref ); } else { - const templateId = select( editorStore ).getCurrentTemplateId(); - if ( templateId ) { + const { getCurrentPostType, getCurrentTemplateId } = + select( editorStore ); + const currentPostType = getCurrentPostType(); + const templateId = getCurrentTemplateId(); + if ( currentPostType === 'page' && templateId ) { record = select( coreStore ).getEntityRecord( 'postType', 'wp_template',