diff --git a/packages/block-editor/src/components/block-toolbar/index.js b/packages/block-editor/src/components/block-toolbar/index.js index 257f94d1d9ccdd..019ccafaa3644f 100644 --- a/packages/block-editor/src/components/block-toolbar/index.js +++ b/packages/block-editor/src/components/block-toolbar/index.js @@ -37,6 +37,7 @@ import { useHasBlockToolbar } from './use-has-block-toolbar'; import ChangeDesign from './change-design'; import SwitchSectionStyle from './switch-section-style'; import { unlock } from '../../lock-unlock'; +import { deviceTypeKey } from '../../store/private-keys'; import BlockToolbarIcon from './block-toolbar-icon'; /** @@ -75,6 +76,7 @@ export function PrivateBlockToolbar( { showLockButtons, showBlockVisibilityButton, showSwitchSectionStyleButton, + areSelectedBlocksHiddenOnViewport, } = useSelect( ( select ) => { const { getBlockName, @@ -84,10 +86,12 @@ export function PrivateBlockToolbar( { isBlockValid, getBlockEditingMode, getBlockAttributes, + getSettings, getTemplateLock, getParentSectionBlock, isZoomOut, isSectionBlock, + isBlockHiddenAtViewport, } = unlock( select( blockEditorStore ) ); const selectedBlockClientIds = getSelectedBlockClientIds(); const selectedBlockClientId = selectedBlockClientIds[ 0 ]; @@ -119,6 +123,14 @@ export function PrivateBlockToolbar( { const _isSectionBlock = isSectionBlock( selectedBlockClientId ); const _showSwitchSectionStyleButton = _isZoomOut || _isSectionBlock; + const _currentDeviceType = + getSettings()?.[ deviceTypeKey ]?.toLowerCase() || 'desktop'; + const _areSelectedBlocksHiddenOnViewport = + selectedBlockClientIds.length > 0 && + selectedBlockClientIds.every( ( id ) => + isBlockHiddenAtViewport( id, _currentDeviceType ) + ); + return { blockClientId: selectedBlockClientId, blockClientIds: selectedBlockClientIds, @@ -146,6 +158,8 @@ export function PrivateBlockToolbar( { showLockButtons: ! _isZoomOut, showBlockVisibilityButton: ! _isZoomOut, showSwitchSectionStyleButton: _showSwitchSectionStyleButton, + areSelectedBlocksHiddenOnViewport: + _areSelectedBlocksHiddenOnViewport, }; }, [] ); @@ -225,42 +239,46 @@ export function PrivateBlockToolbar( { ) } - { ! hasContentOnlyLocking && + { ! areSelectedBlocksHiddenOnViewport && + ! hasContentOnlyLocking && shouldShowVisualToolbar && isMultiToolbar && showGroupButtons && } - { showShuffleButton && ( + { ! areSelectedBlocksHiddenOnViewport && showShuffleButton && ( ) } - { showSwitchSectionStyleButton && ( - - ) } - { shouldShowVisualToolbar && showSlots && ( - <> - { ! isSectionContainer && ( - <> - - - - - - ) } - - <__unstableBlockToolbarLastItem.Slot /> - - ) } + { ! areSelectedBlocksHiddenOnViewport && + showSwitchSectionStyleButton && ( + + ) } + { ! areSelectedBlocksHiddenOnViewport && + shouldShowVisualToolbar && + showSlots && ( + <> + { ! isSectionContainer && ( + <> + + + + + + ) } + + <__unstableBlockToolbarLastItem.Slot /> + + ) }