{"version":3,"sources":["webpack:///./src/pages/customer-centre/residential-mortgages/renew-mortgage/form/index.tsx","webpack:///./src/components/ResidentialMortgages/Form.tsx","webpack:///./src/components/PageMenu/PageMenu.tsx","webpack:///./src/components/primitives/TextArea/TextArea.tsx","webpack:///./src/data/page-menus/residential-mortgages.ts"],"names":["withTranslation","LocaleNameSpaceKeys","CUSTOMER_CENTRE","props","t","layoutOptions","seo","title","page","heroSection","options","accentColor","HeroSectionColors","SKY_BLUE","heroImage","fileName","alt","className","i18nKey","values","specialistEmail","CommonData","tollFreeCustomerServiceNumber","mortgageServicing","href","aria-label","COMMON","formFor","FormFor","renewal","menu","residentialMortgagesMenu","menuTitle","FormDataKey","ResidentialMortgagesForm","activeLocaleTag","useLocaleContext","recaptchaRef","React","createRef","reCaptchaTimerRef","useRef","inquiryOptions","internalRefinance","yesLabel","noLabel","initialFormState","name","isInvalid","validationMessage","value","htbClient","leverageHome","email","inquiryRegarding","message","reCaptcha","ts","formValues","setFormValues","useState","areFormValuesInvalid","setAreFormValuesInvalid","formSubmissionResponse","setFormSubmissionResponse","submitted","shouldDisplayMessage","handleFormChange","val","id","timestamp","response","document","getElementById","trim","current","JSON","stringify","Date","getTime","useEffect","interval","setInterval","clearInterval","scrollIntoView","block","handleRadioChange","event","target","aria-live","onSubmit","async","e","preventDefault","stopPropagation","newFormValues","formValueFields","Object","keys","firstErrorField","forEach","element","currentField","EmailValidator","newAreFormValuesInvalid","some","field","reset","description","join","finalObject","debug","orgid","process","recordType","subject","captcha_settings","keyname","fallback","orgId","submit","fetch","method","body","qs","credentials","mode","headers","Accept","Origin","then","catch","err","console","error","inputField","recaptcha","querySelector","focus","type","InputType","TEXT","label","inputProps","required","onChange","role","aria-labelledby","htmlFor","checked","textAreaProps","rows","cols","ref","sitekey","prevState","hl","theme","iconOptions","icon","IconTypes","SEND_MAIL","styleOptions","isInline","to","websites","findBroker","linkOptions","isExternalLink","size","ButtonLinkSize","SMALL","ARROW_NEXT","PageMenu","useTranslation","map","menuItem","i","key","textKey","shouldEnableActiveState","enableActiveState","memo","TextArea","errorMessage","TextAreaClassNames","classNames","inputAria","requiredLabel","currentTarget","getPathFromRouteKey","RouteKeys","RESIDENTIAL_MORTGAGES","RENEW_YOUR_MORTGAGE","REFINANCING_MORTGAGE","PURCHASING_HOME"],"mappings":"8FAAA,4IA2EeA,sBAAgBC,IAAoBC,gBAApCF,CA9D6BG,IAC1C,MAAM,EAAEC,GAAMD,EAERE,EAA+B,CACnCC,IAAK,CACHC,MAAOH,EAAG,4BAEZI,KAAM,CACJD,MAAOH,EAAG,0BAEZK,YAAa,CACXC,QAAS,CACPC,YAAaC,IAAkBC,SAC/BC,UAAW,CACTC,SAAU,oBACVC,IAAK,YAMb,OACE,kBAAC,IAAD,CAAQN,QAASL,EAAeY,UAAU,iBACxC,yBAAKA,UAAU,kBACb,yBAAKA,UAAU,gBACb,6BAASA,UAAU,oBACjB,yBAAKA,UAAU,8BACb,2BACE,kBAAC,IAAD,CACEb,EAAGA,EACHc,QAAQ,kCACRC,OAAQ,CACNC,gBAAiBC,IAAWC,8BAA8BC,oBAG5D,kBAAC,IAAD,CACEC,KAAO,OAAMH,IAAWC,8BAA8BC,kBACtDE,aAAa,GAAErB,EAAKH,IAAoByB,OAAtB,gBAChBL,IAAWC,8BAA8BC,qBAG1CF,IAAWC,8BAA8BC,sBAKlD,yBAAKN,UAAU,8BACb,kBAAC,IAAD,CAAMU,QAASC,IAAQC,QAASzB,EAAGA,MAGvC,2BAAOa,UAAU,oBACf,kBAAC,IAAD,CACEa,KAAMC,IACNC,UAAW5B,EAAKH,IAAoByB,OAAtB,iD,yDClE5B,kNAiBO,IAAKE,E,IAUPK,G,SAVOL,K,kBAAAA,E,+BAAAA,M,cAUPK,K,YAAAA,E,cAAAA,E,oCAAAA,E,kBAAAA,E,uBAAAA,M,KA6ZUC,IAnZoC,IAAmB,IAAnB,EAAE9B,EAAF,QAAKuB,GAAc,EACpE,MAAM,gBAAEQ,GAAoBC,cACtBC,EAAeC,IAAMC,YAErBC,EAAoBC,iBAAO,IAE3BC,EAAiB,CACrBb,QAAU,kBACVc,kBAAoB,mBAGhBC,EAAWxC,EAAE,sCACbyC,EAAUzC,EAAE,qCAEZ0C,EAAmB,CACvBC,KAAM,CACJC,WAAW,EACXC,kBAAmB,GACnBC,MAAO,IAETC,UAAW,CACTH,WAAW,EACXE,MAAO,GACPD,kBAAmB,IAErBG,aAAc,CACZJ,WAAW,EACXE,MAAOL,EACPI,kBAAmB,IAErBI,MAAO,CACLL,WAAW,EACXC,kBAAmB,GACnBC,MAAO,IAETI,iBAAkB,CAChBN,WAAW,EACXC,kBAAmB,GACnBC,MAAOR,EAAef,IAExB4B,QAAS,CACPP,WAAW,EACXC,kBAAmB,GACnBC,MAAO,IAETM,UAAW,CACTR,WAAW,EACXC,kBAAmB,GACnBC,MAAO,GACPO,GAAI,MAIF,EAACC,EAAD,EAAaC,GAAiBC,mBAASd,IACvC,EAACe,EAAD,EAAuBC,GAA2BF,oBAAS,IAC3D,EAACG,EAAD,EAAyBC,GAA6BJ,mBAAS,CACnEK,WAAW,EACXC,sBAAsB,IAGlBC,EAAmB,CAACC,EAAUC,KAClCV,EAAc,IACTD,EACH,CAACW,GAAK,IACDX,EAAWW,GACdnB,MAAOkB,MAKPE,EAAY,KAChB,MAAMC,EAAWC,SAASC,eAAe,wBAGzB,MAAZF,GAA6C,IAAzBA,EAASrB,MAAMwB,SACrClC,EAAkBmC,QAAUC,KAAKC,WAAU,IAAIC,MAAOC,aAe1DC,oBAAU,KACR,MAAMC,EAAWC,YAAYZ,EAAW,KACxC,MAAO,KACLa,cAAcF,KAEf,IAEHD,oBAAU,KACR,GAAIjB,EAAuBG,sBAAwBH,EAAuBE,UAAW,CACnF,MAAMV,EAAUiB,SAASC,eAAe,mBAEpClB,GACFA,EAAQ6B,eAAe,CAAEC,MAAO,UAGnC,CAACtB,IAEJ,MAqHMuB,EAAqBC,IACzB,MAAM,KAAExC,EAAF,MAAQG,GAAUqC,EAAMC,OAE9B7B,EAAc,IACTD,EACH,CAACX,GAAO,IACHW,EAAWX,GACdG,YAKN,OAAOa,EAAuBG,sBAAwBH,EAAuBE,UAC3E,yBAAKhD,UAAU,yCACb,uBACEA,UAAU,4CACVwE,YAAU,SACVpB,GAAG,mBAEFjE,EAAE,4DAIP,0BACEsF,SA7IiBC,UACnBC,EAAEC,iBACFD,EAAEE,kBACF,MAAMC,EAAgB,IAAKrC,GACrBsC,EAAkBC,OAAOC,KAAKH,GACpC,IAAII,EAAkB,GAEtBH,EAAgBI,QAASC,IACvB,MAAMC,EAAeP,EAAcM,GAE9BC,EAAapD,MAOK,UAAZmD,GAAwBE,WAAwBD,EAAapD,QAQtEoD,EAAatD,WAAY,EACzBsD,EAAarD,kBAAoB,KARjCqD,EAAatD,WAAY,EACpBmD,IAAiBA,EAAkBE,GAExCC,EAAarD,kBAAoB7C,EAC/B,yEAXFkG,EAAatD,WAAY,EACpBmD,IAAiBA,EAAkBE,GAExCC,EAAarD,kBAAoB7C,EAC9B,6BAA4BiG,qCAenC,MAAMG,EAA0BR,EAAgBS,KAC7CC,GAAWX,EAAsBW,GAAO1D,WAM3C,GAHAW,EAAcoC,GACdjC,EAAwB0C,IAEnBA,EAAyB,CACxBnE,EAAasC,SACftC,EAAasC,QAAQgC,QAGvB,MAAMC,EAAc,CACjB,GAAExG,EAAE,iDAAiDsD,EAAWP,UAAUD,QAC1E,GAAE9C,EAAE,oDAAoDsD,EAAWN,aAAaF,QACjFQ,EAAWH,QAAQL,OACnB2D,KAAK,MAEDC,EAAc,CAClBC,MAAoD,EACpDC,MAAOC,kBACPlE,KAAMW,EAAWX,KAAKG,MACtBG,MAAOK,EAAWL,MAAMH,MACxBgE,WAAYxD,EAAWJ,iBAAiBJ,MACxCiE,QAAS/G,EAAG,sDAAqDuB,GACjEiF,cACA,uBAAwBlD,EAAWF,UAAUN,MAC7CkE,iBAAkBxC,KAAKC,UAAU,CAC/BwC,QAASJ,uBACTK,SAAU,OACVC,MAAON,kBACPxD,GAAIjB,EAAkBmC,UAExB6C,OAAQ,UAkCV,aA/BMC,MAAMR,wEAAyD,CACnES,OAAQ,OACRC,KAAMC,IAAG/C,UAAUiC,GACnBe,YAAa,cACbC,KAAM,UAENC,QAAS,CACP,eAAgB,oCAChB,8BAA+B,IAC/BC,OACE,+HACFC,OAAQ,KACR,4BAA6B,KAG9BC,KAAK,KACJlE,EAA0B,CACxBC,WAAW,EACXC,sBAAsB,IAGxBP,EAAc,IAAMb,KAErBqF,MAAOC,IACNC,QAAQC,MAAO,WAAWF,GAC1BpE,EAA0B,CACxBC,WAAW,EACXC,sBAAsB,OAIrB,EAGT,GAAIiC,EAAiB,CACnB,IAAIoC,EAGFA,EADEpC,IAAoBlE,EAAYuG,UACrBhE,SAASiE,cAAc,6BAEvBjE,SAASC,eAAe0B,GAGnCoC,GACDA,EAA2BG,QAIhC,OAAO,GA4BLzH,UAAU,kEAEV,2BAAOoD,GAAG,mBAAmBsE,KAAK,SAASzF,MAAOR,EAAef,KACjE,kBAAC,IAAD,CACE0C,GAAG,OACHrB,UAAWU,EAAWX,KAAKC,UAC3BC,kBAAmBS,EAAWX,KAAKE,kBACnCvC,QAAS,CACPiI,KAAMC,IAAUC,KAChBC,MAAO1I,EAAE,wCACT2I,WAAY,CACVhG,KAAM,OACNG,MAAOQ,EAAWX,KAAKG,QAG3B8F,UAAQ,EACRC,SAAU9E,IAEZ,yBAAKlD,UAAU,sBACb,yBAAKA,UAAU,uBAAuBiI,KAAK,aAAaC,kBAAgB,aACtE,uBAAG9E,GAAG,aAAajE,EAAE,8CACrB,2BAAOgJ,QAAQ,gBACb,2BACET,KAAK,QACL5F,KAAK,YACLG,MAAO9C,EAAE,sCACTiJ,QAAS3F,EAAWP,UAAUD,QAAUN,EACxCqG,SAAU3D,EACV7D,aAAYrB,EAAE,wCAEfA,EAAE,uCAEL,2BAAOgJ,QAAQ,eACb,2BACET,KAAK,QACL5F,KAAK,YACLG,MAAO9C,EAAE,qCACTiJ,QAAS3F,EAAWP,UAAUD,QAAUL,EACxCoG,SAAU3D,EACV7D,aAAYrB,EAAE,uCAEfA,EAAE,wCAIRsD,EAAWP,UAAUD,QAAUN,EAC9B,oCACE,yBAAK3B,UAAU,sBACb,yBAAKA,UAAU,uBAAuBiI,KAAK,aAAaC,kBAAgB,gBACtE,uBAAG9E,GAAG,gBAAgBjE,EAAE,iDACxB,2BAAOgJ,QAAQ,mBACb,2BACET,KAAK,QACL5F,KAAK,eACLG,MAAO9C,EAAE,sCACTiJ,QAAS3F,EAAWN,aAAaF,QAAUN,EAC3CqG,SAAU3D,EACV7D,aAAYrB,EAAE,wCAEfA,EAAE,uCAEL,2BAAOgJ,QAAQ,kBACb,2BACET,KAAK,QACL5F,KAAK,eACLG,MAAO9C,EAAE,qCACTiJ,QAAS3F,EAAWN,aAAaF,QAAUL,EAC3CoG,SAAU3D,EACV7D,aAAYrB,EAAE,uCAEfA,EAAE,wCAIT,kBAAC,IAAD,CACEiE,GAAG,QACHrB,UAAWU,EAAWL,MAAML,UAC5BC,kBAAmBS,EAAWL,MAAMJ,kBACpCvC,QAAS,CACPiI,KAAMC,IAAUC,KAChBC,MAAO1I,EAAE,yCACT2I,WAAY,CACVhG,KAAM,QACNG,MAAOQ,EAAWL,MAAMH,QAG5B8F,UAAQ,EACRC,SAAU9E,IAEZ,kBAAC,IAAD,CACEE,GAAG,UACHrB,UAAWU,EAAWH,QAAQP,UAC9BC,kBAAmBS,EAAWH,QAAQN,kBACtCvC,QAAS,CACPoI,MAAO1I,EAAE,2CACTkJ,cAAe,CACbC,KAAM,GACNC,KAAM,GACNzG,KAAM,cACNG,MAAOQ,EAAWH,QAAQL,QAG9B8F,UAAQ,EACRC,SAAU9E,IAEZ,yBAAKlD,UAAU,+CACb,kBAAC,IAAD,CACEwI,IAAKpH,EACLqH,QAASzC,2CACTgC,SAvRmB/F,IAC7BS,EAAegG,IAAD,IACTA,EACHnG,UAAW,IACNmG,EAAUnG,UACbR,WAAW,EACXE,aAkRM0G,GAAIzH,EACJ0H,MAAM,UAIT9F,EAAuBG,uBAAyBH,EAAuBE,WACtE,kBAAC,IAAD,CAAchD,UAAU,mDACrBb,EAAE,yDAINyD,GACC,kBAAC,IAAD,CAAc5C,UAAU,mDACrBb,EAAE,kDAIP,kBAAC,IAAD,CACEiE,GAAG,iBACHsE,KAAK,SACLmB,YAAa,CAAEC,KAAMC,IAAUC,WAC/BC,aAAc,CAAEC,UAAU,IAEzB/J,EAAE,2CAGL,KACHsD,EAAWP,UAAUD,QAAUL,EAC9B,yBAAK5B,UAAU,yCACb,2BAAIb,EAAE,qDACN,kBAAC,IAAD,CACEgK,GAAI/I,IAAWgJ,SAASC,WAAWnI,GACnCoI,YAAa,CAAEC,gBAAgB,GAC/BN,aAAc,CAAEO,KAAMC,IAAeC,MAAOR,UAAU,GACtDL,YAAa,CAAEC,KAAMC,IAAUY,aAE9BxK,EAAE,sDAGL,Q,kCCnbV,uEAeA,MAAMyK,EAA6B,IAAoD,IAApD,KAAE/I,EAAF,UAAQE,EAAY,GAApB,UAAwBf,EAAY,IAAgB,EACrF,MAAM,EAAEb,GAAM0K,cAoBd,OACE,yBAAK7J,UAAY,YAAWA,GACzBe,GAAa,wBAAIf,UAAU,MAAMe,GAClC,4BApBKF,EAAKiJ,IAAI,CAACC,EAAUC,IACzB,wBAAIC,IAAM,GAAEF,EAASG,WAAWF,KAC9B,kBAAC,IAAD,eACEb,GAAIY,EAASZ,GACbN,YAAa,CAAEC,KAAMC,IAAUY,aAC1B,sBAAuBI,GAAY,CACtCT,YAAa,CACXa,wBAAyBJ,EAASK,qBAIrCjL,EAAE4K,EAASG,eAcPG,mBAAKT,I,yDC5CpB,4FAuEeU,IAvCoB,IAQ7B,IAR6B,UACjCtK,EAAY,GADqB,GAEjCoD,EAFiC,QAGjC3D,EAHiC,SAIjCuI,EAAW,SAJsB,UAKjCjG,EALiC,kBAMjCC,EAAoB,GANa,SAOjC+F,GACI,EACJ,MAAM,EAAE5I,GAAM0K,cAMRU,EACFxI,GAAaC,EACb,kBAAC,IAAD,CAAcoB,GAAK,SAAQA,GAAOpB,GAChC,KAEAwI,EAAqBC,IAAW,WAAYzK,EAAW,CAC3D,yBAA0B+B,IAGtB2I,EAAY1I,EAAoB,CAAE,mBAAqB,SAAQoB,GAAS,GACxEuH,EAAgBxL,EAAKH,IAAoByB,OAAtB,kBACnBoH,EAAQE,EAAY,GAAEtI,EAAQoI,SAAS8C,IAAkBlL,EAAQoI,MAEvE,OACE,yBAAK7H,UAAWwK,GACd,2BAAOrC,QAAS/E,GAAKyE,GACrB,yBAAK7H,UAAU,2BACb,4CAAUoD,GAAIA,EAAI4E,SArBA1D,IACtB0D,EAAS1D,EAAMsG,cAAc3I,MAAOmB,KAoBgB3D,EAAQ4I,cAAmBqC,KAE5EH,K,yDClEP,4BAIA,MAAMzJ,EAA0C,CAC9C,CACEqI,GAAI0B,YAAoBC,IAAU7L,gBAAgB8L,sBAAsBC,qBACxEd,QAAS,4BAEX,CACEf,GAAI0B,YAAoBC,IAAU7L,gBAAgB8L,sBAAsBE,sBACxEf,QAAS,kCAEX,CACEf,GAAI0B,YAAoBC,IAAU7L,gBAAgB8L,sBAAsBG,iBACxEhB,QAAS,8BAIEpJ","file":"component---src-pages-customer-centre-residential-mortgages-renew-mortgage-form-index-tsx-d0df40c8e2a219792431.js","sourcesContent":["import React from 'react';\nimport { PageProps } from 'gatsby';\nimport { WithTranslation, withTranslation, Trans } from 'react-i18next';\nimport Layout, { LayoutOptions, HeroSectionColors } from '../../../../../components/Layout/Layout';\nimport { LocaleNameSpaceKeys } from '../../../../../localization/translations';\nimport PageMenu from '../../../../../components/PageMenu/PageMenu';\nimport residentialMortgagesMenu from '../../../../../data/page-menus/residential-mortgages';\nimport ExternalLink from '../../../../../components/ExternalLink/ExternalLink';\nimport CommonData from '../../../../../data/common/common';\nimport Form, { FormFor } from '../../../../../components/ResidentialMortgages/Form';\n\ntype Props = PageProps & WithTranslation;\n\nconst RenewMortgageForm: React.FC = (props) => {\n const { t } = props;\n\n const layoutOptions: LayoutOptions = {\n seo: {\n title: t(`renewMortgage.seo.title`),\n },\n page: {\n title: t(`renewMortgage.heading`),\n },\n heroSection: {\n options: {\n accentColor: HeroSectionColors.SKY_BLUE,\n heroImage: {\n fileName: 'hero-image-12.jpg',\n alt: 'Image',\n },\n },\n },\n };\n\n return (\n \n
\n
\n
\n
\n

\n \n \n {CommonData.tollFreeCustomerServiceNumber.mortgageServicing}\n \n \n

\n
\n
\n
\n
\n
\n \n
\n
\n
\n );\n};\n\nexport default withTranslation(LocaleNameSpaceKeys.CUSTOMER_CENTRE)(RenewMortgageForm);\n","import React, { useState, useRef, useEffect } from 'react';\nimport { TFunction } from 'i18next';\nimport ReCAPTCHA from 'react-google-recaptcha';\nimport * as EmailValidator from 'email-validator';\nimport qs from 'qs';\n\nimport Input, { InputType } from '../primitives/Input/Input';\nimport Button from '../primitives/Button/Button';\nimport TextArea from '../primitives/TextArea/TextArea';\nimport { IconTypes } from '../Icon/Icon';\nimport { useLocaleContext } from '../../context/Locale';\nimport ErrorMessage from '../ErrorMessage/ErrorMessage';\nimport CommonData from '../../data/common/common';\nimport ButtonLink, { ButtonLinkSize } from '../ButtonLink/ButtonLink';\n\nimport './style.scss';\n\nexport enum FormFor {\n renewal = 'renewal',\n refinance = 'internalRefinance',\n}\n\ninterface OwnProps {\n t: TFunction;\n formFor: FormFor;\n}\n\nenum FormDataKey {\n name = 'name',\n email = 'email',\n inquiryRegarding = 'inquiryRegarding',\n message = 'message',\n recaptcha = 'reCaptcha',\n}\n\ntype Props = OwnProps;\n\nconst ResidentialMortgagesForm: React.FC = ({ t, formFor }) => {\n const { activeLocaleTag } = useLocaleContext();\n const recaptchaRef = React.createRef();\n\n const reCaptchaTimerRef = useRef('');\n\n const inquiryOptions = {\n renewal: `012f1000000LJKD`,\n internalRefinance: `0125o0000004Imy`,\n };\n\n const yesLabel = t('residentialMortgages.form.yesLabel');\n const noLabel = t('residentialMortgages.form.noLabel');\n\n const initialFormState = {\n name: {\n isInvalid: false,\n validationMessage: '',\n value: '',\n },\n htbClient: {\n isInvalid: false,\n value: '',\n validationMessage: '',\n },\n leverageHome: {\n isInvalid: false,\n value: noLabel,\n validationMessage: '',\n },\n email: {\n isInvalid: false,\n validationMessage: '',\n value: '',\n },\n inquiryRegarding: {\n isInvalid: false,\n validationMessage: '',\n value: inquiryOptions[formFor],\n },\n message: {\n isInvalid: false,\n validationMessage: '',\n value: '',\n },\n reCaptcha: {\n isInvalid: false,\n validationMessage: '',\n value: '',\n ts: '',\n },\n };\n\n const [formValues, setFormValues] = useState(initialFormState);\n const [areFormValuesInvalid, setAreFormValuesInvalid] = useState(false);\n const [formSubmissionResponse, setFormSubmissionResponse] = useState({\n submitted: false,\n shouldDisplayMessage: false,\n });\n\n const handleFormChange = (val: any, id: FormDataKey) => {\n setFormValues({\n ...formValues,\n [id]: {\n ...formValues[id],\n value: val,\n },\n });\n };\n\n const timestamp = () => {\n const response = document.getElementById('g-recaptcha-response');\n // @ts-ignore\n // eslint-disable-next-line eqeqeq\n if (response == null || response.value.trim() == '') {\n reCaptchaTimerRef.current = JSON.stringify(new Date().getTime());\n }\n };\n\n const handleCaptchaOnChange = (value: any) => {\n setFormValues((prevState) => ({\n ...prevState,\n reCaptcha: {\n ...prevState.reCaptcha,\n isInvalid: false,\n value,\n },\n }));\n };\n\n useEffect(() => {\n const interval = setInterval(timestamp, 500);\n return () => {\n clearInterval(interval);\n };\n }, []);\n\n useEffect(() => {\n if (formSubmissionResponse.shouldDisplayMessage && formSubmissionResponse.submitted) {\n const message = document.getElementById('success-message');\n\n if (message) {\n message.scrollIntoView({ block: 'end' });\n }\n }\n }, [formSubmissionResponse]);\n\n const handleSubmit = async (e: any) => {\n e.preventDefault();\n e.stopPropagation();\n const newFormValues = { ...formValues };\n const formValueFields = Object.keys(newFormValues);\n let firstErrorField = '';\n\n formValueFields.forEach((element) => {\n const currentField = newFormValues[element as FormDataKey];\n\n if (!currentField.value) {\n currentField.isInvalid = true;\n if (!firstErrorField) firstErrorField = element;\n\n currentField.validationMessage = t(\n `residentialMortgages.form.${element}.validationMessage.emptyField`\n );\n } else if (element === 'email' && !EmailValidator.validate(currentField.value)) {\n currentField.isInvalid = true;\n if (!firstErrorField) firstErrorField = element;\n\n currentField.validationMessage = t(\n 'residentialMortgages.form.email.validationMessage.invalidCharacters'\n );\n } else {\n currentField.isInvalid = false;\n currentField.validationMessage = '';\n }\n });\n\n const newAreFormValuesInvalid = formValueFields.some(\n (field) => (newFormValues as any)[field].isInvalid\n );\n\n setFormValues(newFormValues);\n setAreFormValuesInvalid(newAreFormValuesInvalid);\n\n if (!newAreFormValuesInvalid) {\n if (recaptchaRef.current) {\n recaptchaRef.current.reset();\n }\n\n const description = [\n `${t('residentialMortgages.form.htbClient.label')}: ${formValues.htbClient.value}`,\n `${t('residentialMortgages.form.leverageHome.label')}: ${formValues.leverageHome.value}`,\n formValues.message.value,\n ].join('\\n');\n\n const finalObject = {\n debug: process.env.NODE_ENV === 'development' ? 1 : 0,\n orgid: process.env.GATSBY_WEB_TO_CASE_SALESFORCE_ORG_ID,\n name: formValues.name.value,\n email: formValues.email.value,\n recordType: formValues.inquiryRegarding.value,\n subject: t(`residentialMortgages.form.inquiryRegarding.options.${formFor}`),\n description,\n 'g-recaptcha-response': formValues.reCaptcha.value,\n captcha_settings: JSON.stringify({\n keyname: process.env.GATSBY_WEB_TO_CASE_SALESFORCE_CAPTCHA_KEY_NAME,\n fallback: 'true',\n orgId: process.env.GATSBY_WEB_TO_CASE_SALESFORCE_ORG_ID,\n ts: reCaptchaTimerRef.current, // inclusion of time means response was validated\n }),\n submit: 'Submit',\n };\n\n await fetch(process.env.GATSBY_WEB_TO_CASE_SALESFORCE_URL as string, {\n method: 'POST',\n body: qs.stringify(finalObject),\n credentials: 'same-origin',\n mode: 'no-cors',\n // @ts-ignore\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Access-Control-Allow-Origin': '*',\n Accept:\n 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',\n Origin: null,\n 'Upgrade-Insecure-Requests': 1,\n },\n })\n .then(() => {\n setFormSubmissionResponse({\n submitted: true,\n shouldDisplayMessage: true,\n });\n\n setFormValues(() => initialFormState);\n })\n .catch((err) => {\n console.error(`Failed: `, err);\n setFormSubmissionResponse({\n submitted: false,\n shouldDisplayMessage: true,\n });\n });\n\n return true;\n }\n\n if (firstErrorField) {\n let inputField;\n\n if (firstErrorField === FormDataKey.recaptcha) {\n inputField = document.querySelector('recaptcha-checkbox-border');\n } else {\n inputField = document.getElementById(firstErrorField);\n }\n\n if (inputField) {\n (inputField as HTMLElement).focus();\n }\n }\n\n return false;\n };\n\n const handleRadioChange = (event: any) => {\n const { name, value } = event.target;\n\n setFormValues({\n ...formValues,\n [name]: {\n ...formValues[name as FormDataKey],\n value,\n },\n });\n };\n\n return formSubmissionResponse.shouldDisplayMessage && formSubmissionResponse.submitted ? (\n
\n \n {t('residentialMortgages.form.submissionValidation.success')}\n

\n
\n ) : (\n \n \n \n
\n
\n

{t('residentialMortgages.form.htbClient.label')}

\n \n \n
\n
\n {formValues.htbClient.value === yesLabel ? (\n <>\n
\n
\n

{t('residentialMortgages.form.leverageHome.label')}

\n \n \n
\n
\n \n \n
\n \n
\n\n {formSubmissionResponse.shouldDisplayMessage && !formSubmissionResponse.submitted && (\n \n {t('residentialMortgages.form.submissionValidation.error')}\n \n )}\n\n {areFormValuesInvalid && (\n \n {t('residentialMortgages.form.genericErrorMessage')}\n \n )}\n\n \n {t('residentialMortgages.form.submitLabel')}\n \n \n ) : null}\n {formValues.htbClient.value === noLabel ? (\n
\n

{t('residentialMortgages.form.findBroker.description')}

\n \n {t('residentialMortgages.form.findBroker.buttonLabel')}\n \n
\n ) : null}\n \n );\n};\n\nexport default ResidentialMortgagesForm;\n","import React, { memo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { IconTypes } from '../Icon/Icon';\nimport { PageMenuLinks } from '../../data/page-menus/pageMenuTypes';\nimport ButtonLink from '../ButtonLink/ButtonLink';\nimport './style.scss';\n\nexport interface OwnProps {\n menuTitle?: string;\n menu: PageMenuLinks;\n className?: string;\n}\n\ntype Props = OwnProps;\n\nconst PageMenu: React.FC = ({ menu, menuTitle = '', className = '' }: Props) => {\n const { t } = useTranslation();\n\n const getMenuContent = () => {\n return menu.map((menuItem, i) => (\n
  • \n \n {t(menuItem.textKey)}\n \n
  • \n ));\n };\n\n return (\n
    \n {menuTitle &&

    {menuTitle}

    }\n
      {getMenuContent()}
    \n
    \n );\n};\n\nexport default memo(PageMenu);\n","import React, { FormEvent, HTMLProps } from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\nimport { LocaleNameSpaceKeys } from '../../../localization/translations';\nimport ErrorMessage from '../../ErrorMessage/ErrorMessage';\nimport './style.scss';\n\nexport interface TextAreaOptions {\n label: string;\n textAreaProps?: HTMLProps;\n}\n\nexport interface SelectOption {\n label: string;\n value: string;\n selected?: boolean;\n disabled?: boolean;\n}\n\ninterface OwnProps {\n id: string;\n className?: string;\n options: TextAreaOptions;\n isInvalid?: boolean;\n validationMessage?: string;\n onChange?: (...args: any[]) => any;\n required?: boolean;\n}\n\ntype Props = OwnProps;\n\nconst TextArea: React.FC = ({\n className = '',\n id,\n options,\n onChange = () => {},\n isInvalid,\n validationMessage = '',\n required,\n}) => {\n const { t } = useTranslation();\n\n const handleOnChange = (event: FormEvent) => {\n onChange(event.currentTarget.value, id);\n };\n\n const errorMessage =\n !!isInvalid && validationMessage ? (\n {validationMessage}\n ) : null;\n\n const TextAreaClassNames = classNames('TextArea', className, {\n 'TextArea__is-invalid': !!isInvalid,\n });\n\n const inputAria = validationMessage ? { 'aria-describedby': `error-${id}` } : {};\n const requiredLabel = t(`${LocaleNameSpaceKeys.COMMON}:requiredField`);\n const label = required ? `${options.label} ${requiredLabel}` : options.label;\n\n return (\n
    \n \n
    \n