UNPKG

@jsxtools/eslint-plugin-jsx-a11y

Version:

Static AST checker for accessibility rules on JSX elements for flat ESLint Config.

34 lines (31 loc) 1.16 kB
const jsxAstUtils = require('../util/module/jsx-ast-utils.cjs'); const getElementType = require('../util/getElementType.cjs'); const isFocusable = require('../util/isFocusable.cjs'); const schemas = require('../util/schemas.cjs'); const schema = schemas.generateObjSchema(); const ruleOfNoAriaHiddenOnFocusable = { meta: { docs: { url: "https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-aria-hidden-on-focusable.md", description: 'Disallow `aria-hidden="true"` from being set on focusable elements.' }, schema: [schema] }, create(context) { const elementType = getElementType(context); return { JSXOpeningElement(node) { const { attributes } = node; const type = elementType(node); const isAriaHidden = jsxAstUtils.getPropValue(jsxAstUtils.getProp(attributes, "aria-hidden")) === true; if (isAriaHidden && isFocusable(type, attributes)) { context.report({ node, message: 'aria-hidden="true" must not be set on focusable elements.' }); } } }; } }; module.exports = ruleOfNoAriaHiddenOnFocusable;