"use client" import * as React from "react" 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 { ProcurementItem } from "@/db/schema/items" import { removeProcurementItems } from "../service" interface DeleteProcurementItemsDialogProps extends React.ComponentPropsWithoutRef { procurementItems: ProcurementItem[] showTrigger?: boolean onSuccess?: () => void } export function DeleteProcurementItemsDialog({ procurementItems, showTrigger = true, onSuccess, ...props }: DeleteProcurementItemsDialogProps) { const [isDeletePending, startDeleteTransition] = React.useTransition() const isDesktop = useMediaQuery("(min-width: 640px)") function onDelete() { startDeleteTransition(async () => { const { error } = await removeProcurementItems({ ids: procurementItems.map((item) => item.id), }) if (error) { toast.error(error) return } props.onOpenChange?.(false) toast.success("품목이 성공적으로 삭제되었습니다.") onSuccess?.() }) } if (isDesktop) { return ( {showTrigger ? ( ) : null} 정말로 삭제하시겠습니까? 이 작업은 실행 취소할 수 없습니다. 선택한{" "} {procurementItems.length}개 품목을 서버에서 영구적으로 삭제합니다. ) } return ( {showTrigger ? ( ) : null} 정말로 삭제하시겠습니까? 이 작업은 실행 취소할 수 없습니다. 선택한{" "} {procurementItems.length}개 품목을 서버에서 영구적으로 삭제합니다. ) }