import ods/xls en + de csv

fix modal behavior on close, fine tune import file modal
This commit is contained in:
Yannick Le Duc
2025-08-26 09:29:56 +02:00
parent 1730d77b2c
commit 4119875f48
11 changed files with 608 additions and 51 deletions

View File

@@ -7,7 +7,7 @@ import { campaignService, participantService, voteService } from '@/lib/services
import AddParticipantModal from '@/components/AddParticipantModal';
import EditParticipantModal from '@/components/EditParticipantModal';
import DeleteParticipantModal from '@/components/DeleteParticipantModal';
import ImportCSVModal from '@/components/ImportCSVModal';
import ImportFileModal from '@/components/ImportFileModal';
import SendParticipantEmailModal from '@/components/SendParticipantEmailModal';
import { Button } from '@/components/ui/button';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
@@ -166,7 +166,7 @@ function CampaignParticipantsPageContent() {
<div className="flex gap-2">
<Button variant="outline" onClick={() => setShowImportModal(true)}>
<Upload className="w-4 h-4 mr-2" />
Importer CSV
Importer
</Button>
<Button onClick={() => setShowAddModal(true)} size="lg">
Nouveau participant
@@ -409,7 +409,7 @@ function CampaignParticipantsPageContent() {
/>
)}
<ImportCSVModal
<ImportFileModal
isOpen={showImportModal}
onClose={() => setShowImportModal(false)}
onImport={handleImportParticipants}

View File

@@ -7,7 +7,7 @@ import { campaignService, propositionService } from '@/lib/services';
import AddPropositionModal from '@/components/AddPropositionModal';
import EditPropositionModal from '@/components/EditPropositionModal';
import DeletePropositionModal from '@/components/DeletePropositionModal';
import ImportCSVModal from '@/components/ImportCSVModal';
import ImportFileModal from '@/components/ImportFileModal';
import { Button } from '@/components/ui/button';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
import { Badge } from '@/components/ui/badge';
@@ -154,7 +154,7 @@ function CampaignPropositionsPageContent() {
<div className="flex gap-2">
<Button variant="outline" onClick={() => setShowImportModal(true)}>
<Upload className="w-4 h-4 mr-2" />
Importer CSV
Importer
</Button>
<Button onClick={() => setShowAddModal(true)} size="lg">
Nouvelle proposition
@@ -323,7 +323,7 @@ function CampaignPropositionsPageContent() {
/>
)}
<ImportCSVModal
<ImportFileModal
isOpen={showImportModal}
onClose={() => setShowImportModal(false)}
onImport={handleImportPropositions}

View File

@@ -362,7 +362,7 @@ function CampaignStatsPageContent() {
<div key={stat.proposition.id} className="border rounded-lg p-6 hover:bg-slate-50 dark:hover:bg-slate-800 transition-colors">
<div className="flex items-start justify-between mb-4">
<div className="flex-1">
<div className="flex items-center gap-3 mb-2">
<div className="flex items-center gap-3 mb-4">
<Badge variant="outline" className="text-xs">
#{index + 1}
</Badge>
@@ -370,9 +370,6 @@ function CampaignStatsPageContent() {
{stat.proposition.title}
</h3>
</div>
<p className="text-slate-600 dark:text-slate-300 text-sm">
{stat.proposition.description}
</p>
</div>
{index === 0 && stat.averageAmount > 0 && (
<Badge className="bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200">