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 } ) => (
(