UNPKG

eslint-plugin-ember

Version:
54 lines (48 loc) 1.72 kB
/** @type {import('eslint').Rule.RuleModule} */ module.exports = { meta: { type: 'suggestion', docs: { description: 'disallow accesskey attribute', category: 'Accessibility', url: 'https://github.com/ember-cli/eslint-plugin-ember/tree/master/docs/rules/template-no-accesskey-attribute.md', }, fixable: 'code', schema: [], messages: { noAccesskey: 'No access key attribute allowed. Inconsistencies between keyboard shortcuts and keyboard commands used by screenreader and keyboard only users create accessibility complications.', }, originallyFrom: { name: 'ember-template-lint', rule: 'lib/rules/no-accesskey-attribute.js', docs: 'docs/rule/no-accesskey-attribute.md', tests: 'test/unit/rules/no-accesskey-attribute-test.js', }, }, create(context) { return { GlimmerElementNode(node) { const accesskeyAttr = node.attributes?.find((attr) => attr.name === 'accesskey'); if (accesskeyAttr) { context.report({ node: accesskeyAttr, messageId: 'noAccesskey', fix(fixer) { // Remove the attribute including preceding whitespace const sourceCode = context.sourceCode; const text = sourceCode.getText(); const attrStart = accesskeyAttr.range[0]; const attrEnd = accesskeyAttr.range[1]; let removeStart = attrStart; while (removeStart > 0 && /\s/.test(text[removeStart - 1])) { removeStart--; } return fixer.removeRange([removeStart, attrEnd]); }, }); } }, }; }, };