Skip to content

Proposal: aria-activedescendant should work transitively, and be specced as such #1500

Closed

Description

@craigkovatch

I haven't found any information speaking to the following scenario. I read through https://w3c.github.io/aria/#managingfocus_useragents and I don't think it addresses this question, but the language is a little hard to follow so please let me know if I'm just missing something :)

Example:

Suppose I have a role=combobox widget with a displayed role=listbox#some-list-id for autocomplete. Suppose also that the listbox widget uses aria-activedescendant for managing focus, i.e. the role=listbox element has tabindex=0 but none of its role=option children are focusable.

<input role="combobox" aria-haspopup="listbox" ... aria-activedescendant="some-list-id" />
<div role="listbox" id="some-list-id" aria-activedescendant="option-id-3">
  <div role="option" id="option-id-1">One</div>
  <div role="option" id="option-id-2">Two</div>
  <div role="option" id="option-id-3">Three</div> <!-- I would expect the screen reader to understand this option is "focused" if DOM focus is on the input element -->
</div>

In this situation, I feel the text field in the combobox ought to be able to set its aria-activedescendant="some-list-id", i.e. it doesn't need to know about the list's currently active item -- the combobox can just point at the listbox, and the listbox can then point to one of its internal options as active.

Activity

  1. JAWS-test commented on Jun 10, 2021

    @JAWS-test
    Contributor

    I don't think aria-activedescendant can refer to an element, which in turn refers to another element via aria-activedescendant. Rather, the combobox should point directly to the role=option

  2. added this to the ARIA 1.3 milestone on Jun 10, 2021
  3. jnurthen commented on Sep 12, 2022

    @jnurthen
    Member

    aria-activedescendant only resolves to a directly referenced element. If there is any language in the spec which is unclear on this please point to it and we can look to change it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions