Skip to content

Commit

Permalink
Navigation: Add 'edit' to the block toolbar
Browse files Browse the repository at this point in the history
  • Loading branch information
scruffian committed Nov 18, 2022
1 parent 9e6e8c9 commit 21cb5d6
Showing 1 changed file with 64 additions and 0 deletions.
64 changes: 64 additions & 0 deletions packages/edit-post/src/plugins/navigation-edit-menu-item.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/**
* WordPress dependencies
*/
import {
BlockEditorProvider,
BlockTools,
__unstableBlockToolbarLastItem,
__unstableBlockNameContext,
} from '@wordpress/block-editor';
import { ToolbarButton, ToolbarGroup } from '@wordpress/components';
import { useDispatch } from '@wordpress/data';
import { Fragment } from '@wordpress/element';
import { ReusableBlocksMenuItems } from '@wordpress/reusable-blocks';
import { __ } from '@wordpress/i18n';

const NavMenuSidebarToggle = () => {
// eslint-disable-next-line @wordpress/data-no-store-string-literals
const { openGeneralSidebar } = useDispatch( 'core/edit-post' );

return (
<ToolbarGroup>
<ToolbarButton
className="components-toolbar__control"
label={ __( 'Open navigation list view' ) }
onClick={ () => openGeneralSidebar( 'edit-post/block' ) }
>
{ __( 'Edit' ) }
</ToolbarButton>
</ToolbarGroup>
);
};

// Conditionally include NavMenu sidebar in Plugin only.
// Optimise for dead code elimination.
// See https://github.com/WordPress/gutenberg/blob/trunk/docs/how-to-guides/feature-flags.md#dead-code-elimination.
let MaybeNavMenuSidebarToggle = Fragment;

const isOffCanvasNavigationEditorEnabled =
window?.__experimentalEnableOffCanvasNavigationEditor === true;

if ( isOffCanvasNavigationEditorEnabled ) {
MaybeNavMenuSidebarToggle = NavMenuSidebarToggle;
}

const NavigationEditMenuItem = () => {
return (
<BlockEditorProvider>
<BlockTools>
<__unstableBlockToolbarLastItem>
<__unstableBlockNameContext.Consumer>
{ ( blockName ) =>
blockName === 'core/navigation' && (
<MaybeNavMenuSidebarToggle />
)
}
</__unstableBlockNameContext.Consumer>
</__unstableBlockToolbarLastItem>
</BlockTools>
<ReusableBlocksMenuItems />
</BlockEditorProvider>
);
};

export default NavigationEditMenuItem;

0 comments on commit 21cb5d6

Please sign in to comment.