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

Extend alt-text rule to check for any element with role="img" as well #957

Open
anuvenkatesh1 opened this issue Oct 13, 2023 · 5 comments
Open
Labels

Comments

@anuvenkatesh1
Copy link

This is not a bug but rather looking for some guidance on how can I extend the alt-text rule to include elements that have role="img" as well. Guidance is highly appreciated.

@ljharb
Copy link
Member

ljharb commented Oct 13, 2023

You can designate a specific custom component to act as an image: https://github.com/jsx-eslint/eslint-plugin-jsx-a11y#configurations

You can also use https://github.com/jsx-eslint/eslint-plugin-jsx-a11y#polymorphic-components, although that kind of design is not recommended (iow, using "role" on an HTML element).

@anuvenkatesh1
Copy link
Author

Thank you @ljharb . I attempted to try the above but was unsuccessful, Sorry am a novice to React and jsx-a11y. I was wondering if I can extend the alt-text rule in the estlintrc config to include div role="img" kind of elements also. Pretty much the same kind of check for aria-label/aria-labelledby needs to be done for any element with role="img" too
"jsx-a11y/alt-text":[2,{
"elements": ["img","div[role="img"]"]
}

@ljharb
Copy link
Member

ljharb commented Oct 13, 2023

no, but you can use the polymorphic components setting to make divs with a role of "img" be treated like img.

apepper added a commit to Scrivito/scrivito-portal-app that referenced this issue Sep 26, 2024
@grumd
Copy link

grumd commented Nov 5, 2024

@ljharb Hi, sorry for bumping a year old thread, but it's not resolved and I've just come across this issue myself.
Are you suggesting to use polymorphicPropName: 'role'? What if I also want to use actual polymorphic components with as in my code?
role="img" is permitted to be used on any element and it still needs to be accessible, the best way is to modify this eslint rule to also check for any element with role='img' by default, not just <img>.

@ljharb
Copy link
Member

ljharb commented Nov 5, 2024

@grumd yes - you can combine polymorphicPropName: 'role' with polymorphicAllowList: ['div'], for example, as well.

What's your use case for a non-img element with an img role? In general, ARIA props are meant to be a last-resort approach to ensuring a11y, when semantic HTML is unavailable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants