import { useState } from 'react'; import Button from '../../components/common/Button'; import ErrorMessage from '../../components/common/ErrorMessage'; import { LIBELLES_REFERENTIEL } from './referentielsConfig'; import styles from './Admin.module.css'; /* Formulaire générique piloté par la description des champs du référentiel (voir referentielsConfig.js) : les 4 onglets partagent ce composant. */ export default function ReferentielForm({ referentiel, valeurInitiale, donnees, onEnregistrer, onAnnuler }) { const [valeurs, setValeurs] = useState(() => Object.fromEntries( referentiel.champs.map(champ => [champ.name, valeurInitiale?.[champ.name] ?? '']) ) ); const [enCours, setEnCours] = useState(false); const [erreur, setErreur] = useState(''); function handleChange(name, valeur) { setValeurs(precedentes => ({ ...precedentes, [name]: valeur })); } async function handleSubmit(event) { event.preventDefault(); setErreur(''); setEnCours(true); try { /* Les identifiants de référentiel arrivent en chaîne depuis handleChange(champ.name, e.target.value)} required={champ.required} > {(donnees[champ.options] || []).map(option => { const { idField, labelField } = LIBELLES_REFERENTIEL[champ.options]; return ( ); })} ) : ( handleChange(champ.name, e.target.value)} required={champ.required} /> )} ))} {erreur && }
); }