From 876dc5bd923cb2edcebac2639280d052bcfc8d7e Mon Sep 17 00:00:00 2001 From: rdbsolutions Date: Tue, 19 Mar 2024 10:04:19 +0000 Subject: [PATCH] added in postcode validation regex and error msg --- components/account/personaldetails.js | 16 +++++++++++++--- components/account/registerform.js | 18 +++++++++++++----- components/elements/index.js | 14 +++++++++++--- components/newappeal/buildprogress.js | 2 ++ data/formsxml/adverts.xml | 2 +- data/formsxml/callinss77.xml | 2 +- data/formsxml/commercialappealcas.xml | 2 +- data/formsxml/commonland.xml | 2 +- .../communityinfrastructurelevys117118119.xml | 2 +- data/formsxml/compulsorypurchaseorders.xml | 2 +- ...enforcementlistedbuildingconservationap.xml | 2 +- data/formsxml/enforcementnoticeappeals174.xml | 2 +- data/formsxml/environmentalpermitting.xml | 2 +- ...hedgeshedgerowstreepreservationreplacem.xml | 2 +- data/formsxml/householderappealhas.xml | 2 +- data/formsxml/lawfuldevelopmentcertificate.xml | 2 +- data/formsxml/maintenanceoflands217.xml | 2 +- data/formsxml/miscellaneouscasework.xml | 2 +- data/formsxml/nonvalidation.xml | 2 +- data/formsxml/planningappeals78.xml | 2 +- data/formsxml/planningconditionss73s79.xml | 2 +- data/formsxml/planningobligationappeals106.xml | 2 +- data/formsxml/row.xml | 2 +- data/formsxml/wayleave.xml | 2 +- locales/cy/account.json | 1 + locales/cy/newappeal.json | 2 ++ locales/en/account.json | 1 + locales/en/newappeal.json | 2 ++ 28 files changed, 65 insertions(+), 31 deletions(-) diff --git a/components/account/personaldetails.js b/components/account/personaldetails.js index 57ff9074..fa775187 100644 --- a/components/account/personaldetails.js +++ b/components/account/personaldetails.js @@ -214,7 +214,10 @@ let PersonalDetails = (props) => { let errorsobj = {}; - const required = (value) => (value ? undefined : "Is required"); + const required = (value) => + value + ? undefined + : t("account:register-new-account-postcode-label-errormsg"); const emailRegex = /(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/gi; @@ -228,6 +231,14 @@ let PersonalDetails = (props) => { ? "Invalid phone number" : undefined; + const postcode = (value) => + value && + !/^([A-Z][A-HJ-Y]?[0-9][A-Z0-9]? ?[0-9][A-Z]{2}|GIR ?0A{2})$/i.test( + value + ) + ? t("account:register-new-account-postcode-invalid-label-errormsg") + : undefined; + const [hasErrors, setHasErrors] = useState(""); const onHandleSubmit = (values) => { @@ -375,8 +386,7 @@ let PersonalDetails = (props) => { type="text" className="govuk-input govuk-input--width-5" label={t("account:account-postcode-label")} - validate={[required]} - errorMsg="Is required" + validate={[required, postcode]} />
diff --git a/components/account/registerform.js b/components/account/registerform.js index a066b3f0..8da9cc32 100644 --- a/components/account/registerform.js +++ b/components/account/registerform.js @@ -84,7 +84,10 @@ const RegisterForm = (props) => { const emailRegex = /(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/gi; - const required = (value) => (value ? undefined : "Is required"); + const required = (value) => + value + ? undefined + : t("account:register-new-account-postcode-label-errormsg"); const email = (value) => value && !emailRegex.test(value) ? "Invalid email address" : undefined; const phoneNumber = (value) => @@ -106,6 +109,14 @@ const RegisterForm = (props) => { : undefined; const minLength5 = minLength(5); + const postcode = (value) => + value && + !/^([A-Z][A-HJ-Y]?[0-9][A-Z0-9]? ?[0-9][A-Z]{2}|GIR ?0A{2})$/i.test( + value + ) + ? t("account:register-new-account-postcode-invalid-label-errormsg") + : undefined; + const [hasErrors, setHasErrors] = useState(""); const onHandleSubmit = (values) => { @@ -298,10 +309,7 @@ const RegisterForm = (props) => { label={t( "account:register-new-account-postcode-label" )} - validate={[required]} - errorMsg={t( - "account:register-new-account-postcode-label-errormsg" - )} + validate={[required, postcode]} /> diff --git a/components/elements/index.js b/components/elements/index.js index b47c45eb..faf92d20 100644 --- a/components/elements/index.js +++ b/components/elements/index.js @@ -66,7 +66,7 @@ const RenderTextfield = ({ {touched && error && ( Error:{" "} - {errorMsg} + {error} )} (value ? undefined : "Required"); + const required = (value) => + value ? undefined : t("newappeal:is-required-label"); + const postcode = (value) => + value && + !/^([A-Z][A-HJ-Y]?[0-9][A-Z0-9]? ?[0-9][A-Z]{2}|GIR ?0A{2})$/i.test( + value + ) + ? t("newappeal:invalid-postcode-label") + : undefined; + let { t } = useTranslation(); if (name == "pinswg_name") { @@ -150,7 +159,6 @@ export function Textfield(props) { className="govuk-input govuk-input--width-20" validate={eval(validation)} label={props.label} - errorMsg="Is required" maxFieldLength={props.maxFieldLength} /> ) diff --git a/components/newappeal/buildprogress.js b/components/newappeal/buildprogress.js index 12d24eaa..14bde8d3 100644 --- a/components/newappeal/buildprogress.js +++ b/components/newappeal/buildprogress.js @@ -72,6 +72,7 @@ const BuildProgress = (props) => { aria-current="step" data-show="" id={FieldsTranslations(progObj[index].title) + .toString() .replace(/\s+/g, "-") .toLowerCase()} > @@ -112,6 +113,7 @@ const BuildProgress = (props) => { FieldsTranslations( progObj[index].title ) + .toString() .replace(/\s+/g, "-") .toLowerCase() } diff --git a/data/formsxml/adverts.xml b/data/formsxml/adverts.xml index f6f09f7c..6412aed7 100644 --- a/data/formsxml/adverts.xml +++ b/data/formsxml/adverts.xml @@ -112,7 +112,7 @@ - + diff --git a/data/formsxml/callinss77.xml b/data/formsxml/callinss77.xml index e760d254..b403c779 100644 --- a/data/formsxml/callinss77.xml +++ b/data/formsxml/callinss77.xml @@ -553,7 +553,7 @@ - + diff --git a/data/formsxml/commercialappealcas.xml b/data/formsxml/commercialappealcas.xml index 1bd53182..4654f032 100644 --- a/data/formsxml/commercialappealcas.xml +++ b/data/formsxml/commercialappealcas.xml @@ -121,7 +121,7 @@ - + diff --git a/data/formsxml/commonland.xml b/data/formsxml/commonland.xml index 42a887f2..fbe55653 100644 --- a/data/formsxml/commonland.xml +++ b/data/formsxml/commonland.xml @@ -319,7 +319,7 @@ - + diff --git a/data/formsxml/communityinfrastructurelevys117118119.xml b/data/formsxml/communityinfrastructurelevys117118119.xml index dc72559e..193c41b3 100644 --- a/data/formsxml/communityinfrastructurelevys117118119.xml +++ b/data/formsxml/communityinfrastructurelevys117118119.xml @@ -553,7 +553,7 @@ - + diff --git a/data/formsxml/compulsorypurchaseorders.xml b/data/formsxml/compulsorypurchaseorders.xml index a4b979e8..b609c917 100644 --- a/data/formsxml/compulsorypurchaseorders.xml +++ b/data/formsxml/compulsorypurchaseorders.xml @@ -319,7 +319,7 @@ - + diff --git a/data/formsxml/enforcementlistedbuildingconservationap.xml b/data/formsxml/enforcementlistedbuildingconservationap.xml index 40ab2146..8cd4800e 100644 --- a/data/formsxml/enforcementlistedbuildingconservationap.xml +++ b/data/formsxml/enforcementlistedbuildingconservationap.xml @@ -319,7 +319,7 @@ - + diff --git a/data/formsxml/enforcementnoticeappeals174.xml b/data/formsxml/enforcementnoticeappeals174.xml index 766081b9..610da5f3 100644 --- a/data/formsxml/enforcementnoticeappeals174.xml +++ b/data/formsxml/enforcementnoticeappeals174.xml @@ -82,7 +82,7 @@ - + diff --git a/data/formsxml/environmentalpermitting.xml b/data/formsxml/environmentalpermitting.xml index d7c5f66b..b589dc5c 100644 --- a/data/formsxml/environmentalpermitting.xml +++ b/data/formsxml/environmentalpermitting.xml @@ -319,7 +319,7 @@ - + diff --git a/data/formsxml/hedgeshedgerowstreepreservationreplacem.xml b/data/formsxml/hedgeshedgerowstreepreservationreplacem.xml index 16659864..ade18698 100644 --- a/data/formsxml/hedgeshedgerowstreepreservationreplacem.xml +++ b/data/formsxml/hedgeshedgerowstreepreservationreplacem.xml @@ -313,7 +313,7 @@ - + diff --git a/data/formsxml/householderappealhas.xml b/data/formsxml/householderappealhas.xml index 43170f86..3477a75e 100644 --- a/data/formsxml/householderappealhas.xml +++ b/data/formsxml/householderappealhas.xml @@ -106,7 +106,7 @@ - + diff --git a/data/formsxml/lawfuldevelopmentcertificate.xml b/data/formsxml/lawfuldevelopmentcertificate.xml index cc8767b7..7b1be20a 100644 --- a/data/formsxml/lawfuldevelopmentcertificate.xml +++ b/data/formsxml/lawfuldevelopmentcertificate.xml @@ -553,7 +553,7 @@ - + diff --git a/data/formsxml/maintenanceoflands217.xml b/data/formsxml/maintenanceoflands217.xml index d430ad5d..5e6d0a92 100644 --- a/data/formsxml/maintenanceoflands217.xml +++ b/data/formsxml/maintenanceoflands217.xml @@ -319,7 +319,7 @@ - + diff --git a/data/formsxml/miscellaneouscasework.xml b/data/formsxml/miscellaneouscasework.xml index b97105be..f49bb905 100644 --- a/data/formsxml/miscellaneouscasework.xml +++ b/data/formsxml/miscellaneouscasework.xml @@ -275,7 +275,7 @@ - + diff --git a/data/formsxml/nonvalidation.xml b/data/formsxml/nonvalidation.xml index 7bc442fb..d4f1d070 100644 --- a/data/formsxml/nonvalidation.xml +++ b/data/formsxml/nonvalidation.xml @@ -76,7 +76,7 @@ - + diff --git a/data/formsxml/planningappeals78.xml b/data/formsxml/planningappeals78.xml index d992fb9e..72708b9d 100644 --- a/data/formsxml/planningappeals78.xml +++ b/data/formsxml/planningappeals78.xml @@ -100,7 +100,7 @@ - + diff --git a/data/formsxml/planningconditionss73s79.xml b/data/formsxml/planningconditionss73s79.xml index c8386c8e..0ab2a606 100644 --- a/data/formsxml/planningconditionss73s79.xml +++ b/data/formsxml/planningconditionss73s79.xml @@ -550,7 +550,7 @@ - + diff --git a/data/formsxml/planningobligationappeals106.xml b/data/formsxml/planningobligationappeals106.xml index ae057eac..6e1e1110 100644 --- a/data/formsxml/planningobligationappeals106.xml +++ b/data/formsxml/planningobligationappeals106.xml @@ -624,7 +624,7 @@ - + diff --git a/data/formsxml/row.xml b/data/formsxml/row.xml index c16483aa..7cb3fd1d 100644 --- a/data/formsxml/row.xml +++ b/data/formsxml/row.xml @@ -319,7 +319,7 @@ - + diff --git a/data/formsxml/wayleave.xml b/data/formsxml/wayleave.xml index 31696518..b3e57ece 100644 --- a/data/formsxml/wayleave.xml +++ b/data/formsxml/wayleave.xml @@ -319,7 +319,7 @@ - + diff --git a/locales/cy/account.json b/locales/cy/account.json index ec0be5ad..3d285913 100644 --- a/locales/cy/account.json +++ b/locales/cy/account.json @@ -32,6 +32,7 @@ "register-new-account-county-label-errormsg": "Yn ofynnol", "register-new-account-postcode-label": "Cod post", "register-new-account-postcode-label-errormsg": "Yn ofynnol", + "register-new-account-postcode-invalid-label-errormsg": "Cod post annilys", "register-new-account-check-details-paragraph": "Gwiriwch fod y manylion a nodoch yn gywir.", "register-new-account-confirmation-email": "Rydym wedi anfon e-bost cadarnhau atoch.", "register-new-account-sub-heading-what-next": "Beth sy'n digwydd nesaf", diff --git a/locales/cy/newappeal.json b/locales/cy/newappeal.json index f8a9dd01..c753505f 100644 --- a/locales/cy/newappeal.json +++ b/locales/cy/newappeal.json @@ -12,6 +12,8 @@ "yes-option-label": "Ydw", "no-option-label": "Na", "select-an-option-label": "Dewiswch opsiwn", + "is-required-label": "Yn ofynnol", + "invalid-postcode-label": "Cod post annilys", "hascas-confirmation-label": "Cadarnhau bod angen apêl HAS/CAS", "hascas-confirmation-hint": "Mae'r llwybr apêl hwn yn berthnasol dim ond os yw'ch cais yn ymwneud â gwrthod caniatâd cynllunio, neu wrthodiad i gais i amrywio neu ddileu amod sydd ynghlwm wrth ganiatâd blaenorol. Bydd pob cais arall yn cael ei gyflwyno drwy Apêl Cynllunio Adran 78", "about-you-page-title": "Amdanat ti", diff --git a/locales/en/account.json b/locales/en/account.json index 676b3db5..388eb0f2 100644 --- a/locales/en/account.json +++ b/locales/en/account.json @@ -32,6 +32,7 @@ "register-new-account-county-label-errormsg": "Is required", "register-new-account-postcode-label": "Postcode", "register-new-account-postcode-label-errormsg": "Is required", + "register-new-account-postcode-invalid-label-errormsg": "Invalid postcode", "register-new-account-check-details-paragraph": "Check that the details you entered are correct.", "register-new-account-confirmation-email": "We have sent you a confirmation email.", "register-new-account-sub-heading-what-next": "What happens next", diff --git a/locales/en/newappeal.json b/locales/en/newappeal.json index 0c96680a..cb92318b 100644 --- a/locales/en/newappeal.json +++ b/locales/en/newappeal.json @@ -12,6 +12,8 @@ "yes-option-label": "Yes", "no-option-label": "No", "select-an-option-label": "Select an option", + "is-required-label": "Is required", + "invalid-postcode-label": "Invalid postcode", "hascas-confirmation-label": "Confirm HAS/CAS appeal is required", "hascas-confirmation-hint": "This appeal route is only applicable if your application relates the refusal of planning permission, orthe refusal of an application to vary or remove a condition attached to a previous permision. All other applications will be submitted via a Section 78 Planning Appeal", "about-you-page-title": "About you",