diff --git a/packages/block-editor/src/components/block-settings-menu/block-settings-dropdown.js b/packages/block-editor/src/components/block-settings-menu/block-settings-dropdown.js index 657d685b966e0..b2ebba46e2d6d 100644 --- a/packages/block-editor/src/components/block-settings-menu/block-settings-dropdown.js +++ b/packages/block-editor/src/components/block-settings-menu/block-settings-dropdown.js @@ -78,15 +78,13 @@ function ParentSelectorMenuItem( { parentClientId, parentBlockType } ) { } export function BlockSettingsDropdown( { - block, + currentClientId, clientIds, __experimentalSelectBlock, children, __unstableDisplayLocation, ...props } ) { - // Get the client id of the current block for this menu, if one is set. - const currentClientId = block?.clientId; const blockClientIds = Array.isArray( clientIds ) ? clientIds : [ clientIds ]; diff --git a/packages/block-editor/src/components/list-view/block-contents.js b/packages/block-editor/src/components/list-view/block-contents.js index 0537a4b48cbe4..1896a804fecef 100644 --- a/packages/block-editor/src/components/list-view/block-contents.js +++ b/packages/block-editor/src/components/list-view/block-contents.js @@ -22,7 +22,7 @@ const ListViewBlockContents = forwardRef( { onClick, onToggleExpanded, - block, + clientId, isSelected, position, siblingBlockCount, @@ -33,8 +33,6 @@ const ListViewBlockContents = forwardRef( }, ref ) => { - const { clientId } = block; - const { blockMovingClientId, selectedBlockInBlockEditor } = useSelect( ( select ) => { const { hasBlockMovingClientId, getSelectedBlockClientId } = @@ -69,7 +67,7 @@ const ListViewBlockContents = forwardRef( <> { AdditionalBlockContent && ( @@ -83,7 +81,7 @@ const ListViewBlockContents = forwardRef( { - const { getBlock, getBlockName, getBlockEditingMode } = - select( blockEditorStore ); + const { + getBlockName, + getBlockEditingMode, + getSettings, + getBlockAttributes, + __experimentalGetReusableBlockTitle, + getBlockRootClientId, + canEditBlock, + canMoveBlock, + canRemoveBlock, + } = select( blockEditorStore ); + const { getBlockType, getActiveBlockVariation } = + select( blocksStore ); + const attributes = getBlockAttributes( clientId ); + const blockName = getBlockName( clientId ); + const blockType = getBlockType( blockName ); + const isReusable = isReusableBlock( blockType ); + const resusableTitle = isReusable + ? __experimentalGetReusableBlockTitle( attributes.ref ) + : undefined; + const rootClientId = getBlockRootClientId( clientId ); + const canEdit = canEditBlock( clientId ); + const canMove = canMoveBlock( clientId, rootClientId ); + const canRemove = canRemoveBlock( clientId, rootClientId ); return { - block: getBlock( clientId ), - blockName: getBlockName( clientId ), + blockName, blockEditingMode: getBlockEditingMode( clientId ), + allowRightClickOverrides: + getSettings().allowRightClickOverrides, + blockTitle: + attributes?.metadata?.name || + getActiveBlockVariation( blockName, attributes )?.title || + resusableTitle || + blockType.title, + isSynced: isReusable || isTemplatePart( blockType ), + isLocked: ! canEdit || ! canMove || ! canRemove, + canEdit, + canMove, }; }, [ clientId ] ); - const allowRightClickOverrides = useSelect( - ( select ) => - select( blockEditorStore ).getSettings().allowRightClickOverrides, - [] - ); + const { + blockName, + blockEditingMode, + allowRightClickOverrides, + blockTitle = __( 'Untitled' ), + isSynced, + isLocked, + canEdit, + canMove, + } = selected; const showBlockActions = // When a block hides its toolbar it also hides the block settings menu, @@ -288,7 +322,7 @@ function ListViewBlock( { 'is-synced-branch': isSyncedBranch, 'is-dragging': isDragged, 'has-single-cell': ! showBlockActions, - 'is-synced': blockInformation?.isSynced, + 'is-synced': isSynced, 'is-draggable': canMove, 'is-displacement-normal': displacement === 'normal', 'is-displacement-up': displacement === 'up', @@ -336,7 +370,7 @@ function ListViewBlock( { { ( { ref, tabIndex, onFocus } ) => (
(