diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md index 156ecd4d1bd517..f8de1934ecfdb1 100644 --- a/packages/components/CHANGELOG.md +++ b/packages/components/CHANGELOG.md @@ -15,6 +15,10 @@ - Mark `children` prop as optional in `SelectControl` ([#37872](https://github.com/WordPress/gutenberg/pull/37872)) - Add memoization of callbacks and context to prevent unnecessary rerenders of the `ToolsPanel` ([#38037](https://github.com/WordPress/gutenberg/pull/38037)) +### Experimental + +- Add basic history location support to `Navigator` ([#37416](https://github.com/WordPress/gutenberg/pull/37416)). + ## 19.2.0 (2022-01-04) ### Experimental diff --git a/packages/components/src/navigator/context.ts b/packages/components/src/navigator/context.ts index 17b26fb9c14ad5..cf326f7bc352b9 100644 --- a/packages/components/src/navigator/context.ts +++ b/packages/components/src/navigator/context.ts @@ -8,5 +8,9 @@ import { createContext } from '@wordpress/element'; */ import type { NavigatorContext as NavigatorContextType } from './types'; -const initialContextValue: NavigatorContextType = [ {}, () => {} ]; +const initialContextValue: NavigatorContextType = { + location: {}, + push: () => {}, + pop: () => {}, +}; export const NavigatorContext = createContext( initialContextValue ); diff --git a/packages/components/src/navigator/navigator-provider/README.md b/packages/components/src/navigator/navigator-provider/README.md index 4ce48a75790b84..dcad45dd5c4be5 100644 --- a/packages/components/src/navigator/navigator-provider/README.md +++ b/packages/components/src/navigator/navigator-provider/README.md @@ -6,8 +6,6 @@ This feature is still experimental. “Experimental” means this is an early im The `NavigatorProvider` component allows rendering nested panels or menus (via the [`NavigatorScreen` component](/packages/components/src/navigator/navigator-screen/README.md)) and navigate between these different states (via the `useNavigator` hook). The Global Styles sidebar is an example of this. -The `Navigator*` family of components is _not_ opinionated in terms of UI, and can be composed with any UI components to navigate between the nested screens. - ## Usage ```jsx @@ -17,34 +15,34 @@ import { __experimentalUseNavigator as useNavigator, } from '@wordpress/components'; -function NavigatorButton( { - path, - isBack = false, - ...props -} ) { - const navigator = useNavigator(); +function NavigatorButton( { path, ...props } ) { + const { push } = useNavigator(); return (