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: Try unifying submenu arrow positioning. #37003

Merged
merged 4 commits into from Feb 11, 2022

Conversation

jasmussen
Copy link
Contributor

@jasmussen jasmussen commented Nov 30, 2021

Description

This PR is intentionally a draft, because I have this feeling I'm messing with a delicate structure, and so I want to make sure this is right before it comes out of the draft state.

The challenge to solve is to ensure that the dropdown icon looks and is positioned the same inside the editor and on the frontend, regardless of whether you have hover or click enabled. Right now they are not. Editor:

before editor

Frontend:

before front

The cause is that the markup is slightly different. In the editor, with both label and icon are always children of the wp-block-navigation-item__content element:

.wp-block-navigation-item__content
	.wp-block-navigation-item__label
	.wp-block-navigation__submenu-icon

On the frontend, this varies depending on click and hover, but it's sometimes like so:

.wp-block-navigation-item__content
	.wp-block-navigation-item__label
.wp-block-navigation__submenu-icon

This PR changes the structure so the icon is always outside of the wp-block-navigation-item__content element. Editor:

after editor

Front:

after front

How has this been tested?

Insert navigation menus with submenus, one that opens on click, one that opens on hover, and verify the icons look identical between them, and with the frontend.

The positioning on the frontend can be tricky to see at small sizes, so it can help to bump the font size. Vertically the chevron should be pushed down ever so slightly.

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • 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 (please manually search all *.native.js files for terms that need renaming or removal).

@jasmussen jasmussen self-assigned this Nov 30, 2021
@jasmussen jasmussen added [Block] Navigation Affects the Navigation Block [Type] Enhancement A suggestion for improvement. labels Nov 30, 2021
@jasmussen jasmussen mentioned this pull request Nov 30, 2021
7 tasks
@github-actions
Copy link

github-actions bot commented Nov 30, 2021

Size Change: +2.5 kB (0%)

Total Size: 1.15 MB

Filename Size Change
build/a11y/index.min.js 993 B +33 B (+3%)
build/admin-manifest/index.min.js 1.13 kB +27 B (+2%)
build/annotations/index.min.js 2.77 kB +28 B (+1%)
build/api-fetch/index.min.js 2.25 kB +30 B (+1%)
build/autop/index.min.js 2.15 kB +31 B (+1%)
build/blob/index.min.js 487 B +28 B (+6%) 🔍
build/block-directory/index.min.js 6.31 kB +30 B (0%)
build/block-editor/index.min.js 142 kB +28 B (0%)
build/block-library/blocks/file/view.min.js 353 B +31 B (+10%) ⚠️
build/block-library/blocks/navigation-submenu/view.min.js 375 B +32 B (+9%) 🔍
build/block-library/blocks/navigation/style-rtl.css 1.89 kB +44 B (+2%)
build/block-library/blocks/navigation/style.css 1.88 kB +41 B (+2%)
build/block-library/blocks/navigation/view.min.js 2.85 kB +32 B (+1%)
build/block-library/blocks/separator/style-rtl.css 233 B -12 B (-5%)
build/block-library/blocks/separator/style.css 233 B -12 B (-5%)
build/block-library/editor-rtl.css 10.1 kB +44 B (0%)
build/block-library/editor.css 10.1 kB +44 B (0%)
build/block-library/index.min.js 168 kB +134 B (0%)
build/block-library/style-rtl.css 11.3 kB +38 B (0%)
build/block-library/style.css 11.3 kB +38 B (0%)
build/block-serialization-default-parser/index.min.js 1.12 kB +32 B (+3%)
build/block-serialization-spec-parser/index.min.js 2.83 kB +35 B (+1%)
build/blocks/index.min.js 46.4 kB +27 B (0%)
build/components/index.min.js 215 kB +110 B (0%)
build/compose/index.min.js 11.2 kB +32 B (0%)
build/core-data/index.min.js 13.4 kB +31 B (0%)
build/customize-widgets/index.min.js 11.4 kB +30 B (0%)
build/data-controls/index.min.js 663 B +32 B (+5%) 🔍
build/data/index.min.js 7.47 kB +33 B (0%)
build/date/index.min.js 31.9 kB +35 B (0%)
build/deprecated/index.min.js 518 B +33 B (+7%) 🔍
build/dom-ready/index.min.js 336 B +32 B (+11%) ⚠️
build/dom/index.min.js 4.53 kB +32 B (+1%)
build/edit-navigation/index.min.js 16.2 kB +30 B (0%)
build/edit-post/index.min.js 30 kB +92 B (0%)
build/edit-site/index.min.js 41.9 kB +273 B (+1%)
build/edit-widgets/index.min.js 16.7 kB +29 B (0%)
build/editor/index.min.js 38.5 kB +28 B (0%)
build/element/index.min.js 3.32 kB +30 B (+1%)
build/escape-html/index.min.js 548 B +31 B (+6%) 🔍
build/format-library/index.min.js 6.62 kB +31 B (0%)
build/hooks/index.min.js 1.66 kB +33 B (+2%)
build/html-entities/index.min.js 454 B +30 B (+7%) 🔍
build/i18n/index.min.js 3.79 kB +34 B (+1%)
build/is-shallow-equal/index.min.js 535 B +34 B (+7%) 🔍
build/keyboard-shortcuts/index.min.js 1.83 kB +33 B (+2%)
build/keycodes/index.min.js 1.41 kB +27 B (+2%)
build/list-reusable-blocks/index.min.js 1.75 kB +30 B (+2%)
build/media-utils/index.min.js 2.94 kB +26 B (+1%)
build/notices/index.min.js 957 B +32 B (+3%)
build/nux/index.min.js 2.12 kB +32 B (+2%)
build/plugins/index.min.js 1.98 kB +32 B (+2%)
build/primitives/index.min.js 949 B +32 B (+3%)
build/priority-queue/index.min.js 611 B +29 B (+5%) 🔍
build/react-i18n/index.min.js 704 B +33 B (+5%) 🔍
build/redux-routine/index.min.js 2.69 kB +34 B (+1%)
build/reusable-blocks/index.min.js 2.25 kB +31 B (+1%)
build/rich-text/index.min.js 11.1 kB +29 B (0%)
build/server-side-render/index.min.js 1.61 kB +32 B (+2%)
build/shortcode/index.min.js 1.52 kB +33 B (+2%)
build/token-list/index.min.js 668 B +29 B (+5%) 🔍
build/url/index.min.js 1.92 kB +28 B (+1%)
build/viewport/index.min.js 1.08 kB +30 B (+3%)
build/warning/index.min.js 280 B +32 B (+13%) ⚠️
build/widgets/index.min.js 7.18 kB +30 B (0%)
build/wordcount/index.min.js 1.07 kB +33 B (+3%)
ℹ️ View Unchanged
Filename Size
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-editor/style-rtl.css 14.8 kB
build/block-editor/style.css 14.8 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 65 B
build/block-library/blocks/archives/style.css 65 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 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 470 B
build/block-library/blocks/button/editor.css 470 B
build/block-library/blocks/button/style-rtl.css 560 B
build/block-library/blocks/button/style.css 560 B
build/block-library/blocks/buttons/editor-rtl.css 292 B
build/block-library/blocks/buttons/editor.css 292 B
build/block-library/blocks/buttons/style-rtl.css 275 B
build/block-library/blocks/buttons/style.css 275 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 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 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 131 B
build/block-library/blocks/code/theme.css 131 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-template/style-rtl.css 127 B
build/block-library/blocks/comment-template/style.css 127 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-query-loop/editor-rtl.css 95 B
build/block-library/blocks/comments-query-loop/editor.css 95 B
build/block-library/blocks/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.55 kB
build/block-library/blocks/cover/style.css 1.55 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 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 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 255 B
build/block-library/blocks/file/style.css 255 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 965 B
build/block-library/blocks/gallery/editor.css 967 B
build/block-library/blocks/gallery/style-rtl.css 1.61 kB
build/block-library/blocks/gallery/style.css 1.61 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 159 B
build/block-library/blocks/group/editor.css 159 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 114 B
build/block-library/blocks/heading/style.css 114 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 810 B
build/block-library/blocks/image/editor.css 809 B
build/block-library/blocks/image/style-rtl.css 500 B
build/block-library/blocks/image/style.css 503 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 199 B
build/block-library/blocks/latest-posts/editor.css 198 B
build/block-library/blocks/latest-posts/style-rtl.css 447 B
build/block-library/blocks/latest-posts/style.css 446 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 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 493 B
build/block-library/blocks/media-text/style.css 490 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 649 B
build/block-library/blocks/navigation-link/editor.css 650 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 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 1.98 kB
build/block-library/blocks/navigation/editor.css 1.99 kB
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 401 B
build/block-library/blocks/page-list/editor.css 402 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 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 273 B
build/block-library/blocks/paragraph/style.css 273 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/style-rtl.css 446 B
build/block-library/blocks/post-comments-form/style.css 446 B
build/block-library/blocks/post-comments/style-rtl.css 521 B
build/block-library/blocks/post-comments/style.css 521 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 721 B
build/block-library/blocks/post-featured-image/editor.css 721 B
build/block-library/blocks/post-featured-image/style-rtl.css 153 B
build/block-library/blocks/post-featured-image/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 323 B
build/block-library/blocks/post-template/style.css 323 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 80 B
build/block-library/blocks/post-title/style.css 80 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 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 389 B
build/block-library/blocks/pullquote/style.css 388 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 234 B
build/block-library/blocks/query-pagination/style.css 231 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 201 B
build/block-library/blocks/quote/style.css 201 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 202 B
build/block-library/blocks/rss/editor.css 204 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 397 B
build/block-library/blocks/search/style.css 398 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 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 744 B
build/block-library/blocks/site-logo/editor.css 744 B
build/block-library/blocks/site-logo/style-rtl.css 181 B
build/block-library/blocks/site-logo/style.css 181 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 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 177 B
build/block-library/blocks/social-link/editor.css 177 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.37 kB
build/block-library/blocks/social-links/style.css 1.36 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 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 214 B
build/block-library/blocks/tag-cloud/style.css 215 B
build/block-library/blocks/template-part/editor-rtl.css 560 B
build/block-library/blocks/template-part/editor.css 559 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 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 921 B
build/block-library/common.css 919 B
build/block-library/reset-rtl.css 474 B
build/block-library/reset.css 474 B
build/block-library/theme-rtl.css 672 B
build/block-library/theme.css 676 B
build/components/style-rtl.css 15.5 kB
build/components/style.css 15.5 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 546 B
build/edit-post/classic.css 547 B
build/edit-post/style-rtl.css 7.17 kB
build/edit-post/style.css 7.16 kB
build/edit-site/style-rtl.css 7.22 kB
build/edit-site/style.css 7.21 kB
build/edit-widgets/style-rtl.css 4.17 kB
build/edit-widgets/style.css 4.17 kB
build/editor/style-rtl.css 3.71 kB
build/editor/style.css 3.71 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB

compressed-size-action

@jasmussen
Copy link
Contributor Author

@tellthemachines I know how busy you are, but if you have time, I'd appreciate just a high level sanity check of the code here, and whether it's something we can land for 5.9.

@jasmussen jasmussen force-pushed the try/navigation-fix-chevron-position branch from f16c662 to b57a227 Compare January 26, 2022 09:33
@jasmussen jasmussen marked this pull request as ready for review January 26, 2022 09:34
@jasmussen
Copy link
Contributor Author

Fixes #38204. I would like a confidence boost and good testing of the code, but since it fixes an issue, I think we should revisit this one.

@jasmussen jasmussen force-pushed the try/navigation-fix-chevron-position branch from b57a227 to bbeabf1 Compare January 26, 2022 11:52
Copy link
Member

@vcanales vcanales left a comment

Choose a reason for hiding this comment

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

Since this concerns chevron positioning, I see a slight difference depending on the status of Open on click:

Open on Click ON Open on Click OFF
image image

You might have to test this on your end in order to notice the difference though!

Other than that, LGTM!

@jasmussen
Copy link
Contributor Author

Thanks for the review! Testing again I'm seeing a small issue on the frontend which I want to fix:
Screenshot 2022-01-27 at 08 17 48

I'd also would appreciate additional confidence in the markup changes.

@jasmussen jasmussen force-pushed the try/navigation-fix-chevron-position branch from bbeabf1 to b915e07 Compare January 27, 2022 07:19
@jasmussen jasmussen added the [Status] In Progress Tracking issues with work in progress label Jan 27, 2022
@jasmussen
Copy link
Contributor Author

Alright, fixed some issues around configurations and this should be ready again. Click and hover work, and icons is placed correctly across all permutations including page list:
Screenshot 2022-01-27 at 08 38 35
Screenshot 2022-01-27 at 08 38 29

Screenshot 2022-01-27 at 08 38 26

Here's demo content you can try, but be sure to load in menus that feature submenus, as well as page lists that feature submenus:

<!-- wp:paragraph -->
<p>Page List:</p>
<!-- /wp:paragraph -->

<!-- wp:navigation {"ref":726} /-->

<!-- wp:spacer -->
<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:paragraph -->
<p>Custom menu, hover</p>
<!-- /wp:paragraph -->

<!-- wp:navigation {"ref":569} /-->

<!-- wp:spacer -->
<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>
<!-- /wp:spacer -->

<!-- wp:paragraph -->
<p>Custom menu, click</p>
<!-- /wp:paragraph -->

<!-- wp:navigation {"ref":569,"openSubmenusOnClick":true} /-->

@jasmussen jasmussen removed the [Status] In Progress Tracking issues with work in progress label Jan 27, 2022
@jasmussen
Copy link
Contributor Author

If you have time to check the code of this one again, I'd be grateful. It tests well for me, feels safe, and I'd like to land it. But because it touches some of the markup, I'd love a sanity check just so there isn't anything I've missed.

Copy link
Contributor

@tellthemachines tellthemachines left a comment

Choose a reason for hiding this comment

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

Thanks for this, the arrows are looking much better! Just a couple comments below; mainly we need to make the change for page list in the front end and then should be good to go 🚀

<span className="wp-block-page-list__submenu-icon wp-block-navigation__submenu-icon">
<ItemSubmenuIcon />
</span>
</button>
Copy link
Contributor

Choose a reason for hiding this comment

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

This change also needs to be done for the page list front end, here. As it stands there's still a diff in the front end between open on hover and click with page list submenus:
Screen Shot 2022-02-02 at 3 02 26 pm
(top one opens on hover, bottom on click).

Copy link
Contributor Author

@jasmussen jasmussen Feb 2, 2022

Choose a reason for hiding this comment

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

Thank you!

I wanted to note that I missed this because it appears I can't currently a navigation menu with only a page list to open submenus on click in the interface. As of #36826, we currently hide those options unless the menu hasSubmenus:
Screenshot 2022-02-02 at 09 45 38

Screenshot 2022-02-02 at 09 44 19

It seems like we should change that to simply just show those options if the menu hasPageList or something along those lines, it doesn't seem worth it to check if the pagelist has submenus. CC: @vcanales

I was able to check the box in the code editor though, so I'll take a stab at addressing the markup issue now.

@@ -245,7 +257,8 @@ $navigation-icon-size: 24px;
}

// Show submenus on click.
.wp-block-navigation-submenu__toggle[aria-expanded="true"] + .wp-block-navigation__submenu-container {
.wp-block-navigation-submenu__toggle[aria-expanded="true"] + .wp-block-navigation__submenu-container, // Without submenu icon showing.
.wp-block-navigation-submenu__toggle[aria-expanded="true"] + .wp-block-navigation__submenu-icon + .wp-block-navigation__submenu-container { // With submenu icon showing.
Copy link
Contributor

Choose a reason for hiding this comment

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

We should be able to use ~ instead of + .wp-block-navigation__submenu-icon + here.

@jasmussen jasmussen force-pushed the try/navigation-fix-chevron-position branch from 265f2cd to 90ad80e Compare February 2, 2022 08:40
@jasmussen
Copy link
Contributor Author

Thank you for the excellent review. Per your advice I pushed 953e0c5 which appears to fix the issue also for Page List:
Screenshot 2022-02-02 at 09 50 16

@gwwar
Copy link
Contributor

gwwar commented Feb 3, 2022

This is probably an unrelated issue, but do we expect the Nav block to collapse to 0 height when no links are present? Edit: I see this behavior on trunk too

CleanShot 2022-02-03 at 08 41 14@2x

@jasmussen
Copy link
Contributor Author

I found that also 😅 #38439

@gwwar
Copy link
Contributor

gwwar commented Feb 3, 2022

I did a bit of manual testing and a quick code review. Overall this looks relatively safe to land, but I did want to spot some things I saw:

Markup does change depending on whether or not "open on click is set". (The icon can be set outside of the button). Would it be better to have a consistent structure, or is this intentional?

open on click click to navigate
open on click click to navigate

We can also see some minor behavior differences with the icon being a hover/click target or not, due to the markup differences:

CleanShot.2022-02-03.at.09.21.53.mp4

@tellthemachines
Copy link
Contributor

Markup does change depending on whether or not "open on click is set". (The icon can be set outside of the button). Would it be better to have a consistent structure, or is this intentional?

With this change the icon should always be outside the wp-block-navigation-item__content element, but when set to open on hover the icon itself renders as a button, so that it still opens on click for keyboard users.

I think that's fine, but you raise a good point about the behaviour difference: it would be better if, with "open on click" set, clicking on the icon also opened the submenu. We could fix that by giving the button a bit of right padding, and absolutely positioning the icon span over it, with pointer-events: none so the click goes through to the underlying button. What do you think, @jasmussen ?

@jasmussen
Copy link
Contributor Author

Hmm that's an excellent call. I can confirm that I can click on the arrow, just like the text, to open menus in trunk, but not in this one. That does seem worth fixing. I need to work on some other things this morning, but I'm going to add an "in progress" label and see what I can do about fixing that. Thank you both!

@jasmussen jasmussen added the [Status] In Progress Tracking issues with work in progress label Feb 4, 2022
@jasmussen jasmussen force-pushed the try/navigation-fix-chevron-position branch from 953e0c5 to ddf412a Compare February 9, 2022 08:13
@jasmussen jasmussen force-pushed the try/navigation-fix-chevron-position branch from ddf412a to c1601b0 Compare February 9, 2022 08:26
@jasmussen
Copy link
Contributor Author

jasmussen commented Feb 9, 2022

As I started work on changing the shape of the button to make a faux clickable area on the chevron, it didn't feel right.

But the changeset ended up being okay, I think, it works well, and honestly it comes down to choosing whether to have CSS complexity handling two different positions of the icon in the markup, or handling a little padding math. Right at this point I'm leaning towards the padding math for the simplicity. But I'd appreciate another set of eyes.

I also noticed an extra span being output for the Page List when set to open submenus on hover; in that situation, the wp-block-navigation-submenu__toggle becomes both a button and the icon with wp-block-navigation__submenu-icon attached. And so the extra span inside that contained another nested wp-block-navigation__submenu-icon simply doubled the margin between text and arrow.

Here it is working:

click

width: 0.6em;
height: 0.6em;
margin-left: 0.25em;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Well.

Copy link
Contributor

@tellthemachines tellthemachines left a comment

Choose a reason for hiding this comment

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

it comes down to choosing whether to have CSS complexity handling two different positions of the icon in the markup, or handling a little padding math.

I'm happy with either; the icon has no semantics attached so it doesn't really make a difference from that perspective.

I pushed a small change to the page list markup on the editor side, as the hover version of the icon was being rendered outside the button; I updated it to match the front end. With this I think we're good to go 🚀

}

// For hover-based menus, this class is duplicated for a button.
.wp-block-navigation__submenu-icon .wp-block-navigation__submenu-icon {
Copy link
Contributor

Choose a reason for hiding this comment

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

Is this still needed? I notice you removed the extra span here (which wasn't meant to be there, so thanks for fixing 😄 )

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Wildly excellent eye there. I started writing the CSS rule first, then figured the better fix was to remove the span, then forgot to remove the CSS 🙈

Thank you, removed!

@jasmussen
Copy link
Contributor Author

Thanks so much for all the help with this one. I think I'll land it, as it fixes an open issue, and it simplifies many more styling issues across hover and click, and introducing just that little extra padding rule for the hover situation. I think it's worthwhile balance. I also gave it a final sanity check, and it's look good to me:
Screenshot 2022-02-11 at 09 24 17

Screenshot 2022-02-11 at 09 24 30

@jasmussen jasmussen merged commit 8a0f46b into trunk Feb 11, 2022
@jasmussen jasmussen deleted the try/navigation-fix-chevron-position branch February 11, 2022 09:02
@github-actions github-actions bot added this to the Gutenberg 12.7 milestone Feb 11, 2022
@cbravobernal cbravobernal added the [Package] Block library /packages/block-library label Feb 26, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Navigation Affects the Navigation Block [Package] Block library /packages/block-library [Status] In Progress Tracking issues with work in progress [Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants