source: frontend/node_modules/eslint-plugin-jsx-a11y/lib/rules/no-redundant-roles.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 2 weeks ago

Fix frontend appearance

  • Property mode set to 100644
File size: 3.1 KB
Line 
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports["default"] = void 0;
7var _arrayIncludes = _interopRequireDefault(require("array-includes"));
8var _hasown = _interopRequireDefault(require("hasown"));
9var _getElementType = _interopRequireDefault(require("../util/getElementType"));
10var _getExplicitRole = _interopRequireDefault(require("../util/getExplicitRole"));
11var _getImplicitRole = _interopRequireDefault(require("../util/getImplicitRole"));
12function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13/**
14 * @fileoverview Enforce explicit role property is not the
15 * same as implicit/default role property on element.
16 * @author Ethan Cohen <@evcohen>
17 *
18 */
19
20// ----------------------------------------------------------------------------
21// Rule Definition
22// ----------------------------------------------------------------------------
23
24var errorMessage = function errorMessage(element, implicitRole) {
25 return "The element ".concat(element, " has an implicit role of ").concat(implicitRole, ". Defining this explicitly is redundant and should be avoided.");
26};
27var DEFAULT_ROLE_EXCEPTIONS = {
28 nav: ['navigation']
29};
30var _default = exports["default"] = {
31 meta: {
32 docs: {
33 url: 'https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/no-redundant-roles.md',
34 description: 'Enforce explicit role property is not the same as implicit/default role property on element.'
35 },
36 schema: [{
37 type: 'object',
38 additionalProperties: {
39 type: 'array',
40 items: {
41 type: 'string'
42 },
43 uniqueItems: true
44 }
45 }]
46 },
47 create: function create(context) {
48 var options = context.options;
49 var elementType = (0, _getElementType["default"])(context);
50 return {
51 JSXOpeningElement: function (_JSXOpeningElement) {
52 function JSXOpeningElement(_x) {
53 return _JSXOpeningElement.apply(this, arguments);
54 }
55 JSXOpeningElement.toString = function () {
56 return _JSXOpeningElement.toString();
57 };
58 return JSXOpeningElement;
59 }(function (node) {
60 var type = elementType(node);
61 var implicitRole = (0, _getImplicitRole["default"])(type, node.attributes);
62 var explicitRole = (0, _getExplicitRole["default"])(type, node.attributes);
63 if (!implicitRole || !explicitRole) {
64 return;
65 }
66 if (implicitRole === explicitRole) {
67 var allowedRedundantRoles = options[0] || {};
68 var redundantRolesForElement;
69 if ((0, _hasown["default"])(allowedRedundantRoles, type)) {
70 redundantRolesForElement = allowedRedundantRoles[type];
71 } else {
72 redundantRolesForElement = DEFAULT_ROLE_EXCEPTIONS[type] || [];
73 }
74 if ((0, _arrayIncludes["default"])(redundantRolesForElement, implicitRole)) {
75 return;
76 }
77 context.report({
78 node,
79 message: errorMessage(type, implicitRole.toLowerCase())
80 });
81 }
82 })
83 };
84 }
85};
86module.exports = exports.default;
Note: See TracBrowser for help on using the repository browser.