Skip to content

Commit

Permalink
add validation schema on mission creation ulam
Browse files Browse the repository at this point in the history
  • Loading branch information
aleckvincent committed Jan 21, 2025
1 parent 1857616 commit dfb63c4
Showing 1 changed file with 32 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,19 @@ import {
FormikDateRangePicker,
FormikMultiCheckbox,
FormikNumberInput,
FormikSelect, Icon, IconButton, Size, THEME
FormikSelect,
} from '@mtes-mct/monitor-ui'
import { FieldProps, Formik } from 'formik'
import React, { FC } from 'react'
import { FC } from 'react'
import { FlexboxGrid, Stack } from 'rsuite'
import { useMissionGeneralInformationsForm } from '../../../common/hooks/use-mission-general-informations-form.tsx'
import { useMissionType } from '../../../common/hooks/use-mission-type.tsx'
import { MissionReportTypeEnum, MissionULAMGeneralInfoInitial } from '../../../common/types/mission-types.ts'
import {
MissionReinforcementTypeEnum,
MissionReportTypeEnum,
MissionULAMGeneralInfoInitial
} from '../../../common/types/mission-types.ts'
import * as Yup from 'yup'

export interface MissionGeneralInformationInitialFormProps {
name: string
Expand All @@ -29,23 +34,42 @@ const MissionGeneralInformationInitialForm: FC<MissionGeneralInformationInitialF
const { initValue, handleSubmit } = useMissionGeneralInformationsForm(name, fieldFormik)
const { missionTypeOptions, reportTypeOptions, reinforcementTypeOptions } = useMissionType()

const generalInfoInitialSchema = Yup.object().shape({
missionReportType: Yup.mixed<MissionReportTypeEnum>().required('Type de rapport obligatoire'),
missionTypes: Yup.array().required('Type de mission obligatoire'),
dates: Yup.array().required('Date et heure de début et de fin obligatoire'),
reinforcementType: Yup.mixed<MissionReinforcementTypeEnum>().when("missionReportType", {
is: MissionReportTypeEnum.EXTERNAL_REINFORCEMENT_TIME_REPORT,
then: (schema) => schema.required("Nature du renfort obligatoire")
})
});



return (
<>
{initValue && (
<Formik initialValues={initValue} onSubmit={handleSubmit}>
<Formik initialValues={initValue} onSubmit={handleSubmit} validationSchema={generalInfoInitialSchema} validateOnMount>
{formik => (
<Stack direction="column" spacing="1.5rem" style={{ paddingBottom: '2rem' }}>
<Stack.Item style={{ width: '100%' }}>
<FormikSelect options={reportTypeOptions} name="missionReportType" label={'Type de rapport'} isLight />
<FormikSelect
options={reportTypeOptions}
name="missionReportType"
label={'Type de rapport *'}
isLight
isRequired={true}
/>
</Stack.Item>

<Stack.Item style={{ width: '100%', textAlign: 'left' }}>
<FormikMultiCheckbox
label={'Type de mission'}
label={'Type de mission *'}
name="missionTypes"
options={missionTypeOptions}
isInline
isLight
isRequired={true}
/>
</Stack.Item>

Expand All @@ -67,6 +91,7 @@ const MissionGeneralInformationInitialForm: FC<MissionGeneralInformationInitialF
label={'Dates et heures de début et de fin du rapport'}
isLight name="dates"
withTime={true}
isCompact={true}
/>
</FlexboxGrid.Item>

Expand All @@ -83,6 +108,7 @@ const MissionGeneralInformationInitialForm: FC<MissionGeneralInformationInitialF
<Button
accent={Accent.PRIMARY}
type="submit"
disabled={!formik.isValid || formik.isSubmitting}
onClick={async () => {
handleSubmit(formik.values)
}}
Expand Down

0 comments on commit dfb63c4

Please sign in to comment.