From f9aa8f7838c480ce22c360f1016dac96062feb62 Mon Sep 17 00:00:00 2001 From: Manus Date: Fri, 9 Jan 2026 11:45:27 -0500 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Corrections=20des=20erreurs=20Typ?= =?UTF-8?q?eScript=20bloquantes=20pour=20la=20publication=20:=20-=20Ajout?= =?UTF-8?q?=20du=20champ=20formateur=20(number=20|=20null)=20dans=20le=20t?= =?UTF-8?q?ype=20FormData=20de=20AdminSequences.tsx=20-=20Ajout=20du=20typ?= =?UTF-8?q?e=20"tous"=20dans=20publicCible=20pour=20supporter=20toutes=20l?= =?UTF-8?q?es=20valeurs=20possibles=20-=20Correction=20de=20FormateurCombo?= =?UTF-8?q?box=20pour=20accepter=20number=20|=20null=20au=20lieu=20de=20st?= =?UTF-8?q?ring=20-=20Correction=20des=20erreurs=20null=20dans=20Questionn?= =?UTF-8?q?aireReponse.tsx=20avec=20optional=20chaining=20-=20Correction?= =?UTF-8?q?=20du=20type=20previewType=20dans=20AdminSequenceInscrits.tsx?= =?UTF-8?q?=20pour=20inclure=20"rappel=5Fj1"=20-=20Build=20de=20production?= =?UTF-8?q?=20test=C3=A9=20et=20fonctionnel=20(=E2=9C=93=20built=20in=2014?= =?UTF-8?q?.69s)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les quelques avertissements TypeScript restants (11) ne bloquent pas le build de production. L'application peut maintenant être publiée. --- client/src/components/FormateurCombobox.tsx | 12 ++++++------ client/src/pages/AdminSequenceInscrits.tsx | 2 +- client/src/pages/AdminSequences.tsx | 6 ++++-- client/src/pages/QuestionnaireReponse.tsx | 4 ++-- todo.md | 4 ++++ 5 files changed, 17 insertions(+), 11 deletions(-) diff --git a/client/src/components/FormateurCombobox.tsx b/client/src/components/FormateurCombobox.tsx index 891312a..6378f92 100644 --- a/client/src/components/FormateurCombobox.tsx +++ b/client/src/components/FormateurCombobox.tsx @@ -29,8 +29,8 @@ import { trpc } from "@/lib/trpc"; import { toast } from "sonner"; interface FormateurComboboxProps { - value?: string | null; - onChange: (value: string) => void; + value?: string | number | null; + onChange: (value: number | null) => void; placeholder?: string; } @@ -64,7 +64,7 @@ export default function FormateurCombobox({ createMutation.mutate({ nom: newFormateurNom.trim() }); }; - const selectedFormateur = formateurs?.find((f) => f.id.toString() === value); + const selectedFormateur = formateurs?.find((f) => f.id === value || f.id.toString() === value?.toString()); return ( <> @@ -90,15 +90,15 @@ export default function FormateurCombobox({ { - onChange(currentValue === value ? "" : currentValue); + onSelect={() => { + onChange(value === formateur.id ? null : formateur.id); setOpen(false); }} > {formateur.nom} diff --git a/client/src/pages/AdminSequenceInscrits.tsx b/client/src/pages/AdminSequenceInscrits.tsx index 39b1f1b..d1c9cfb 100644 --- a/client/src/pages/AdminSequenceInscrits.tsx +++ b/client/src/pages/AdminSequenceInscrits.tsx @@ -49,7 +49,7 @@ export default function AdminSequenceInscrits() { const [filterFonction, setFilterFonction] = useState("all"); const [sortBy, setSortBy] = useState<"date" | "nom">("date"); const [showPreviewModal, setShowPreviewModal] = useState(false); - const [previewType, setPreviewType] = useState<"teaser" | "rappel">("teaser"); + const [previewType, setPreviewType] = useState<"teaser" | "rappel" | "rappel_j1">("teaser"); const utils = trpc.useUtils(); const { data: sequence, isLoading: loadingSequence } = trpc.sequences.getById.useQuery({ id: sequenceId }); diff --git a/client/src/pages/AdminSequences.tsx b/client/src/pages/AdminSequences.tsx index f3acd7c..4a92b62 100644 --- a/client/src/pages/AdminSequences.tsx +++ b/client/src/pages/AdminSequences.tsx @@ -38,10 +38,11 @@ export default function AdminSequences() { formationId: "", nom: "", lieu: "", - publicCible: "autre" as "directeur" | "chef_service" | "autre", + publicCible: "autre" as "directeur" | "chef_service" | "autre" | "tous", capaciteMax: "12", dateBlocage: "", statut: "ouverte" as "ouverte" | "bloquee" | "terminee", + formateur: null as number | null, dates: [ { dateDebut: "", dateFin: "", ordre: 1 } ] as DateFormation[], @@ -95,6 +96,7 @@ export default function AdminSequences() { capaciteMax: "12", dateBlocage: "", statut: "ouverte", + formateur: null, dates: [{ dateDebut: "", dateFin: "", ordre: 1 }], }); }; @@ -183,7 +185,7 @@ export default function AdminSequences() { capaciteMax: parseInt(formData.capaciteMax), dateBlocage: convertLocalToUTC(formData.dateBlocage), statut: formData.statut, - formateurId: formData.formateur ? parseInt(formData.formateur) : null, + formateurId: formData.formateur, dates: formData.dates.map(d => ({ ...d, dateDebut: convertLocalToUTC(d.dateDebut), diff --git a/client/src/pages/QuestionnaireReponse.tsx b/client/src/pages/QuestionnaireReponse.tsx index 10707b7..8aa9f50 100644 --- a/client/src/pages/QuestionnaireReponse.tsx +++ b/client/src/pages/QuestionnaireReponse.tsx @@ -113,8 +113,8 @@ export default function QuestionnaireReponse() { {APP_LOGO && ( {APP_TITLE} )} -

{data.questionnaire.nom}

- {data.questionnaire.description && ( +

{data.questionnaire?.nom || 'Questionnaire'}

+ {data.questionnaire?.description && (

{data.questionnaire.description}

)} diff --git a/todo.md b/todo.md index 649e9ae..2d1ec21 100644 --- a/todo.md +++ b/todo.md @@ -632,3 +632,7 @@ ## Bug à corriger - [x] Corriger l'affichage du menu latéral pour les formateurs (menu invisible actuellement) + +## Erreurs TypeScript à corriger pour publication +- [x] Corriger l'erreur dans AdminSequences.tsx (propriété formateur manquante) +- [x] Corriger les erreurs dans QuestionnaireReponse.tsx (questionnaire possibly null)