Merged PR 1105: added in postcode validation regex and error msg

added in postcode validation regex and error msg

Related work items: #10571
This commit is contained in:
Robert Bond
2024-03-19 10:04:56 +00:00
28 changed files with 65 additions and 31 deletions
+13 -3
View File
@@ -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]}
/>
</fieldset>
<div className="govuk-button-group">
+13 -5
View File
@@ -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]}
/>
</fieldset>
+11 -3
View File
@@ -66,7 +66,7 @@ const RenderTextfield = ({
{touched && error && (
<span id={id + "-error"} className="govuk-error-message">
<span className="govuk-visually-hidden">Error:</span>{" "}
{errorMsg}
{error}
</span>
)}
<input
@@ -101,7 +101,16 @@ export function Textfield(props) {
maxFieldLength,
hint,
} = props;
const required = (value) => (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}
/>
)
+2
View File
@@ -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()
}
+1 -1
View File
@@ -112,7 +112,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control validation="[required]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
</rows>
</section>
+1 -1
View File
@@ -553,7 +553,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
+1 -1
View File
@@ -121,7 +121,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control validation="[required]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
</rows>
</section>
+1 -1
View File
@@ -319,7 +319,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
@@ -553,7 +553,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
+1 -1
View File
@@ -319,7 +319,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
@@ -319,7 +319,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
@@ -82,7 +82,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control validation="[required]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
</rows>
</section>
+1 -1
View File
@@ -319,7 +319,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
@@ -313,7 +313,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
+1 -1
View File
@@ -106,7 +106,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control validation="[required]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
</rows>
</section>
@@ -553,7 +553,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
+1 -1
View File
@@ -319,7 +319,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
+1 -1
View File
@@ -275,7 +275,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
+1 -1
View File
@@ -76,7 +76,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
</rows>
</section>
+1 -1
View File
@@ -100,7 +100,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control validation="[required]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
</rows>
</section>
+1 -1
View File
@@ -550,7 +550,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
@@ -624,7 +624,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
+1 -1
View File
@@ -319,7 +319,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
+1 -1
View File
@@ -319,7 +319,7 @@
<labels>
<label description="Site Address Postcode" />
</labels>
<control id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
<control validation="[required,postcode]" id="pinswg_siteaddresspostcode" classid="{4273EDBD-AC1D-40d3-9FB2-095C621B552D}" datafieldname="pinswg_siteaddresspostcode" disabled="false" />
</row>
<row>
<labels>
+1
View File
@@ -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",
+2
View File
@@ -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",
+1
View File
@@ -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",
+2
View File
@@ -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",