tabindex-no-positive.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports["default"] = void 0;
  6. var _jsxAstUtils = require("jsx-ast-utils");
  7. var _schemas = require("../util/schemas");
  8. /**
  9. * @fileoverview Enforce tabIndex value is not greater than zero.
  10. * @author Ethan Cohen
  11. */
  12. // ----------------------------------------------------------------------------
  13. // Rule Definition
  14. // ----------------------------------------------------------------------------
  15. var errorMessage = 'Avoid positive integer values for tabIndex.';
  16. var schema = (0, _schemas.generateObjSchema)();
  17. var _default = {
  18. meta: {
  19. docs: {
  20. url: 'https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/tabindex-no-positive.md',
  21. description: 'Enforce `tabIndex` value is not greater than zero.'
  22. },
  23. schema: [schema]
  24. },
  25. create: function create(context) {
  26. return {
  27. JSXAttribute: function JSXAttribute(attribute) {
  28. var name = (0, _jsxAstUtils.propName)(attribute).toUpperCase(); // Check if tabIndex is the attribute
  29. if (name !== 'TABINDEX') {
  30. return;
  31. } // Only check literals because we can't infer values from certain expressions.
  32. var value = Number((0, _jsxAstUtils.getLiteralPropValue)(attribute)); // eslint-disable-next-line no-restricted-globals
  33. if (isNaN(value) || value <= 0) {
  34. return;
  35. }
  36. context.report({
  37. node: attribute,
  38. message: errorMessage
  39. });
  40. }
  41. };
  42. }
  43. };
  44. exports["default"] = _default;
  45. module.exports = exports.default;