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",