You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I prefer to use keyboard navigation because it's easier on my wrists. I've struggled with using the new Dashboard in this way: I can't always see where the focus is on the page, and some important controls can't be tabbed to at all.
As an example, starting from exist/apps/dashboard/index.html:
As logged-out user, tab to the Login button. (The affordance here is low contrast, but there is an affordance.)
Hit Space to open the modal. Nothing happens. The Login "button" looks like an HTML link, not an HTML button, so fair enough. (Interaction via Space is only expected of, and by default built into, HTML <button>s. Since it looks like a button, it might be better to use <button>, or make sure that default button functionality is available on the <a>. But it's available for interaction, which is what really matters.)
Hit Enter to open the modal. It works!
Try to tab into the first form field. Focus returns to the Dashboard's Login link from... somewhere.
Try to tab into the modal. It's not possible. Loop through all focusable elements twice to make sure. No luck.
Click outside of the modal to dismiss it.
Tab back to the Dashboard Login link. Open the modal with Enter.
Notice that the text of the modal's Login button is bolded. Presumably this is where the focus is? (I'd be expecting the same kind of affordance that I saw around the Dashboard's login. How would I know that font weight is an affordance when I haven't seen what the button text looks like without the affordance? I would need to go through this guess-and-check method at least once to figure this out.)
Shift+Tab to move to the focusable element before the Login button. A cursor appears in the Password field!
Shift+Tab again to move to the User field. There's no cursor, and no visible affordances elsewhere on the page.
Try to type in a username, in case the focus is on the User field and it's just not showing up. No dice.
Try to tab forward. The focus returns to the Dashboard Login link.
Give up and use the mouse as a stopgap whenever keyboard navigation does something mysterious and/or unexpected. I am able-bodied, so I can do this without physical pain and without the help of someone else.
While most of this is the same when using Chrome, I can tab back to the User field there, strangely enough.
I hope this breakdown helps. I like the new Dashboard a lot; it feels much cleaner and nuanced in what it displays and when. The old Dashboard still wins in terms of keyboard accessibility, unfortunately—maybe because it uses standard HTML elements, so that it can rely on the browsers' default behaviors? There's a lot more you have to build into custom elements, I think.
The text was updated successfully, but these errors were encountered:
@amclark42 Thank you very much for your clear report! We made some last minute fixes to logging in flow, and I agree that it left some warts where improvements could be made. Your report leaves a clear roadmap for where they are needed!
My setup:
I prefer to use keyboard navigation because it's easier on my wrists. I've struggled with using the new Dashboard in this way: I can't always see where the focus is on the page, and some important controls can't be tabbed to at all.
As an example, starting from exist/apps/dashboard/index.html:
<button>
s. Since it looks like a button, it might be better to use<button>
, or make sure that default button functionality is available on the<a>
. But it's available for interaction, which is what really matters.)While most of this is the same when using Chrome, I can tab back to the User field there, strangely enough.
I hope this breakdown helps. I like the new Dashboard a lot; it feels much cleaner and nuanced in what it displays and when. The old Dashboard still wins in terms of keyboard accessibility, unfortunately—maybe because it uses standard HTML elements, so that it can rely on the browsers' default behaviors? There's a lot more you have to build into custom elements, I think.
The text was updated successfully, but these errors were encountered: