Permalink
Cannot retrieve contributors at this time
72 lines (67 sloc)
2.62 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
codeql-action/node_modules/eslint-plugin-jsx-a11y/lib/rules/mouse-events-have-key-events.js
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"use strict"; | |
Object.defineProperty(exports, "__esModule", { | |
value: true | |
}); | |
exports["default"] = void 0; | |
var _ariaQuery = require("aria-query"); | |
var _jsxAstUtils = require("jsx-ast-utils"); | |
var _schemas = require("../util/schemas"); | |
/** | |
* @fileoverview Enforce onmouseover/onmouseout are | |
* accompanied by onfocus/onblur. | |
* @author Ethan Cohen | |
*/ | |
// ---------------------------------------------------------------------------- | |
// Rule Definition | |
// ---------------------------------------------------------------------------- | |
var mouseOverErrorMessage = 'onMouseOver must be accompanied by onFocus for accessibility.'; | |
var mouseOutErrorMessage = 'onMouseOut must be accompanied by onBlur for accessibility.'; | |
var schema = (0, _schemas.generateObjSchema)(); | |
var _default = { | |
meta: { | |
docs: { | |
url: 'https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/mouse-events-have-key-events.md', | |
description: 'Enforce that `onMouseOver`/`onMouseOut` are accompanied by `onFocus`/`onBlur` for keyboard-only users.' | |
}, | |
schema: [schema] | |
}, | |
create: function create(context) { | |
return { | |
JSXOpeningElement: function JSXOpeningElement(node) { | |
var name = node.name.name; | |
if (!_ariaQuery.dom.get(name)) { | |
return; | |
} | |
var attributes = node.attributes; | |
// Check onmouseover / onfocus pairing. | |
var onMouseOver = (0, _jsxAstUtils.getProp)(attributes, 'onMouseOver'); | |
var onMouseOverValue = (0, _jsxAstUtils.getPropValue)(onMouseOver); | |
if (onMouseOver && onMouseOverValue != null) { | |
var hasOnFocus = (0, _jsxAstUtils.getProp)(attributes, 'onFocus'); | |
var onFocusValue = (0, _jsxAstUtils.getPropValue)(hasOnFocus); | |
if (hasOnFocus === false || onFocusValue === null || onFocusValue === undefined) { | |
context.report({ | |
node, | |
message: mouseOverErrorMessage | |
}); | |
} | |
} | |
// Checkout onmouseout / onblur pairing | |
var onMouseOut = (0, _jsxAstUtils.getProp)(attributes, 'onMouseOut'); | |
var onMouseOutValue = (0, _jsxAstUtils.getPropValue)(onMouseOut); | |
if (onMouseOut && onMouseOutValue != null) { | |
var hasOnBlur = (0, _jsxAstUtils.getProp)(attributes, 'onBlur'); | |
var onBlurValue = (0, _jsxAstUtils.getPropValue)(hasOnBlur); | |
if (hasOnBlur === false || onBlurValue === null || onBlurValue === undefined) { | |
context.report({ | |
node, | |
message: mouseOutErrorMessage | |
}); | |
} | |
} | |
} | |
}; | |
} | |
}; | |
exports["default"] = _default; | |
module.exports = exports.default; |