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

Try fixing combobox a11y issues #27431

Merged
merged 3 commits into from
Dec 3, 2020
Merged

Try fixing combobox a11y issues #27431

merged 3 commits into from
Dec 3, 2020

Conversation

tellthemachines
Copy link
Contributor

Description

Fixes #27385.

The issue with VoiceOver not announcing the input label is straightforward: changing the aria-live setting to polite fixes it. (Thanks for the suggestion, @talldan 😄 )

The selection not being announced is trickier as different screen readers announce input selection in different order. What I tried here was adding an aria-label with the selection value as well as the original label value (because the aria-label will override the label) and that reads out in VoiceOver in the same order as a native select would, but in NVDA it doesn't quite match.

Would be good to have some a11y input into this.

How has this been tested?

Tested with VoiceOver/Safari on macOS and NVDA/Firefox on Windows 10.

Screenshots

Types of changes

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

Checklist:

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

@tellthemachines tellthemachines added [Type] Bug An existing feature does not function as intended [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). Needs Accessibility Feedback Need input from accessibility labels Dec 2, 2020
@github-actions
Copy link

github-actions bot commented Dec 2, 2020

Size Change: +429 B (0%)

Total Size: 1.19 MB

Filename Size Change
build/block-library/editor-rtl.css 8.88 kB +18 B (0%)
build/block-library/editor.css 8.88 kB +15 B (0%)
build/block-library/index.js 148 kB +330 B (0%)
build/block-library/style-rtl.css 8.34 kB +71 B (0%)
build/block-library/style.css 8.34 kB +71 B (0%)
build/components/index.js 172 kB +15 B (0%)
build/components/style-rtl.css 15.3 kB -8 B (0%)
build/components/style.css 15.3 kB -8 B (0%)
build/edit-site/index.js 24.1 kB -5 B (0%)
build/editor/index.js 43.2 kB -70 B (0%)
build/editor/style-rtl.css 3.85 kB -2 B (0%)
build/editor/style.css 3.85 kB +2 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.8 kB 0 B
build/api-fetch/index.js 3.42 kB 0 B
build/autop/index.js 2.84 kB 0 B
build/blob/index.js 665 B 0 B
build/block-directory/index.js 8.72 kB 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/index.js 128 kB 0 B
build/block-editor/style-rtl.css 11.2 kB 0 B
build/block-editor/style.css 11.2 kB 0 B
build/block-library/theme-rtl.css 789 B 0 B
build/block-library/theme.css 790 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/blocks/index.js 48.1 kB 0 B
build/compose/index.js 9.95 kB 0 B
build/core-data/index.js 14.8 kB 0 B
build/data-controls/index.js 827 B 0 B
build/data/index.js 8.98 kB 0 B
build/date/index.js 11.2 kB 0 B
build/deprecated/index.js 768 B 0 B
build/dom-ready/index.js 571 B 0 B
build/dom/index.js 4.95 kB 0 B
build/edit-navigation/index.js 11.1 kB 0 B
build/edit-navigation/style-rtl.css 881 B 0 B
build/edit-navigation/style.css 885 B 0 B
build/edit-post/index.js 306 kB 0 B
build/edit-post/style-rtl.css 6.42 kB 0 B
build/edit-post/style.css 6.4 kB 0 B
build/edit-site/style-rtl.css 4.06 kB 0 B
build/edit-site/style.css 4.06 kB 0 B
build/edit-widgets/index.js 26.3 kB 0 B
build/edit-widgets/style-rtl.css 3.13 kB 0 B
build/edit-widgets/style.css 3.13 kB 0 B
build/editor/editor-styles-rtl.css 476 B 0 B
build/editor/editor-styles.css 478 B 0 B
build/element/index.js 4.63 kB 0 B
build/escape-html/index.js 735 B 0 B
build/format-library/index.js 6.86 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 2.27 kB 0 B
build/html-entities/index.js 623 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/is-shallow-equal/index.js 698 B 0 B
build/keyboard-shortcuts/index.js 2.54 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.1 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.32 kB 0 B
build/notices/index.js 1.82 kB 0 B
build/nux/index.js 3.42 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.43 kB 0 B
build/priority-queue/index.js 791 B 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/reusable-blocks/index.js 2.92 kB 0 B
build/rich-text/index.js 13.4 kB 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/shortcode/index.js 1.69 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 2.84 kB 0 B
build/viewport/index.js 1.86 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.22 kB 0 B

compressed-size-action

Copy link

@sarahricker sarahricker left a comment

Choose a reason for hiding this comment

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

Looks pretty good - but haven't tested locally yet. Left a question and a note inline.

@@ -135,7 +135,7 @@ function ComboboxControl( {
const onFocus = () => {
setIsExpanded( true );
onFilterValueChange( '' );
setInputValue( '' );
// setInputValue( '' );

Choose a reason for hiding this comment

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

Suggested change
// setInputValue( '' );

Choose a reason for hiding this comment

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

Might as well just remove it instead of commenting out :) We've got git!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Whoops, that was unintended! I don't think removing it changes anything, but it's not needed for the fix so I'll revert the change.

aria-label={
currentLabel
? `${ currentLabel }, ${ label }`
: null

Choose a reason for hiding this comment

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

Is there any other default value that would be good here rather than null?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The purpose of null here is to not render the aria-label if there's no currently selected value, because in that case, its contents are identical to the already existing label, so we don't need to override it with aria-label.

Copy link
Member

@kevin940726 kevin940726 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 don't have any knowledge of the aria-label change though.

Copy link
Contributor

@talldan talldan left a comment

Choose a reason for hiding this comment

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

Looks good and works well in testing 👍

@alexstine
Copy link
Contributor

I can confirm that this fix is perfect for Mac Voiceover.

NVDA doesn't seem to handle this well as it reads the description first, the current selected item, Parent Page, and then something else after. I guess it is the current cursor position in the list. It's very odd, but I think it will just have to suffice until something better can be done.

In general this searchable combo box is not the most accessible thing in the world, but I support this PR as it fixes a major issue on Mac.

Thanks.

@tellthemachines tellthemachines merged commit 1c53391 into master Dec 3, 2020
@tellthemachines tellthemachines deleted the fix/combobox-a11y branch December 3, 2020 06:06
@github-actions github-actions bot added this to the Gutenberg 9.6 milestone Dec 3, 2020
tellthemachines added a commit that referenced this pull request Dec 3, 2020
* Fix label announcement on VoiceOver

* Try to fix selection announcement

* Revert commented line.
@tellthemachines tellthemachines mentioned this pull request Dec 3, 2020
6 tasks
tellthemachines added a commit that referenced this pull request Dec 3, 2020
* Fix label announcement on VoiceOver

* Try to fix selection announcement

* Revert commented line.
nylen pushed a commit to nylen/wordpress-develop-svn that referenced this pull request Dec 3, 2020
@wordpress/components: 11.1.2 -> 11.1.3

This fixes an accessibility regression with VoiceOver not announcing the input label or an existing selection in the parent page dropdown under "Page Attributes" in the sidebar.

See WordPress/gutenberg#27431 for more details.

Props isabel_brison, sarahricker, alexstine, kevin940726, talldanwp.
Fixes #51923.

git-svn-id: https://develop.svn.wordpress.org/trunk@49737 602fd350-edb4-49c9-b593-d223f7449a82
pento pushed a commit to WordPress/wordpress-develop that referenced this pull request Dec 3, 2020
@wordpress/components: 11.1.2 -> 11.1.3

This fixes an accessibility regression with VoiceOver not announcing the input label or an existing selection in the parent page dropdown under "Page Attributes" in the sidebar.

See WordPress/gutenberg#27431 for more details.

Props isabel_brison, sarahricker, alexstine, kevin940726, talldanwp.
Fixes #51923.

git-svn-id: https://develop.svn.wordpress.org/trunk@49737 602fd350-edb4-49c9-b593-d223f7449a82
markjaquith pushed a commit to markjaquith/WordPress that referenced this pull request Dec 3, 2020
@wordpress/components: 11.1.2 -> 11.1.3

This fixes an accessibility regression with VoiceOver not announcing the input label or an existing selection in the parent page dropdown under "Page Attributes" in the sidebar.

See WordPress/gutenberg#27431 for more details.

Props isabel_brison, sarahricker, alexstine, kevin940726, talldanwp.
Fixes #51923.
Built from https://develop.svn.wordpress.org/trunk@49737


git-svn-id: http://core.svn.wordpress.org/trunk@49460 1a063a9b-81f0-0310-95a4-ce76da25c4cd
pento pushed a commit to WordPress/wordpress-develop that referenced this pull request Dec 3, 2020
@wordpress/components: 11.1.2 -> 11.1.3

This fixes an accessibility regression with VoiceOver not announcing the input label or an existing selection in the parent page dropdown under "Page Attributes" in the sidebar.

See WordPress/gutenberg#27431 for more details.

Props isabel_brison, sarahricker, alexstine, kevin940726, talldanwp.
Reviewed by isabel_brison, SergeyBiryukov.
Merges [49737] to the 5.6 branch.
Fixes #51923.

git-svn-id: https://develop.svn.wordpress.org/branches/5.6@49738 602fd350-edb4-49c9-b593-d223f7449a82
markjaquith pushed a commit to markjaquith/WordPress that referenced this pull request Dec 3, 2020
@wordpress/components: 11.1.2 -> 11.1.3

This fixes an accessibility regression with VoiceOver not announcing the input label or an existing selection in the parent page dropdown under "Page Attributes" in the sidebar.

See WordPress/gutenberg#27431 for more details.

Props isabel_brison, sarahricker, alexstine, kevin940726, talldanwp.
Reviewed by isabel_brison, SergeyBiryukov.
Merges [49737] to the 5.6 branch.
Fixes #51923.
Built from https://develop.svn.wordpress.org/branches/5.6@49738


git-svn-id: http://core.svn.wordpress.org/branches/5.6@49461 1a063a9b-81f0-0310-95a4-ce76da25c4cd
gMagicScott pushed a commit to gMagicScott/core.wordpress-mirror that referenced this pull request Dec 3, 2020
@wordpress/components: 11.1.2 -> 11.1.3

This fixes an accessibility regression with VoiceOver not announcing the input label or an existing selection in the parent page dropdown under "Page Attributes" in the sidebar.

See WordPress/gutenberg#27431 for more details.

Props isabel_brison, sarahricker, alexstine, kevin940726, talldanwp.
Fixes #51923.
Built from https://develop.svn.wordpress.org/trunk@49737


git-svn-id: https://core.svn.wordpress.org/trunk@49460 1a063a9b-81f0-0310-95a4-ce76da25c4cd
gMagicScott pushed a commit to gMagicScott/core.wordpress-mirror that referenced this pull request Dec 3, 2020
@wordpress/components: 11.1.2 -> 11.1.3

This fixes an accessibility regression with VoiceOver not announcing the input label or an existing selection in the parent page dropdown under "Page Attributes" in the sidebar.

See WordPress/gutenberg#27431 for more details.

Props isabel_brison, sarahricker, alexstine, kevin940726, talldanwp.
Reviewed by isabel_brison, SergeyBiryukov.
Merges [49737] to the 5.6 branch.
Fixes #51923.
Built from https://develop.svn.wordpress.org/branches/5.6@49738


git-svn-id: https://core.svn.wordpress.org/branches/5.6@49461 1a063a9b-81f0-0310-95a4-ce76da25c4cd
VenusPR added a commit to VenusPR/Wordpress_Richard that referenced this pull request Mar 9, 2023
@wordpress/components: 11.1.2 -> 11.1.3

This fixes an accessibility regression with VoiceOver not announcing the input label or an existing selection in the parent page dropdown under "Page Attributes" in the sidebar.

See WordPress/gutenberg#27431 for more details.

Props isabel_brison, sarahricker, alexstine, kevin940726, talldanwp.
Reviewed by isabel_brison, SergeyBiryukov.
Merges [49737] to the 5.6 branch.
Fixes #51923.
Built from https://develop.svn.wordpress.org/branches/5.6@49738


git-svn-id: http://core.svn.wordpress.org/branches/5.6@49461 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). Needs Accessibility Feedback Need input from accessibility [Type] Bug An existing feature does not function as intended
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Parent page dropdown: screen reader issues
5 participants