Skip to content

Conversation

@Addison-Stavlo
Copy link
Contributor

Description

Enables keyboard controls to be used in the template part selection component.

The template part selector is not currently set up to properly handle keyboard controls. When a user presses keys (like "up" or "down" for example), these events bubble out to other control systems in the editor closing the dropdown and selecting other blocks. Even if these events did not bubble, there is no system in place to allow arrow keys to be used to navigate through the list of available items. This PR:

  • Stops key events from bubbling out of the selection component.
  • Uses composite from reakit to enable keyboard controls (as also used in the BlockListTypes)

How has this been tested?

Template part selection component should be keyboard navigable similar to how the block inserter is:

  • Tab / shft+tab - should toggle focus between the search input and the list results
  • Arrow keys:
    • In search input - should no longer close the selection component
    • in the list - should allow navigation within the list results.
  • Esc - should still close the component.

Screenshots

template-part-selection-keyboard

Types of changes

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.

Copy link
Member

@noahtallen noahtallen left a comment

Choose a reason for hiding this comment

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

This works perfectly for me, nice! Just left a couple of notes (I think the package-lock might need to be added before merge). 🚀

@github-actions
Copy link

github-actions bot commented Oct 6, 2020

Size Change: +8.86 kB (0%)

Total Size: 1.19 MB

Filename Size Change
build/annotations/index.js 3.54 kB +22 B (0%)
build/block-directory/index.js 8.55 kB +1 B
build/block-editor/index.js 129 kB -61 B (0%)
build/block-library/editor-rtl.css 8.65 kB +6 B (0%)
build/block-library/editor.css 8.65 kB +6 B (0%)
build/block-library/index.js 144 kB +9.24 kB (6%) 🔍
build/blocks/index.js 47.5 kB -16 B (0%)
build/components/index.js 169 kB -244 B (0%)
build/compose/index.js 9.43 kB +4 B (0%)
build/core-data/index.js 12.1 kB +12 B (0%)
build/data/index.js 8.61 kB +3 B (0%)
build/date/index.js 31.9 kB +1 B
build/edit-navigation/index.js 10.6 kB -11 B (0%)
build/edit-post/index.js 306 kB -1 B
build/edit-site/index.js 20.8 kB +18 B (0%)
build/edit-widgets/index.js 21.3 kB -119 B (0%)
build/editor/index.js 45.4 kB -14 B (0%)
build/element/index.js 4.45 kB +5 B (0%)
build/format-library/index.js 7.49 kB +4 B (0%)
build/i18n/index.js 3.54 kB +1 B
build/list-reusable-blocks/index.js 3.02 kB -2 B (0%)
build/media-utils/index.js 5.12 kB -1 B
build/nux/index.js 3.27 kB +3 B (0%)
build/plugins/index.js 2.44 kB +2 B (0%)
build/shortcode/index.js 1.7 kB +1 B
build/url/index.js 4.06 kB -1 B
build/viewport/index.js 1.74 kB +2 B (0%)
build/warning/index.js 1.14 kB +7 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/api-fetch/index.js 3.35 kB 0 B
build/autop/index.js 2.72 kB 0 B
build/blob/index.js 668 B 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/style-rtl.css 10.9 kB 0 B
build/block-editor/style.css 10.9 kB 0 B
build/block-library/style-rtl.css 7.66 kB 0 B
build/block-library/style.css 7.65 kB 0 B
build/block-library/theme-rtl.css 741 B 0 B
build/block-library/theme.css 741 B 0 B
build/block-serialization-default-parser/index.js 1.78 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/components/style-rtl.css 15.4 kB 0 B
build/components/style.css 15.4 kB 0 B
build/data-controls/index.js 685 B 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 4.42 kB 0 B
build/edit-navigation/style-rtl.css 868 B 0 B
build/edit-navigation/style.css 871 B 0 B
build/edit-post/style-rtl.css 6.29 kB 0 B
build/edit-post/style.css 6.27 kB 0 B
build/edit-site/style-rtl.css 3.71 kB 0 B
build/edit-site/style.css 3.72 kB 0 B
build/edit-widgets/style-rtl.css 3 kB 0 B
build/edit-widgets/style.css 3 kB 0 B
build/editor/editor-styles-rtl.css 492 B 0 B
build/editor/editor-styles.css 493 B 0 B
build/editor/style-rtl.css 3.85 kB 0 B
build/editor/style.css 3.84 kB 0 B
build/escape-html/index.js 734 B 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 1.74 kB 0 B
build/html-entities/index.js 621 B 0 B
build/is-shallow-equal/index.js 710 B 0 B
build/keyboard-shortcuts/index.js 2.39 kB 0 B
build/keycodes/index.js 1.85 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/notices/index.js 1.69 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/primitives/index.js 1.34 kB 0 B
build/priority-queue/index.js 790 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 13 kB 0 B
build/server-side-render/index.js 2.6 kB 0 B
build/token-list/index.js 1.24 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

@jeyip
Copy link
Contributor

jeyip commented Oct 7, 2020

Non-blocking:
I see this issue in the master as well, but there seems to be a problem with quick tab key presses:

  1. Open the template selector
  2. Upon seeing the dropdown, quickly and immediately press the tab key
  3. The dropdown will close

I can reproduce this in Firefox, Safari, Chrome, and Edge.

Non blocking because this seems like an edge case and isn't isolated to this branch

@jeyip
Copy link
Contributor

jeyip commented Oct 7, 2020

In Safari, for me, pressing the tab key from the template selector focuses the url search bar instead of the item list. (This was not happening for me in master)

All other behavior works as described in Chrome, Firefox, Edge, Safari, and IE11

@jeyip
Copy link
Contributor

jeyip commented Oct 7, 2020

+1 from me whenever the discussion about the Safari bug is resolved 🚀

@Addison-Stavlo
Copy link
Contributor Author

I see this issue in the master as well, but there seems to be a problem with quick tab key presses:

Im not able to reproduce this well. I can only get it to happen if I hit the 'tab' key multiple times quickly while it is opening.

In Safari, for me, pressing the tab key from the template selector focuses the url search bar instead of the item list.

It seems like tabbing is a bit funky on Safari, im having issues with tab nav in many places. The quick inserter seems to do the same thing. In our selection component I can hit 'shft+tab' from the input and it will move into the list items. However, with the quick inserter I cannot access the blocks list that way at all. 🤔

@Addison-Stavlo
Copy link
Contributor Author

Addison-Stavlo commented Oct 7, 2020

It seems like tabbing is a bit funky on Safari,

🤦‍♀️ 🤣 - Nevermind, It seems totally fine in Safari after enabling tab navigation. Safari is 'funky' in that you need to actually enable it in preferences->advanced:
Screen Shot 2020-10-07 at 12 36 48 PM

@jeyip
Copy link
Contributor

jeyip commented Oct 7, 2020

Its totally fine in Safari after enabling tab navigation. Safari is 'funky' in that you need to actually enable it in preferences->advanced:

TIL 🙃

Thanks for figuring that out @Addison-Stavlo!

Copy link
Contributor

@jeyip jeyip left a comment

Choose a reason for hiding this comment

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

Nice job on this! 💯

@jeyip
Copy link
Contributor

jeyip commented Oct 7, 2020

Im not able to reproduce this well. I can only get it to happen if I hit the 'tab' key multiple times quickly while it is opening.

My mistake! I mischaracterized the problem. If you quickly press the tab key twice while the dropdown previews are still loading, the dropdown will close.

@noahtallen noahtallen merged commit d592d6d into master Oct 8, 2020
@noahtallen noahtallen deleted the fix/template-part-selection-keyboard-controls branch October 8, 2020 03:00
@github-actions github-actions bot added this to the Gutenberg 9.2 milestone Oct 8, 2020
@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

[Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants