"use client"; import { useState } from "react"; import { CompanyDeleteState } from "@/types/company"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, } from "@/components/ui/dialog"; import { LoadingSpinner } from "@/components/common/LoadingSpinner"; import { AlertTriangle } from "lucide-react"; interface CompanyDeleteDialogProps { deleteState: CompanyDeleteState; isLoading: boolean; error: string | null; onClose: () => void; onConfirm: () => Promise; onClearError: () => void; t?: (key: string, params?: Record) => string; } /** * 회사 삭제 확인 다이얼로그 컴포넌트 */ export function CompanyDeleteDialog({ deleteState, isLoading, error, onClose, onConfirm, onClearError, t, }: CompanyDeleteDialogProps) { const _t = t || ((key: string) => { const defaults: Record = { "company.delete.title": "회사 삭제 확인", "company.delete.description": "선택한 회사를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", "company.delete.companyName": "회사명", "company.delete.companyCode": "회사 코드", "company.delete.writer": "등록자", "company.delete.regdate": "등록일", "company.delete.cancel": "취소", "company.delete.confirm": "삭제", }; return defaults[key] || key; }); const [isDeleting, setIsDeleting] = useState(false); // 다이얼로그가 열려있지 않으면 렌더링하지 않음 if (!deleteState.isOpen || !deleteState.targetCompany) return null; const { targetCompany } = deleteState; // 삭제 확인 처리 const handleConfirm = async () => { setIsDeleting(true); onClearError(); try { const success = await onConfirm(); if (success) { // 성공 시 다이얼로그 닫기 onClose(); } } catch (err) { // 에러는 부모 컴포넌트에서 처리 } finally { setIsDeleting(false); } }; // 취소 처리 const handleCancel = () => { onClearError(); onClose(); }; return ( {_t("company.delete.title")} {_t("company.delete.description")}
{/* 삭제할 회사 정보 표시 */}
{_t("company.delete.companyName")} {targetCompany.company_name}
{_t("company.delete.companyCode")} {targetCompany.company_code}
{_t("company.delete.writer")} {targetCompany.writer}
{_t("company.delete.regdate")} {new Date(targetCompany.regdate).toLocaleDateString("ko-KR", { year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", })}
{/* 경고 메시지 */} {/*

삭제 시 주의사항

• 해당 회사와 연관된 모든 데이터가 함께 삭제될 수 있습니다.
• 삭제된 데이터는 복구할 수 없습니다.
• 신중하게 검토 후 진행해주세요.

*/} {/* 에러 메시지 */} {error && (

{error}

)}
); }