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

@tellthemachines tellthemachines commented Dec 2, 2020

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.
@github-actions
Copy link

@github-actions 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

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( '' );

This comment has been minimized.

@sarahricker

sarahricker Dec 2, 2020

Suggested change
// setInputValue( '' );

This comment has been minimized.

@sarahricker

sarahricker Dec 2, 2020

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

This comment has been minimized.

@tellthemachines

tellthemachines Dec 2, 2020
Author Contributor

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

This comment has been minimized.

@sarahricker

sarahricker Dec 2, 2020

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

This comment has been minimized.

@tellthemachines

tellthemachines Dec 2, 2020
Author Contributor

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

LGTM, I don't have any knowledge of the aria-label change though.

@talldan
talldan approved these changes Dec 3, 2020
Copy link
Contributor

@talldan talldan left a comment

Looks good and works well in testing 👍

@alexstine
Copy link

@alexstine alexstine commented Dec 3, 2020

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
16 checks passed
16 checks passed
Build Release Artifact
Details
Cancel Previous Runs
Details
Check
Details
build
Details
Admin - 1 Admin - 1
Details
Compare performance with master
Details
pull-request-automation
Details
test (gutenberg-editor-gallery)
Details
test (gutenberg-editor-gallery)
Details
All
Details
JavaScript
Details
Admin - 2 Admin - 2
Details
PHP
Details
Admin - 3 Admin - 3
Details
Mobile
Details
Admin - 4 Admin - 4
Details
WordPress 5.6 Must Haves automation moved this from Needs Review to Done Dec 3, 2020
@tellthemachines tellthemachines deleted the fix/combobox-a11y branch Dec 3, 2020
@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
0 of 6 tasks complete
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
vcanales added a commit to vcanales/gutenberg that referenced this pull request Dec 3, 2020
* Fix label announcement on VoiceOver

* Try to fix selection announcement

* Revert commented line.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.