diff --git a/frontend/src/pages/Admin.jsx b/frontend/src/pages/Admin.jsx
index 2d9d11b..8bba6cb 100644
--- a/frontend/src/pages/Admin.jsx
+++ b/frontend/src/pages/Admin.jsx
@@ -146,14 +146,14 @@ export default function Admin({ isMobile = false }) {
// 파일 상태: { name, status: 'pending' | 'processing' | 'success' | 'error', error?: string, progress?: number }
const [pendingFiles, setPendingFiles] = useState([]);
const [isModListExpanded, setIsModListExpanded] = useState(false); // 등록된 모드 목록 펼치기/접기
- const [deleteModDialog, setDeleteModDialog] = useState({ show: false, modId: null }); // 모드 삭제 확인 다이얼로그
+ const [deleteModDialog, setDeleteModDialog] = useState({ show: false, modId: null, loading: false }); // 모드 삭제 확인 다이얼로그
const [clearingFiles, setClearingFiles] = useState(false); // 완료 항목 삭제 중 (애니메이션용)
// 아이콘 관리 상태
const [iconMods, setIconMods] = useState([]); // 등록된 아이콘 모드 목록
const [iconUploading, setIconUploading] = useState(false);
const [isIconDragging, setIsIconDragging] = useState(false);
- const [deleteIconDialog, setDeleteIconDialog] = useState({ show: false, modId: null });
+ const [deleteIconDialog, setDeleteIconDialog] = useState({ show: false, modId: null, loading: false });
const [isIconListExpanded, setIsIconListExpanded] = useState(false);
const [pendingIconFiles, setPendingIconFiles] = useState([]); // 아이콘 파일 대기열
const [clearingIconFiles, setClearingIconFiles] = useState(false);
@@ -2103,7 +2103,7 @@ export default function Admin({ isMobile = false }) {
{/* 업로드 버튼 */}
- {pendingFiles.some(f => f.status === 'pending') && (
+ {(pendingFiles.some(f => f.status === 'pending') || translationLoading) && (
setDeleteIconDialog({ show: false, modId: null })}
- className="flex-1 py-2.5 bg-zinc-800 hover:bg-zinc-700 text-white font-medium rounded-xl transition-colors"
+ onClick={() => setDeleteIconDialog({ show: false, modId: null, loading: false })}
+ disabled={deleteIconDialog.loading}
+ className="flex-1 py-2.5 bg-zinc-800 hover:bg-zinc-700 disabled:opacity-50 text-white font-medium rounded-xl transition-colors"
>
취소
{
+ setDeleteIconDialog(prev => ({ ...prev, loading: true }));
await deleteIconMod(deleteIconDialog.modId);
- setDeleteIconDialog({ show: false, modId: null });
+ setDeleteIconDialog({ show: false, modId: null, loading: false });
}}
- className="flex-1 py-2.5 bg-red-600 hover:bg-red-500 text-white font-medium rounded-xl transition-colors"
+ disabled={deleteIconDialog.loading}
+ className="flex-1 py-2.5 bg-red-600 hover:bg-red-500 disabled:bg-red-800 text-white font-medium rounded-xl transition-colors flex items-center justify-center gap-2"
>
- 삭제
+ {deleteIconDialog.loading ? (
+ <>
+
+ 삭제 중...
+ >
+ ) : '삭제'}