From 904f02af296744543867a07e547f83b64c644933 Mon Sep 17 00:00:00 2001 From: Daniel Richards Date: Wed, 24 Apr 2024 14:27:10 +0800 Subject: [PATCH] Fix bugs --- .../src/components/block-card/index.js | 85 +++++++++++-------- .../src/components/block-inspector/index.js | 1 - .../block-quick-navigation/index.js | 2 +- 3 files changed, 49 insertions(+), 39 deletions(-) diff --git a/packages/block-editor/src/components/block-card/index.js b/packages/block-editor/src/components/block-card/index.js index 46b0b908cd7a1..72103a6a3219b 100644 --- a/packages/block-editor/src/components/block-card/index.js +++ b/packages/block-editor/src/components/block-card/index.js @@ -21,6 +21,7 @@ import { useSelect, useDispatch } from '@wordpress/data'; import BlockIcon from '../block-icon'; import { store as blockEditorStore } from '../../store'; import useBlockDisplayInformation from '../use-block-display-information'; +import { unlock } from '../../lock-unlock'; function BlockCard( { title, icon, description, blockType, className } ) { if ( blockType ) { @@ -31,52 +32,62 @@ function BlockCard( { title, icon, description, blockType, className } ) { ( { title, icon, description } = blockType ); } - const parentClientId = useSelect( ( select ) => { - const { - getSelectedBlockClientId, - getBlockParentsByBlockName, - __unstableGetContentLockingParent, - } = select( blockEditorStore ); + const { isParentNavigationBlock, parentClientId } = useSelect( + ( select ) => { + const { + getSelectedBlockClientId, + getBlockParentsByBlockName, + getContentLockingParent, + } = unlock( select( blockEditorStore ) ); - const _selectedBlockClientId = getSelectedBlockClientId(); - let _parentClientId = getBlockParentsByBlockName( - _selectedBlockClientId, - 'core/navigation', - true - )[ 0 ]; + const _selectedBlockClientId = getSelectedBlockClientId(); - if ( ! _parentClientId ) { - _parentClientId = __unstableGetContentLockingParent( - _selectedBlockClientId - ); - } + let _parentClientId = getBlockParentsByBlockName( + _selectedBlockClientId, + 'core/navigation', + true + )[ 0 ]; + const _isParentNavigationBlock = !! _parentClientId; - return _parentClientId; - }, [] ); + if ( ! _parentClientId ) { + _parentClientId = getContentLockingParent( + _selectedBlockClientId + ); + } + + return { + isParentNavigationBlock: _isParentNavigationBlock, + parentClientId: _parentClientId, + }; + }, + [] + ); const parentDisplayInfo = useBlockDisplayInformation( parentClientId ); const contentOnlyFills = useSlotFills( 'InspectorControlsContentOnly' ); const { selectBlock } = useDispatch( blockEditorStore ); + const hasParentBackArrow = + isParentNavigationBlock || + ( parentClientId && !! contentOnlyFills?.length ); return (
- { !! contentOnlyFills?.length && - parentClientId && ( // This is only used by the Navigation block for now. It's not ideal having Navigation block specific code here. -