From 30332d07297152ebd6851e63bf0d6e91e0573618 Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Fri, 4 Nov 2022 12:01:01 +0200 Subject: [PATCH 01/11] Adds the gutenberg-off-canvas-navigation-editor experiment --- .../src/components/off-canvas-editor/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/block-editor/src/components/off-canvas-editor/index.js b/packages/block-editor/src/components/off-canvas-editor/index.js index dd88b9ec43cc9..209d5f0fc2915 100644 --- a/packages/block-editor/src/components/off-canvas-editor/index.js +++ b/packages/block-editor/src/components/off-canvas-editor/index.js @@ -50,6 +50,7 @@ export const BLOCK_LIST_ITEM_HEIGHT = 36; /** * Show a hierarchical list of blocks. * +<<<<<<< HEAD * @param {Object} props Components props. * @param {string} props.id An HTML element id for the root element of ListView. * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy. @@ -66,6 +67,17 @@ function __ExperimentalOffCanvasEditor( isExpanded = false, selectBlockInCanvas = true, }, +======= + * @param {Object} props Components props. + * @param {string} props.id An HTML element id for the root element of ListView. + * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy. + * @param {boolean} props.showBlockMovers Flag to enable block movers + * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default. + * @param {Object} ref Forwarded ref + */ +function __ExperimentalOffCanvasEditor( + { id, blocks, showBlockMovers = false, isExpanded = false }, +>>>>>>> c86d6580d0 (Adds the gutenberg-off-canvas-navigation-editor experiment) ref ) { const { clientIdsTree, draggedClientIds, selectedClientIds } = @@ -206,7 +218,10 @@ function __ExperimentalOffCanvasEditor( selectedClientIds={ selectedClientIds } isExpanded={ isExpanded } shouldShowInnerBlocks={ shouldShowInnerBlocks } +<<<<<<< HEAD selectBlockInCanvas={ selectBlockInCanvas } +======= +>>>>>>> c86d6580d0 (Adds the gutenberg-off-canvas-navigation-editor experiment) /> From 026ffcee1e42993f6460c9b03a7c5bd58285a8d5 Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Fri, 4 Nov 2022 12:20:26 +0200 Subject: [PATCH 02/11] add list view to navigation block --- packages/block-library/src/navigation/edit/index.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/block-library/src/navigation/edit/index.js b/packages/block-library/src/navigation/edit/index.js index 51e473fffdd68..09ea75c6d805e 100644 --- a/packages/block-library/src/navigation/edit/index.js +++ b/packages/block-library/src/navigation/edit/index.js @@ -3,6 +3,12 @@ */ import classnames from 'classnames'; +/** + * WordPress dependencies + */ +/** + * WordPress dependencies + */ /** * WordPress dependencies */ @@ -38,6 +44,12 @@ import { speak } from '@wordpress/a11y'; import { createBlock } from '@wordpress/blocks'; import { close, Icon } from '@wordpress/icons'; +/** + * Internal dependencies + */ +/** + * Internal dependencies + */ /** * Internal dependencies */ From b0562bed151b4a3415605f6112cd5e3362994c18 Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Fri, 4 Nov 2022 15:53:54 +0200 Subject: [PATCH 03/11] adds a selectBlockInCanvas to allow control on block selection from list view --- .../src/components/off-canvas-editor/block.js | 6 ++++++ .../src/components/off-canvas-editor/index.js | 15 --------------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/packages/block-editor/src/components/off-canvas-editor/block.js b/packages/block-editor/src/components/off-canvas-editor/block.js index e338c4c35c957..1e01ee98a8077 100644 --- a/packages/block-editor/src/components/off-canvas-editor/block.js +++ b/packages/block-editor/src/components/off-canvas-editor/block.js @@ -3,6 +3,9 @@ */ import classnames from 'classnames'; +/** + * WordPress dependencies + */ /** * WordPress dependencies */ @@ -23,6 +26,9 @@ import { import { useDispatch, useSelect } from '@wordpress/data'; import { sprintf, __ } from '@wordpress/i18n'; +/** + * Internal dependencies + */ /** * Internal dependencies */ diff --git a/packages/block-editor/src/components/off-canvas-editor/index.js b/packages/block-editor/src/components/off-canvas-editor/index.js index 209d5f0fc2915..dd88b9ec43cc9 100644 --- a/packages/block-editor/src/components/off-canvas-editor/index.js +++ b/packages/block-editor/src/components/off-canvas-editor/index.js @@ -50,7 +50,6 @@ export const BLOCK_LIST_ITEM_HEIGHT = 36; /** * Show a hierarchical list of blocks. * -<<<<<<< HEAD * @param {Object} props Components props. * @param {string} props.id An HTML element id for the root element of ListView. * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy. @@ -67,17 +66,6 @@ function __ExperimentalOffCanvasEditor( isExpanded = false, selectBlockInCanvas = true, }, -======= - * @param {Object} props Components props. - * @param {string} props.id An HTML element id for the root element of ListView. - * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy. - * @param {boolean} props.showBlockMovers Flag to enable block movers - * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default. - * @param {Object} ref Forwarded ref - */ -function __ExperimentalOffCanvasEditor( - { id, blocks, showBlockMovers = false, isExpanded = false }, ->>>>>>> c86d6580d0 (Adds the gutenberg-off-canvas-navigation-editor experiment) ref ) { const { clientIdsTree, draggedClientIds, selectedClientIds } = @@ -218,10 +206,7 @@ function __ExperimentalOffCanvasEditor( selectedClientIds={ selectedClientIds } isExpanded={ isExpanded } shouldShowInnerBlocks={ shouldShowInnerBlocks } -<<<<<<< HEAD selectBlockInCanvas={ selectBlockInCanvas } -======= ->>>>>>> c86d6580d0 (Adds the gutenberg-off-canvas-navigation-editor experiment) /> From 88f65a2ceaec24de499230b1ea2a9bd4fc3efd18 Mon Sep 17 00:00:00 2001 From: Andrei Draganescu Date: Fri, 4 Nov 2022 15:14:45 +0200 Subject: [PATCH 04/11] reposition navigation selector in panel more menu --- .../src/navigation/edit/index.js | 281 ++++++++++-------- .../edit/navigation-menu-selector.js | 21 +- .../block-library/src/navigation/editor.scss | 7 + 3 files changed, 177 insertions(+), 132 deletions(-) diff --git a/packages/block-library/src/navigation/edit/index.js b/packages/block-library/src/navigation/edit/index.js index 09ea75c6d805e..bd76d3338eb69 100644 --- a/packages/block-library/src/navigation/edit/index.js +++ b/packages/block-library/src/navigation/edit/index.js @@ -38,6 +38,8 @@ import { __experimentalToggleGroupControlOption as ToggleGroupControlOption, Button, Spinner, + __experimentalHStack as HStack, + __experimentalHeading as Heading, } from '@wordpress/components'; import { __, sprintf } from '@wordpress/i18n'; import { speak } from '@wordpress/a11y'; @@ -662,56 +664,83 @@ function Navigation( { // Consider this state as 'unsaved' and offer an uncontrolled version of inner blocks, // that automatically saves the menu as an entity when changes are made to the inner blocks. const hasUnsavedBlocks = hasUncontrolledInnerBlocks && ! isEntityAvailable; + + const WrappedNavigationMenuSelector = ( { currentMenuId } ) => ( + { + handleUpdateMenu( menuId ); + } } + onSelectClassicMenu={ async ( classicMenu ) => { + const navMenu = await convertClassicMenu( + classicMenu.id, + classicMenu.name, + 'draft' + ); + if ( navMenu ) { + handleUpdateMenu( navMenu.id, { + focusNavigationBlock: true, + } ); + } + } } + onCreateNew={ createUntitledEmptyNavigationMenu } + createNavigationMenuIsSuccess={ createNavigationMenuIsSuccess } + createNavigationMenuIsError={ createNavigationMenuIsError } + /* translators: %s: The name of a menu. */ + actionLabel={ __( "Switch to '%s'" ) } + /> + ); + if ( hasUnsavedBlocks ) { return ( - - { - handleUpdateMenu( menuId ); - } } - onSelectClassicMenu={ async ( classicMenu ) => { - const navMenu = await convertClassicMenu( - classicMenu.id, - classicMenu.name, - 'draft' - ); - if ( navMenu ) { - handleUpdateMenu( navMenu.id, { - focusNavigationBlock: true, - } ); - } - } } - onCreateNew={ createUntitledEmptyNavigationMenu } - createNavigationMenuIsSuccess={ - createNavigationMenuIsSuccess - } - /* translators: %s: The name of a menu. */ - actionLabel={ __( "Switch to '%s'" ) } - /> + { isOffCanvasNavigationEditorEnabled && ( - + <> + + + { __( 'Menu' ) } + + + + + ) } { ! isOffCanvasNavigationEditorEnabled && ( - + <> + + + ) } @@ -758,45 +787,47 @@ function Navigation( { return ( - - { - handleUpdateMenu( menuId ); - } } - onSelectClassicMenu={ async ( classicMenu ) => { - const navMenu = await convertClassicMenu( - classicMenu.id, - classicMenu.name, - 'draft' - ); - if ( navMenu ) { - handleUpdateMenu( navMenu.id, { - focusNavigationBlock: true, - } ); - } - } } - onCreateNew={ createUntitledEmptyNavigationMenu } - createNavigationMenuIsSuccess={ - createNavigationMenuIsSuccess - } - /* translators: %s: The name of a menu. */ - actionLabel={ __( "Switch to '%s'" ) } - /> + + { isOffCanvasNavigationEditorEnabled && ( + <> + + + { __( 'Menu' ) } + + + +

Select or create a menu

+ + ) } { ! isOffCanvasNavigationEditorEnabled && ( - + <> + + + ) }
@@ -875,55 +906,51 @@ function Navigation( { - - { - handleUpdateMenu( menuId ); - } } - onSelectClassicMenu={ async ( classicMenu ) => { - const navMenu = await convertClassicMenu( - classicMenu.id, - classicMenu.name, - 'draft' - ); - if ( navMenu ) { - handleUpdateMenu( navMenu.id, { - focusNavigationBlock: true, - } ); - } - } } - onCreateNew={ createUntitledEmptyNavigationMenu } - createNavigationMenuIsSuccess={ - createNavigationMenuIsSuccess - } - createNavigationMenuIsError={ - createNavigationMenuIsError - } - /* translators: %s: The name of a menu. */ - actionLabel={ __( "Switch to '%s'" ) } - /> + { isOffCanvasNavigationEditorEnabled && ( - + <> + + + { __( 'Menu' ) } + + + + + ) } { ! isOffCanvasNavigationEditorEnabled && ( - + <> + + + ) } diff --git a/packages/block-library/src/navigation/edit/navigation-menu-selector.js b/packages/block-library/src/navigation/edit/navigation-menu-selector.js index 036d86f06f215..8103dfeef3d1b 100644 --- a/packages/block-library/src/navigation/edit/navigation-menu-selector.js +++ b/packages/block-library/src/navigation/edit/navigation-menu-selector.js @@ -10,7 +10,7 @@ import { VisuallyHidden, } from '@wordpress/components'; import { useEntityProp } from '@wordpress/core-data'; -import { Icon, chevronUp, chevronDown } from '@wordpress/icons'; +import { Icon, chevronUp, chevronDown, moreVertical } from '@wordpress/icons'; import { __, sprintf } from '@wordpress/i18n'; import { decodeEntities } from '@wordpress/html-entities'; import { useEffect, useMemo, useState } from '@wordpress/element'; @@ -31,6 +31,9 @@ function NavigationMenuSelector( { createNavigationMenuIsError, toggleProps = {}, } ) { + const isOffCanvasNavigationEditorEnabled = + window?.__experimentalEnableOffCanvasNavigationEditor === true; + /* translators: %s: The name of a menu. */ const createActionLabel = __( "Create from '%s'" ); @@ -161,11 +164,19 @@ function NavigationMenuSelector( { return ( { ( { onClose } ) => ( <> diff --git a/packages/block-library/src/navigation/editor.scss b/packages/block-library/src/navigation/editor.scss index 9e7b9ff91e943..68802b67adf81 100644 --- a/packages/block-library/src/navigation/editor.scss +++ b/packages/block-library/src/navigation/editor.scss @@ -540,6 +540,13 @@ body.editor-styles-wrapper color: inherit; } +.components-heading.wp-block-navigation-off-canvas-editor__title { + margin: 0; +} +.wp-block-navigation-off-canvas-editor__header { + margin-bottom: $grid-unit-10; +} + // Customize the mobile editing. // This can be revisited in the future, but for now, inherit design from the parent. .is-menu-open .wp-block-navigation__responsive-container-content * { From 0efef6b6c08fbc1c770dbcd7147c4bc6e4dbd3db Mon Sep 17 00:00:00 2001 From: Ben Dwyer Date: Tue, 8 Nov 2022 14:09:09 -0700 Subject: [PATCH 05/11] Update packages/block-library/src/navigation/edit/index.js --- packages/block-library/src/navigation/edit/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/block-library/src/navigation/edit/index.js b/packages/block-library/src/navigation/edit/index.js index bd76d3338eb69..d655b6537100e 100644 --- a/packages/block-library/src/navigation/edit/index.js +++ b/packages/block-library/src/navigation/edit/index.js @@ -9,9 +9,6 @@ import classnames from 'classnames'; /** * WordPress dependencies */ -/** - * WordPress dependencies - */ import { useState, useEffect, useRef, Platform } from '@wordpress/element'; import { addQueryArgs } from '@wordpress/url'; import { From f2bdbfba0688a7f1c8c9fec1c22fc97c67119a35 Mon Sep 17 00:00:00 2001 From: Ben Dwyer Date: Tue, 8 Nov 2022 14:09:30 -0700 Subject: [PATCH 06/11] Update packages/block-library/src/navigation/edit/index.js --- packages/block-library/src/navigation/edit/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/block-library/src/navigation/edit/index.js b/packages/block-library/src/navigation/edit/index.js index d655b6537100e..c27b71c743a57 100644 --- a/packages/block-library/src/navigation/edit/index.js +++ b/packages/block-library/src/navigation/edit/index.js @@ -49,9 +49,6 @@ import { close, Icon } from '@wordpress/icons'; /** * Internal dependencies */ -/** - * Internal dependencies - */ import useNavigationMenu from '../use-navigation-menu'; import useNavigationEntities from '../use-navigation-entities'; import Placeholder from './placeholder'; From b41feef606a2e63bc7f42073c2d210f0010d0f1f Mon Sep 17 00:00:00 2001 From: Ben Dwyer Date: Tue, 8 Nov 2022 15:19:31 -0700 Subject: [PATCH 07/11] Update packages/block-editor/src/components/off-canvas-editor/block.js --- .../block-editor/src/components/off-canvas-editor/block.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/block-editor/src/components/off-canvas-editor/block.js b/packages/block-editor/src/components/off-canvas-editor/block.js index 1e01ee98a8077..5370d560030b1 100644 --- a/packages/block-editor/src/components/off-canvas-editor/block.js +++ b/packages/block-editor/src/components/off-canvas-editor/block.js @@ -3,9 +3,6 @@ */ import classnames from 'classnames'; -/** - * WordPress dependencies - */ /** * WordPress dependencies */ From de7a119f405d7f5fdd482198d032711ad0a9622e Mon Sep 17 00:00:00 2001 From: Ben Dwyer Date: Tue, 8 Nov 2022 15:19:50 -0700 Subject: [PATCH 08/11] Update packages/block-editor/src/components/off-canvas-editor/block.js --- .../block-editor/src/components/off-canvas-editor/block.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/block-editor/src/components/off-canvas-editor/block.js b/packages/block-editor/src/components/off-canvas-editor/block.js index 5370d560030b1..e338c4c35c957 100644 --- a/packages/block-editor/src/components/off-canvas-editor/block.js +++ b/packages/block-editor/src/components/off-canvas-editor/block.js @@ -23,9 +23,6 @@ import { import { useDispatch, useSelect } from '@wordpress/data'; import { sprintf, __ } from '@wordpress/i18n'; -/** - * Internal dependencies - */ /** * Internal dependencies */ From a6a96fe8b29a53ca29eeacfea041be67886c6703 Mon Sep 17 00:00:00 2001 From: Ben Dwyer Date: Tue, 8 Nov 2022 15:20:09 -0700 Subject: [PATCH 09/11] Update packages/block-library/src/navigation/edit/index.js --- packages/block-library/src/navigation/edit/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/block-library/src/navigation/edit/index.js b/packages/block-library/src/navigation/edit/index.js index c27b71c743a57..9fd0639dd1651 100644 --- a/packages/block-library/src/navigation/edit/index.js +++ b/packages/block-library/src/navigation/edit/index.js @@ -3,9 +3,6 @@ */ import classnames from 'classnames'; -/** - * WordPress dependencies - */ /** * WordPress dependencies */ From e5690502a7227e2e149689be437bcc75cb1f6da2 Mon Sep 17 00:00:00 2001 From: Ben Dwyer Date: Tue, 8 Nov 2022 15:20:32 -0700 Subject: [PATCH 10/11] Update packages/block-library/src/navigation/edit/index.js --- packages/block-library/src/navigation/edit/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/block-library/src/navigation/edit/index.js b/packages/block-library/src/navigation/edit/index.js index 9fd0639dd1651..a0d54bde13ccd 100644 --- a/packages/block-library/src/navigation/edit/index.js +++ b/packages/block-library/src/navigation/edit/index.js @@ -40,9 +40,6 @@ import { speak } from '@wordpress/a11y'; import { createBlock } from '@wordpress/blocks'; import { close, Icon } from '@wordpress/icons'; -/** - * Internal dependencies - */ /** * Internal dependencies */ From 1d2e4dc8c0aa9753bb8059a806e826cac6a49577 Mon Sep 17 00:00:00 2001 From: Alex Lende Date: Tue, 8 Nov 2022 15:24:04 -0700 Subject: [PATCH 11/11] Replace double conditions with ternaries --- .../block-library/src/navigation/edit/index.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/packages/block-library/src/navigation/edit/index.js b/packages/block-library/src/navigation/edit/index.js index a0d54bde13ccd..a732c4f3824a0 100644 --- a/packages/block-library/src/navigation/edit/index.js +++ b/packages/block-library/src/navigation/edit/index.js @@ -691,7 +691,7 @@ function Navigation( { : __( 'Menu' ) } > - { isOffCanvasNavigationEditorEnabled && ( + { isOffCanvasNavigationEditorEnabled ? ( <> - ) } - { ! isOffCanvasNavigationEditorEnabled && ( + ) : ( <> - { isOffCanvasNavigationEditorEnabled && ( + { isOffCanvasNavigationEditorEnabled ? ( <>

Select or create a menu

- ) } - { ! isOffCanvasNavigationEditorEnabled && ( + ) : ( <> - { isOffCanvasNavigationEditorEnabled && ( + { isOffCanvasNavigationEditorEnabled ? ( <> - ) } - { ! isOffCanvasNavigationEditorEnabled && ( + ) : ( <>