UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

30 lines (29 loc) 1.8 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); const CascadingMenu_1 = __importDefault(require("@jbrowse/core/ui/CascadingMenu")); const material_1 = require("@mui/material"); const mobx_react_1 = require("mobx-react"); const hooks_1 = require("./hooks"); const CascadingMenuButton = (0, mobx_react_1.observer)(function CascadingMenuButton({ children, menuItems, closeAfterItemClick = true, stopPropagation, setOpen, onClick: onClickExtra, ...rest }) { const popupState = (0, hooks_1.usePopupState)(); const { onClick, ...rest2 } = (0, hooks_1.bindTrigger)(popupState); const { isOpen } = popupState; (0, react_1.useEffect)(() => { setOpen === null || setOpen === void 0 ? void 0 : setOpen(isOpen); }, [isOpen, setOpen]); return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.IconButton, { onClick: event => { if (stopPropagation) { event.stopPropagation(); } onClick(event); onClickExtra === null || onClickExtra === void 0 ? void 0 : onClickExtra(); }, ...rest2, ...rest, disabled: menuItems.length === 0, children: children }), (0, jsx_runtime_1.jsx)(CascadingMenu_1.default, { ...(0, hooks_1.bindPopover)(popupState), onMenuItemClick: (_, callback) => { callback(); }, menuItems: menuItems, closeAfterItemClick: closeAfterItemClick, popupState: popupState })] })); }); exports.default = CascadingMenuButton;