"use client" import * as React from "react" import { VendorMaterialsView } from "@/db/schema/vendors" import { type Row } from "@tanstack/react-table" import { Loader, Trash } from "lucide-react" import { toast } from "sonner" import { useMediaQuery } from "@/hooks/use-media-query" import { Button } from "@/components/ui/button" import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, } from "@/components/ui/drawer" import { removeVendorMaterials } from "../service" interface DeleteVendorItemsDialogProps extends React.ComponentPropsWithoutRef { vendorId: number items: Row["original"][] showTrigger?: boolean onSuccess?: () => void } export function DeleteVendorItemsDialog({ vendorId, items, showTrigger = true, onSuccess, ...props }: DeleteVendorItemsDialogProps) { const [isDeletePending, startDeleteTransition] = React.useTransition() const isDesktop = useMediaQuery("(min-width: 640px)") function onDelete() { startDeleteTransition(async () => { const { error } = await removeVendorMaterials({ itemCodes: items.map((item) => item.itemCode).filter(Boolean) as string[], vendorId, }) if (error) { toast.error(error) return } props.onOpenChange?.(false) toast.success( items.length === 1 ? "Item deleted successfully" : `${items.length} items deleted successfully` ) onSuccess?.() }) } if (isDesktop) { return ( {showTrigger ? ( ) : null} Are you absolutely sure? This action cannot be undone. This will permanently delete{" "} {items.length} {items.length === 1 ? " item" : " items"} from this vendor. {/* 삭제될 아이템 목록 미리보기 */}
{items.map((item, index) => (
{item.itemName} {item.itemCode}
))}
) } return ( {showTrigger ? ( ) : null} Are you absolutely sure? This action cannot be undone. This will permanently delete{" "} {items.length} {items.length === 1 ? " item" : " items"} from this vendor. {/* 삭제될 아이템 목록 미리보기 */}
{items.map((item, index) => (
{item.itemName} {item.itemCode}
))}
) }