added logout status 404 page and registraiton pages

This commit is contained in:
2021-07-27 16:50:57 +01:00
parent 6520b761bd
commit 3a88b18f85
16 changed files with 1133 additions and 566 deletions
+56 -68
View File
@@ -1,3 +1,4 @@
import Link from "next/link";
import _ from "lodash";
import React, { useState } from "react";
import { useRouter } from "next/router";
@@ -9,17 +10,6 @@ import {
getFormSubmitErrors,
} from "redux-form";
import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
import {
Textfield,
DateField,
DateFieldPicker,
YesNofield,
PickList,
MultiLinefield,
NumericField,
ReadOnlyfield,
DecimalField,
} from "../elements";
const RenderTextfield = ({
id,
@@ -69,7 +59,14 @@ const RenderTextfield = ({
};
const ChangePassword = (props) => {
const { footerLinks, pages, handleSubmit, value } = props;
const {
footerLinks,
pages,
handleSubmit,
value,
setPasswordUpdated,
passwordUpdated,
} = props;
let { t, lang } = useTranslation();
const router = useRouter();
@@ -78,74 +75,65 @@ const ChangePassword = (props) => {
let errorsobj = {};
const onHandleSubmit = (values) => {
console.log(values);
setPasswordUpdated(true);
};
const required = (value) => (value ? undefined : "Is required");
const matchInput = (input, allInputs) => {
return input === allInputs.password
? undefined
: "Passwords do not match";
};
const passwordsMustMatch = (value, allValues) =>
value !== allValues.newpassword ? "Passwords do not match" : undefined;
const email = (value) =>
value && !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(value)
? "Invalid email address"
: undefined;
const phoneNumber = (value) =>
value &&
!/^(?:(?:\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?(?:\(?0\)?[\s-]?)?)|(?:\(?0))(?:(?:\d{5}\)?[\s-]?\d{4,5})|(?:\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3}))|(?:\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4})|(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}))(?:[\s-]?(?:x|ext\.?|\#)\d{3,4})?$/i.test(
value
)
? "Invalid phone number"
const minLength = (min) => (value) =>
value && value.length < min
? `Must be at least ${min} characters`
: undefined;
const [hasErrors, setHasErrors] = useState("");
return (
<>
{/* {hasErrors == true ? (
<ShowErrorHeader
hasErrors={hasErrors}
props={props.props.form}
formXML={formXML}
/>
) : (
""
)} */}
<form onSubmit={handleSubmit(onHandleSubmit)}>
<fieldset className="govuk-fieldset">
<Field
name="newpassword"
id="newpassword"
component={RenderTextfield}
type="password"
className="govuk-input govuk-input--width-20"
validate={[required]}
label="New password"
/>
<Field
name="confirmpassword"
id="confirmpassword"
component={RenderTextfield}
type="password"
className="govuk-input govuk-input--width-20"
validate={[matchInput]}
label="Confirm new password"
/>
</fieldset>
{passwordUpdated != true ? (
<form onSubmit={handleSubmit(onHandleSubmit)}>
<fieldset className="govuk-fieldset">
<Field
name="newpassword"
id="newpassword"
component={RenderTextfield}
type="password"
className="govuk-input govuk-input--width-20"
validate={[required, minLength(6)]}
label="New password"
/>
<Field
name="confirmpassword"
id="confirmpassword"
component={RenderTextfield}
type="password"
className="govuk-input govuk-input--width-20"
validate={[required, passwordsMustMatch]}
label="Confirm new password"
/>
</fieldset>
<div className="govuk-button-group">
<button
type="submit"
className="govuk-button"
data-module="govuk-button"
>
Continue
</button>
</div>
</form>
<div className="govuk-button-group">
<button
type="submit"
className="govuk-button"
data-module="govuk-button"
>
Continue
</button>
</div>
</form>
) : (
<>
<p className="govuk-body">
<Link href="/myportal">
<a className="govuk-link">Go to My Portal</a>
</Link>
</p>
</>
)}
</>
);
};
+162 -189
View File
@@ -10,18 +10,9 @@ import {
getFormSubmitErrors,
} from "redux-form";
import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
import {
Textfield,
DateField,
DateFieldPicker,
YesNofield,
PickList,
MultiLinefield,
NumericField,
ReadOnlyfield,
DecimalField,
} from "../elements";
import BuildCheckPersonalDetails from "./personaldetailsCheck";
import PersonalDetailsComplete from "./personaldetailsComplete";
const RenderTextfield = ({
id,
@@ -71,7 +62,12 @@ const RenderTextfield = ({
};
const PersonalDetails = (props) => {
const { footerLinks, pages, handleSubmit, value } = props;
const {
handleSubmit,
value,
setPersonalDetailsComplete,
setAccountUpdatedComplete,
} = props;
let { t, lang } = useTranslation();
const router = useRouter();
@@ -79,10 +75,6 @@ const PersonalDetails = (props) => {
let errorsobj = {};
const onHandleSubmit = (values) => {
console.log(values);
};
const required = (value) => (value ? undefined : "Is required");
const email = (value) =>
value && !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(value)
@@ -98,178 +90,155 @@ const PersonalDetails = (props) => {
const [hasErrors, setHasErrors] = useState("");
const [personalDetailsComplete, setPersonalDetailsComplete] =
useState(false);
const onHandleSubmit = (values) => {
setPersonalDetailsComplete(true);
};
return (
<>
{/* {hasErrors == true ? (
<ShowErrorHeader
hasErrors={hasErrors}
props={props.props.form}
formXML={formXML}
/>
) : (
""
)} */}
{props.accountUpdatedComplete != true ? (
props.personalDetailsComplete == false ? (
<form onSubmit={handleSubmit(onHandleSubmit)}>
<fieldset className="govuk-fieldset">
<legend className="govuk-fieldset__legend govuk-fieldset__legend--m">
<h2 className="govuk-fieldset__heading">
About you
</h2>
</legend>
<Field
name="firstname"
id="firstname"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
validate={[required]}
label="First name"
errorMsg="Is required"
/>
<Field
name="lastname"
id="lastname"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
validate={[required]}
label="Last name"
errorMsg="Is required"
/>
<Field
name="email"
id="email"
component={RenderTextfield}
type="email"
className="govuk-input govuk-input--width-20"
validate={[required, email]}
label="Email address"
/>
<Field
name="telephone"
id="telephone"
component={RenderTextfield}
type="number"
className="govuk-input govuk-input--width-20"
validate={[required, phoneNumber]}
label="Telephone"
/>
{personalDetailsComplete == false ? (
<form onSubmit={handleSubmit(onHandleSubmit)}>
<fieldset className="govuk-fieldset">
<legend className="govuk-fieldset__legend govuk-fieldset__legend--m">
<h2 className="govuk-fieldset__heading">
About you
</h2>
</legend>
<Field
name="firstname"
id="firstname"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
validate={[required]}
label="First name"
errorMsg="Is required"
/>
<Field
name="lastname"
id="lastname"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
validate={[required]}
label="Last name"
errorMsg="Is required"
/>
<Field
name="email"
id="email"
component={RenderTextfield}
type="email"
className="govuk-input govuk-input--width-20"
validate={[required, email]}
label="Email address"
/>
<Field
name="telephone"
id="telephone"
component={RenderTextfield}
type="number"
className="govuk-input govuk-input--width-20"
validate={[required, phoneNumber]}
label="Telephone"
/>
<Field
name="companygroup"
id="companygroup"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
label="Company/Group"
errorMsg="Is required"
/>
</fieldset>
<fieldset className="govuk-fieldset">
<legend className="govuk-fieldset__legend govuk-fieldset__legend--m">
<h2 className="govuk-fieldset__heading">
What is your address?
</h2>
</legend>
<Field
name="companygroup"
id="companygroup"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
label="Company/Group"
errorMsg="Is required"
/>
</fieldset>
<fieldset className="govuk-fieldset">
<legend className="govuk-fieldset__legend govuk-fieldset__legend--m">
<h2 className="govuk-fieldset__heading">
What is your address?
</h2>
</legend>
<Field
name="addressline1"
id="addressline1"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
label="Address line 1"
validate={[required]}
errorMsg="Is required"
/>
<Field
name="addressline2"
id="addressline2"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
label="Address line 2"
errorMsg="Is required"
/>
<Field
name="towncity"
id="towncity"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-10"
label="Town/City"
validate={[required]}
errorMsg="Is required"
/>
<Field
name="county"
id="county"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-10"
label="County"
validate={[required]}
errorMsg="Is required"
/>
<Field
name="postcode"
id="postcode"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-5"
label="Postcode"
validate={[required]}
errorMsg="Is required"
/>
</fieldset>
<div className="govuk-button-group">
<button
type="submit"
className="govuk-button"
data-module="govuk-button"
onClick={() => {
setPersonalDetailsComplete(true);
}}
>
Continue
</button>
</div>
</form>
) : (
<>
<BuildCheckPersonalDetails
props={props}
setPersonalDetailsComplete={setPersonalDetailsComplete}
/>
<div className="govuk-button-group">
<button
type="submit"
className="govuk-button"
data-module="govuk-button"
onClick={() => {
setPersonalDetailsComplete(false);
}}
>
Continue
</button>
<Link href="">
<a
<Field
name="addressline1"
id="addressline1"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
label="Address line 1"
validate={[required]}
errorMsg="Is required"
/>
<Field
name="addressline2"
id="addressline2"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
label="Address line 2"
errorMsg="Is required"
/>
<Field
name="towncity"
id="towncity"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-10"
label="Town/City"
validate={[required]}
errorMsg="Is required"
/>
<Field
name="county"
id="county"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-10"
label="County"
validate={[required]}
errorMsg="Is required"
/>
<Field
name="postcode"
id="postcode"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-5"
label="Postcode"
validate={[required]}
errorMsg="Is required"
/>
</fieldset>
<div className="govuk-button-group">
<button
type="submit"
className="govuk-button"
data-module="govuk-button"
onClick={() => {
setPersonalDetailsComplete(false);
setPersonalDetailsComplete(true);
}}
className="govuk-link"
>
Go back
</a>
</Link>
</div>
</>
Continue
</button>
</div>
</form>
) : (
<>
<BuildCheckPersonalDetails
props={props}
setPersonalDetailsComplete={
setPersonalDetailsComplete
}
setAccountUpdatedComplete={
setAccountUpdatedComplete
}
/>
</>
)
) : (
<PersonalDetailsComplete />
)}
</>
);
@@ -296,16 +265,20 @@ const mapDispatchToProps = (dispatch) => {
const selector = formValueSelector("personalDetailsForm"); // <-- same as form name
export default connect(mapStateToProps, mapDispatchToProps, (state) => ({
initialValues: state.accountDetails.accountDetails.data,
search: state.search,
searchResultsObj: state.searchResultsObj,
formData: state.formData,
appealType: state.appealType,
accountDetails: state.accountDetails,
form: state.form,
export default connect(
mapStateToProps,
mapDispatchToProps
//, (state) => ({
// initialValues: state.accountDetails.accountDetails.data,
// // search: state.search,
// searchResultsObj: state.searchResultsObj,
// formData: state.formData,
// appealType: state.appealType,
// accountDetails: state.accountDetails,
// form: state.form,
// pull initial values from account reducer
}))(
//})
)(
reduxForm({
form: "personalDetailsForm",
enableReinitialize: true, // this is needed!!
+53 -52
View File
@@ -17,6 +17,7 @@ const BuildCheckPersonalDetails = (props) => {
handleSubmit,
value,
setPersonalDetailsComplete,
setAccountUpdatedComplete,
} = props;
let { t, lang } = useTranslation();
@@ -30,11 +31,10 @@ const BuildCheckPersonalDetails = (props) => {
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">First name</dt>
<dd className="govuk-summary-list__value">
{/* {console.log(
props.props.form["personalDetailsForm"].values[
"firstname"
]
)} */}
{
props.props.props.form.personalDetailsForm.values
.firstname
}
</dd>
<dd className="govuk-summary-list__actions">
<a
@@ -54,11 +54,10 @@ const BuildCheckPersonalDetails = (props) => {
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Last name</dt>
<dd className="govuk-summary-list__value">
{/* {console.log(
props.props.form["personalDetailsForm"].values[
"firstname"
]
)} */}
{
props.props.props.form.personalDetailsForm.values
.lastname
}
</dd>
<dd className="govuk-summary-list__actions">
<a
@@ -79,11 +78,10 @@ const BuildCheckPersonalDetails = (props) => {
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Email address</dt>
<dd className="govuk-summary-list__value">
{/* {console.log(
props.props.form["personalDetailsForm"].values[
"firstname"
]
)} */}
{
props.props.props.form.personalDetailsForm.values
.email
}
</dd>
<dd className="govuk-summary-list__actions">
<a
@@ -104,11 +102,10 @@ const BuildCheckPersonalDetails = (props) => {
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Telephone</dt>
<dd className="govuk-summary-list__value">
{/* {console.log(
props.props.form["personalDetailsForm"].values[
"firstname"
]
)} */}
{
props.props.props.form.personalDetailsForm.values
.telephone
}
</dd>
<dd className="govuk-summary-list__actions">
<a
@@ -128,11 +125,10 @@ const BuildCheckPersonalDetails = (props) => {
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Company/Group</dt>
<dd className="govuk-summary-list__value">
{/* {console.log(
props.props.form["personalDetailsForm"].values[
"firstname"
]
)} */}
{
props.props.props.form.personalDetailsForm.values
.companygroup
}
</dd>
<dd className="govuk-summary-list__actions">
<a
@@ -157,11 +153,10 @@ const BuildCheckPersonalDetails = (props) => {
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Address Line 1</dt>
<dd className="govuk-summary-list__value">
{/* {console.log(
props.props.form["personalDetailsForm"].values[
"firstname"
]
)} */}
{
props.props.props.form.personalDetailsForm.values
.addressline1
}
</dd>
<dd className="govuk-summary-list__actions">
<a
@@ -182,11 +177,10 @@ const BuildCheckPersonalDetails = (props) => {
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Address line 2</dt>
<dd className="govuk-summary-list__value">
{/* {console.log(
props.props.form["personalDetailsForm"].values[
"firstname"
]
)} */}
{
props.props.props.form.personalDetailsForm.values
.addressline2
}
</dd>
<dd className="govuk-summary-list__actions">
<a
@@ -207,11 +201,10 @@ const BuildCheckPersonalDetails = (props) => {
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Town/City</dt>
<dd className="govuk-summary-list__value">
{/* {console.log(
props.props.form["personalDetailsForm"].values[
"firstname"
]
)} */}
{
props.props.props.form.personalDetailsForm.values
.towncity
}
</dd>
<dd className="govuk-summary-list__actions">
<a
@@ -232,11 +225,10 @@ const BuildCheckPersonalDetails = (props) => {
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">County</dt>
<dd className="govuk-summary-list__value">
{/* {console.log(
props.props.form["personalDetailsForm"].values[
"firstname"
]
)} */}
{
props.props.props.form.personalDetailsForm.values
.county
}
</dd>
<dd className="govuk-summary-list__actions">
<a
@@ -257,11 +249,10 @@ const BuildCheckPersonalDetails = (props) => {
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Postcode</dt>
<dd className="govuk-summary-list__value">
{/* {console.log(
props.props.form["personalDetailsForm"].values[
"firstname"
]
)} */}
{
props.props.props.form.personalDetailsForm.values
.postcode
}
</dd>
<dd className="govuk-summary-list__actions">
<a
@@ -280,6 +271,18 @@ const BuildCheckPersonalDetails = (props) => {
</dd>
</div>
</dl>
<div className="govuk-button-group">
<button
type="submit"
className="govuk-button"
data-module="govuk-button"
onClick={() => {
setAccountUpdatedComplete(true);
}}
>
Continue
</button>
</div>
</>
);
};
@@ -303,8 +306,6 @@ const mapDispatchToProps = (dispatch) => {
};
};
const selector = formValueSelector("personalDetailsForm"); // <-- same as form name
export default connect(
mapStateToProps,
mapDispatchToProps
@@ -0,0 +1,74 @@
import _ from "lodash";
import Link from "next/link";
import React, { useState } from "react";
import { useRouter } from "next/router";
import useTranslation from "next-translate/useTranslation";
import {
Field,
reduxForm,
formValueSelector,
getFormSubmitErrors,
} from "redux-form";
import {
useDispatch,
useSelector,
shallowEqual,
connect,
setRegisterFormComplete,
setAccountCreatedComplete,
} from "react-redux";
const PersonalDetailsComplete = (props) => {
const {
handleSubmit,
value,
setRegisterFormComplete,
setAccountCreatedComplete,
} = props;
let { t, lang } = useTranslation();
const router = useRouter();
const { locale } = router;
return (
<>
<p className="govuk-body">Your details have been updated</p>
<p className="govuk-body">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi a
metus non quam mollis egestas. Integer ac leo cursus, laoreet
nulla sed, tempus tellus. Mauris condimentum erat arcu.
</p>
<p className="govuk-body">
<Link href="/myportal">
<a className="govuk-link">Return to My Portal</a>
</Link>
</p>
</>
);
};
const mapStateToProps = (state) => {
return {
search: state.search,
searchResultsObj: state.searchResultsObj,
formData: state.formData,
appealType: state.appealType,
accountDetails: state.accountDetails,
//form: state.form,
};
};
const mapDispatchToProps = (dispatch) => {
return {
setCurrentSection: (currentSection) => {
dispatch(setCurrentSection(currentSection));
},
};
};
export default connect(
mapStateToProps,
mapDispatchToProps
)(PersonalDetailsComplete);
+310
View File
@@ -0,0 +1,310 @@
import _ from "lodash";
import React, { useState } from "react";
import { useRouter } from "next/router";
import useTranslation from "next-translate/useTranslation";
import {
Field,
reduxForm,
formValueSelector,
getFormSubmitErrors,
} from "redux-form";
import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
const RegisterFormCheck = (props) => {
const {
footerLinks,
pages,
handleSubmit,
value,
setRegisterFormComplete,
setAccountCreatedComplete,
} = props;
let { t, lang } = useTranslation();
const router = useRouter();
const { locale } = router;
return (
<>
<p>Check that the details you entered are correct.</p>
<h2 className="govuk-heading-m">About you</h2>
<dl className="govuk-summary-list govuk-!-margin-bottom-9">
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">First name</dt>
<dd className="govuk-summary-list__value">
{
props.props.props.form.accountRegisterForm.values
.firstname
}
</dd>
<dd className="govuk-summary-list__actions">
<a
className="govuk-link"
href="#"
onClick={() => {
setRegisterFormComplete(false);
}}
>
Change
<span className="govuk-visually-hidden">
first name
</span>
</a>
</dd>
</div>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Last name</dt>
<dd className="govuk-summary-list__value">
{
props.props.props.form.accountRegisterForm.values
.lastname
}
</dd>
<dd className="govuk-summary-list__actions">
<a
className="govuk-link"
href="#"
onClick={() => {
setRegisterFormComplete(false);
}}
>
Change
<span className="govuk-visually-hidden">
{" "}
last name
</span>
</a>
</dd>
</div>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Email address</dt>
<dd className="govuk-summary-list__value">
{
props.props.props.form.accountRegisterForm.values
.email
}
</dd>
<dd className="govuk-summary-list__actions">
<a
className="govuk-link"
href="#"
onClick={() => {
setRegisterFormComplete(false);
}}
>
Change
<span className="govuk-visually-hidden">
{" "}
email address
</span>
</a>
</dd>
</div>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Telephone</dt>
<dd className="govuk-summary-list__value">
{
props.props.props.form.accountRegisterForm.values
.telephone
}
</dd>
<dd className="govuk-summary-list__actions">
<a
className="govuk-link"
href="#"
onClick={() => {
setRegisterFormComplete(false);
}}
>
Change
<span className="govuk-visually-hidden">
telephone
</span>
</a>
</dd>
</div>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Company/Group</dt>
<dd className="govuk-summary-list__value">
{
props.props.props.form.accountRegisterForm.values
.companygroup
}
</dd>
<dd className="govuk-summary-list__actions">
<a
className="govuk-link"
href="#"
onClick={() => {
setRegisterFormComplete(false);
}}
>
Change
<span className="govuk-visually-hidden">
{" "}
company/group
</span>
</a>
</dd>
</div>
</dl>
<dl className="govuk-summary-list govuk-!-margin-bottom-9">
<h2 className="govuk-heading-m">Your address</h2>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Address Line 1</dt>
<dd className="govuk-summary-list__value">
{
props.props.props.form.accountRegisterForm.values
.addressline1
}
</dd>
<dd className="govuk-summary-list__actions">
<a
className="govuk-link"
href="#"
onClick={() => {
setRegisterFormComplete(false);
}}
>
Change
<span className="govuk-visually-hidden">
{" "}
address line 1
</span>
</a>
</dd>
</div>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Address line 2</dt>
<dd className="govuk-summary-list__value">
{
props.props.props.form.accountRegisterForm.values
.addressline2
}
</dd>
<dd className="govuk-summary-list__actions">
<a
className="govuk-link"
href="#"
onClick={() => {
setRegisterFormComplete(false);
}}
>
Change
<span className="govuk-visually-hidden">
{" "}
address line 2
</span>
</a>
</dd>
</div>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Town/City</dt>
<dd className="govuk-summary-list__value">
{
props.props.props.form.accountRegisterForm.values
.towncity
}
</dd>
<dd className="govuk-summary-list__actions">
<a
className="govuk-link"
href="#"
onClick={() => {
setRegisterFormComplete(false);
}}
>
Change
<span className="govuk-visually-hidden">
{" "}
town/city
</span>
</a>
</dd>
</div>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">County</dt>
<dd className="govuk-summary-list__value">
{
props.props.props.form.accountRegisterForm.values
.county
}
</dd>
<dd className="govuk-summary-list__actions">
<a
className="govuk-link"
href="#"
onClick={() => {
setRegisterFormComplete(false);
}}
>
Change
<span className="govuk-visually-hidden">
{" "}
county
</span>
</a>
</dd>
</div>
<div className="govuk-summary-list__row">
<dt className="govuk-summary-list__key">Postcode</dt>
<dd className="govuk-summary-list__value">
{
props.props.props.form.accountRegisterForm.values
.postcode
}
</dd>
<dd className="govuk-summary-list__actions">
<a
className="govuk-link"
href="#"
onClick={() => {
setRegisterFormComplete(false);
}}
>
Change
<span className="govuk-visually-hidden">
{" "}
postcode
</span>
</a>
</dd>
</div>
</dl>
<div className="govuk-button-group">
<button
type="submit"
className="govuk-button"
data-module="govuk-button"
onClick={() => {
setAccountCreatedComplete(true);
}}
>
Continue
</button>
</div>
</>
);
};
const mapStateToProps = (state) => {
return {
search: state.search,
searchResultsObj: state.searchResultsObj,
formData: state.formData,
appealType: state.appealType,
accountDetails: state.accountDetails,
//form: state.form,
};
};
const mapDispatchToProps = (dispatch) => {
return {
setCurrentSection: (currentSection) => {
dispatch(setCurrentSection(currentSection));
},
};
};
export default connect(mapStateToProps, mapDispatchToProps)(RegisterFormCheck);
+82
View File
@@ -0,0 +1,82 @@
import _ from "lodash";
import Link from "next/link";
import React, { useState } from "react";
import { useRouter } from "next/router";
import useTranslation from "next-translate/useTranslation";
import {
Field,
reduxForm,
formValueSelector,
getFormSubmitErrors,
} from "redux-form";
import {
useDispatch,
useSelector,
shallowEqual,
connect,
setRegisterFormComplete,
setAccountCreatedComplete,
} from "react-redux";
const RegisterComplete = (props) => {
const {
footerLinks,
pages,
handleSubmit,
value,
setRegisterFormComplete,
setAccountCreatedComplete,
} = props;
let { t, lang } = useTranslation();
const router = useRouter();
const { locale } = router;
return (
<>
<p className="govuk-body">We have sent you a confirmation email.</p>
<h2 className="govuk-heading-m">What happens next</h2>
<p className="govuk-body">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi a
metus non quam mollis egestas. Integer ac leo cursus, laoreet
nulla sed, tempus tellus. Mauris condimentum erat arcu.
</p>
<p className="govuk-body">
Sed imperdiet dignissim ipsum. Orci varius natoque penatibus et
magnis dis parturient montes, nascetur ridiculus mus. In id leo
in turpis aliquam venenatis ut non erat. Ut est arcu, luctus sit
amet pretium sed, iaculis non purus. Etiam dictum tortor commodo
luctus rhoncus.
</p>
<p className="govuk-body">
<Link href="/">
<a className="govuk-link">Login to My Portal</a>
</Link>
</p>
</>
);
};
const mapStateToProps = (state) => {
return {
search: state.search,
searchResultsObj: state.searchResultsObj,
formData: state.formData,
appealType: state.appealType,
accountDetails: state.accountDetails,
//form: state.form,
};
};
const mapDispatchToProps = (dispatch) => {
return {
setCurrentSection: (currentSection) => {
dispatch(setCurrentSection(currentSection));
},
};
};
export default connect(mapStateToProps, mapDispatchToProps)(RegisterComplete);
+148 -146
View File
@@ -9,17 +9,9 @@ import {
getFormSubmitErrors,
} from "redux-form";
import { useDispatch, useSelector, shallowEqual, connect } from "react-redux";
import {
Textfield,
DateField,
DateFieldPicker,
YesNofield,
PickList,
MultiLinefield,
NumericField,
ReadOnlyfield,
DecimalField,
} from "../elements";
import RegisterFormCheck from "./registerCheck";
import RegisterComplete from "./registerComplete";
const RenderTextfield = ({
id,
@@ -69,7 +61,12 @@ const RenderTextfield = ({
};
const RegisterForm = (props) => {
const { footerLinks, pages, handleSubmit, value } = props;
const {
handleSubmit,
value,
setRegisterFormComplete,
setAccountCreatedComplete,
} = props;
let { t, lang } = useTranslation();
const router = useRouter();
@@ -77,10 +74,6 @@ const RegisterForm = (props) => {
let errorsobj = {};
const onHandleSubmit = (values) => {
console.log(values);
};
const required = (value) => (value ? undefined : "Is required");
const email = (value) =>
value && !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(value)
@@ -96,139 +89,148 @@ const RegisterForm = (props) => {
const [hasErrors, setHasErrors] = useState("");
const onHandleSubmit = (values) => {
setRegisterFormComplete(true);
};
return (
<>
{/* {hasErrors == true ? (
<ShowErrorHeader
hasErrors={hasErrors}
props={props.props.form}
formXML={formXML}
/>
{props.accountCreatedComplete != true ? (
props.registerFormComplete == false ? (
<form onSubmit={handleSubmit(onHandleSubmit)}>
<fieldset className="govuk-fieldset">
<legend className="govuk-fieldset__legend govuk-fieldset__legend--m">
<h2 className="govuk-fieldset__heading">
About you
</h2>
</legend>
<Field
name="firstname"
id="firstname"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
validate={[required]}
label="First name"
errorMsg="Is required"
/>
<Field
name="lastname"
id="lastname"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
validate={[required]}
label="Last name"
errorMsg="Is required"
/>
<Field
name="email"
id="email"
component={RenderTextfield}
type="email"
className="govuk-input govuk-input--width-20"
validate={[required, email]}
label="Email address"
/>
<Field
name="telephone"
id="telephone"
component={RenderTextfield}
type="number"
className="govuk-input govuk-input--width-20"
validate={[required, phoneNumber]}
label="Telephone"
/>
<Field
name="companygroup"
id="companygroup"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
label="Company/Group"
errorMsg="Is required"
/>
</fieldset>
<fieldset className="govuk-fieldset">
<legend className="govuk-fieldset__legend govuk-fieldset__legend--m">
<h2 className="govuk-fieldset__heading">
What is your address?
</h2>
</legend>
<Field
name="addressline1"
id="addressline1"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
label="Address line 1"
validate={[required]}
errorMsg="Is required"
/>
<Field
name="addressline2"
id="addressline2"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
label="Address line 2"
errorMsg="Is required"
/>
<Field
name="towncity"
id="towncity"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-10"
label="Town/City"
validate={[required]}
errorMsg="Is required"
/>
<Field
name="county"
id="county"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-10"
label="County"
validate={[required]}
errorMsg="Is required"
/>
<Field
name="postcode"
id="postcode"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-5"
label="Postcode"
validate={[required]}
errorMsg="Is required"
/>
</fieldset>
<div className="govuk-button-group">
<button
type="submit"
className="govuk-button"
data-module="govuk-button"
>
Continue
</button>
</div>
</form>
) : (
<RegisterFormCheck
props={props}
setRegisterFormComplete={setRegisterFormComplete}
setAccountCreatedComplete={setAccountCreatedComplete}
/>
)
) : (
""
)} */}
<form onSubmit={handleSubmit(onHandleSubmit)}>
<fieldset className="govuk-fieldset">
<legend className="govuk-fieldset__legend govuk-fieldset__legend--m">
<h2 className="govuk-fieldset__heading">About you</h2>
</legend>
<Field
name="firstname"
id="firstname"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
validate={[required]}
label="First name"
errorMsg="Is required"
/>
<Field
name="lastname"
id="lastname"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
validate={[required]}
label="Last name"
errorMsg="Is required"
/>
<Field
name="email"
id="email"
component={RenderTextfield}
type="email"
className="govuk-input govuk-input--width-20"
validate={[required, email]}
label="Email address"
/>
<Field
name="telephone"
id="telephone"
component={RenderTextfield}
type="number"
className="govuk-input govuk-input--width-20"
validate={[required, phoneNumber]}
label="Telephone"
/>
<Field
name="companygroup"
id="companygroup"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
label="Company/Group"
errorMsg="Is required"
/>
</fieldset>
<fieldset className="govuk-fieldset">
<legend className="govuk-fieldset__legend govuk-fieldset__legend--m">
<h2 className="govuk-fieldset__heading">
What is your address?
</h2>
</legend>
<Field
name="addressline1"
id="addressline1"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
label="Address line 1"
validate={[required]}
errorMsg="Is required"
/>
<Field
name="addressline2"
id="addressline2"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-20"
label="Address line 2"
errorMsg="Is required"
/>
<Field
name="towncity"
id="towncity"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-10"
label="Town/City"
validate={[required]}
errorMsg="Is required"
/>
<Field
name="county"
id="county"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-10"
label="County"
validate={[required]}
errorMsg="Is required"
/>
<Field
name="postcode"
id="postcode"
component={RenderTextfield}
type="text"
className="govuk-input govuk-input--width-5"
label="Postcode"
validate={[required]}
errorMsg="Is required"
/>
</fieldset>
<div className="govuk-button-group">
<button
type="submit"
className="govuk-button"
data-module="govuk-button"
>
Continue
</button>
</div>
</form>
<RegisterComplete />
)}
</>
);
};