@jsxtools/eslint-plugin-jsx-a11y
Version:
Static AST checker for accessibility rules on JSX elements for flat ESLint Config.
24 lines (21 loc) • 917 B
JavaScript
const ariaQuery = require('aria-query');
const jsxAstUtils = require('./module/jsx-ast-utils.cjs');
const roles = [...ariaQuery.roles.keys()];
const interactiveRoles = roles.filter((name) => !ariaQuery.roles.get(name).abstract && ariaQuery.roles.get(name).superClass.some((klasses) => klasses.includes("widget")));
interactiveRoles.push("toolbar");
const isInteractiveRole = (tagName, attributes) => {
const value = jsxAstUtils.getLiteralPropValue(jsxAstUtils.getProp(attributes, "role"));
if (value === void 0 || value === null) {
return false;
}
let isInteractive = false;
const normalizedValues = String(value).toLowerCase().split(" ");
const validRoles = normalizedValues.flatMap(
(name) => roles.includes(name) ? [name] : []
);
if (validRoles.length > 0) {
isInteractive = interactiveRoles.includes(validRoles[0]);
}
return isInteractive;
};
module.exports = isInteractiveRole;