pouncejs
Version:
A collection of UI components from Panther labs
28 lines (24 loc) • 779 B
JavaScript
import React from '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.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.useEffect(function () {
if (!disabled) {
window.addEventListener('keydown', listener);
}
return function () {
if (!disabled) {
window.removeEventListener('keydown', listener);
}
};
}, [disabled, listener]);
};
export default useEscapeKey;