From 8d8f5612c143be3a2c63828a225bac00355629be Mon Sep 17 00:00:00 2001 From: Grzegorz Ziolkowski Date: Mon, 9 Aug 2021 15:39:13 +0200 Subject: [PATCH] Block Editor: Try to absorb parent block toolbar controls --- .../src/components/block-controls/fill.js | 3 ++- .../use-display-block-controls/index.js | 25 +++++++++++-------- packages/block-library/src/buttons/edit.js | 3 ++- .../block-library/src/social-links/edit.js | 3 ++- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/packages/block-editor/src/components/block-controls/fill.js b/packages/block-editor/src/components/block-controls/fill.js index 2392c3d07ee3ae..391ea16d248a9c 100644 --- a/packages/block-editor/src/components/block-controls/fill.js +++ b/packages/block-editor/src/components/block-controls/fill.js @@ -22,8 +22,9 @@ export default function BlockControlsFill( { group = 'default', controls, children, + __experimentalExposeToChildren = false, } ) { - if ( ! useDisplayBlockControls() ) { + if ( ! useDisplayBlockControls( { __experimentalExposeToChildren } ) ) { return null; } const Fill = groups[ group ].Fill; diff --git a/packages/block-editor/src/components/use-display-block-controls/index.js b/packages/block-editor/src/components/use-display-block-controls/index.js index a3f4e7c4362f6c..e1614f60ce121c 100644 --- a/packages/block-editor/src/components/use-display-block-controls/index.js +++ b/packages/block-editor/src/components/use-display-block-controls/index.js @@ -9,31 +9,36 @@ import { useSelect } from '@wordpress/data'; import { useBlockEditContext } from '../block-edit/context'; import { store as blockEditorStore } from '../../store'; -export default function useDisplayBlockControls() { +export default function useDisplayBlockControls( { + __experimentalExposeToChildren = false, +} = {} ) { const { isSelected, clientId, name } = useBlockEditContext(); - const isFirstAndSameTypeMultiSelected = useSelect( + const isActive = useSelect( ( select ) => { - // Don't bother checking, see OR statement below. if ( isSelected ) { - return; + return true; } const { getBlockName, isFirstMultiSelectedBlock, getMultiSelectedBlockClientIds, + hasSelectedInnerBlock, } = select( blockEditorStore ); - if ( ! isFirstMultiSelectedBlock( clientId ) ) { - return false; + if ( isFirstMultiSelectedBlock( clientId ) ) { + return getMultiSelectedBlockClientIds().every( + ( id ) => getBlockName( id ) === name + ); + } + if ( __experimentalExposeToChildren ) { + return hasSelectedInnerBlock( clientId ); } - return getMultiSelectedBlockClientIds().every( - ( id ) => getBlockName( id ) === name - ); + return false; }, [ clientId, isSelected, name ] ); - return isSelected || isFirstAndSameTypeMultiSelected; + return isActive; } diff --git a/packages/block-library/src/buttons/edit.js b/packages/block-library/src/buttons/edit.js index 424e305bd585e9..fc89aa804aff7c 100644 --- a/packages/block-library/src/buttons/edit.js +++ b/packages/block-library/src/buttons/edit.js @@ -59,6 +59,7 @@ function ButtonsEdit( { ], ], orientation, + __experimentalCaptureToolbars: true, __experimentalLayout: LAYOUT, templateInsertUpdatesSelection: true, } ); @@ -70,7 +71,7 @@ function ButtonsEdit( { return ( <> - + - +