From c8b824d01fe51af690f1d3b82decc099aeec5d0f Mon Sep 17 00:00:00 2001 From: THIS ONE IS A LITTLE BIT TRICKY KRUB Date: Tue, 1 Apr 2025 21:05:33 +0700 Subject: [PATCH] feat: enhance AddInventoryItem component with inventory categories, statuses, and units --- .../inventory/add-inventory-item.tsx | 118 +++++++++++++----- frontend/app/(sidebar)/inventory/page.tsx | 6 +- 2 files changed, 90 insertions(+), 34 deletions(-) diff --git a/frontend/app/(sidebar)/inventory/add-inventory-item.tsx b/frontend/app/(sidebar)/inventory/add-inventory-item.tsx index 448097c..90054d7 100644 --- a/frontend/app/(sidebar)/inventory/add-inventory-item.tsx +++ b/frontend/app/(sidebar)/inventory/add-inventory-item.tsx @@ -18,7 +18,11 @@ import { } 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 { + Popover, + PopoverContent, + PopoverTrigger, +} from "@/components/ui/popover"; import { Select, SelectContent, @@ -30,16 +34,31 @@ import { } from "@/components/ui/select"; import { cn } from "@/lib/utils"; import { createInventoryItem } from "@/api/inventory"; -import type { CreateInventoryItemInput } from "@/types"; +import type { + CreateInventoryItemInput, + InventoryItemStatus, + InventoryItemCategory, + HarvestUnits, +} from "@/types"; -export function AddInventoryItem() { +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 [itemType, setItemType] = useState(""); const [itemCategory, setItemCategory] = useState(""); const [itemQuantity, setItemQuantity] = useState(0); const [itemUnit, setItemUnit] = useState(""); + const [itemStatus, setItemStatus] = useState(""); const queryClient = useQueryClient(); @@ -50,7 +69,6 @@ export function AddInventoryItem() { queryClient.invalidateQueries({ queryKey: ["inventoryItems"] }); // Reset form fields and close dialog. setItemName(""); - setItemType(""); setItemCategory(""); setItemQuantity(0); setItemUnit(""); @@ -61,10 +79,9 @@ export function AddInventoryItem() { const handleSave = () => { // Basic validation (you can extend this as needed) - if (!itemName || !itemType || !itemCategory || !itemUnit) return; + if (!itemName || !itemCategory || !itemUnit) return; mutation.mutate({ name: itemName, - type: itemType, category: itemCategory, quantity: itemQuantity, unit: itemUnit, @@ -79,43 +96,61 @@ export function AddInventoryItem() { Add Inventory Item - Add a new plantation or fertilizer item to your inventory. + + Add a new plantation or fertilizer item to your inventory. +
- setItemName(e.target.value)} /> + setItemName(e.target.value)} + />
- - Type - Plantation - Fertilizer + Category + {inventoryCategory.map((categoryItem, _) => ( + + {categoryItem.name} + + ))}
-
-
diff --git a/frontend/app/(sidebar)/inventory/page.tsx b/frontend/app/(sidebar)/inventory/page.tsx index ce7d78f..96444ad 100644 --- a/frontend/app/(sidebar)/inventory/page.tsx +++ b/frontend/app/(sidebar)/inventory/page.tsx @@ -221,7 +221,11 @@ export default function InventoryPage() { value={searchTerm} onChange={(e) => setSearchTerm(e.target.value)} /> - +