tabindex-no-positive.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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 = exports["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();
  29. // Check if tabIndex is the attribute
  30. if (name !== 'TABINDEX') {
  31. return;
  32. }
  33. // Only check literals because we can't infer values from certain expressions.
  34. var value = Number((0, _jsxAstUtils.getLiteralPropValue)(attribute));
  35. // eslint-disable-next-line no-restricted-globals
  36. if (isNaN(value) || value <= 0) {
  37. return;
  38. }
  39. context.report({
  40. node: attribute,
  41. message: errorMessage
  42. });
  43. }
  44. };
  45. }
  46. };
  47. module.exports = exports.default;