"use client" import * as React from "react" import { Loader, Trash } from "lucide-react" import { toast } from "sonner" import { Button } from "@/components/ui/button" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { type ApprovalTemplate } from "@/lib/approval-template/service" import { deleteApprovalTemplate } from "../service" interface DeleteApprovalTemplateDialogProps extends React.ComponentPropsWithRef { templates: ApprovalTemplate[] showTrigger?: boolean onSuccess?: () => void } export function DeleteApprovalTemplateDialog({ templates, showTrigger = true, onSuccess, ...props }: DeleteApprovalTemplateDialogProps) { const [isDeletePending, startDeleteTransition] = React.useTransition() const isMultiple = templates.length > 1 const templateName = isMultiple ? `${templates.length}개 템플릿` : templates[0]?.name function onDelete() { startDeleteTransition(async () => { if (templates.length === 0) return // 여러 개면 순차 삭제 (간단히 처리) for (const t of templates) { const result = await deleteApprovalTemplate(t.id) if (result.error) { toast.error(result.error) return } } props.onOpenChange?.(false) onSuccess?.() toast.success( isMultiple ? `${templates.length}개 템플릿이 삭제되었습니다` : "템플릿이 삭제되었습니다", ) // 새로고침으로 반영 window.location.reload() }) } return ( {showTrigger && ( )} 템플릿 삭제 확인 정말로 {templateName}을(를) 삭제하시겠습니까? {!isMultiple && ( <>
이 작업은 되돌릴 수 없습니다. )}
{templates.length > 0 && (

삭제될 템플릿

{templates.map((t) => (
{t.name}
ID: {t.id}
))}
)}
) }