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

Only mark nav menu as dialog when open #36617

Closed
wants to merge 5 commits into from

Conversation

vcanales
Copy link
Member

@vcanales vcanales commented Nov 18, 2021

Description

This PR addresses part of the problem described in #36600, where an incorrectly labeled menu was being identified as a dialog, when in fact it was an unopened menu. This caused screen readers such as NVDA to read out the word "dialog" in places where it shouldn't have.

I would really appreciate feedback on how we can further address the problems described on the issue.

How has this been tested?

Navigating through a Navigation Menu which is not collapsed reads:

"Navigation landmark with N items", and then reads the text for the first link on the list.

Submenu arrows read "Button Collapsed", pressing this would open a submenu. This can be improved by more accurately describing the button with something like "Button, Collapsed Submenu".

Navigating to a button to open the Overlay Menu reads:

"Navigation landmark, open menu button, collapsed submenu".
After pressing enter on this button, screen reader reads:

"Expanded, Dialog, List, List with N items", and then it reads the text on each item.
The menu can be navigated using the Tab key.

@vcanales vcanales force-pushed the fix/nav-menu-should-not-always-be-dialog branch from 54a0377 to 09ffa07 Compare November 18, 2021 13:21
@github-actions
Copy link

github-actions bot commented Nov 18, 2021

Size Change: +145 B (0%)

Total Size: 1.13 MB

Filename Size Change
build/block-library/blocks/navigation/style-rtl.css 1.74 kB +28 B (+2%)
build/block-library/blocks/navigation/style.css 1.73 kB +28 B (+2%)
build/block-library/index.min.js 163 kB +26 B (0%)
build/block-library/style-rtl.css 10.8 kB +32 B (0%)
build/block-library/style.css 10.8 kB +31 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 960 B
build/admin-manifest/index.min.js 1.1 kB
build/annotations/index.min.js 2.75 kB
build/api-fetch/index.min.js 2.21 kB
build/autop/index.min.js 2.12 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.28 kB
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/index.min.js 140 kB
build/block-editor/style-rtl.css 14.5 kB
build/block-editor/style.css 14.5 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 58 B
build/block-library/blocks/audio/editor.css 58 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 291 B
build/block-library/blocks/buttons/editor.css 291 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 134 B
build/block-library/blocks/code/theme.css 134 B
build/block-library/blocks/columns/editor-rtl.css 210 B
build/block-library/blocks/columns/editor.css 208 B
build/block-library/blocks/columns/style-rtl.css 503 B
build/block-library/blocks/columns/style.css 502 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/cover/editor-rtl.css 546 B
build/block-library/blocks/cover/editor.css 547 B
build/block-library/blocks/cover/style-rtl.css 1.22 kB
build/block-library/blocks/cover/style.css 1.22 kB
build/block-library/blocks/embed/editor-rtl.css 488 B
build/block-library/blocks/embed/editor.css 488 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/file/view.min.js 322 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 966 B
build/block-library/blocks/gallery/editor.css 970 B
build/block-library/blocks/gallery/style-rtl.css 1.63 kB
build/block-library/blocks/gallery/style.css 1.62 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 507 B
build/block-library/blocks/image/style.css 511 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 137 B
build/block-library/blocks/latest-posts/editor.css 137 B
build/block-library/blocks/latest-posts/style-rtl.css 528 B
build/block-library/blocks/latest-posts/style.css 527 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-submenu/view.min.js 343 B
build/block-library/blocks/navigation/editor-rtl.css 1.91 kB
build/block-library/blocks/navigation/editor.css 1.91 kB
build/block-library/blocks/navigation/view.min.js 2.79 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 377 B
build/block-library/blocks/page-list/editor.css 377 B
build/block-library/blocks/page-list/style-rtl.css 172 B
build/block-library/blocks/page-list/style.css 172 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 507 B
build/block-library/blocks/post-comments/style.css 507 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 391 B
build/block-library/blocks/post-template/style.css 392 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 273 B
build/block-library/blocks/query-pagination/style.css 269 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 187 B
build/block-library/blocks/quote/style.css 187 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 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/style-rtl.css 245 B
build/block-library/blocks/separator/style.css 245 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 772 B
build/block-library/blocks/site-logo/editor.css 772 B
build/block-library/blocks/site-logo/style-rtl.css 165 B
build/block-library/blocks/site-logo/style.css 165 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 670 B
build/block-library/blocks/social-links/editor.css 669 B
build/block-library/blocks/social-links/style-rtl.css 1.32 kB
build/block-library/blocks/social-links/style.css 1.32 kB
build/block-library/blocks/spacer/editor-rtl.css 307 B
build/block-library/blocks/spacer/editor.css 307 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 146 B
build/block-library/blocks/tag-cloud/style.css 146 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 569 B
build/block-library/blocks/video/editor.css 570 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 857 B
build/block-library/common.css 856 B
build/block-library/editor-rtl.css 10 kB
build/block-library/editor.css 10 kB
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 677 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/blocks/index.min.js 46.3 kB
build/components/index.min.js 215 kB
build/components/style-rtl.css 15.5 kB
build/components/style.css 15.5 kB
build/compose/index.min.js 10.9 kB
build/core-data/index.min.js 13.2 kB
build/customize-widgets/index.min.js 11.4 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 631 B
build/data/index.min.js 7.49 kB
build/date/index.min.js 31.9 kB
build/deprecated/index.min.js 485 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.5 kB
build/edit-navigation/index.min.js 16 kB
build/edit-navigation/style-rtl.css 3.76 kB
build/edit-navigation/style.css 3.76 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/index.min.js 29.4 kB
build/edit-post/style-rtl.css 7.1 kB
build/edit-post/style.css 7.09 kB
build/edit-site/index.min.js 35.5 kB
build/edit-site/style-rtl.css 6.63 kB
build/edit-site/style.css 6.63 kB
build/edit-widgets/index.min.js 16.5 kB
build/edit-widgets/style-rtl.css 4.18 kB
build/edit-widgets/style.css 4.18 kB
build/editor/index.min.js 37.9 kB
build/editor/style-rtl.css 3.78 kB
build/editor/style.css 3.77 kB
build/element/index.min.js 3.29 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 6.58 kB
build/format-library/style-rtl.css 571 B
build/format-library/style.css 571 B
build/hooks/index.min.js 1.63 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.71 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.8 kB
build/keycodes/index.min.js 1.39 kB
build/list-reusable-blocks/index.min.js 1.72 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.92 kB
build/notices/index.min.js 925 B
build/nux/index.min.js 2.08 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.84 kB
build/primitives/index.min.js 924 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 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.65 kB
build/reusable-blocks/index.min.js 2.22 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 11 kB
build/server-side-render/index.min.js 1.57 kB
build/shortcode/index.min.js 1.49 kB
build/token-list/index.min.js 639 B
build/url/index.min.js 1.9 kB
build/viewport/index.min.js 1.05 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 7.15 kB
build/widgets/style-rtl.css 1.16 kB
build/widgets/style.css 1.16 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@vcanales vcanales force-pushed the fix/nav-menu-should-not-always-be-dialog branch from 332af9a to 348f33e Compare November 18, 2021 16:48
@vcanales vcanales added [Block] Navigation Affects the Navigation Block [Type] Bug An existing feature does not function as intended [a11y] Keyboard & Focus labels Nov 18, 2021
@jasmussen
Copy link
Contributor

Thanks for working on this. For now this PR appears to fix the issue where the navigation menu reports itself as being a dialog, even when it isn't. This happens when, for example, the navigation is set to collapse into a button to open a dialog on mobile, but show the fully expanded menu on desktop.

@vcanales vcanales marked this pull request as ready for review November 18, 2021 18:44
@vcanales vcanales force-pushed the fix/nav-menu-should-not-always-be-dialog branch from 348f33e to 79b4156 Compare November 18, 2021 18:45
@alexstine
Copy link
Contributor

@vcanales Thanks for the PR. This is almost working perfectly, just a couple final suggestions.

<button aria-expanded="false" aria-haspopup="true" aria-label="Open" class="wp-block-navigation__responsive-container-open " data-micromodal-trigger="modal-6196aa79300a0"><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false"><rect x="4" y="7.5" width="16" height="1.5"></rect><rect x="4" y="15" width="16" height="1.5"></rect></svg></button>

This really doesn't need aria-expanded because focus is being placed in a dialog and the content outside of the dialog is non-interactive. Also, the label needs to be updated that way users know what this button does.

<button aria-haspopup="true" aria-label="Open Menu" class="wp-block-navigation__responsive-container-open " data-micromodal-trigger="modal-6196aa79300a0"><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false"><rect x="4" y="7.5" width="16" height="1.5"></rect><rect x="4" y="15" width="16" height="1.5"></rect></svg></button>

For the Close button:

<button aria-label="Close" data-micromodal-close="" class="wp-block-navigation__responsive-container-close" aria-expanded="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" role="img" aria-hidden="true" focusable="false"><path d="M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"></path></svg></button>

Let's update that label and remove aria-expanded because this button simply closes the dialog. It doesn't in theory collapse anything. This is a dialog, not an accordion/tabs module/similar.

<button aria-label="Close Menu" data-micromodal-close="" class="wp-block-navigation__responsive-container-close"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" role="img" aria-hidden="true" focusable="false"><path d="M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"></path></svg></button>

I am okay with keeping aria-haspopup because it can be used with dialog triggers.

The ariaHasPopup property of the Element interface reflects the value of the aria-haspopup attribute, which indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element.
https://developer.mozilla.org/en-US/docs/Web/API/Element/ariaHasPopup

Also, it seems there is an unused aria-labelledby attribute on the dialog div.

<div class="wp-block-navigation__responsive-dialog" role="dialog" aria-modal="true" aria-labelledby="modal-6196aa79300a0-title">

Can you add some description text such as a heading 1 right after the Close button? E.g.

<h1 id="modal-6196aa79300a0-title">Menu</h1>

The other option would be removing aria-labelledby and replacing it with aria-label.

<div class="wp-block-navigation__responsive-dialog" role="dialog" aria-modal="true" aria-label="Menu">

The whole point of implementing a label is to add context for screen readers. Otherwise, when the dialog opens, users hear "dialog" instead of "Menu dialog" which adds context.

Can these be implemented?

Thanks.

@jasmussen
Copy link
Contributor

Thank you so much for the exceptionally detailed and highly actionable feedback, Alex.

@vcanales vcanales changed the title only mark nav menu as dialog when open Only mark nav menu as dialog when open Nov 19, 2021
@vcanales
Copy link
Member Author

@alexstine Thanks for your thorough review! I've addressed your concerns, and will be following up with another PR tackling some issues that the Open on Click Submenus seem to have when the overlay is open (aria-expanded can be toggled, but they just remain open).

I would appreciate one more review, and approval.

@tellthemachines tellthemachines added the Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Nov 22, 2021
@alexstine
Copy link
Contributor

@vcanales It seems like aria-expanded is now gone up until you click Open navigation menu. Then it switches to aria-expanded="true" on click. It will then toggle to aria-expanded="false" after Close navigation menu is clicked. Any way to make sure that attribute doesn't get added on Open navigation menu click?

This alternate PR is working on submenus, it is possible this issue may be fixed? #36631

Thanks.

@tellthemachines
Copy link
Contributor

Any way to make sure that attribute doesn't get added on Open navigation menu click?

aria-expanded is being set here so it should just be a matter of deleting those lines.

This alternate PR is working on submenus, it is possible this issue may be fixed? #36631

@alexstine if you're referring to the the issue with the open on click submenus @vcanales mentioned, that isn't fixed in #36631.

Ideally, to fix that we should not only remove aria-expanded but also change the button markup to something static (a span maybe? or a heading?) when the overlay is open, because the submenus don't display as dropdowns then. On the other hand, wasn't there a discussion somewhere about rethinking all the submenus being expanded inside the overlay? If it's a large menu, it can become quite hard to read.

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 working on this! Just a few comments and questions below.

Edit: when testing locally, the positioning of the URL input for nav link blocks is at the top left of the page, instead of right by the block:
Screen Shot 2021-11-24 at 5 42 33 pm

This happens both in the site and the post editor. There's also a warning in the console: Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method. at URLInput. Not sure if this is related to the changes in this branch or not; rebasing trunk might help if not.

const dialogProps = {
className: 'wp-block-navigation__responsive-dialog',
'aria-labelledby': `${ modalId }-title`,
...( isOpen && { role: 'dialog', 'aria-modal': true } ),
Copy link
Contributor

Choose a reason for hiding this comment

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

If we're adding these attributes dynamically only when the modal is open, do we still need the separate set of markup for when the nav is not in overlay mode? For the front end, could we toggle them in the view script instead?


&:not(.always-shown) {
@include break-small {
display: block;
Copy link
Contributor

Choose a reason for hiding this comment

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

If we want the flex layout settings to reflect correctly in the nav contents, this class has to duplicate the responsive container content styles here.

@alexstine
Copy link
Contributor

@tellthemachines I'm okay with the submenus keeping aria-expanded if they can be expanded/collapsed (open/closed). I just don't think it's needed on the main menu trigger as that opens in a dialog. Sections inside a dialog is technically a toggle, so aria-expanded is okay.

@ryelle
Copy link
Contributor

ryelle commented Dec 11, 2021

I just left a comment on #36600 (comment), that I also noticed an issue with the dialog + VoiceOver. This PR seems to fix that issue too (thought I haven't tested any edge cases).

I noticed this broke the horizontal styling - my menu has a Page List, a Submenu, and a Custom Link, and before the PR they all line up on a single line, but after, the Page List is on its own line.

Before (trunk) After (PR)

@tellthemachines
Copy link
Contributor

I noticed this broke the horizontal styling - my menu has a Page List, a Submenu, and a Custom Link, and before the PR they all line up on a single line, but after, the Page List is on its own line.

This is likely caused by the new container being unstyled.

@jasmussen
Copy link
Contributor

I tried to address the feedback in #36617 (comment) and https://github.com/WordPress/gutenberg/pull/36617/files#r755734687 (thank you @tellthemachines). It isn't completely clear to me how best to test this, but I think I got it right. I would appreciate a sanity check, so we can land this one.

<div class="%5$s" style="%7$s" id="modal-%1$s">
<div class="wp-block-navigation__responsive-close" tabindex="-1" data-micromodal-close>
<div class="wp-block-navigation__responsive-dialog" role="dialog" aria-modal="true" aria-labelledby="modal-%1$s-title" >
<div class="wp-block-navigation__responsive-dialog" role="dialog" aria-modal="true" aria-label="Navigation Menu" >
Copy link
Contributor

Choose a reason for hiding this comment

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

This text change is missing the translation function.

@tellthemachines
Copy link
Contributor

Thanks @jasmussen ! The alignment is much better, but I think it still needs gap to be explicitly set for wp-block-navigation__plain-menu, because otherwise there doesn't seem to be any spacing at all between a page list and a navigation link.

I'm still seeing the issue with the URL input rendering at the top left of the screen, and when that happens the block toolbar also disappears (only if it's inline, if it's set to top toolbar it still shows). I'm wondering if that might be due to the two sets of markup?

@jasmussen
Copy link
Contributor

I'll take a look. One challenge I'm seeing at the moment is that in this PR I can no longer select menu items. Trunk works:
trunk

In this branch, the block toolbar doesn't appear:
cantselect

I suspect it's the added wrapper that's intercepting a pointer event. I'll push a rebase, then see what I can do.

@jasmussen jasmussen force-pushed the fix/nav-menu-should-not-always-be-dialog branch from 7bfa903 to a5f76f5 Compare December 15, 2021 07:28
@tellthemachines
Copy link
Contributor

Yeah, I'd like to try adding the dialog dynamically in the front end because if it works, we won't need the two sets of markup. Hopefully I have some time to look into it tomorrow.

@jasmussen
Copy link
Contributor

The selection issue is a bit gnarly, and I don't think I can fix that in CSS only:
click

It does seem like the best solution might be a different approach to this one, which minimizes the markup changes in the editor. I'd love to help in any way I can here.

@tellthemachines
Copy link
Contributor

Ok, I created #37434 as an alternative without markup changes (apart from adding/removing attributes, of course). Feedback and testing appreciated! Ideally we should get this in before Beta 4 early next week.

@Mamaduka
Copy link
Member

Should we remove this from WP 5.9 Must-Haves project now that #37434 is merged?

@tellthemachines
Copy link
Contributor

Yup, this can be closed now. Thanks everyone for your collaboration!

@tellthemachines tellthemachines removed the Backport to WP 6.7 Beta/RC Pull request that needs to be backported to the WordPress major release that's currently in beta label Dec 20, 2021
@priethor priethor added the [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). label Jul 24, 2023
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 [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants