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

77 lines
1.8 KiB
TypeScript
Raw Normal View History

2024-03-08 14:58:36 +01:00
import React from 'react'
import {
Button,
Menu,
MenuButton,
MenuItem,
MenuList,
useDisclosure,
} from '@chakra-ui/react'
import { BsThreeDotsVertical } from 'react-icons/bs'
import { FiEdit, FiTrash } from 'react-icons/fi'
2024-03-08 14:58:36 +01:00
import EditUser from '../Admin/EditUser'
import EditItem from '../Items/EditItem'
import Delete from './DeleteAlert'
import { ItemOut, UserOut } from '../../client'
interface ActionsMenuProps {
2024-03-08 14:58:36 +01:00
type: string
value: ItemOut | UserOut
disabled?: boolean
}
const ActionsMenu: React.FC<ActionsMenuProps> = ({ type, value, disabled }) => {
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>
{type === 'User' ? (
<EditUser
user={value as UserOut}
isOpen={editUserModal.isOpen}
onClose={editUserModal.onClose}
/>
) : (
<EditItem
item={value as ItemOut}
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