diff --git "a/packages/applications/ssr/src/components/pages/laur\303\251at/modifier/ModifierLaur\303\251at.form.tsx" "b/packages/applications/ssr/src/components/pages/laur\303\251at/modifier/ModifierLaur\303\251at.form.tsx" index e9bb04bd08..5bb8f39d65 100644 --- "a/packages/applications/ssr/src/components/pages/laur\303\251at/modifier/ModifierLaur\303\251at.form.tsx" +++ "b/packages/applications/ssr/src/components/pages/laur\303\251at/modifier/ModifierLaur\303\251at.form.tsx" @@ -2,177 +2,27 @@ 'use client'; import Button from '@codegouvfr/react-dsfr/Button'; -import Input from '@codegouvfr/react-dsfr/Input'; -import React, { useState } from 'react'; -import Select from '@codegouvfr/react-dsfr/SelectNext'; +import React from 'react'; import { Routes } from '@potentiel-applications/routes'; -import { Candidature } from '@potentiel-domain/candidature'; import { Heading3 } from '@/components/atoms/headings'; import { Form } from '../../../atoms/form/Form'; import { SubmitButton } from '../../../atoms/form/SubmitButton'; -import { getTechnologieTypeLabel } from '../../candidature/helpers'; import { modifierLauréatAction } from './modifierLauréat.action'; import { ModifierLauréatPageProps } from './ModifierLauréat.page'; - -type FieldProps = { candidature: T; lauréat: T; estEnCoursDeModification?: boolean }; -type ProjectFieldProps = FieldProps & { label: string; name: string }; +import { + ActionnaireField, + ReprésentantLégalField, + TechnologieField, +} from './ModifierLauréatFields'; const FormRow = ({ children }: { children: React.ReactNode }) => (
{children}
); -const ProjectField = ({ - candidature, - lauréat, - label, - name, - estEnCoursDeModification, -}: ProjectFieldProps) => { - const [linked, setLinked] = useState(candidature === lauréat); - const [candidatureValue, setCandidatureValue] = useState(candidature); - const [lauréatValue, setLauréatValue] = useState(lauréat); - - const onButtonClick = () => { - setLinked((l) => !l); - setLauréatValue(candidatureValue); - }; - - return ( -
-
{label}
-
- - { - setCandidatureValue(ev.target.value as T); - if (linked) { - setLauréatValue(ev.target.value as T); - } - }, - }} - /> -
-
- - { - setLauréatValue(ev.target.value as T); - if (linked) { - setCandidatureValue(ev.target.value as T); - } - }, - }} - addon={ -
-
- ); -}; - -const ActionnaireField = ({ - candidature, - lauréat, - estEnCoursDeModification, -}: FieldProps) => { - return ( - - ); -}; - -const ReprésentantLégalField = ({ - candidature, - lauréat, - estEnCoursDeModification, -}: FieldProps) => { - return ( - - ); -}; - -const TechnologieField = ({ candidature, lauréat }: FieldProps) => { - const [candidatureValue, setCandidatureValue] = useState(candidature); - - return ( -
-
Technologie
-
- - -
-
- ); -}; - export type ModifierLauréatFormProps = ModifierLauréatPageProps; export const ModifierLauréatForm: React.FC = ({ diff --git "a/packages/applications/ssr/src/components/pages/laur\303\251at/modifier/ModifierLaur\303\251atFields.tsx" "b/packages/applications/ssr/src/components/pages/laur\303\251at/modifier/ModifierLaur\303\251atFields.tsx" new file mode 100644 index 0000000000..a588625e8c --- /dev/null +++ "b/packages/applications/ssr/src/components/pages/laur\303\251at/modifier/ModifierLaur\303\251atFields.tsx" @@ -0,0 +1,162 @@ +/* eslint-disable react/jsx-props-no-spreading */ +'use client'; + +import Button from '@codegouvfr/react-dsfr/Button'; +import Input from '@codegouvfr/react-dsfr/Input'; +import { useState } from 'react'; +import Select from '@codegouvfr/react-dsfr/SelectNext'; + +import { Candidature } from '@potentiel-domain/candidature'; + +import { getTechnologieTypeLabel } from '../../candidature/helpers'; + +type FieldProps = { candidature: T; lauréat: T; estEnCoursDeModification?: boolean }; +type ProjectFieldProps = FieldProps & { label: string; name: string }; + +const ProjectField = ({ + candidature, + lauréat, + label, + name, + estEnCoursDeModification, +}: ProjectFieldProps) => { + const [linked, setLinked] = useState(candidature === lauréat); + const [candidatureValue, setCandidatureValue] = useState(candidature); + const [lauréatValue, setLauréatValue] = useState(lauréat); + + const onButtonClick = () => { + setLinked((l) => !l); + setLauréatValue(candidatureValue); + }; + + return ( +
+
{label}
+
+ + { + setCandidatureValue(ev.target.value as T); + if (linked) { + setLauréatValue(ev.target.value as T); + } + }, + }} + /> +
+
+ + { + setLauréatValue(ev.target.value as T); + if (linked) { + setCandidatureValue(ev.target.value as T); + } + }, + }} + addon={ +
+
+ ); +}; + +export const ActionnaireField = ({ + candidature, + lauréat, + estEnCoursDeModification, +}: FieldProps) => { + return ( + + ); +}; + +export const ReprésentantLégalField = ({ + candidature, + lauréat, + estEnCoursDeModification, +}: FieldProps) => { + return ( + + ); +}; + +export const TechnologieField = ({ candidature, lauréat }: FieldProps) => { + const [candidatureValue, setCandidatureValue] = useState(candidature); + + return ( +
+
Technologie
+
+ + +
+
+ ); +}; diff --git a/packages/applications/ssr/src/utils/zod/candidature/candidatureFields.schema.ts b/packages/applications/ssr/src/utils/zod/candidature/candidatureFields.schema.ts index a9fb8ecdcc..1c16f6e3ea 100644 --- a/packages/applications/ssr/src/utils/zod/candidature/candidatureFields.schema.ts +++ b/packages/applications/ssr/src/utils/zod/candidature/candidatureFields.schema.ts @@ -77,7 +77,6 @@ export const financementCollectifCsvSchema = ouiNonSchema; export const gouvernancePartagéeCsvSchema = ouiNonSchema; export const historiqueAbandonCsvSchema = z.enum(['1', '2', '3', '4']); export const typeGarantiesFinancieresCsvSchema = optionalEnum(z.enum(['1', '2', '3'])); -export const territoireProjetCsvSchema = optionalStringSchema; export const notifiedOnCsvSchema = z.undefined({ invalid_type_error: 'Le champs notifiedOn ne peut pas être présent', });