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

Add: Navigation menus to the browse mode sidebar. #46436

Merged
merged 1 commit into from
Jan 23, 2023

Conversation

jorgefilipecosta
Copy link
Member

This PR adds navigation menus to the browse mode sidebar. Allowing the user to manage menus from there.
It moves the current navigation sidebar to the left.

cc: @jasmussen, @jameskoster

Screenhots

image
image

Follow up

There is a new navigation block manager being implemented at https://github.com/orgs/WordPress/projects/60/views/1. We should try to use that new component here.

@jorgefilipecosta jorgefilipecosta added the [Type] Feature New feature to highlight in changelogs. label Dec 9, 2022
@github-actions
Copy link

github-actions bot commented Dec 9, 2022

Size Change: +551 B (0%)

Total Size: 1.33 MB

Filename Size Change
build/block-editor/index.min.js 190 kB +6 B (0%)
build/edit-site/index.min.js 63.1 kB +267 B (0%)
build/edit-site/style-rtl.css 9.52 kB +137 B (+1%)
build/edit-site/style.css 9.52 kB +141 B (+2%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 993 B
build/annotations/index.min.js 2.78 kB
build/api-fetch/index.min.js 2.27 kB
build/autop/index.min.js 2.15 kB
build/blob/index.min.js 483 B
build/block-directory/index.min.js 7.16 kB
build/block-directory/style-rtl.css 1.04 kB
build/block-directory/style.css 1.04 kB
build/block-editor/content-rtl.css 3.66 kB
build/block-editor/content.css 3.66 kB
build/block-editor/default-editor-styles-rtl.css 403 B
build/block-editor/default-editor-styles.css 403 B
build/block-editor/style-rtl.css 14.3 kB
build/block-editor/style.css 14.3 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/audio/theme-rtl.css 138 B
build/block-library/blocks/audio/theme.css 138 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 84 B
build/block-library/blocks/avatar/style.css 84 B
build/block-library/blocks/block/editor-rtl.css 305 B
build/block-library/blocks/block/editor.css 305 B
build/block-library/blocks/button/editor-rtl.css 485 B
build/block-library/blocks/button/editor.css 485 B
build/block-library/blocks/button/style-rtl.css 532 B
build/block-library/blocks/button/style.css 532 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 100 B
build/block-library/blocks/categories/style.css 100 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 406 B
build/block-library/blocks/columns/style.css 406 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 199 B
build/block-library/blocks/comment-template/style.css 198 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 840 B
build/block-library/blocks/comments/editor.css 839 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 636 B
build/block-library/blocks/cover/editor-rtl.css 612 B
build/block-library/blocks/cover/editor.css 613 B
build/block-library/blocks/cover/style-rtl.css 1.57 kB
build/block-library/blocks/cover/style.css 1.56 kB
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 138 B
build/block-library/blocks/embed/theme.css 138 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 253 B
build/block-library/blocks/file/style.css 254 B
build/block-library/blocks/file/view.min.js 353 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 984 B
build/block-library/blocks/gallery/editor.css 988 B
build/block-library/blocks/gallery/style-rtl.css 1.55 kB
build/block-library/blocks/gallery/style.css 1.55 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 654 B
build/block-library/blocks/group/editor.css 654 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 829 B
build/block-library/blocks/image/editor.css 828 B
build/block-library/blocks/image/style-rtl.css 627 B
build/block-library/blocks/image/style.css 630 B
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/latest-comments/style-rtl.css 298 B
build/block-library/blocks/latest-comments/style.css 298 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 478 B
build/block-library/blocks/latest-posts/style.css 478 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 507 B
build/block-library/blocks/media-text/style.css 505 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 716 B
build/block-library/blocks/navigation-link/editor.css 715 B
build/block-library/blocks/navigation-link/style-rtl.css 115 B
build/block-library/blocks/navigation-link/style.css 115 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation/editor-rtl.css 2.13 kB
build/block-library/blocks/navigation/editor.css 2.14 kB
build/block-library/blocks/navigation/style-rtl.css 2.22 kB
build/block-library/blocks/navigation/style.css 2.2 kB
build/block-library/blocks/navigation/view-modal.min.js 2.81 kB
build/block-library/blocks/navigation/view.min.js 447 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 376 B
build/block-library/blocks/page-list/editor.css 376 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 174 B
build/block-library/blocks/paragraph/editor.css 174 B
build/block-library/blocks/paragraph/style-rtl.css 279 B
build/block-library/blocks/paragraph/style.css 281 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 501 B
build/block-library/blocks/post-comments-form/style.css 501 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 586 B
build/block-library/blocks/post-featured-image/editor.css 584 B
build/block-library/blocks/post-featured-image/style-rtl.css 318 B
build/block-library/blocks/post-featured-image/style.css 318 B
build/block-library/blocks/post-navigation-link/style-rtl.css 153 B
build/block-library/blocks/post-navigation-link/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 282 B
build/block-library/blocks/post-template/style.css 282 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 326 B
build/block-library/blocks/pullquote/style.css 325 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 288 B
build/block-library/blocks/query-pagination/style.css 284 B
build/block-library/blocks/query-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/query/editor-rtl.css 440 B
build/block-library/blocks/query/editor.css 440 B
build/block-library/blocks/quote/style-rtl.css 213 B
build/block-library/blocks/quote/style.css 213 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 149 B
build/block-library/blocks/rss/editor.css 149 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 409 B
build/block-library/blocks/search/style.css 406 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 234 B
build/block-library/blocks/separator/style.css 234 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 490 B
build/block-library/blocks/site-logo/editor.css 490 B
build/block-library/blocks/site-logo/style-rtl.css 203 B
build/block-library/blocks/site-logo/style.css 203 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 184 B
build/block-library/blocks/social-link/editor.css 184 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.4 kB
build/block-library/blocks/social-links/style.css 1.39 kB
build/block-library/blocks/spacer/editor-rtl.css 332 B
build/block-library/blocks/spacer/editor.css 332 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 433 B
build/block-library/blocks/table/editor.css 433 B
build/block-library/blocks/table/style-rtl.css 651 B
build/block-library/blocks/table/style.css 650 B
build/block-library/blocks/table/theme-rtl.css 157 B
build/block-library/blocks/table/theme.css 157 B
build/block-library/blocks/tag-cloud/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 404 B
build/block-library/blocks/template-part/editor.css 404 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 99 B
build/block-library/blocks/verse/style.css 99 B
build/block-library/blocks/video/editor-rtl.css 691 B
build/block-library/blocks/video/editor.css 694 B
build/block-library/blocks/video/style-rtl.css 179 B
build/block-library/blocks/video/style.css 179 B
build/block-library/blocks/video/theme-rtl.css 139 B
build/block-library/blocks/video/theme.css 139 B
build/block-library/classic-rtl.css 162 B
build/block-library/classic.css 162 B
build/block-library/common-rtl.css 1.05 kB
build/block-library/common.css 1.05 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 11.7 kB
build/block-library/editor.css 11.6 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 200 kB
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/style-rtl.css 12.4 kB
build/block-library/style.css 12.4 kB
build/block-library/theme-rtl.css 698 B
build/block-library/theme.css 703 B
build/block-serialization-default-parser/index.min.js 1.13 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/blocks/index.min.js 50.4 kB
build/components/index.min.js 203 kB
build/components/style-rtl.css 11.6 kB
build/components/style.css 11.7 kB
build/compose/index.min.js 12.3 kB
build/core-data/index.min.js 15.9 kB
build/customize-widgets/index.min.js 11.7 kB
build/customize-widgets/style-rtl.css 1.41 kB
build/customize-widgets/style.css 1.41 kB
build/data-controls/index.min.js 663 B
build/data/index.min.js 7.95 kB
build/date/index.min.js 32.1 kB
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/dom/index.min.js 4.71 kB
build/edit-navigation/index.min.js 16.2 kB
build/edit-navigation/style-rtl.css 4.14 kB
build/edit-navigation/style.css 4.15 kB
build/edit-post/classic-rtl.css 571 B
build/edit-post/classic.css 571 B
build/edit-post/index.min.js 34.4 kB
build/edit-post/style-rtl.css 7.46 kB
build/edit-post/style.css 7.45 kB
build/edit-widgets/index.min.js 16.8 kB
build/edit-widgets/style-rtl.css 4.49 kB
build/edit-widgets/style.css 4.49 kB
build/editor/index.min.js 45.2 kB
build/editor/style-rtl.css 3.68 kB
build/editor/style.css 3.67 kB
build/element/index.min.js 4.93 kB
build/escape-html/index.min.js 548 B
build/experiments/index.min.js 870 B
build/format-library/index.min.js 7.2 kB
build/format-library/style-rtl.css 598 B
build/format-library/style.css 597 B
build/hooks/index.min.js 1.66 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.79 kB
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.79 kB
build/keycodes/index.min.js 1.88 kB
build/list-reusable-blocks/index.min.js 2.14 kB
build/list-reusable-blocks/style-rtl.css 865 B
build/list-reusable-blocks/style.css 865 B
build/media-utils/index.min.js 2.99 kB
build/notices/index.min.js 977 B
build/plugins/index.min.js 1.95 kB
build/preferences-persistence/index.min.js 2.23 kB
build/preferences/index.min.js 1.35 kB
build/primitives/index.min.js 960 B
build/priority-queue/index.min.js 1.59 kB
build/react-i18n/index.min.js 702 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.75 kB
build/reusable-blocks/index.min.js 2.27 kB
build/reusable-blocks/style-rtl.css 265 B
build/reusable-blocks/style.css 265 B
build/rich-text/index.min.js 10.8 kB
build/server-side-render/index.min.js 2.09 kB
build/shortcode/index.min.js 1.52 kB
build/style-engine/index.min.js 1.53 kB
build/token-list/index.min.js 650 B
build/url/index.min.js 3.69 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.8 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 1.09 kB
build/warning/index.min.js 280 B
build/widgets/index.min.js 7.31 kB
build/widgets/style-rtl.css 1.18 kB
build/widgets/style.css 1.18 kB
build/wordcount/index.min.js 1.06 kB

compressed-size-action

@jasmussen
Copy link
Contributor

Outstanding, thank you! This GIF shows the new navigation item in the sidebar left of the new browse mode interface:

nav

A few things. Let's use singular for menus. But beyond renaming it to "Navigation menu", can we just call it "Navigation"?

The other aspect is that ideally a click on a navigation item navigates to that page. So in the GIF above I have Blog, About, Gallery and Contact. While I should be able to rearrange items in the menu, I should also be able to click an item to go there in the browse view. We can think of it as the first iteration of actual browse mode.

Probably doesn't have to happen in this PR, but worth noting.

We can remove this item now:

Screenshot 2022-12-12 at 10 32 08

Something is off about the positioning here:

Screenshot 2022-12-12 at 10 33 34

There's a missing focus style, so the default chrome focus style is applied:

Screenshot 2022-12-12 at 10 34 14

The alignment of icons here is a bit wrong:
Screenshot 2022-12-12 at 10 35 00

I wonder, to get the alignment right, can we use the same componentry as is used for templates?

Screenshot 2022-12-12 at 10 35 19

Nice one. Let me know if you need some help here with the intricacies.

@jorgefilipecosta jorgefilipecosta force-pushed the add/navigation-menus-browse-mode-sidebar branch from 8ffa751 to 00c37d3 Compare December 16, 2022 10:27
@jorgefilipecosta
Copy link
Member Author

Hi, @jasmussen, and @mtias, the title was changed to navigation as suggested.
This PR was updated to use the off-canvas editor.
The look is:
image

Because the base component is not exposed, it requires the Off-canvas navigation editor feature to be enable at wp-admin/admin.php?page=gutenberg-experiments.

The other aspect is that ideally a click on a navigation item navigates to that page. So in the GIF above I have Blog, About, Gallery and Contact. While I should be able to rearrange items in the menu, I should also be able to click an item to go there in the browse view. We can think of it as the first iteration of actual browse mode.

Probably doesn't have to happen in this PR, but worth noting.

Clicking to go to the page will be a follow-up after this PR is merged.

Is there any update we should do before merging this PR?

@jorgefilipecosta jorgefilipecosta force-pushed the add/navigation-menus-browse-mode-sidebar branch from 00c37d3 to c0b21e9 Compare January 2, 2023 18:22
@jameskoster
Copy link
Contributor

A couple of observations:

It would be good if the navigation panel items could be more dimensionally aligned with the Templates + Template Part panels. Hopefully this illustration explains what I mean:

Screenshot 2023-01-04 at 17 42 40

The menu dropdown is a bit noisy, would it be possible to style it to match the 'dark' theme?

It's a bit strange to have hover / focus styles on the items in the list when there is no on-click interaction. It feels a bit broken like this. I appreciate there's drag/drop but it's not obvious, perhaps a different cursor (grab?) on hover is worth a try.

In the ellipsis menu, the inspector toggle ("Show more settings") does nothing. Should we hide it? Locking feels a bit strange in this context, as do the create template part / reusable block actions. I appreciate these items might be something that needs to be fixed in the off-canvas nav component rather than here. I don't know if they should be blockers for this PR.

Most likely one for a follow-up, but should there be a way to create new menus here, similar to creating new templates? If so, I wonder if the add menu item should have a label? IE:

Screenshot 2023-01-04 at 17 46 17

@@ -1,4 +1,5 @@
.edit-site-sidebar-navigation-item.components-item {
.edit-site-sidebar-navigation-item.components-item,
.edit-site-sidebar-navigation-screen__content .edit-site-navigation-inspector .components-button {
Copy link
Contributor

Choose a reason for hiding this comment

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

Why do we need a specific style here in a generic component?

Copy link
Member Author

Choose a reason for hiding this comment

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

I removed the styles for .edit-site-sidebar-navigation-item.components-item, the other styles are required so the buttons looked "themed" on the dark mode.

@jorgefilipecosta jorgefilipecosta force-pushed the add/navigation-menus-browse-mode-sidebar branch 2 times, most recently from 44eba45 to c02d0ff Compare January 6, 2023 15:08
@github-actions
Copy link

github-actions bot commented Jan 6, 2023

Flaky tests detected in 7c4c3ba.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/3915721386
📝 Reported issues:

@jorgefilipecosta
Copy link
Member Author

Hi @jameskoster,

I fixed the margin issue. I updated the cursor to be grabbed.
I created a side PR to make the inserter of the off-canvas menu editor include the text "Add menu item," which when both PRs are merged, will provide the following UI:
image

Most likely one for a follow-up, but should there be a way to create new menus here, similar to creating new templates?

I'm not sure if we should offer the ability to create menus here. I even imagine that in the future, the menus available to browse may be restricted to the current menus used on the page/template (in most cases, just one menu is used, so the user only sees that menu). But my vision for the navigation section may be wrong.

I think the options available on the ellipsis menu can be solved in a separate PR. Like the "Add menu item" is. These are changes on the off-canvas editor itself.

@jameskoster
Copy link
Contributor

jameskoster commented Jan 6, 2023

Thanks @jorgefilipecosta. I'll dig into this more tomorrow, but one thing I noticed is that the link styles in this PR are now different to trunk:

Trunk

before.mp4

This PR

after.mp4

This view isn't very helpful:

Screenshot 2023-01-06 at 17 23 10

If we don't intend to allow the creation of menus here, perhaps we should hide the panel altogether when no menus are found?


Edit: I noticed the alignment and widths aren't right yet either. Ideally the icon should align roughly with the edge of the panel title, and reach row should be full width. Something like:

Screenshot 2023-01-06 at 17 32 17

@youknowriad
Copy link
Contributor

This PR is looking good in general.

The main feedback for me when testing the PR is that now it's becoming more "urgent" to figure out the saving flows outside the frame: when you add a page to the menu, it's still unsaved by default. I'm happy to address separately if needed but we'd need some designs.

The other thing is that when clicking pages/posts on the navigation tree, I expected the corresponding template with the right post/page in context to be loaded in the frame and ideally the element should be marked "selected" in the tree (like we do for the template list), thought that last point is arguable as we could potentially "only" select the corresponding template as a first step.

@jameskoster
Copy link
Contributor

Saving in browse view needs some holistic consideration imo. Specifically; do we want a global save button that opens the multi-entity save panel, or do we want contextual save buttons in the panels that require them (Navigation and Styles)?

Alternatively, since creating a template automatically publishes it, we might make a case that any changes made in the browse view are auto-saved.

I think a global save button (inside the site hub?) that opens the multi-entity save panel in a modal might work best, but I'd love to hear thoughts from others. Should we open a separate discussion for this?

we could potentially "only" select the corresponding template as a first step.

I think it would be a little mysterious to see the frame update on click, but not display the content of the item you clicked on. So I'd lean towards tackling template+content together as a separate effort.

@youknowriad
Copy link
Contributor

I think a global save button (inside the site hub?) that opens the multi-entity save panel in a modal might work best, but I'd love to hear thoughts from others. Should we open a separate discussion for this?

I agree it needs to be discussed and solved separately, so yeah let's go with a separate discussion here. I also lean towards a global save button that morphs into the editor's save button when moving to edit mode.

@jasmussen
Copy link
Contributor

Coming back to this one, just wanted to comment on this:

The menu dropdown is a bit noisy, would it be possible to style it to match the 'dark' theme?

I agree, both in the navigation block and here, and I wonder if instead of a dropdown (select) it could be a title plus a chevron with a popover.

@jorgefilipecosta jorgefilipecosta force-pushed the add/navigation-menus-browse-mode-sidebar branch 2 times, most recently from db6e4e9 to 7c4c3ba Compare January 13, 2023 23:31
@SaxonF
Copy link
Contributor

SaxonF commented Jan 16, 2023

Now that we have the ability to manage menus via the navigation block, do we really need a dedicated space for menu management? I'm not personally sure we do as we are leaning more in to direct manipulation of menus (e.g. click navigation block -> edit ) as opposed to managing menus out of context. What value do we get and is it worth it? You can also edit menus in isolation via template parts / patterns.

If the answer is definitely yes, at the very least the list view experience designed and built for the inspector should be re-used here.

@jasmussen
Copy link
Contributor

Now that we have the ability to manage menus via the navigation block, do we really need a dedicated space for menu management?

One key value to hold is to consider the 80% use case. For example, 1 header, 1 menu, 1 footer. In those cases, being able to edit your menu right from the design section, I suspect, will bring with it a lot of ease of use.

We still need for multiple menu management, and menu management inside the editor, to be vastly simplified. The improvements happening in that space are exciting and needed. But those still require you to click "Edit" in context of a random page, meaning the global context of a menu is slightly lost. So in that light, I see having access to both styles and menus right in the design section as a win.

@jorgefilipecosta
Copy link
Member Author

Hi @jameskoster, thank you for this review.

Thanks @jorgefilipecosta. I'll dig into this more tomorrow, but one thing I noticed is that the link styles in this PR are now different to trunk:

Fixed 👍

Edit: I noticed the alignment and widths aren't right yet either. Ideally, the icon should align roughly with the edge of the panel title, and reach row should be full width. Something like:

I applied a fix to try to align things.
image

In most menus, we will have submenus, so we have an arrow to expand the submenu. That row is now aligned with the panel title. But the icon of the menu item is not, as shown in the image, because we need space for the arrow.

If we don't intend to allow the creation of menus here, perhaps we should hide the panel altogether when no menus are found?

I applied the suggestion, and navigation is hidden if there are no menus.

@jorgefilipecosta
Copy link
Member Author

Coming back to this one, just wanted to comment on this:

The menu dropdown is a bit noisy, would it be possible to style it to match the 'dark' theme?

I agree, both in the navigation block and here, and I wonder if instead of a dropdown (select) it could be a title plus a chevron with a popover.

Hi @jasmussen, I guess we could use the CustomSelectControl component, so we have a "select," and then we could style it to match what we want? From the a11y point of view, we would take advantage of all the work done and the control would still look like a select.

@jorgefilipecosta jorgefilipecosta force-pushed the add/navigation-menus-browse-mode-sidebar branch from 7c4c3ba to 0f9989c Compare January 16, 2023 17:12
@youknowriad
Copy link
Contributor

Test this one again, for me the important missing piece right now is the ability to click a page/post to view/edit it.

@jasmussen
Copy link
Contributor

I guess we could use the CustomSelectControl component, so we have a "select," and then we could style it to match what we want? From the a11y point of view, we would take advantage of all the work done and the control would still look like a select.

Actually can we try just locking it, as a starting point, to a single menu? That is to say, the first menu saved. If you need to edit other menus, you have to go into the editor, find that menu, and edit there? This is meant to be the global menu, so it might be good to lock it to that.

@jorgefilipecosta jorgefilipecosta force-pushed the add/navigation-menus-browse-mode-sidebar branch from 0f9989c to 7c46588 Compare January 17, 2023 12:23
@jorgefilipecosta
Copy link
Member Author

I guess we could use the CustomSelectControl component, so we have a "select," and then we could style it to match what we want? From the a11y point of view, we would take advantage of all the work done and the control would still look like a select.

Actually can we try just locking it, as a starting point, to a single menu? That is to say, the first menu saved. If you need to edit other menus, you have to go into the editor, find that menu, and edit there? This is meant to be the global menu, so it might be good to lock it to that.

Done. I removed the select from the navigation sidebar. We have a smart logic to detect what menu appears, which works well.

@jameskoster
Copy link
Contributor

Thanks @jorgefilipecosta. The styling is better but a few details remain:

Specifically the rows are too narrow, and the ellipsis existing outside of the hover area looks a bit strange.

Screenshot 2023-01-17 at 14 22 49

Minor point: the submenu icon looks a bit odd. I don't think we need that – can we just use the regular icon?

It would be really great to align menu item styling across all panels:

Screenshot 2023-01-17 at 14 29 55

Here's the Figma file in case it's helpful.

@jorgefilipecosta jorgefilipecosta force-pushed the add/navigation-menus-browse-mode-sidebar branch 3 times, most recently from cabee41 to bbf1678 Compare January 18, 2023 12:18
@jorgefilipecosta
Copy link
Member Author

Hi @jameskoster,
I did another round of updates, trying to go in the direction you are proposing. That's how it looks currently:
image

Let me know if any other updates are necessary.

Minor point: the submenu icon looks a bit odd. I don't think we need that – can we just use the regular icon?

Regarding this point, we are using the icon of the submenu block, because the menu is just the new offsite navigation editor. Changing the icon here would change it everywhere including the list view, block inspector, and the block toolbar. Maybe we can think of a new icon that fits all these cases?

@jameskoster
Copy link
Contributor

Thanks for your perseverance, that looks much better :)

Changing the icon here would change it everywhere including the list view, block inspector, and the block toolbar.

Fair enough, let's tackle that separately.

Copy link
Contributor

@youknowriad youknowriad left a comment

Choose a reason for hiding this comment

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

LGTM 👍

I think it would be good to follow-up with the "browse mode" (click posts and pages to open them in the site editor) cause I feel it's the main added value for moving this navigation editor to the sidebar.

@@ -15,12 +17,33 @@ import SidebarNavigationScreen from '../sidebar-navigation-screen';
import SidebarNavigationItem from '../sidebar-navigation-item';

export default function SidebarNavigationScreenMain() {
const { navigationMenus } = useSelect( ( select ) => {
Copy link
Contributor

Choose a reason for hiding this comment

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

I've noticed that when I open the site editor, I see two menu items (templates and template parts) and a few milliseconds later, I see the navigation one. I wonder if we should use useSuspenseSelect here and add a Suspense provider around the sidebar to show a loader or something before the navigation menus are loaded. (We've never used suspense before so this might not be ready yet but I think worth a try, could be a follow-up)

@jasmussen
Copy link
Contributor

I think it would be good to follow-up with the "browse mode" (click posts and pages to open them in the site editor) cause I feel it's the main added value for moving this navigation editor to the sidebar.

Yep, this is a pretty crucial piece!

@youknowriad
Copy link
Contributor

Oh something I noticed here, should we remove the right navigation sidebar when you're in "edit mode". I think it's redundant now and I think this was always a temporary place for it.

@jasmussen
Copy link
Contributor

Oh something I noticed here, should we remove the right navigation sidebar when you're in "edit mode". I think it's redundant now and I think this was always a temporary place for it.

Yes!

@jorgefilipecosta jorgefilipecosta force-pushed the add/navigation-menus-browse-mode-sidebar branch from bbf1678 to 11ea045 Compare January 23, 2023 10:57
@jorgefilipecosta jorgefilipecosta force-pushed the add/navigation-menus-browse-mode-sidebar branch from 11ea045 to 42dd3b5 Compare January 23, 2023 11:58
@jorgefilipecosta jorgefilipecosta merged commit 78d60a5 into trunk Jan 23, 2023
@jorgefilipecosta jorgefilipecosta deleted the add/navigation-menus-browse-mode-sidebar branch January 23, 2023 13:56
@github-actions github-actions bot added this to the Gutenberg 15.1 milestone Jan 23, 2023
@juanmaguitar juanmaguitar added the [Feature] Site Editor Related to the overarching Site Editor (formerly "full site editing") label Feb 1, 2023
@ndiego
Copy link
Member

ndiego commented Feb 2, 2023

@jorgefilipecosta @jasmussen I was testing this PR with templates that have both header and footer navigation. The Navigation panel displays the menu in the header, which looks to be the expected result.

I think this might lead to some confusion, at least it did for me 😅. Since Template and Template Parts allow you to edit all templates and parts, I assumed that I would be able to see and edit all navigation menus within the browse mode Navigation panel. I know that menus can also be managed within the Editor, but this abstracted view is fantastic and feels a lot like the classic menu management screens of old, which I know many people love—food for thought.

I also ran into the issue noted here, that saving a modified menu still requires the user to go into Edit mode and then save.

@mtias
Copy link
Member

mtias commented Feb 2, 2023

Yeah, we'll likely add the dropdown back at some point, but in a way that is less obtrusive or disorienting than the large white dropdown at the top. It's encouraging to hear this feels like an intuitive interface to manage things at a high level :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Site Editor Related to the overarching Site Editor (formerly "full site editing") Needs User Documentation Needs new user documentation [Type] Feature New feature to highlight in changelogs.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants