UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

38 lines (37 loc) 2.01 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 ArrowDropDown_1 = __importDefault(require("@mui/icons-material/ArrowDropDown")); const material_1 = require("@mui/material"); const mobx_react_1 = require("mobx-react"); const mui_1 = require("tss-react/mui"); const Menu_1 = __importDefault(require("./Menu")); const useStyles = (0, mui_1.makeStyles)()(theme => ({ buttonRoot: { '&:hover': { backgroundColor: (0, material_1.alpha)(theme.palette.primary.contrastText, theme.palette.action.hoverOpacity), '@media (hover: none)': { backgroundColor: 'transparent', }, }, }, })); const DropDownMenu = (0, mobx_react_1.observer)(function ({ menuTitle, session, menuItems, }) { const [open, setOpen] = (0, react_1.useState)(false); const anchorEl = (0, react_1.useRef)(null); const { classes } = useStyles(); function handleClose() { setOpen(false); } return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)(material_1.Button, { ref: anchorEl, color: "inherit", "data-testid": "dropDownMenuButton", classes: { root: classes.buttonRoot }, onClick: () => { setOpen(!open); }, children: [menuTitle, (0, jsx_runtime_1.jsx)(ArrowDropDown_1.default, {})] }), open ? ((0, jsx_runtime_1.jsx)(Menu_1.default, { open: true, anchorEl: anchorEl.current, anchorOrigin: { vertical: 'bottom', horizontal: 'left' }, onClose: handleClose, menuItems: typeof menuItems === 'function' ? menuItems() : menuItems, onMenuItemClick: (_event, callback) => { callback(session); handleClose(); } })) : null] })); }); exports.default = DropDownMenu;