mroderick / plete

Vanilla autocomplete component
https://plete.dev
BSD 3-Clause "New" or "Revised" License
35 stars 4 forks source link

Aria live regions #77

Open Lewiscowles1986 opened 3 years ago

Lewiscowles1986 commented 3 years ago

Is your feature request related to a problem? Please describe.

I've been working with ARIA a little more lately and mixing with people that know a lot more about this than me.

After reading https://dev.to/savvasstephnds/the-problem-with-autocomplete-and-how-to-fix-it-2ill

I Tested plete.dev and it seems that we may be able to get a better screen-reader support for plete using ARIA live regions.

Describe the solution you'd like

As a user with a need for screenreader functionality, I would like to have the list of items read out, and each highlighted item read as the user moves (using cursor keys) between them, so that prior to selecting an option; I can be contextually aware of where I am, and make the correct choice.

Describe alternatives you've considered

I am interested to hear of alternatives. Perhaps making each choice a button would allow for reading, but it feels like an abuse of the DOM.

Motivation and involvement

Proof of concept

Is there any prior-art or a proof-of-concept; perhaps another project using this one?

If You are interested in this, I would be happy to create a proof-of-concept.

Additional context

I tested using https://chrome.google.com/webstore/detail/screen-reader/kgejglhpjiefppelpmljglcjbhoiplfn

I Would be happy to produce a screen recording of the current behavior and post recordings of the proposed improvement.

Lewiscowles1986 commented 3 years ago

I've come across something during spelunking this... The spec for aria-autocomplete mentions implementations MAY want to implement aria-activedescendant property .

It seems that this may be enough. live-region was not enough to announce the items selected.

During testing, I personally found the announcement confusing and opted to use template literals to append Choice: ${label}. to the elements when not yet selected. It may be incorrect and would likely need testing by people who use accessibility features, to ensure I'm not engaging in well-meaning hot-takes; that do not help the users.

Lewiscowles1986 commented 3 years ago

I Just checked using JAWS. The way that screen reader works seems to break the normal operation of Plete using a keyboard. There might be more to this still.

Lewiscowles1986 commented 3 years ago

Plete-Chromebook-ARIA-hack-WiP.zip So I don't lose this if it takes a while to come back to; here's the current hacking at output.

mroderick commented 3 years ago

I think improved ARIA and screenreader support would be a great addition to this project 👍