From 909ce7469f5e4a28deb49dddc4ef4b3a093c068a Mon Sep 17 00:00:00 2001 From: Lasse Fredheim <lass@uio.no> Date: Thu, 23 Feb 2023 10:49:23 +0100 Subject: [PATCH] Add front end validation --- frontend/public/locales/en/common.json | 1 + frontend/public/locales/nb/common.json | 1 + frontend/public/locales/nn/common.json | 1 + .../src/routes/sponsor/guest/newGuestRole/index.tsx | 6 ++++++ .../src/routes/sponsor/register/stepPersonForm.tsx | 13 +++++++++++-- 5 files changed, 20 insertions(+), 2 deletions(-) diff --git a/frontend/public/locales/en/common.json b/frontend/public/locales/en/common.json index 65bb63ea..40684e8e 100644 --- a/frontend/public/locales/en/common.json +++ b/frontend/public/locales/en/common.json @@ -131,6 +131,7 @@ "nationalIdNumberRequired": "Norwegian national ID number required", "roleTypeRequired": "Role type is required", "roleEndRequired": "Role end date is required", + "invalidEndDate": "Chosen role must have an earlier end date", "emailRequired": "E-mail is required", "consentRequired": "This consent is required", "invalidMobilePhoneNumber": "Invalid phone number", diff --git a/frontend/public/locales/nb/common.json b/frontend/public/locales/nb/common.json index 908dd470..38363b4a 100644 --- a/frontend/public/locales/nb/common.json +++ b/frontend/public/locales/nb/common.json @@ -131,6 +131,7 @@ "nationalIdNumberRequired": "Fødselsnummer/D-nummer er obligatorisk", "roleTypeRequired": "Rolletype er obligatorisk", "roleEndRequired": "Sluttdato for rolle er obligatorisk", + "invalidEndDate": "Valgt rolle må ha en tidligere sluttdato", "emailRequired": "E-post er obligatorisk", "consentRequired": "Dette samtykket er obligatorisk", "invalidMobilePhoneNumber": "Ugyldig telefonnummer", diff --git a/frontend/public/locales/nn/common.json b/frontend/public/locales/nn/common.json index 2119651f..e1669b95 100644 --- a/frontend/public/locales/nn/common.json +++ b/frontend/public/locales/nn/common.json @@ -131,6 +131,7 @@ "nationalIdNumberRequired": "Fødselsnummer/D-nummer er påkrevd", "roleTypeRequired": "Rolletype er påkrevd", "roleEndRequired": "Sluttdato for rolle er påkrevd", + "invalidEndDate": "Vald rolle må ha ein tidlegare sluttdato", "emailRequired": "E-post er påkrevd", "consentRequired": "Dette samtykket er påkrevd", "invalidMobilePhoneNumber": "Ugyldig telefonnummer", diff --git a/frontend/src/routes/sponsor/guest/newGuestRole/index.tsx b/frontend/src/routes/sponsor/guest/newGuestRole/index.tsx index 7b158bd0..f9671a69 100644 --- a/frontend/src/routes/sponsor/guest/newGuestRole/index.tsx +++ b/frontend/src/routes/sponsor/guest/newGuestRole/index.tsx @@ -305,6 +305,7 @@ function NewGuestRole({ guest, reloadGuestInfo }: NewGuestRoleProps) { control={control} rules={{ required: true, + validate: () => Number(getValues('end_date')) <= Number(maxDate), }} render={({ field }) => ( <DatePicker @@ -328,6 +329,11 @@ function NewGuestRole({ guest, reloadGuestInfo }: NewGuestRoleProps) { {t('validation.roleEndRequired')} </Box> )} + {errors.end_date && errors.end_date.type === 'validate' && ( + <Box sx={{ typography: 'caption', color: 'error.main' }}> + {t('validation.invalidEndDate')} + </Box> + )} {displayContactAtUnit && ( <TextField id="contact" diff --git a/frontend/src/routes/sponsor/register/stepPersonForm.tsx b/frontend/src/routes/sponsor/register/stepPersonForm.tsx index 49fc572c..e9c8f5a1 100644 --- a/frontend/src/routes/sponsor/register/stepPersonForm.tsx +++ b/frontend/src/routes/sponsor/register/stepPersonForm.tsx @@ -315,7 +315,11 @@ const StepPersonForm = forwardRef( <Controller name="role_end" control={control} - rules={{ required: true }} + rules={{ + required: true, + validate: () => + Number(getValues('role_end')) <= Number(todayPlusMaxDays), + }} render={({ field }) => ( <DatePicker mask="____-__-__" @@ -331,11 +335,16 @@ const StepPersonForm = forwardRef( /> )} /> - {!!errors.role_end && ( + {!!errors.role_end && errors.role_end.type === 'required' && ( <Box sx={{ typography: 'caption', color: 'red' }}> {t('validation.roleEndRequired')} </Box> )} + {!!errors.role_end && errors.role_end.type === 'validate' && ( + <Box sx={{ typography: 'caption', color: 'red' }}> + {t('validation.invalidEndDate')} + </Box> + )} {displayContactAtUnit && ( <TextField -- GitLab