Skip to content

Conversation

@geoffrey-eisenbarth
Copy link
Collaborator

@geoffrey-eisenbarth geoffrey-eisenbarth commented Jan 19, 2026

In order to make the changes a little easier to understand, I kept some of the file names (like selectable.js, checkable.js, multiselectable.js) that I think would eventually just go in aria.js.

I'm still warming up to ariaState(), ariaProperty(), etc. Sometimes it feels like it could be better to just be explicit and set e.g. el.ariaDisabled = "true"; perhaps I'll come around, let's give it more time.

Some decision points:

  • Should AriaChecked and AriaSelected inherit AriaDisabled?
  • Currently the validate() errors don't help the author find exactly which elements are throwing (it prints [HTMLElement] as a string instead of linking to the DOM)
  • Should we force authors to specify [aria-controls] attributes, or can we handle it in internals() / ariaRelatives() by assuming first tab goes with first tabpanel, etc. Doing so would make for much simpler markup.
  • For OptGroup, it's important that no one is adding tabindex because it would interfere with FocusGroupMixin. Is there a way to do this without listening for attribute:tabindex? Either a validation, or..?

There's still some small bugs:

  • If no tabs have aria-selected="true", then no panels show. We should opt for displaying the first one
  • When an unselected tab is clicked, the blur event isn't capable of unselecting the previously selected tab. This change came from removing the attribute:tabindex listener (which felt a bit much, imagine a listbox with many options, and every time the tab roves it fires on all options).
  • Need to figure out how to skip over [disabled] in a focusgroup (and possibly wrap)
  • Need to figure out how to keep arrow keys working in <input type=text> inside <toolbar>.
  • Should we halt "Ctrl+A" inside a single select listbox? Or click+drag?

src/js/aria.js Outdated
}
)

export const AriaInvalid = AriaState("invaid")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants