Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Navigation component: Store navigation tree in context v2 #25340

Merged
merged 17 commits into from
Sep 17, 2020

Conversation

david-szabo97
Copy link
Member

Fixes: #25246

Description

Adds items and menus to the Navigation context contained in a navigationTree object.
Example usage: Change back button label to the parent menu's title

packages/components/src/navigation/menu.js

line 31:
const { activeMenu, setActiveMenu, navigationTree: { menus } } = useNavigationContext();

line 39: 
backButtonLabel =
	parentMenu === 'root' ? backButtonLabel : menus[ parentMenu ]?.title;

Both items and menus are objects.

Keys are based on the item prop for items and they are based on menu prop for menus. This makes them easy to access by their slug.

Values are the props of the NavigationItem and NavigationMenu items without the children prop. Items also include the menu that contains the item as menu property.

Types of changes

New feature (non-breaking change which adds functionality)

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

@david-szabo97 david-szabo97 added the [Feature] Navigation Component A navigational waterfall component for hierarchy of items. label Sep 15, 2020
@david-szabo97 david-szabo97 self-assigned this Sep 15, 2020
@github-actions
Copy link

github-actions bot commented Sep 15, 2020

Size Change: +575 B (0%)

Total Size: 1.2 MB

Filename Size Change
build/annotations/index.js 3.67 kB +1 B
build/api-fetch/index.js 3.41 kB -1 B
build/block-editor/index.js 128 kB -2 B (0%)
build/block-editor/style-rtl.css 11.1 kB -3 B (0%)
build/block-editor/style.css 11.1 kB -4 B (0%)
build/block-library/index.js 135 kB +47 B (0%)
build/blocks/index.js 47.8 kB +1 B
build/components/index.js 202 kB +500 B (0%)
build/core-data/index.js 12.2 kB +2 B (0%)
build/dom/index.js 4.47 kB -2 B (0%)
build/edit-navigation/index.js 10.7 kB +1 B
build/edit-post/index.js 305 kB -1 B
build/edit-site/index.js 19 kB +21 B (0%)
build/edit-widgets/index.js 16.4 kB +17 B (0%)
build/editor/index.js 45.3 kB +1 B
build/element/index.js 4.64 kB -2 B (0%)
build/format-library/index.js 7.71 kB -2 B (0%)
build/i18n/index.js 3.57 kB +3 B (0%)
build/keyboard-shortcuts/index.js 2.52 kB +1 B
build/keycodes/index.js 1.94 kB +1 B
build/media-utils/index.js 5.32 kB -2 B (0%)
build/nux/index.js 3.4 kB -2 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/autop/index.js 2.83 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 8.53 kB 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-library/editor-rtl.css 8.59 kB 0 B
build/block-library/editor.css 8.59 kB 0 B
build/block-library/style-rtl.css 7.6 kB 0 B
build/block-library/style.css 7.59 kB 0 B
build/block-library/theme-rtl.css 741 B 0 B
build/block-library/theme.css 741 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/components/style-rtl.css 15.5 kB 0 B
build/components/style.css 15.4 kB 0 B
build/compose/index.js 9.68 kB 0 B
build/data-controls/index.js 1.28 kB 0 B
build/data/index.js 8.55 kB 0 B
build/date/index.js 31.9 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/edit-navigation/style-rtl.css 868 B 0 B
build/edit-navigation/style.css 871 B 0 B
build/edit-post/style-rtl.css 6.24 kB 0 B
build/edit-post/style.css 6.22 kB 0 B
build/edit-site/style-rtl.css 3.13 kB 0 B
build/edit-site/style.css 3.13 kB 0 B
build/edit-widgets/style-rtl.css 2.75 kB 0 B
build/edit-widgets/style.css 2.75 kB 0 B
build/editor/editor-styles-rtl.css 492 B 0 B
build/editor/editor-styles.css 493 B 0 B
build/editor/style-rtl.css 3.8 kB 0 B
build/editor/style.css 3.8 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 2.13 kB 0 B
build/html-entities/index.js 621 B 0 B
build/is-shallow-equal/index.js 711 B 0 B
build/list-reusable-blocks/index.js 3.12 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.41 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 13.9 kB 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/shortcode/index.js 1.69 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 4.06 kB 0 B
build/viewport/index.js 1.85 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

Copy link
Contributor

@Copons Copons left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've left mostly minor comments, but I'm ok with the direction.

We definitely need to document why we are keeping the children rendered, because I'm sure we'll forget the reason in no time and will have the hardest time figuring that out again. 😄

(Also appreciate that you've moved the components in their own folder! 🙇 )

@david-szabo97 david-szabo97 force-pushed the try/naviation-navigation-tree-context-v2 branch from 1e266a4 to f31277c Compare September 17, 2020 08:28
Copy link
Contributor

@Copons Copons left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code LGTM.

I've also tested this by modifying the Storybook example with a button that adds and removes a new menus and items to the navigation.

This has a side effect that menus and items now need a unique identifier.
I took the liberty of pushing an update to the readme to recognize this new requirement.

@david-szabo97 david-szabo97 merged commit bcb8428 into master Sep 17, 2020
@david-szabo97 david-szabo97 deleted the try/naviation-navigation-tree-context-v2 branch September 17, 2020 13:35
@github-actions github-actions bot added this to the Gutenberg 9.1 milestone Sep 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Navigation Component A navigational waterfall component for hierarchy of items.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Navigation Component: Store the Navigation Tree in the Context
2 participants