@react-md/menu
Version:
Create menus that auto-position themselves within the viewport and adhere to the accessibility guidelines
28 lines • 1.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useMenuClick = void 0;
var react_1 = require("react");
var utils_1 = require("@react-md/utils");
/**
* This hook is used to create a click handler on the menu that will close the
* menu when any `MenuItem` is clicked.
*/
function useMenuClick(_a) {
var onClick = _a.onClick, onRequestClose = _a.onRequestClose;
var cache = utils_1.useRefCache({ onClick: onClick, onRequestClose: onRequestClose });
return react_1.useCallback(function (event) {
var _a = cache.current, onClick = _a.onClick, onRequestClose = _a.onRequestClose;
if (onClick) {
onClick(event);
}
var target = event.target;
if (!target ||
(event.currentTarget !== target && !target.closest("[aria-haspopup]"))) {
onRequestClose();
}
// disabled since useRefCache
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
}
exports.useMenuClick = useMenuClick;
//# sourceMappingURL=useMenuClick.js.map