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

fix: The <form> element now always exposes the role "form" #547

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

julienw
Copy link

@julienw julienw commented Mar 15, 2024

This has been changed in the ARIA spec in
w3c/html-aria#402.

See also testing-library/dom-testing-library#1293

Copy link

codesandbox-ci bot commented Mar 15, 2024

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

@jlp-craigmorten
Copy link
Contributor

@julienw see also scripts/roles.json which needs an update (and if done first actually allows for the code to be generated using node ./scripts/breakUpAriaJSON.js)

"constraints": ["set"],
"name": "name"
}
],
"name": "form"
},
"module": "HTML"
Copy link
Author

Choose a reason for hiding this comment

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

I see there's "superClass": ["landmark"] below, but I'm not sure about that since the form shouldn't be exposed as a landmark region without an accessible name now. Do you have a suggestion about that?

Copy link
Contributor

Choose a reason for hiding this comment

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

Until w3c/aria#1764 is resolved I fear it is perhaps ambiguous as to what the expectation is here?

Even once that is resolved, if it transpires that constraints are needed on the superclass then the data structure as it currently stands isn't expressive enough for this afaik as it stands and we'd need a (potentially breaking) change to accomodate that conditional logic. Depending on use-cases for this library, doing such may be YAGNI?

I'm not confident/familiar enough with the concepts in specs to understand if the superclass role in ARIA is relevant to the landmark exposure (or lack of) described in the AAM specs? We might be conflating an inheritance model here with the expectations on what mapping is used by Accessibility APIs (would need to understand if that Accessibility API exposure is driven by the inheritance or not).

Would need someone like @scottaohara (apologies for the out of the blue ping) to help clarify I expect.

Choose a reason for hiding this comment

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

[...] if it transpires that constraints are needed on the superclass then the data structure as it currently stands isn't expressive enough for this afaik as it stands and we'd need a (potentially breaking) change to accomodate that conditional logic.

Constraints on the superclass also affects the separator role, which either has a superclass of widget or structure, depending on whether it is focusable or not, see #587 (thanks @cmorten for linking this together)

Depending on use-cases for this library, doing such may be YAGNI?

This causes libraries like eslint-plugin-jsx-a11y and Svelte (which rely on this library to check if a role has the widget superclass, to check whether something is interactive/non-interactive) to throw spurious warnings like:

A11y: noninteractive element cannot have nonnegative tabIndex value
A11y: Non-interactive element <div> should not be assigned mouse or keyboard event listeners.

But, it does seem like quite a lot of effort to fix here! It's probably easier to fix on the WAI-ARIA side of things, see w3c/aria#1348

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.

3 participants