-
Notifications
You must be signed in to change notification settings - Fork 4.2k
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
Implement new mechanism to navigate through blocks with keyboard after removal of Select mode #65603
Comments
#65024 should not ship in WP 6.7, see this comment. |
Thank you, If that means the removal of 'Select mode' will not ship in WP 6.7 then I stand corrected. Still this impactful change has been merged too lightly for my taste and it's underdesigned, with no accessibility considerations a tall. |
Pointing out this is not correct. It was designed as a broad interface mode, with an emphasis on keyboard navigation but not exclusive to it, at a time where we didn't have the list view, and as you point out the usefulness of it was called into question from an accessibility point of view. In any case, there's more context on removing select mode proposal in #54703 with a point towards leaning on list view, that should have been referenced in the content-only PR. List view has had a lot more work done to navigate nested groups and is in much better shape. Perhaps we need to discuss shortcut ergonomics for jumping straight into list view panel for the currently selected block. |
We may have different memories. To me it's correct that the Select mode was originally started as a mechanism to ease keyboard navigation at the point that at first we used to call it 'Navigation mode'. See #2031 Regardless, I'm not sure how calling my feedback 'incorrect' helps in any way solve this issue.
I mentioned clearly that there was no strong objection to remove Select mode but an alternative mechanism must be implemented to navigate blocks in the canvas. The List View as affordance to navigate blocks is welcomed and was mentioned also in the discussion with accessibility specialists that happened in the mentioned hallway hangout a few months ago (I can't find a link to it sorry). However, I think you are missing the point that the List View is a navigation mechanism that is outside of the canvas. There's nothing now to make keyboard navigation inside the canvas efficient as it used to be. Noting that the hallway hangout happened also to discuss live the points from #54703 so yes I'm aware of that discussion, thanks. Before anything else, I would like to suggest everyone to actually test the keyboard experience now that Select mode has been removed.
|
@afercia I think the list view is a perfectly fine compromise. It may not be a way to navigate inside the canvas but there are easy ways to select the block and also jump back to the list view sidebar. I agree removing this navigation/select mode feature is probably a little jarring. Should have probably replaced it with a notice for a little while to tell users the shortcuts to access the list view. We add tips around the editor often enough, the most recent example I can think of was for the styles tab, no reason we can't do the same for when keyboard navigation may not be as clear. I like this because now it frees up the keyboard to do other things such as advanced editing modes. For example, blocks such as the table block where it would be nice to use arrow keys to navigate the cells without actually editing. Enter/escape could be used to enter an editing mode for the block itself, list view could be used to move blocks. The list view is a much more accurate representation of nested blocks for users without sight. I'm a big believer in this but anyone is welcome to disagree or provide another point of view. Keeping navigation/select mode around has been a huge blocker for other things in the editor and with a little education, I think this could be a positive change in the next release. Noting that I'm not really an active contributor to WordPress any longer, I'll defer to others to keep this discussion going. Thanks. |
@alexstine thanks for your feedback. As I said more than once, I'm not opposed to remove Select mode. We also discussed this live during that hallway hangout a few months ago and agreed to consider its removal as long as an alternative mechanism is provided to navigate the blocks in the canvas. |
@afercia I still don't see your point. Why can't sighted keyboard/non-screen reader users simply use the list view to navigate? How is this any different than the classic editor? That was equally painful to move through but at least everyone can make full use of the list view. Also, based on the way blocks are composed with React, screen reader virtual navigation is often times useless so I don't think screen readers get any advantage here. All users who use the keyboard would need to use the list view to navigate. |
I want to chime in with some clatification. I believe the root of this issue is that we had a "select mode" tool in the UI which was based on a "navigation mode" under the hood. The select tool allowed a different wrapper 1st selection, but it also triggered a navigation mode which was used for tab based navigation of blocks in the canvas. Issues and discussions about removing the select mode did not - afaik - specifically mentioned neither the dependency, nor the most important thing:
Between:
and
the second is better and due to the list view implementation apparently better supported by both standard technology - mouse and keyboard and also assistive technology interfaces. So I think we should close this issue and just focus our efforts on #65459 to bring back a way to move blocks freely (including nesting and unnesting) using keyboard only. |
@alexstine
@draganescu I appreciate your feedback but I argue that's entirely based on assumptions. It may be better for your personal experience. It may be worse for other users. To me, the removal of the ability to navigate through each block with the Tab key is a huge regressiona dn makes my experience as sighted keyboard user a terrible experience.
Would you say the process above is more efficient than simply tabbing through the blocks? |
Yes, because I believe it's just about the same thing, if done as intended:
Am I missing something? Maybe a screen recording of what is extra would shine some light? |
Correct, just as navigation/edit mode used to do. Navigation mode never allowed you to navigate a blocks content, simply select another one.
I agree with you but getting others to realize that tab/shift+tab should not jump to the sidebar and should instead navigate block content will be difficult. As far as the role goes, I think To your point about the sidebar staying open or not, I specifically created the shortcut to work for all users equally.
I tried my best to create a shortcut that would closely mirror how navigation mode works. If we're being super honest, navigation mode never actually allowed you to navigate blocks. What it did was automatically render a button that changed every tab/arrow key press. This has always been very problematic for screen reader users because of the dynamic text updating causing some screen readers to not read it. I can't remember if I fixed it or someone else did, can't track it down at the moment. Thanks. |
So, please consider this issue not just from a post writer's point of view but also from a (BLIND) creator's perspective. |
Does simply pressing enter on a selected list view block not move focus back to the canvas for you? It is entirely possible this is broken in FSE. If that's the case, I see why this workflow is not okay. If so, having a hard time understanding how this is different. Alt+Shift+O to open list view, select your new block with Enter, focus should move back to the block. The only thing that might be slightly different is a bit of increased verbosity as you are entering the canvas iFrame each time you select a new block. This wasn't an issue before due to how the virtual button was rendered. Essentially, if you pressed Escape, there would be a button/block selector inserted into the DOM that would change based on keyboard events such as Tab, Arrow keys, and of course, Enter to focus. This caused a lot of issues across different screen readers because we're dynamically updating a button in the DOM. That's why you always had the double announcement on Windows, we were forcing focus on it but screen reader wouldn't read without a live region. Let me propose this. If Escape was made to focus the list view, would this improve your experience? I'm trying to understand the issue at play using the list view to replace something that probably should have never been done. If we are to revisit the canvas navigation/edit modes, I recommend coming up with a solution that isn't so hacky this time. Maybe each block can be formed into a button and like a grid, the screen reader can navigate it vs. trying to rebuild the same button on every keydown event. |
@draganescu I think @talksina answered you better than I could. For the future, I would kindly ask you to trust more the feedback from specialists and users. @alexstine yes it is true that Pressing Enter on an item in the List View moves focus back to the selected block in the canvas. That is helpful but still not very discoverable as it's a non-standard, unexpected interaction. Regardless, I think this discussion is derailing a bit.
Can we please limit the conversation on this issue to elaborate a proposal for a new navigation mechanism in the canvas? |
That is interesting and close to the grid navigation model mentioned by Alex. It's close to the mechanism some ARIA patterns provide e.g. tabs, frid, tree, where there's only one tab stop and navigation is implemented by arrow keys. If there's agreement on such a mechanism we could certainly propose it. I see a few points to keep into consideration:
|
What part about it is non-standard? Is there any way we can improve this? Something I noticed testing it is that it doesn't announce paragraph content the same way navigation mode did, so this is perhaps one thing now lost. Every paragraph is announced as 'Paragraph'.
This still sounds to me exactly like List View, which already implements the roving tab index and uses arrow keys. The only difference is that the escape key would initiate it. |
Yes, and we are discussing to add that mechanism in the canvas. |
Hello, so, let's say that - as far as I know - Gutenberg is the very first example of accessible page builder I've had in hand; so I'm not able to give you any "best practice" solutions for any effective mechanism, or something similar, as most editors I have used do not use blocks. This is an innovative approach which needs the best attention to make it the most accessible one. Previous modeI actually found that this transforming blocks in buttons, like it was in former "select mode", was far from perfect because it didn't correctly manage complex structures built through nested blocks; if you had a group, containing a columns block which contained other kinds of nestings such as quotes or lists, or simply a group block nesting paragraphs and lists, I hardly got correct indications on where I was because screen reader's focus didn't always follow me or make me aware about which level in the nesting it was; I had the sensation of finding myself in a solution which was projected BEFORE nested blocks came in developers' mind and it worked as a miracle. And from the discussion I understand that my sensation was the right one. Roles and practiceYou talk about roles, well, I know that an ARIA role which manages interaction mode automatically is the role="application" - in that case screen reader behaves like it would do in a Windows app, to know what I mean take a look at the qcsalon.net web based games interface. Far from what we all want, but it's an accessible complex game set which has a chat too. Unfortunately I'm not a coder so I have no idea of how it is made and how something similar could be implemented in a structure like the one we have in Gutenberg. Idea for the future?Let me give you the basic idea of how I'd like it to behave, then you coders might find if something can be done, or come even close to it. Writer's perspective:What does a writer want? Being able to manage their content without moving their hands from keyboard, remaining focused on the "blank sheet".
In toolbar when you select an option, most times it returns to Canvas and this is the correct way to go. It also describes the keyboard shortcuts - despite there are some problems already discussed in other issues regarding descriptions when moving blocks. I completely agree on the fact to have keyboard features accessible even to sighted, and even to other assistive techs than screen readers; my idea for basic mechanism to manage blocks would be a toggle switching from navigation mode (list view?) and editing mode. Then both in navigation and editing mode you can do whatever you want from the blocks, from moving to grouping and so on. |
Just a quick note: yes, role="application" has been discussed at length. It comes with its drawbacks which may be pretty impactful. |
I think we'd have to use |
Yeah I have not too many use cases in hand, but the "application" role I'm
certain works quite well with JAWS but about other platforms I'm not so
sure.
An issue I noticed with "role application driven" interfaces is that if you
have much readable information out of focus's range, for example
non-interactive texts, "application" role manages quite well the focus
mode, and doesn't read the rest. So you'd be force to fill the editor with
"toast messages" like the one "draft saved" / "article updated" which tells
you your content's condition when you perform a "save" action.
Maybe that "application" could be reliable for some components but not for
a delicate interface like this one.
|
I was thinking we conditionally render the |
I'd recommend to test the grid role first. If support is good enough that would be preferable. Latest data on a11ysupport report that the part we're mainly interested in is well supported, see the section 'Expectation: switch to interaction mode'. It appears JAWS and NVDA have good support. Only Narrator with Edge is reported as having no support.
I was thinking at that as well. It could be something worth testing but I'm not sure all screen readers would work well when setting and removing the role dynamically. In my experience, that rarely works well. |
@afercia Do we care about Narrator? If so, maybe we need to figure out another role to use? I don't think Narrator will ever be a serious screen reader but I also feel uncertain about saying that considering there are probably some people out there that use it. |
@afercia (or anyone else) Would you be able to explain why having this mechanism in the canvas as well as List View is beneficial? Particularly, what does it offer that List View doesn't? I've read through the thread, but it seems to have moved into solutions quite quickly, and I'm still trying to understand the motivation. There are a couple of things that I think happened before that would be good to avoid:
I also would say that if there are issues with List View that prevent it from being used, like block selection not transferring focus back to the canvas, these are things that should be investigated and fixed. Possibly the problem is when trying to select an already selected block in List View that focus isn't transferred? I can't see any existing issues related to this. |
@talldan That focus issue with a block already selected has been a problem for a long time. I thought I had logged something but GitHub search is terrible. If I did, I can't find it. If not, well, that answers that. I started investigating it and it seemed like the function used to focus only got called on block select or something like that... I remember at one point trying to fix it but couldn't ever figure out how to refire once the selected client ID was already set. |
@alexstine I've made an issue for that problem - #66276 |
Description
#65204 removed 'Select mode' from the editor.
Select mode, also known as 'Navigation mode', was a convenient way to navigate the blocks in the canvas when using the keyboard. And it was the only way to do that.
In the past, also in a hallway hangout, contributing developers and accessibility specialists discussed the removal of Select mode and there were no strong objections. The rationale of that is that the 'Select mode' keyboard interaction was designed at a time where the editor had no nested blocks. Blocks were just a list of blocks. A such, a mechanism to tab through them appeared to be the most efficient keyboard interaction.
With the introduction of nested blocks, the Select mode keyboard mechanism became not that efficient. As such, there was no objection to remove it in favor of some new mechanism.
But, after #65204 there's no such new mechanism.
The only way to navigate through blocks in the canvas is to move the cursor through the blocks, which is a tedious and highly inefficient navigation experience especially with very long content. This is a huge regression for keyboard users.
A note on the process:
In #65204 and the related other previous PRs, I'm not seeing any consideration about keyboard accessibility. Select mode was a feature specifically designed for keyboard accessibility and now it's gone with no alternative feature. I'm not sure this is the best way to make the editor a better, inclusive, accessible software and I'm surprised that after years discussing accessibility in this project such changes happen so lightly.
I do understand the removal of Select mode is part of improvements aiming to introduce
content-only
mode and I have no objections about it. But, the total lack of any accessibility consideration for such basic things like keyboard operability is, honestly, frustrating after 7 years of life of this project.The only comment that raised some accessibility concern I found is focused more on the removal of the 'Move To' feature rather than the removal of Select mode itself.
Honestly, I don't think such impactful UI changes should be merged ten days before Beta 1 when it's clear there hasn't been enough focus on accessibility and no user testing at all.
I can see two options to address this regression:
Cc @joedolson @alexstine @WordPress/gutenberg-core
Step-by-step reproduction instructions
Screenshots, screen recording, code snippet
No response
Environment info
No response
Please confirm that you have searched existing issues in the repo.
Please confirm that you have tested with all plugins deactivated except Gutenberg.
The text was updated successfully, but these errors were encountered: