UNPKG

@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
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;