UNPKG

@mskcc/carbon-react

Version:

Carbon react components for the MSKCC DSM

49 lines (43 loc) 1.21 kB
/** * MSKCC 2021, 2024 */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); /** * @param {Element|Document|Window|object} [trigger=document] The element or ref which should trigger the Menu on right-click * @returns {object} Props object to pass onto Menu component */ function useContextMenu() { let trigger = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document; const [open, setOpen] = React.useState(false); const [position, setPosition] = React.useState([0, 0]); function openContextMenu(e) { e.preventDefault(); const { x, y } = e; setPosition([x, y]); setOpen(true); } function onClose() { setOpen(false); } React.useEffect(() => { const el = trigger?.current ?? trigger; if (el && el instanceof Element || el instanceof Document || el instanceof Window) { el.addEventListener('contextmenu', openContextMenu); return () => { el.removeEventListener('contextmenu', openContextMenu); }; } }, [trigger]); return { open, x: position[0], y: position[1], onClose }; } exports["default"] = useContextMenu;