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 />
+ >
+ ) }