"use client"; import * as React from "react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, DialogClose } from "@/components/ui/dialog"; import { Drawer, DrawerTrigger, DrawerContent, DrawerHeader, DrawerTitle, DrawerDescription, DrawerFooter, DrawerClose } from "@/components/ui/drawer"; import { Trash, Loader } from "lucide-react"; import { useMediaQuery } from "@/hooks/use-media-query"; import { deleteGeneralEvaluations } from "@/lib/general-check-list/service"; import { toast } from "sonner"; import { useRouter } from "next/navigation"; export function DeleteEvaluationsDialog({ evaluations, showTrigger = true, onSuccess, ...props }: { evaluations: { id: number; serialNumber: string }[]; showTrigger?: boolean; onSuccess?: () => void; open?: boolean; onOpenChange?: (v: boolean) => void; }) { const [pending, startTransition] = React.useTransition(); const isDesktop = useMediaQuery("(min-width:640px)"); const router = useRouter(); const deleteText = evaluations.length === 1 ? "항목" : "항목들"; const handleDelete = () => { startTransition(async () => { const res = await deleteGeneralEvaluations(evaluations.map((e) => e.id)); if (res.success) { toast.success(res.message); router.refresh(); props.onOpenChange?.(false); onSuccess?.(); } else { toast.error(res.message); } }); }; const Content = ( <> 삭제 확인 선택된 {evaluations.length}개의 {deleteText}을(를) 삭제합니다. 이 작업은 되돌릴 수 없습니다. ); if (isDesktop) { return ( {showTrigger && ( )} {Content} ); } // Mobile Drawer return ( {showTrigger && ( )} 삭제 확인 선택된 {evaluations.length}개의 {deleteText}을(를) 삭제합니다. 이 작업은 되돌릴 수 없습니다. ); }