@jsxtools/eslint-plugin-jsx-a11y
Version:
Static AST checker for accessibility rules on JSX elements for flat ESLint Config.
40 lines (37 loc) • 1.27 kB
JavaScript
const schemas = require('../util/schemas.cjs');
const getElementType = require('../util/getElementType.cjs');
const errorMessage = (element) => `Do not use <${element}> elements as they can create visual accessibility issues and are deprecated.`;
const DEFAULT_ELEMENTS = [
"marquee",
"blink"
];
const schema = schemas.generateObjSchema({
elements: schemas.enumArraySchema(DEFAULT_ELEMENTS)
});
const ruleOfNoDistractingElements = {
meta: {
docs: {
url: "https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-distracting-elements.md",
description: "Enforce distracting elements are not used."
},
schema: [schema]
},
create: (context) => {
const elementType = getElementType(context);
return {
JSXOpeningElement: (node) => {
const options = context.options[0] || {};
const elementOptions = options.elements || DEFAULT_ELEMENTS;
const type = elementType(node);
const distractingElement = elementOptions.find((element) => type === element);
if (distractingElement) {
context.report({
node,
message: errorMessage(distractingElement)
});
}
}
};
}
};
module.exports = ruleOfNoDistractingElements;