import { Button, Modal, Tooltip, Typography, message, theme } from 'antd'; import { type ReactNode, useState } from 'react'; import { ApiError } from '../../api/client'; import { removeFile } from '../../services/api/files'; import type { DocumentRow } from './documentRows'; const { Text } = Typography; const OptionCard = ({ title, detail, action }: { title: string; detail: string; action: ReactNode }) => { const { token } = theme.useToken(); return (
{title} {detail}
{action}
); }; type DeleteReasonModalProps = { targetRow: DocumentRow; open: boolean; onCancel: () => void; /** файл удалён — обновить список */ onDelete: () => void; onReplace: () => void; /** замена = загрузка нового файла: только в версии в работе, как кнопка «Загрузить документы» */ canReplace: boolean; }; /** Удаление или замена — файлом целиком (`DELETE /files/{file_id}`): уходят все документы файла. */ export default function DeleteReasonModal({ targetRow, open, onCancel, onDelete, onReplace, canReplace }: DeleteReasonModalProps) { const [isDeleting, setIsDeleting] = useState(false); const handleDelete = async () => { setIsDeleting(true); try { await removeFile(targetRow.fileId); message.success('Файл удалён'); onDelete(); } catch (e: unknown) { // 409 — например, в файле подтверждённый документ; сервер объясняет причину message.error(e instanceof ApiError ? e.message : 'Не удалось удалить файл'); } finally { setIsDeleting(false); } }; return (

Выберите причину удаления документа «{targetRow.name}»

Будет удален/заменён сам файл и все его документы

Удалить } /> } />
); }