"use client" import * as React from "react" 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 { deleteGtcDocuments } from "@/lib/gtc-contract/service" import { type GtcDocumentWithRelations } from "@/db/schema/gtc" interface DeleteGtcDocumentsDialogProps extends React.ComponentPropsWithoutRef { gtcDocuments: Row["original"][] showTrigger?: boolean onSuccess?: () => void } export function DeleteGtcDocumentsDialog({ gtcDocuments, showTrigger = true, onSuccess, ...props }: DeleteGtcDocumentsDialogProps) { const [isDeletePending, startDeleteTransition] = React.useTransition() const isDesktop = useMediaQuery("(min-width: 640px)") function onDelete() { startDeleteTransition(async () => { const { error } = await deleteGtcDocuments({ ids: gtcDocuments.map((doc) => doc.id), }) if (error) { toast.error(error) return } props.onOpenChange?.(false) toast.success( `${gtcDocuments.length}개의 GTC 문서가 삭제되었습니다.` ) onSuccess?.() }) } const title = "Are you absolutely sure?" const description = ( <> 이 작업은 되돌릴 수 없습니다. 선택된{" "} {gtcDocuments.length}개의 GTC 문서가 영구적으로 삭제됩니다. {gtcDocuments.length > 0 && (
삭제될 문서:
    {gtcDocuments.slice(0, 5).map((doc) => (
  • • {doc.fileName} (v{doc.revision})
  • ))} {gtcDocuments.length > 5 && (
  • ... 외 {gtcDocuments.length - 5}개
  • )}
)} ) if (isDesktop) { return ( {showTrigger ? ( ) : null} {title} {description} ) } return ( {showTrigger ? ( ) : null} {title} {description} ) }