mirror of
https://github.com/ForFarmTeam/ForFarm.git
synced 2025-12-19 14:04:08 +01:00
70 lines
2.0 KiB
TypeScript
70 lines
2.0 KiB
TypeScript
import { useState } from "react";
|
|
import {
|
|
Dialog,
|
|
DialogTrigger,
|
|
DialogContent,
|
|
DialogTitle,
|
|
DialogDescription,
|
|
DialogFooter,
|
|
} from "@/components/ui/dialog";
|
|
import { Button } from "@/components/ui/button";
|
|
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
import { deleteInventoryItem } from "@/api/inventory";
|
|
|
|
export function DeleteInventoryItem({ id }: { id: string }) {
|
|
const [open, setOpen] = useState(false);
|
|
const queryClient = useQueryClient();
|
|
|
|
const { mutate: deleteItem, status } = useMutation({
|
|
mutationFn: deleteInventoryItem,
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: ["inventoryItems"] });
|
|
},
|
|
onError: (error) => {
|
|
console.error("Failed to delete item:", error);
|
|
},
|
|
});
|
|
|
|
const handleDelete = () => {
|
|
deleteItem(id.toString());
|
|
};
|
|
|
|
return (
|
|
<div>
|
|
{/* delete confirmation dialog */}
|
|
<Dialog open={open} onOpenChange={setOpen}>
|
|
<DialogTrigger asChild>
|
|
<Button
|
|
type="button"
|
|
className="bg-red-500 hover:bg-red-800 text-white"
|
|
>
|
|
Delete Item
|
|
</Button>
|
|
</DialogTrigger>
|
|
<DialogContent className="sm:max-w-[425px]">
|
|
<DialogTitle>Confirm Deletion</DialogTitle>
|
|
<DialogDescription>
|
|
Are you sure you want to delete this item? This action cannot be
|
|
undone.
|
|
</DialogDescription>
|
|
<DialogFooter>
|
|
<Button
|
|
className="bg-gray-500 hover:bg-gray-700 text-white"
|
|
onClick={() => setOpen(false)}
|
|
>
|
|
Cancel
|
|
</Button>
|
|
<Button
|
|
className="bg-red-600 hover:bg-red-800 text-white"
|
|
onClick={handleDelete}
|
|
disabled={status === "pending"}
|
|
>
|
|
{status === "pending" ? "Deleting..." : "Delete"}
|
|
</Button>
|
|
</DialogFooter>
|
|
</DialogContent>
|
|
</Dialog>
|
|
</div>
|
|
);
|
|
}
|