Proposed resolution

voiceover disabled

  • Expanding the multiselect element by pressing return should be removed again. The multiselect should be expanded by pressing space so that is it inline with the other three select elements.
  • When the multiselect is expanded it shouldnt be collapsed and the focus moving to the security advisory coverage select element. the multiselect element should remain expanded and pressing tab should have no effect, so the behavior is inline with the other three select elements. you only collapse the multiselect by pressing the esc key..
  • if you keep "arrow down" pressed the focus scrolls down close to the end, it should not display more than one checkbox in focus at the same time and should smoothly scroll to the last option.

voiceover enabled

  • expanding the multiselect element by pressing VO space should not auto select the first option “access control”. pressing VO space should only expand the multi select.
  • when the first option is auto selected it should not announce every available category like illustrated in vo_space.mp4
  • you should be able to scroll through the multiselect list by pressing the arrow up and down buttons. (but at the moment i am unable to scroll at all when voiceover is enabled - unable to reproduce the collapsing illustrated at the end of return.mp4)
  • the checkbox state if a checkbox is checked or not should be also properly announced (due to the aformentioned problem i am also not able to scroll unable to validate the current state)
  • the aural interface of the multiselect should be improved. At the moment it just announces you are currently on a button inside a group. instead it should orient to the announcement the select element has by stating when expanded, “menu x items” (same as for the select element)

Remaining tasks

Since the behavior with VoiceOver is quite off, if possible test the multiselect also in other screenreaders like NVDA, Orca and or Jaws

  • test with Screen Reader software
  • identify issues and update this issue summary :)
  • Command icon Show commands

    Start within a Git clone of the project using the version control instructions.

    Or, if you do not have SSH keys set up on git.drupalcode.org:

    Comments

    chrisfromredfin created an issue. See original summary.

    chrisfromredfin’s picture

    Title: Improve keyboard navigation for categories dropdown » Improve keyboard navigation/general a11y for categories dropdown
    rkoller’s picture

    One detail i've mentioned in the parent issue that still applies. if the category multi select is expanded and you tab the multi select closes while if one of the other three select fields are expanded tabbing has not effect and the user remains within the expanded select list.

    snehal-chibde’s picture

    Assigned: Unassigned » snehal-chibde

    I am working on this issue. Assigning it to myself.

    snehal-chibde’s picture

    Issue summary: View changes
    Status: Active » Needs review
    StatusFileSize
    new1 MB

    This has been resolved. I have raised a merge request for the same.
    Added video for reference.

    rkoller’s picture

    Status: Needs review » Needs work
    StatusFileSize
    new1.76 MB
    new857.62 KB
    new551.34 KB

    I've tested MR566 on 11.x on macOS 14.7 and voiceover. A few observations.

    1. about adding the ability to open the multi select by pressing return. that is not really in line with the behavior of the other three select fields in the filter fieldset (return.mp4). the category multi select is opened by pressing space and is also opened by pressing return. the other three are only opened by pressing space.
    2. if you keep the down button pressed close to the end of the list the focus outline looks odd and then the focus branches out of the multi select and the multi select collapses (see the end of rotor.mp4)
    3. another detail with the multi select or the select expanded. with the multiselect expanded if you are pressing tab the multiselect collapses while with the others by pressing tab nothing happens. you are only able to navigate by pressing the up and down arrow key. the left and right has no effect for the multiselect nor the normal selects
    4. with voiceover active and if you are opening the the multiselect, two things happen, the first item gets auto selected and you get the entire list of category names announed in a row, which is simply overwhelming (vo_space.mp4)
    5. all select fields are popup button the multiselect is only a regular button. plus the select fields announce as soon as the select field is expanded "menu 2 items". that way the user knows the selectfield is expanded and how many items it includes that is missing for the multiselect in the aural interface. (popupmenu.mp4)
    lostcarpark’s picture

    I agree with Ralf, pressing Enter is not a standard way of opening a drop-down, and I think it could cause confusion to add it here.

    Space, and alt+down arrow both open it, which is consistent with other drop-down controls on Windows and Linux. I think the equivalent on a Mac might be command+down, but I'm not a Mac user, so that could be worth confirming and adding.

    The focus issues up and down are also worth investigating.

    The voiceover behaviour sounds like a serious accessibility concern, so we should prioritise fixing that. I've not sure how we do that in JS.

    rkoller’s picture

    it is not cmd arrow down but option arrow down(option is the name for alt on mac). and james are you on windows or linux or do you have both? cuz would be also interesting how the behavior in nvda on windows and or orca on linux is?

    rkoller’s picture

    And one additional detail. the toggle button border has #d3d4d9 as the color. against white background that leads to a color contrast of only 1.5:1... SC1.4.11, to recognize the button, would require at least 3:1 argh posted in the wrong tab and issue. apologies.

    lostcarpark’s picture

    Can someone check if Option+Down opens it on Mac, please? If it's equivalent to Alt, I'm hopeful it might already be covered.

    I mainly use Linux, so I'll test Orca.

    If anyone can test on Windows, that would be awesome.

    rkoller’s picture

    lol i've actually manually tested your statement ;) i should have added that detail to my comment as well. so option-arrow down expands the multi select as well, same as all the three others.

    and awesome, thanks for giving orca a spin!

    narendrar’s picture

    Hi @rkoller, It would be grateful if you could update the issue summary and provide the acceptance criteria for this issue. 🙏

    rkoller’s picture

    Issue summary: View changes

    Added a first draft of the proposed resolution, trying to summarize the points raised within this issue. plus added the point about testing additional screenreaders in the remaining tasks section.

    rkoller’s picture

    and one thing i still wonder but am unsure if it should be in the scope of this issue or in a follow up. at the moment there is a new query every time a checkbox is checked or unchecked on the multiselect element. first that is sort of an additional unnecessary load on d.o plus on every submitted query there is an immediate reload which might not be inline with SC3.2.2 https://www.w3.org/WAI/WCAG22/Understanding/on-input.html since it is not necessarily expected that there is a reflow on the check/uncheck. the solution for that would be adding an "apply" button to the multiselect element, so the user first has to check and uncheck all the desired checkboxes and then press the apply button.

    chrisfromredfin’s picture

    Issue summary: View changes

    Let's leave the apply for a separate issue (it already is - #3458840: Add Apply and Clear buttons to Categories dropdown )

    The current remaining tasks are to (1) test in NVDA, Voiceover, Jaws, and Orca and then (2) update the issue summary with a list of fixes that are in scope for this issue.

    utkarsh_33 made their first commit to this issue’s fork.

    utkarsh_33’s picture

    So the latest state of the MR is as follows:-

    voiceover disabled

    1. Expanding the multiselect element by pressing return should be removed again. The multiselect should be expanded by pressing space so that is it inline with the other three select elements.
    2. When the multiselect is expanded it shouldnt be collapsed and the focus moving to the security advisory coverage select element. the multiselect element should remain expanded and pressing tab should have no effect, so the behavior is inline with the other three select elements. you only collapse the multiselect by pressing the esc key.
    3. if you keep "arrow down" pressed the focus scrolls down close to the end, it should not display more than one checkbox in focus at the same time and should smoothly scroll to the last option.(I Can't reproduce this)

    voiceover enabled

    1. expanding the multiselect element by pressing VO space should not auto select the first option “access control”. pressing VO space should only expand the multi select.(I Can't reproduce this)
    2. when the first option is auto selected it should not announce every available category like illustrated in vo_space.mp4(I Can't reproduce this)
    3. I am able to scroll when voiceover is enabled.
    4. The checkbox state if a checkbox is checked is announced properly

    The striked off points means that these issue existed and are fixed as a part of the MR.

    utkarsh_33’s picture

    Assigned: snehal-chibde » Unassigned
    Status: Needs work » Needs review

    Marking it NR to get an initial feedback by @rkoller.

    rkoller’s picture

    Status: Needs review » Needs work
    StatusFileSize
    new99.42 KB
    new941.68 KB
    new971.31 KB
    new568.4 KB

    I've went through the points you've listed and tested with the latest state of MR566.

    VoiceOver switched off:

    1. ✅ i can confirm, i am unable to expand the multi select dialog by pressing the return key, only by space. works as expected now, excellent!
    2. ✅ i can confirm, tried to hit tab while the multi select dialog was expanded and the dialog remained expanded and wasnt collapsed anymore. fab!
    3. i just kept the arrow down key or arrow up key pressed, that way you saw several focus outlines at once while scrolling (arrow_down.mp4)

    VoiceOver turned on:

    1. & 2 when the multiselect was in focus i pressed VO-space to expand the multi select dialog. that way you see the first option got auto selected and the entire list of categories announced. i then noticed something else. i pressed esc to close the dialog. when i pressed VO-space again the previously ticked checkbox got unticked and all categories announced. again esc and again VO-space the first option got reticked. (see On_Off-Wall-Of-Text.mp4). the dialog should be expanded but the state of the first checkbox not changed.
    3. ✅ i am unable to reproduce. I "guess" that was due to an accidental misconfiguration of voiceover that i just figured out a few days ago
    4. if you move up and down the multi select list you notice the checkbox label is not announced as well as the current checkbox state same as if you change the checkbox state the new state is also not announced (checkboxes.mp4)
    5. and one additional detail i got reminded to. if you expand the select list field you get the announcement of a summary which does not happen/exist for the multiselect fields (summary.mp4). in the example you see and hear that select list fields are labeled as pop up buttons while the multi select is just a button. and when expanded the select list field announces that it is a menu with 2 items for the multi select that does not exist in the aural interface.

    rkoller’s picture

    Issue tags: +wcag332
    utkarsh_33’s picture

    StatusFileSize
    new7.7 MB

    I have attached a video of how VO works on my system.Following are the things that work fine for me (I am not sure if i am missing some settings or there is a version conflict):-

    1) If i press VO space then the first checkbox is not getting selected automatically.
    2) Entire list of categories is not getting announced.
    3) As we navigate through the list of options it correctly announces the state of the checkbox along with the label.

    @rkoller please suggest if there is something that i am missing.

    rkoller’s picture

    StatusFileSize
    new3.94 MB

    well i think i know what we've both missed. i suppose you are testing with either firefox, chrome, edge or something alike, aren't you? ;) the videos i've done in #20 were created in safari (which is the default browser i use on macos). i've created a comparison video (comparison.mp4) with safari 18.1 on the left, firefox 132.0.2 in the middle and edge 130.0.2849.80 on the right on macos 14.7.1

    so based on the points in #20 i went through everything again,and tagged the given points either "working" (either fixed or a none issue) or NW (needs work).

    voiceover switched off
    1. safari: working firefox: working edge: working
    2. safari: working firefox: working edge: working
    3. safari: NW firefox: NW edge: NW

    voiceover switched on
    1&2. safari: working firefox: working edge: working
    3. safari: working firefox: working edge: working
    4. safari: NW firefox: working edge: working
    5. safari: NW firefox: NW edge: NW

    rkoller’s picture

    One other aspect i've completely forgot about testing and mentioning is the support of home and end keys as well as the support of the page up and page down keys. both work when the multi select is expanded and in focus. but the detail that is not working is, that the checkbox focus remains on the access control checkbox. confusing for a keyboard user. in particular if you press the end key after the multi select got expanded and then you press the up key. you dont see any focus outline until the first checkbox is reached. and if you then press arrow down the focus outline moves and follows the keyboard input. the point about home and end buttons was raised by @drupa11y.

    utkarsh_33’s picture

    Status: Needs work » Needs review

    Re #23
    With voiceover switched on now all the things mentioned are resolved except 5 which i am not sure whether we want to do that as the 2 elements are different in nature.
    I have tested everything else on Safari and chrome and it works fine in these two browsers.It would be helpful if you can have a look at this once again @rkoller and verify the changes.
    Marking it NR.

    utkarsh_33’s picture

    In this commit we can simply replace the role to menu and the sub div's role to menuitem if we want the multiselect filter to behave like the other filters but the problem is that it focuses on the whole div instead of the checkbox.I am pushing the changes with the above suggestions but someone testing this might switch to prior commit to see another version of this MR.

    tim.plunkett’s picture

    rkoller’s picture

    I've taken another look at the current state of the MR. Overall it looks quite solid, there are a few details i've noticed in no particular order:

    1. if you have voiceover active and the muliselect is expanded and the focus is on the unchecked access control option and you press VO space in safari, instead of checking the category the checkbox remains unchecked and voiceover announces that it is an unchecked checkbox another time. in firefox and edge i am able to properly check and uncheck checkboxes by pressing VO space.

    2. if you have voiceover on and you scroll the categories down until the end with the arrow down key in safari, the list collapses as soon as the last option is passed. that behavior does not happen with voiceover switched off in safari. in firefox and edge it does not happen no matter voiceover is enabled or disabled.

    3. one detail in general, i've compared again the general behavior of select lists, went to admin/config/regional/language/add, and there if you reach the end of a list you automatically jump back to the top of the list and the other way around, if you reach the top of the list (by arrow up) you jump to the last item if you keep scrolling by the arrow key. so i wonder if the multi select should mirror that behavior as well?

    in regard of #26 . what would be the recommended approach to switch to the prior commit? the commit_hash for the prior commit i could get with git log but what would be the best way to switch to it and being able to compare the two states? https://stackoverflow.com/a/4940090 suggests creating a branch?! the other suggestion by simply checking out the commit_hash here https://stackoverflow.com/a/30988318 would lead to a detached head? before i do anything wrong i thought i better ask.

    utkarsh_33’s picture

    StatusFileSize
    new13.31 MB

    Re #28.1 I just tested it on safari browser but i was not able to reproduce what is mentioned.I am attaching the screen recording for the same demonstrating how it works on my local.

    utkarsh_33’s picture

    I have addressed all the feedbacks on #28.Hope all the stuff on this are now done.@rkoller can you review this once again?

    rkoller’s picture

    StatusFileSize
    new1.04 MB
    new361.72 KB

    thank you! #28.1 and #28.2 looks good and fixed now, excellent!

    - about #28.3 there is one detail i've just realized when retesting. when you get to the end of a list by pressing arrow down and then immediately continuing on top and the other way around when you press the up arrow and when reaching the first option and then you immediately continue from the bottom only applies when voice over is enabled. with voice over disabled on select lists you dont jump to the other end of the list and continue, you just stop.

    - there is one detail that is potentially confusing and sending mixed signals for sighted screenreader users when voice over is enabled. when you tick a checkbox the voiceover cursor jumps ahead, sometime by one sometimes by more options, but the focus remains on the option a user just ticked and often moves back to the option in focus. so the focus and the voice over cursor are not in sync that way? (vo_cursor.mp4)

    and could you provide me some advice how to best switch between commits? at the moment i am uncertain how to compare the two approaches you'Ve mentioned illustrated in the two different commits. but i've recorded another video to illustrate the aural interfaces of the multiselect and the select (popup_and_summary.mp4). for one you know when interacting with the select that you have a popup button so something will "show up" while for the multiselect you only have a "group" which doesnt provide much context about the inherent functionality. and for the select you get the summary with the number of available options while for the multiselect you have nothing.

    utkarsh_33’s picture

    Re #31:

    about #28.3 there is one detail i've just realized when retesting. when you get to the end of a list by pressing arrow down and then immediately continuing on top and the other way around when you press the up arrow and when reaching the first option and then you immediately continue from the bottom only applies when voice over is enabled. with voice over disabled on select lists you dont jump to the other end of the list and continue, you just stop.

    I am not able to reproduce this atleast in Chrome and Safari browser.The arrows work fine for me in both the cases.

    and could you provide me some advice how to best switch between commits

    I usually use git log to get the commit and checkout that commit id which i want to test.

    rkoller’s picture

    StatusFileSize
    new757.54 KB
    new900.05 KB

    as mentioned on slack i gonna discuss a few aspects of the MR in today a11y call, but wanted to provide two videos about another detail i've noticed testing the MR today. if you have voiceover active and the multi select expanded in case you are navigating the voiceover cursor by the left and right , if you reach the end of an option label the multi select collapses silently (see the two videos).... if you are using VO arrow left or right the voice over cursor steps through the the checkboxes and the checkbox labels.

    rkoller’s picture

    created a follow up about the adjustment of the multi select to the aural interface of the select element #3498311: Mimic the aural interface of the select element for the multi select div

    utkarsh_33’s picture

    Fixed the issue mentioned in #33.Ready for reviews.

    rkoller’s picture

    Status: Needs review » Needs work
    StatusFileSize
    new833.54 KB

    awesome thanks! i can confirm with voiceover active and if you are pressing the arrow left or right repeatedly the dialog isnt collapsing anymore.

    but while testing i found another small detail :( in the video after the dialog is open i navigated with arrow down first. then with VO-arrow up, that way i was able to get out of the dialog.. but after pressing arrow down again the cursor was again inside the dialog. with VO arrow right at the end of the dialog you get outside dialog but in this case the dialog collapses.

    the other small nitpick, not sure if it is a regression. on the select element with voiceover deactivated and you navigate with arrow up and down if you reach the end of the option list you dont jump to the start and same the other way around. that circling that you jump to the start from the bottom and to the bottom from the start is only with voiceover active. at the moment with the MR that looping is with voiceover activated and deactivated ( if that is tricky that might be also moved to a follow up)

    utkarsh_33’s picture

    Status: Needs work » Needs review

    Can we do that in a follow-up as it might take some time and i think the remaining part of the issue is fixed and might be delayed due to that small regression.
    What are your thought @rkoller?

    rkoller’s picture

    i'Ve already opened a follow up for the mimic the select element issue. the small regression would also be fine with me to move it into a follow up . the behavior with VO-arrow left and right i dont know on the other hand. it "might" be ok in a follow up as well. not sure how many screenreader users are using project browser at this point. i just have a bad feeling to commit with that kind of known problems. but on the other hand the MR improves the keyboard experience significantly. i dont know, maybe that is why i dislike deadlines ;) let chris decide.

    chrisfromredfin’s picture

    Status: Needs review » Fixed

    This is working well for general keyboard nav.

    Let's open a follow-up for anything related to VoiceOver that is still not ideal. In general I much prefer small, actionable, discrete things rather than "fix all a11y issues with __X__" since they're easier to review & go in, so let's do that!

    Thank you EVERYONE for your work with addressing, testing, and thinking to help be inclusive for ALL users of Project Browser!

    Status: Fixed » Closed (fixed)

    Automatically closed - issue fixed for 2 weeks with no activity.