fix: Condition de validation d'ajout d'un nouveau document parent /

remise en forme de l'ajout d'un document école
This commit is contained in:
N3WT DE COMPET
2025-05-06 21:39:16 +02:00
parent f887ae1886
commit 9e69790683
4 changed files with 73 additions and 49 deletions

View File

@ -10,19 +10,21 @@ const Modal = ({
return ( return (
<Dialog.Root open={isOpen} onOpenChange={setIsOpen}> <Dialog.Root open={isOpen} onOpenChange={setIsOpen}>
<Dialog.Portal> <Dialog.Portal>
<Dialog.Overlay className="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity" /> {/* Overlay avec un z-index élevé et un effet de flou */}
<Dialog.Content className="fixed inset-0 flex items-center justify-center p-4"> <Dialog.Overlay className="fixed inset-0 bg-black bg-opacity-50 backdrop-blur-sm z-[9998] transition-opacity" />
<Dialog.Content className="fixed inset-0 flex items-center justify-center p-4 z-[9999]">
<div <div
className={`inline-block bg-white rounded-lg px-6 py-5 text-left shadow-xl transform transition-all sm:my-8 ${modalClassName ? modalClassName : 'min-w-[500px] m-12 w-max max-h-[80vh] h-full'}`} className={`relative bg-white rounded-xl px-8 py-6 text-left shadow-2xl transform transition-all sm:my-8 ${modalClassName ? modalClassName : 'min-w-[500px] max-w-[90%] max-h-[80vh] overflow-auto'}`}
> >
<div className="flex justify-between items-start mb-4"> {/* En-tête de la modale */}
<Dialog.Title className="text-xl font-medium text-gray-900"> <div className="flex justify-between items-center mb-6">
<Dialog.Title className="text-2xl font-semibold text-gray-800">
{title} {title}
</Dialog.Title> </Dialog.Title>
<Dialog.Close asChild> <Dialog.Close asChild>
<button <button
onClick={() => setIsOpen(false)} onClick={() => setIsOpen(false)}
className="text-gray-400 hover:text-gray-500 ml-4 focus:outline-none" className="text-gray-500 hover:text-gray-700 focus:outline-none"
> >
<span className="sr-only">Fermer</span> <span className="sr-only">Fermer</span>
<svg <svg
@ -42,6 +44,8 @@ const Modal = ({
</button> </button>
</Dialog.Close> </Dialog.Close>
</div> </div>
{/* Contenu de la modale */}
<div className="w-full h-full"> <div className="w-full h-full">
<ContentComponent /> <ContentComponent />
</div> </div>

View File

@ -162,41 +162,55 @@ export default function FileUploadDocuSeal({
uniqueConfirmButton={true} uniqueConfirmButton={true}
/> />
{/* Contenu principal */} {/* Contenu principal */}
<div className="grid grid-cols-10 gap-6 items-start"> {selectedGroups.length === 0 ? (
{/* Sélection des groupes */} <div className="flex flex-col items-center justify-center h-full text-center space-y-6">
<div className="col-span-2 bg-white p-4 rounded-lg shadow-md border border-gray-200"> {/* Description de l'étape */}
<h3 className="text-lg font-medium text-gray-800 mb-4"> <p className="text-gray-700 text-base font-medium mb-4">
Dossiers d'inscription Étape 1 - Sélectionner au moins un dossier d'inscription
</h3> </p>
<MultiSelect
name="groups" {/* Section centrée pour la sélection des groupes */}
label="Sélection de dossier(s) d'inscription" <div className="bg-gray-50 p-8 rounded-lg shadow-md border border-gray-300 transform transition-transform hover:scale-105">
options={groups} <h3 className="text-xl font-semibold text-gray-800 mb-4 text-center">
selectedOptions={selectedGroups} Dossiers d'inscription
onChange={handleGroupChange} </h3>
errorMsg={null} <MultiSelect
/> name="groups"
label="Sélection dossier d'inscription"
options={groups}
selectedOptions={selectedGroups}
onChange={handleGroupChange}
errorMsg={null}
className="bg-white rounded-md shadow-inner p-4"
/>
</div>
</div> </div>
) : (
<div className="grid grid-cols-10 gap-6 items-start">
{/* Section Dossiers d'inscription repositionnée sur le côté */}
<div className="col-span-2 bg-white p-4 rounded-lg shadow-md border border-gray-200">
<h3 className="text-lg font-medium text-gray-800 mb-4">
Dossiers d'inscription
</h3>
<MultiSelect
name="groups"
label="Sélection dossier d'inscription"
options={groups}
selectedOptions={selectedGroups}
onChange={handleGroupChange}
errorMsg={null}
/>
</div>
{/* Zone de configuration des documents */} {/* Zone de configuration des documents */}
<div className="col-span-8 bg-white p-6 rounded-lg shadow-md border border-gray-200"> <div className="col-span-8 bg-white p-6 rounded-lg shadow-md border border-gray-200">
{selectedGroups.length === 0 ? ( {token && (
<div className="flex flex-col items-center justify-center h-full text-center space-y-4">
{/* Icône circulaire modernisée */}
<div className="bg-emerald-100 p-6 rounded-full flex items-center justify-center shadow-md">
<div className="w-12 h-12 bg-emerald-200 rounded-full flex items-center justify-center">
<span className="text-emerald-600 font-bold text-2xl">+</span>
</div>
</div>
{/* Message d'information */}
<p className="text-gray-600 text-sm font-medium">
Veuillez sélectionner au moins un groupe pour continuer.
</p>
</div>
) : (
token && (
<div className="h-full overflow-auto"> <div className="h-full overflow-auto">
{/* Description de l'étape */}
<p className="text-gray-700 text-base font-medium mb-4">
Étape 2 - Sélectionnez un document
</p>
<DocusealBuilder <DocusealBuilder
token={token} token={token}
headers={{ headers={{
@ -215,10 +229,10 @@ export default function FileUploadDocuSeal({
style={{ maxHeight: '65vh' }} style={{ maxHeight: '65vh' }}
/> />
</div> </div>
) )}
)} </div>
</div> </div>
</div> )}
</div> </div>
); );
} }

View File

@ -489,9 +489,7 @@ export default function FilesGroupsManagement({
isOpen={isGroupModalOpen} isOpen={isGroupModalOpen}
setIsOpen={setIsGroupModalOpen} setIsOpen={setIsGroupModalOpen}
title={ title={
groupToEdit groupToEdit ? 'Modifier le dossier' : "Création d'un nouveau dossier"
? 'Modifier le groupe'
: 'Ajouter un groupe de schoolFileMasters'
} }
ContentComponent={() => ( ContentComponent={() => (
<RegistrationFileGroupForm <RegistrationFileGroupForm

View File

@ -47,7 +47,18 @@ export default function ParentFilesSection({
const handleSaveDocument = () => { const handleSaveDocument = () => {
if (!formData.name) { if (!formData.name) {
alert('Le nom de la pièce est requis.'); setPopupMessage(
"Attention !\nVeuillez saisir un nom de document pour valider l'opération."
);
setPopupVisible(true);
return;
}
if (selectedGroups.length === 0) {
setPopupMessage(
"Attention !\nVeuillez sélectionner au moins un dossier d'inscription pour valider l'opération"
);
setPopupVisible(true);
setPopupVisible(true);
return; return;
} }
@ -110,7 +121,6 @@ export default function ParentFilesSection({
const handleGroupChange = (selected) => { const handleGroupChange = (selected) => {
setSelectedGroups(selected); setSelectedGroups(selected);
console.log('selected : ', selected);
// Extraire les guardians associés aux register_forms des groupes sélectionnés // Extraire les guardians associés aux register_forms des groupes sélectionnés
const details = selected.flatMap((group) => const details = selected.flatMap((group) =>
@ -123,8 +133,6 @@ export default function ParentFilesSection({
})) }))
) )
); );
console.log('Guardians associés : ', details);
setGuardianDetails(details); // Mettre à jour la variable d'état avec les détails des guardians setGuardianDetails(details); // Mettre à jour la variable d'état avec les détails des guardians
}; };
@ -163,7 +171,7 @@ export default function ParentFilesSection({
return ( return (
<MultiSelect <MultiSelect
name="groups" name="groups"
label="Sélection du(des) dossier(s) d'inscription" label="Sélection dossier d'inscription"
options={groups} options={groups}
selectedOptions={selectedGroups} selectedOptions={selectedGroups}
onChange={handleGroupChange} onChange={handleGroupChange}