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: Stop Updating the Active Menu on Active Item Change #25608

Merged
merged 1 commit into from
Sep 24, 2020

Conversation

Copons
Copy link
Contributor

@Copons Copons commented Sep 24, 2020

Description

Navigation components with activeMenu controlled externally but activeMenu internally, can't activate items in nested menus.
This is caused by the useEffect that attempt to sync the activeMenu between internal and external state, being triggered on activeItem change.

If the external activeMenu is not provided, it defaults to ROOT_MENU and never changes.
So, when we activate an item in a nested menu, we trigger that useEffect, which checks if the internal menu is not in sync with the external activeMenu, and updates the former with the latter.
Since the external activeMenu is always ROOT_MENU, every time we activate an item in a nested menu, we accidentally activate ROOT_MENU.

The fix

Just remove activeItem from that useEffect dependencies.

This way, the active menu will only be syncd when the external activeMenu changes, which means that it's externally controlled, which is the only case we need to sync it.

How has this been tested?

  • npm run storybook:dev
  • Open the Navigation component stories.
  • Default story: try activating items in root and nested menus. Make sure the Navigation doesn't accidentally navigate back to root.
  • Controlled State story: check for regressions, by activating items in all menus, and by trying the buttons below the Navigation.

I've set the base for this PR on update/navigation-component-stories (#25572), which is where I've noticed this issue, to make it easier to test.
Once approved, I'll merge this on master.

Types of changes

Bug fix (non-breaking change which fixes an issue)

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.

@Copons Copons added [Type] Bug An existing feature does not function as intended [Feature] Navigation Component A navigational waterfall component for hierarchy of items. labels Sep 24, 2020
@Copons Copons self-assigned this Sep 24, 2020
@github-actions
Copy link

github-actions bot commented Sep 24, 2020

Size Change: +1.38 kB (0%)

Total Size: 1.17 MB

Filename Size Change
build/block-editor/index.js 128 kB +15 B (0%)
build/block-library/index.js 135 kB +278 B (0%)
build/block-library/style-rtl.css 7.61 kB +9 B (0%)
build/block-library/style.css 7.6 kB +12 B (0%)
build/components/index.js 167 kB -1 B
build/edit-post/style-rtl.css 6.25 kB +10 B (0%)
build/edit-post/style.css 6.24 kB +10 B (0%)
build/edit-site/index.js 20.3 kB +586 B (2%)
build/edit-site/style-rtl.css 3.51 kB +206 B (5%) 🔍
build/edit-site/style.css 3.51 kB +204 B (5%) 🔍
build/editor/style-rtl.css 3.83 kB +26 B (0%)
build/editor/style.css 3.82 kB +24 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.52 kB 0 B
build/api-fetch/index.js 3.35 kB 0 B
build/autop/index.js 2.72 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-editor/style-rtl.css 11.1 kB 0 B
build/block-editor/style.css 11.1 kB 0 B
build/block-library/editor-rtl.css 8.6 kB 0 B
build/block-library/editor.css 8.6 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.78 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/blocks/index.js 47.5 kB 0 B
build/components/style-rtl.css 15.5 kB 0 B
build/components/style.css 15.5 kB 0 B
build/compose/index.js 9.42 kB 0 B
build/core-data/index.js 12 kB 0 B
build/data-controls/index.js 1.27 kB 0 B
build/data/index.js 8.43 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/dom/index.js 4.42 kB 0 B
build/edit-navigation/index.js 10.4 kB 0 B
build/edit-navigation/style-rtl.css 868 B 0 B
build/edit-navigation/style.css 871 B 0 B
build/edit-post/index.js 306 kB 0 B
build/edit-widgets/index.js 17.5 kB 0 B
build/edit-widgets/style-rtl.css 2.8 kB 0 B
build/edit-widgets/style.css 2.8 kB 0 B
build/editor/editor-styles-rtl.css 492 B 0 B
build/editor/editor-styles.css 493 B 0 B
build/editor/index.js 45.5 kB 0 B
build/element/index.js 4.45 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.49 kB 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 1.74 kB 0 B
build/html-entities/index.js 621 B 0 B
build/i18n/index.js 3.55 kB 0 B
build/is-shallow-equal/index.js 709 B 0 B
build/keyboard-shortcuts/index.js 2.39 kB 0 B
build/keycodes/index.js 1.85 kB 0 B
build/list-reusable-blocks/index.js 3.02 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/media-utils/index.js 5.12 kB 0 B
build/notices/index.js 1.69 kB 0 B
build/nux/index.js 3.27 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.44 kB 0 B
build/primitives/index.js 1.34 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.7 kB 0 B
build/server-side-render/index.js 2.61 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.24 kB 0 B
build/url/index.js 4.06 kB 0 B
build/viewport/index.js 1.74 kB 0 B
build/warning/index.js 1.13 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

Copy link
Member

@david-szabo97 david-szabo97 left a comment

Choose a reason for hiding this comment

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

LGTM! 👍 🚢

@Copons Copons changed the base branch from update/navigation-component-stories to master September 24, 2020 14:23
@Copons Copons changed the base branch from master to update/navigation-component-stories September 24, 2020 14:23
@Copons Copons force-pushed the fix/navigation-component-active-root-menu branch from 5f1e0ab to b53543e Compare September 24, 2020 14:26
@Copons Copons changed the base branch from update/navigation-component-stories to master September 24, 2020 14:27
@Copons Copons merged commit 2f327b7 into master Sep 24, 2020
@Copons Copons deleted the fix/navigation-component-active-root-menu branch September 24, 2020 15:12
@github-actions github-actions bot added this to the Gutenberg 9.1 milestone Sep 24, 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. [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants