From af8bbe918056e36c13cdaff119b170c0d2979b54 Mon Sep 17 00:00:00 2001 From: Dave Smith Date: Wed, 27 Jul 2022 16:46:50 +0100 Subject: [PATCH] Extract unrelated submenus concept from hook --- packages/block-library/src/navigation/edit/index.js | 6 +++++- .../src/navigation/edit/use-inner-blocks.js | 10 ++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/block-library/src/navigation/edit/index.js b/packages/block-library/src/navigation/edit/index.js index c1bb7378d09a0d..79b4e8c6cd67ce 100644 --- a/packages/block-library/src/navigation/edit/index.js +++ b/packages/block-library/src/navigation/edit/index.js @@ -193,9 +193,13 @@ function Navigation( { hasUncontrolledInnerBlocks, uncontrolledInnerBlocks, isInnerBlockSelected, - hasSubmenus, + innerBlocks, } = useInnerBlocks( clientId ); + const hasSubmenus = !! innerBlocks.find( + ( block ) => block.name === 'core/navigation-submenu' + ); + const { replaceInnerBlocks, selectBlock, diff --git a/packages/block-library/src/navigation/edit/use-inner-blocks.js b/packages/block-library/src/navigation/edit/use-inner-blocks.js index 932ec79030e8ba..70a8415e1f9935 100644 --- a/packages/block-library/src/navigation/edit/use-inner-blocks.js +++ b/packages/block-library/src/navigation/edit/use-inner-blocks.js @@ -17,19 +17,17 @@ export function useInnerBlocks( clientId ) { // introduce a selector like `getUncontrolledInnerBlocks`, just in // case `getBlock` is fixed. const _uncontrolledInnerBlocks = getBlock( clientId ).innerBlocks; + const _hasUncontrolledInnerBlocks = !! _uncontrolledInnerBlocks?.length; const _controlledInnerBlocks = _hasUncontrolledInnerBlocks ? EMPTY_ARRAY : getBlocks( clientId ); - const innerBlocks = _hasUncontrolledInnerBlocks - ? _uncontrolledInnerBlocks - : _controlledInnerBlocks; return { - hasSubmenus: !! innerBlocks.find( - ( block ) => block.name === 'core/navigation-submenu' - ), + innerBlocks: _hasUncontrolledInnerBlocks + ? _uncontrolledInnerBlocks + : _controlledInnerBlocks, hasUncontrolledInnerBlocks: _hasUncontrolledInnerBlocks, uncontrolledInnerBlocks: _uncontrolledInnerBlocks, controlledInnerBlocks: _controlledInnerBlocks,