← full-stack-fastapi-template  /  frontend/src/components/Items/ItemActionsMenu.tsx

1
import { EllipsisVertical } from "lucide-react"
2
import { useState } from "react"
3
4
import type { ItemPublic } from "@/client"
5
import { Button } from "@/components/ui/button"
6
import {
7
  DropdownMenu,
8
  DropdownMenuContent,
9
  DropdownMenuTrigger,
10
} from "@/components/ui/dropdown-menu"
11
import DeleteItem from "../Items/DeleteItem"
12
import EditItem from "../Items/EditItem"
13
14
interface ItemActionsMenuProps {
15
  item: ItemPublic
16
}
17
18
export const ItemActionsMenu = ({ item }: ItemActionsMenuProps) => {
19
  const [open, setOpen] = useState(false)
20
21
  return (
22
    <DropdownMenu open={open} onOpenChange={setOpen}>
23
      <DropdownMenuTrigger asChild>
24
        <Button variant="ghost" size="icon">
25
          <EllipsisVertical />
26
        </Button>
27
      </DropdownMenuTrigger>
28
      <DropdownMenuContent align="end">
29
        <EditItem item={item} onSuccess={() => setOpen(false)} />
30
        <DeleteItem id={item.id} onSuccess={() => setOpen(false)} />
31
      </DropdownMenuContent>
32
    </DropdownMenu>
33
  )
34
}
35