"use client"; import { useState } from "react"; import { CalendarIcon } from "lucide-react"; import { format } from "date-fns"; import { useMutation, useQueryClient } from "@tanstack/react-query"; import { Button } from "@/components/ui/button"; import { Calendar } from "@/components/ui/calendar"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { cn } from "@/lib/utils"; import { createInventoryItem } from "@/api/inventory"; import type { CreateInventoryItemInput, InventoryItemStatus, InventoryItemCategory, HarvestUnits, } from "@/types"; interface AddInventoryItemProps { inventoryCategory: InventoryItemCategory[]; inventoryStatus: InventoryItemStatus[]; harvestUnits: HarvestUnits[]; } export function AddInventoryItem({ inventoryCategory, inventoryStatus, harvestUnits, }: AddInventoryItemProps) { const [date, setDate] = useState(); const [open, setOpen] = useState(false); const [itemName, setItemName] = useState(""); const [itemCategory, setItemCategory] = useState(""); const [itemQuantity, setItemQuantity] = useState(0); const [itemUnit, setItemUnit] = useState(""); const [itemStatus, setItemStatus] = useState(""); const queryClient = useQueryClient(); const mutation = useMutation({ mutationFn: (item: CreateInventoryItemInput) => createInventoryItem(item), onSuccess: () => { // Invalidate queries to refresh inventory data. queryClient.invalidateQueries({ queryKey: ["inventoryItems"] }); // Reset form fields and close dialog. setItemName(""); setItemCategory(""); setItemQuantity(0); setItemUnit(""); setDate(undefined); setOpen(false); }, }); const handleSave = () => { // Basic validation (you can extend this as needed) if (!itemName || !itemCategory || !itemUnit) return; mutation.mutate({ name: itemName, category: itemCategory, quantity: itemQuantity, unit: itemUnit, }); }; return ( Add Inventory Item Add a new plantation or fertilizer item to your inventory.
setItemName(e.target.value)} />
setItemQuantity(Number(e.target.value))} />
); }