Files
mes-budgets-participatifs/src/components/DeletePropositionModal.tsx
Yannick Le Duc dc388bf371 refactoring majeur (code dupliqué, mort, ...)
- Économie : ~1240 lignes de code dupliqué
- Réduction : ~60% du code modal
- Amélioration : Cohérence et maintenabilité
2025-08-27 12:45:37 +02:00

46 lines
1.5 KiB
TypeScript

'use client';
import { propositionService } from '@/lib/services';
import { Proposition } from '@/types';
import { DeleteModal } from './base/DeleteModal';
interface DeletePropositionModalProps {
isOpen: boolean;
onClose: () => void;
onSuccess: () => void;
proposition: Proposition | null;
}
export default function DeletePropositionModal({ isOpen, onClose, onSuccess, proposition }: DeletePropositionModalProps) {
if (!proposition) return null;
const handleDelete = async () => {
await propositionService.delete(proposition.id);
onSuccess();
};
return (
<DeleteModal
isOpen={isOpen}
onClose={onClose}
onConfirm={handleDelete}
title="Supprimer la proposition"
description="Cette action est irréversible. La proposition sera définitivement supprimée."
itemName="Proposition"
itemDetails={
<>
<p className="text-sm text-slate-600 dark:text-slate-300">
<strong>Titre :</strong> {proposition.title}
</p>
<p className="text-sm text-slate-600 dark:text-slate-300">
<strong>Auteur :</strong> {proposition.author_first_name} {proposition.author_last_name}
</p>
<p className="text-sm text-slate-600 dark:text-slate-300">
<strong>Email :</strong> {proposition.author_email}
</p>
</>
}
warningMessage="Cette action supprimera également tous les votes associés à cette proposition."
/>
);
}