import useTranslation from "next-translate/useTranslation"; import Link from "next/link"; import { useRouter } from "next/router"; import React, { useState } from "react"; import { connect } from "react-redux"; import { Field, formValueSelector, reduxForm } from "redux-form"; import BuildCheckPersonalDetails from "./personaldetailsCheck"; import PersonalDetailsComplete from "./personaldetailsComplete"; const RenderTextfield = ({ id, className, rows, datafieldname, name, label, input, type, errorMsg, disabled, meta: { touched, error }, ...custom }) => { return ( <>
{touched && error && ( Error:{" "} {touched && ((error && ( {errorMsg ? errorMsg : error} )) || (warning && {warning}))} )}
); }; const RenderRadioList = ({ datafieldname, name, label, id, errorMsg, options, input: { onChange, value }, meta: { touched, error }, ...custom }) => { const required = (value) => (value ? undefined : "Required"); return ( <>
{touched && error && ( Error: {" "} {errorMsg} )}
{Object.keys(options).map((key, index) => (
))}
); }; const RenderPickList = ({ datafieldname, name, label, input, optionsArr, meta: { touched, error }, errorMsg, }) => { let { t, lang } = useTranslation(); optionsArr = [ t("account:account-preferred-language-english") + ":846040001", t("account:account-preferred-language-welsh") + ":846040000", ]; return ( <>
{touched && error && ( Error:{" "} {errorMsg} )}
); }; let PersonalDetails = (props) => { const { handleSubmit, value, setPersonalDetailsComplete, setAccountUpdatedComplete, load, pristine, reset, submitting, } = props; let { t, lang } = useTranslation(); const router = useRouter(); const { locale } = router; let errorsobj = {}; 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; const email = (value) => value && !emailRegex.test(value) ? t("account:invalid-phone-number-errormsg") : 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 ) ? t("account:invalid-phone-number-errormsg") : 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) => { setPersonalDetailsComplete(true); }; return ( <> {props.accountUpdatedComplete == false ? ( props.personalDetailsComplete == false ? (

{t("account:account-about-you-label")}

{t("account:account-role-label")}:{" "} { props.props.accountDetails .accountDetails[ "pinswg_typeofinvolvement@OData.Community.Display.V1.FormattedValue" ] }

{t("account:account-your-address-label")}

{t("common:cancel-link")}
) : ( <> ) ) : ( )} ); }; 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)); }, }; }; 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, // // pull initial values from account reducer // //}) // )( // reduxForm({ // form: "personalDetailsForm", // enableReinitialize: true, // this is needed!! // destroyOnUnmount: false, // })(PersonalDetails) // ); // Decorate with reduxForm(). It will read the initialValues prop provided by connect() PersonalDetails = reduxForm({ form: "personalDetailsForm", enableReinitialize: true, // this is needed!! destroyOnUnmount: false, })(PersonalDetails); // You have to connect() to any reducers that you wish to connect to yourself PersonalDetails = connect((state) => ({ initialValues: state.accountDetails.accountDetails, // pull initial values from account reducer }))(PersonalDetails); export default PersonalDetails;