diff --git a/packages/block-editor/src/components/list-view/block.js b/packages/block-editor/src/components/list-view/block.js index 4d5e2e7ea8c49f..f8e19cc6ac3358 100644 --- a/packages/block-editor/src/components/list-view/block.js +++ b/packages/block-editor/src/components/list-view/block.js @@ -59,7 +59,7 @@ function ListViewBlock( { const [ isHovered, setIsHovered ] = useState( false ); const { clientId } = block; - const { isLocked, isContentLocked } = useBlockLock( clientId ); + const { isLocked, isContentLocked, canEdit } = useBlockLock( clientId ); const forceSelectionContentLock = useSelect( ( select ) => { if ( isSelected ) { @@ -76,6 +76,7 @@ function ListViewBlock( { [ isContentLocked, clientId, isSelected ] ); + const canExpand = isContentLocked ? false : canEdit; const isFirstSelectedBlock = forceSelectionContentLock || ( isSelected && selectedClientIds[ 0 ] === clientId ); @@ -229,7 +230,7 @@ function ListViewBlock( { path={ path } id={ `list-view-block-${ clientId }` } data-block={ clientId } - isExpanded={ isContentLocked ? undefined : isExpanded } + isExpanded={ canExpand ? isExpanded : undefined } aria-selected={ !! isSelected || forceSelectionContentLock } > { ( { ref, tabIndex, onFocus } ) => ( diff --git a/packages/block-editor/src/components/list-view/branch.js b/packages/block-editor/src/components/list-view/branch.js index 0c2b541f3199a1..d2ba24065a3282 100644 --- a/packages/block-editor/src/components/list-view/branch.js +++ b/packages/block-editor/src/components/list-view/branch.js @@ -94,20 +94,25 @@ function ListViewBranch( props ) { shouldShowInnerBlocks = true, } = props; - const isContentLocked = useSelect( + const canParentExpand = useSelect( ( select ) => { - return !! ( - parentId && + if ( ! parentId ) { + return true; + } + + const isContentLocked = select( blockEditorStore ).getTemplateLock( parentId ) === - 'contentOnly' - ); + 'contentOnly'; + const canEdit = select( blockEditorStore ).canEditBlock( parentId ); + + return isContentLocked ? false : canEdit; }, [ parentId ] ); const { expandedState, draggedClientIds } = useListViewContext(); - if ( isContentLocked ) { + if ( ! canParentExpand ) { return null; }