UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

25 lines (24 loc) 1.51 kB
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime"; import { useEffect, useState } from 'react'; import { IconButton } from '@mui/material'; import CascadingMenu from "./CascadingMenu.js"; function CascadingMenuButton({ children, menuItems, closeAfterItemClick = true, stopPropagation, disabled, setOpen, ButtonComponent = IconButton, onClick: onClickExtra, anchorOrigin, transformOrigin, marginThreshold, ...rest }) { const [anchorEl, setAnchorEl] = useState(null); const open = Boolean(anchorEl); useEffect(() => { setOpen?.(open); }, [open, setOpen]); const isDisabled = disabled ?? (Array.isArray(menuItems) && menuItems.length === 0); return (_jsxs(_Fragment, { children: [_jsx(ButtonComponent, { onClick: event => { if (stopPropagation) { event.stopPropagation(); } setAnchorEl(event.currentTarget); onClickExtra?.(event); }, ...rest, disabled: isDisabled, children: children }), open ? (_jsx(CascadingMenu, { open: open, onClose: () => { setAnchorEl(null); }, anchorEl: anchorEl, anchorOrigin: anchorOrigin, transformOrigin: transformOrigin, marginThreshold: marginThreshold, menuItems: menuItems, closeAfterItemClick: closeAfterItemClick, onMenuItemClick: (_, callback) => { callback(); } })) : null] })); } export default CascadingMenuButton;