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

SplitButton's "More Options" button is not keyboard accessible #1238

Closed
carlos-zamora opened this issue Aug 29, 2019 · 13 comments
Closed

SplitButton's "More Options" button is not keyboard accessible #1238

carlos-zamora opened this issue Aug 29, 2019 · 13 comments
Assignees
Labels
A11yMAS A11ySev3 accessibility Narrator, keyboarding, UIA, etc area-Commanding AppBar, UICommand, MVVM, etc spec issue Issue with the feature specification team-Controls Issue for the Controls team

Comments

@carlos-zamora
Copy link
Member

Describe the bug

Invoking the "more options" button can't be done with the keyboard. Instead, "Spacebar" and "Enter" invoke the primary action button.

Steps to reproduce the bug

You can test this in the XAML Controls Gallery. Just go to any split button page.

Steps to reproduce the behavior:

  1. Attach keyboard focus to splitbutton (just clicking on the primary button can do that)
  2. Press "Spacebar" or "Enter" to invoke it --> invoke primary action button
  3. Press "left" or "right" arrow keys --> nothing happens

Expected behavior

One of the two (though I bet the first aligns better with how touch operates):

  1. "Spacebar" or "Enter" would invoke the dropdown button. Then there's no way to directly access the primary action button. "Left" and "right" arrow keys are disabled.
  2. "Left" and "right" arrow keys let you select between the two options. Then, "Spacebar" or "Enter" invokes focused option. Default focus would fall to the primary button.

Screenshots

Just check the XAML Controls Gallery

Version Info

Just check the XAML Controls Gallery

NuGet package version:

Just check the XAML Controls Gallery

Microsoft Windows [Version 10.0.18963.1000]

Windows 10 version Saw the problem?
Insider Build (xxxxx)
May 2019 Update (18362)
October 2018 Update (17763)
April 2018 Update (17134)
Fall Creators Update (16299)
Creators Update (15063)
Device form factor Saw the problem?
Desktop
Mobile
Xbox
Surface Hub
IoT

Additional context

@mdtauk
Copy link
Contributor

mdtauk commented Aug 29, 2019

Focus probably should select the Primary half with the Chevron half the next tab along

@marcelwgn
Copy link
Contributor

Focus probably should select the Primary half with the Chevron half the next tab along

I agree with @mdtauk. This makes a whole lot more sense from a user perspective.

@mdtauk
Copy link
Contributor

mdtauk commented Aug 29, 2019

image

@jevansaks
Copy link
Member

Alt+Down opens the split options, consistent with the Office control set. With narrator, the secondary action should open the overflow.

@jevansaks jevansaks added the area-Commanding AppBar, UICommand, MVVM, etc label Aug 29, 2019
@YuliKl
Copy link

YuliKl commented Aug 30, 2019

SplitButton is working as designed. I'm open to revisiting the ability to move focus to the individual halves, although this may present some interaction design challenges.

It's important that the SplitButton control remain a single Tab stop (and users aren't forced to hit Tab multiple times to move focus past SplitButton to the next control). Given that both halves of the button are a single Tab stop, we probably wouldn't draw focus around only one of the parts. Arrow keys could move focus within SplitButton - but I'm not sure which arrow direction would be intuitive to move focus to one of the halves, and to which half. The arrow directions are intuitive when a half has focus, but less so when the whole does.

I've been told that Alt+Down is the industry standard for interacting with this type of UI.

@YuliKl YuliKl added the spec issue Issue with the feature specification label Aug 30, 2019
@mdtauk
Copy link
Contributor

mdtauk commented Aug 30, 2019

@YuliKl Having the two halves act as separate buttons, would probably be more intuitive, as I know I certainly was not aware of having a different key combination to operate this control. And it would also solve the problem of the ToggleSplitButton supporting Toggle in touch too.

@YuliKl
Copy link

YuliKl commented Aug 30, 2019

@YuliKl Having the two halves act as separate buttons, would probably be more intuitive, as I know I certainly was not aware of having a different key combination to operate this control.

Well now you know the secret handshake 😉

And it would also solve the problem of the ToggleSplitButton supporting Toggle in touch too.

Touch has its own complications. Right now, the chevron half is too small to meet touch-ability requirements. While touch targets need to be measured in physical units like cm, which aren't readily available when designing scale-able UI, we've done approximations and projections to estimate minimum sizes in pixels. To be considered usable with touch, a touch target should be either 44x44 px or 32x120 px. We can sometimes fudge these numbers a little bit and shrink the pixel sizes, but not if the touch target is immediately adjacent to another touch target, as is the case with split button parts.

@mdtauk
Copy link
Contributor

mdtauk commented Aug 30, 2019

@YuliKl Having the two halves act as separate buttons, would probably be more intuitive, as I know I certainly was not aware of having a different key combination to operate this control.

Well now you know the secret handshake 😉

And it would also solve the problem of the ToggleSplitButton supporting Toggle in touch too.

Touch has its own complications. Right now, the chevron half is too small to meet touch-ability requirements. While touch targets need to be measured in physical units like cm, which aren't readily available when designing scale-able UI, we've done approximations and projections to estimate minimum sizes in pixels. To be considered usable with touch, a touch target should be either 44x44 px or 32x120 px. We can sometimes fudge these numbers a little bit and shrink the pixel sizes, but not if the touch target is immediately adjacent to another touch target, as is the case with split button parts.

Have you considered using Tap and Hold to bring up the flyout, with a Tap designed to trigger the Button's click event?

@YuliKl
Copy link

YuliKl commented Aug 30, 2019

Have you considered using Tap and Hold to bring up the flyout, with a Tap designed to trigger the Button's click event?

Yes, we did considered this. But tap-and-hold is the touch equivalent of mouse right-click, so not quite the right concept. Tap-and-hold is also overloaded to show a tooltip while holding (the tooltip dismisses when I lift my finger). So keeping existing behavior in mind, showing a split button's flyout on tap-and-hold didn't feel quite right.

Having said all that, we know the touch behavior of split buttons needs improvement and are tracking this issue with #178.

@YuliKl
Copy link

YuliKl commented Mar 18, 2021

Closing this issue because SplitButton's options can be opened with Alt+down arrow, so this isn't a bug.

@YuliKl YuliKl closed this as completed Mar 18, 2021
@Neurrone
Copy link

Is there any help text that gets set so that users know that you're supposed to press alt+down? The last time i encountered this issue in terminal, there was no indication that I was supposed to do this at all

@ghost ghost added the needs-triage Issue needs to be triaged by the area owners label Mar 19, 2021
@StephenLPeters
Copy link
Contributor

Is there any help text that gets set so that users know that you're supposed to press alt+down? The last time i encountered this issue in terminal, there was no indication that I was supposed to do this at all

unfortunately no, this is a pretty hidden feature. I'm not sure where help text would show up though.

@ghost ghost removed the needs-triage Issue needs to be triaged by the area owners label Mar 19, 2021
@Neurrone
Copy link

For a screen reader user, there'd be a way to set this so that it exists programatically.

I'm not sure how this would show up visually for a keyboard user though 🤔

@ghost ghost added the needs-triage Issue needs to be triaged by the area owners label Mar 20, 2021
@StephenLPeters StephenLPeters removed the needs-triage Issue needs to be triaged by the area owners label Mar 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A11yMAS A11ySev3 accessibility Narrator, keyboarding, UIA, etc area-Commanding AppBar, UICommand, MVVM, etc spec issue Issue with the feature specification team-Controls Issue for the Controls team
Projects
None yet
Development

No branches or pull requests

8 participants