@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
38 lines (37 loc) • 2.01 kB
JavaScript
;
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;