From a3b3970bbda02c31b144e33e80d0859242051114 Mon Sep 17 00:00:00 2001 From: Seth Rubenstein Date: Fri, 26 May 2023 20:30:21 -0400 Subject: [PATCH] This will allow for greater customization of the navigation block, allowing site owners to establish the default core/navigation-link variant they'd like. --- packages/block-library/src/navigation/block.json | 7 +++++++ packages/block-library/src/navigation/edit/index.js | 2 ++ .../block-library/src/navigation/edit/inner-blocks.js | 8 +++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/block-library/src/navigation/block.json b/packages/block-library/src/navigation/block.json index ce2bed0d8837f6..524f4c4616511c 100644 --- a/packages/block-library/src/navigation/block.json +++ b/packages/block-library/src/navigation/block.json @@ -71,6 +71,13 @@ "templateLock": { "type": [ "string", "boolean" ], "enum": [ "all", "insert", "contentOnly", false ] + }, + "defaultBlock": { + "type": "object", + "default": { + "name": "core/navigation-link", + "attributes": {} + } } }, "providesContext": { diff --git a/packages/block-library/src/navigation/edit/index.js b/packages/block-library/src/navigation/edit/index.js index 52760e6fdfd9b3..6a86430a4cc5b6 100644 --- a/packages/block-library/src/navigation/edit/index.js +++ b/packages/block-library/src/navigation/edit/index.js @@ -93,6 +93,7 @@ function Navigation( { overlayMenu, showSubmenuIcon, templateLock, + defaultBlock, layout: { justifyContent, orientation = 'horizontal', @@ -822,6 +823,7 @@ function Navigation( { } templateLock={ templateLock } orientation={ orientation } + defaultBlock={ defaultBlock } /> ) } diff --git a/packages/block-library/src/navigation/edit/inner-blocks.js b/packages/block-library/src/navigation/edit/inner-blocks.js index 669703f002dbb2..0dbe857067a12d 100644 --- a/packages/block-library/src/navigation/edit/inner-blocks.js +++ b/packages/block-library/src/navigation/edit/inner-blocks.js @@ -25,6 +25,7 @@ export default function NavigationInnerBlocks( { hasCustomPlaceholder, orientation, templateLock, + defaultBlock, } ) { const { isImmediateParentOfSelectedBlock, @@ -88,6 +89,11 @@ export default function NavigationInnerBlocks( { const showPlaceholder = ! hasCustomPlaceholder && ! hasMenuItems && ! isSelected; + // If the `defaultBlock` attribute is set and itself has an attributes object with values then use it + // otherwise fallback to the DEFAULT_BLOCK constant. + // This allows site owners to set the default `core/navigation-link` variation to use. + const navDefaultBlock = defaultBlock && defaultBlock.attributes && Object.keys(defaultBlock.attributes).length > 0 ? defaultBlock : DEFAULT_BLOCK; + const innerBlocksProps = useInnerBlocksProps( { className: 'wp-block-navigation__container', @@ -98,7 +104,7 @@ export default function NavigationInnerBlocks( { onChange, allowedBlocks: ALLOWED_BLOCKS, prioritizedInserterBlocks: PRIORITIZED_INSERTER_BLOCKS, - __experimentalDefaultBlock: DEFAULT_BLOCK, + __experimentalDefaultBlock: navDefaultBlock, __experimentalDirectInsert: shouldDirectInsert, orientation, templateLock,