Files
full-stack-fastapi-template/frontend/src/components/Common/ActionsMenu.tsx

76 lines
1.8 KiB
TypeScript
Raw Normal View History

2024-03-08 14:58:36 +01:00
import {
Button,
Menu,
MenuButton,
MenuItem,
MenuList,
useDisclosure,
2024-03-17 17:28:45 +01:00
} from "@chakra-ui/react"
import { BsThreeDotsVertical } from "react-icons/bs"
import { FiEdit, FiTrash } from "react-icons/fi"
import type { ItemPublic, UserPublic } from "../../client"
2024-03-17 17:28:45 +01:00
import EditUser from "../Admin/EditUser"
import EditItem from "../Items/EditItem"
import Delete from "./DeleteAlert"
interface ActionsMenuProps {
2024-03-08 14:58:36 +01:00
type: string
value: ItemPublic | UserPublic
2024-03-08 14:58:36 +01:00
disabled?: boolean
}
const ActionsMenu = ({ type, value, disabled }: ActionsMenuProps) => {
2024-03-08 14:58:36 +01:00
const editUserModal = useDisclosure()
const deleteModal = useDisclosure()
2024-03-08 14:58:36 +01:00
return (
<>
<Menu>
<MenuButton
isDisabled={disabled}
as={Button}
rightIcon={<BsThreeDotsVertical />}
variant="unstyled"
/>
2024-03-08 14:58:36 +01:00
<MenuList>
<MenuItem
onClick={editUserModal.onOpen}
icon={<FiEdit fontSize="16px" />}
>
Edit {type}
</MenuItem>
<MenuItem
onClick={deleteModal.onOpen}
icon={<FiTrash fontSize="16px" />}
color="ui.danger"
>
Delete {type}
</MenuItem>
</MenuList>
2024-03-17 17:28:45 +01:00
{type === "User" ? (
2024-03-08 14:58:36 +01:00
<EditUser
user={value as UserPublic}
2024-03-08 14:58:36 +01:00
isOpen={editUserModal.isOpen}
onClose={editUserModal.onClose}
/>
) : (
<EditItem
item={value as ItemPublic}
2024-03-08 14:58:36 +01:00
isOpen={editUserModal.isOpen}
onClose={editUserModal.onClose}
/>
)}
<Delete
type={type}
id={value.id}
isOpen={deleteModal.isOpen}
onClose={deleteModal.onClose}
/>
</Menu>
</>
)
}
2024-03-08 14:58:36 +01:00
export default ActionsMenu