import { IconButton, ListItemIcon, ListItemText, Menu, MenuItem, Tooltip } from "@mui/material"; import SettingsIcon from "@mui/icons-material/Settings"; import MoreIcon from "@mui/icons-material/MoreVert"; import React, { useState } from "react"; import ObjectUsersIcon from "@mui/icons-material/AccountCircle"; import ObjectTeamsIcon from "@mui/icons-material/SupervisedUserCircle"; import ObjectUsers from "user/ObjectUsers"; import { pond } from "protobuf-ts/pond"; import { Scope } from "models"; import ObjectTeams from "teams/ObjectTeams"; import RemoveSelfFromObject from "user/RemoveSelfFromObject"; import ShareObject from "user/ShareObject"; import { blue } from "@mui/material/colors"; import RemoveSelfIcon from "@mui/icons-material/ExitToApp"; import { Share } from "@mui/icons-material"; import { GrainBag } from "models/GrainBag"; import GrainBagSettings from "./grainBagSettings"; import { makeStyles } from "@mui/styles"; const useStyles = makeStyles(() => { return ({ shareIcon: { color: blue["500"], "&:hover": { color: blue["600"] } }, removeIcon: { color: "var(--status-alert)" }, red: { color: "var(--status-alert)" }, blueIcon: { color: blue["500"], "&:hover": { color: blue["600"] } } }); }); interface OpenState { users: boolean; teams: boolean; settings: boolean; removeSelf: boolean; share: boolean; } interface Props { grainBag: GrainBag; refreshCallback: (updatedBag: GrainBag) => void; permissions: pond.Permission[]; } export default function GrainBagActions(props: Props) { const classes = useStyles(); const { grainBag, refreshCallback, permissions } = props; const [anchorEl, setAnchorEl] = React.useState(null); const [openState, setOpenState] = useState({ users: false, teams: false, settings: false, removeSelf: false, share: false }); const groupMenu = () => { return ( setAnchorEl(null)} keepMounted disableAutoFocusItem> { setOpenState({ ...openState, share: true }); setAnchorEl(null); }} dense> { setOpenState({ ...openState, users: true }); setAnchorEl(null); }}> { setOpenState({ ...openState, teams: true }); setAnchorEl(null); }}> { setOpenState({ ...openState, removeSelf: true }); setAnchorEl(null); }}> ); }; const dialogs = () => { const key = grainBag.key; const label = grainBag.name(); return ( { if (updatedBag) { refreshCallback(updatedBag); } setOpenState({ ...openState, settings: false }); }} /> setOpenState({ ...openState, share: false })} /> setOpenState({ ...openState, users: false })} refreshCallback={refreshCallback} /> setOpenState({ ...openState, teams: false })} refreshCallback={refreshCallback} /> { setOpenState({ ...openState, removeSelf: false }); }} /> ); }; return ( {permissions.includes(pond.Permission.PERMISSION_WRITE) && ( setOpenState({ ...openState, settings: true })}> )} ) => setAnchorEl(event.currentTarget)}> {dialogs()} {groupMenu()} ); }