@ntragas/pouncejstest
Version:
A collection of UI components from Panther labs
38 lines (29 loc) • 1.01 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var useEscapeKey = function useEscapeKey(_ref) {
var ref = _ref.ref,
callback = _ref.callback,
_ref$disabled = _ref.disabled,
disabled = _ref$disabled === void 0 ? false : _ref$disabled;
var listener = _react.default.useCallback(function (event) {
var _ref$current;
if (event.key === 'Escape' && ((_ref$current = ref.current) == null ? void 0 : _ref$current.contains(event.target))) {
callback(event);
}
}, [callback, ref]);
_react.default.useEffect(function () {
if (!disabled) {
window.addEventListener('keydown', listener);
}
return function () {
if (!disabled) {
window.removeEventListener('keydown', listener);
}
};
}, [disabled, listener]);
};
var _default = useEscapeKey;
exports.default = _default;