{"version":3,"sources":["constants/routes.js","constants/app.js","reducers/app.js","constants/account-details.js","reducers/account-details.js","constants/case-details.js","services/validator.js","reducers/case-details.js","constants/session.js","reducers/session.js","reducers/index.js","services/http.js","constants/api-endpoints.js","actions/app.js","actions/account-details.js","schemas/law-firm.js","sagas/account-details.js","actions/session.js","sagas/app.js","actions/case-details.js","sagas/case-details.js","sagas/session.js","sagas/index.js","middlewares/index.js","config/fetch-intercept.js","config/theme.js","_lib/absolute-url.js","_lib/trim-value.js","components/header/Header.style.js","components/header/Header.jsx","components/header/index.js","components/footer/index.js","components/footer/Footer.style.js","components/footer/Footer.jsx","components/modal/Modal.jsx","components/modal/index.js","components/modal/Modal.style.js","components/tooltip/index.jsx","components/tooltip/Tooltip.style.js","components/loading/index.js","components/loading/style.js","components/case-details-view/index.js","components/case-details-view/CaseDetailsView.jsx","components/case-details-view/CaseDetailsView.style.js","components/error-view/ErrorView.jsx","components/error-view/index.js","components/error-view/ErrorView.style.js","components/tokened-view/index.js","components/tokened-view/TokenedView.jsx","hocs/with-token/index.js","hocs/with-token/withToken.jsx","components/attempts-remaining/AttemptsRemaining.style.js","components/attempts-remaining/AttemptsRemaining.jsx","components/attempts-remaining/index.js","components/account-details-view/AccountDetailsView.jsx","components/account-details-view/index.js","components/account-details-view/AccountDetailsView.style.js","components/autocomplete/SuggestionItem.jsx","components/autocomplete/Autocomplete.jsx","components/autocomplete/index.js","components/autocomplete/Autocomplete.style.js","components/law-firm-search-view/SelectedLawFirm.jsx","components/law-firm-search-view/LawFirmSearchView.jsx","components/law-firm-search-view/index.js","components/law-firm-search-view/LawFirmSearchView.style.js","components/landing-view/index.js","components/landing-view/LandingView.style.js","components/landing-view/LandingView.jsx","components/bank-account-result-view/ButtonExit.jsx","components/bank-account-result-view/BankAccountResultView.jsx","components/bank-account-result-view/index.js","components/bank-account-result-view/BankAccountResultView.style.js","components/faq-view/FAQ.jsx","components/faq-view/index.js","components/faq-view/FAQ.style.js","App.jsx","config/store.js","serviceWorker.js","index.js"],"names":["LANDING_PAGE","CASE_DETAILS_PAGE","BANK_ACCOUNT_RESULT_PAGE","ERROR_PAGE","ACCOUNT_DETAILS_PAGE","LAW_FIRM_SEARCH_PAGE","FAQ_PAGE","ERROR_UNAUTHORIZED","ERROR_FORBIDDEN","ERROR_TOO_MANY_ATTEMPTS","ERROR_CODE_EXPIRED","API_ERROR","handleActions","Object","defineProperty","state","_ref","isLoading","assocPath","SUBMIT","SUBMIT_LAW_FIRM_SELECTION","SEARCH_LAW_FIRM","account_details","_handleActions","payload","assoc","remainingAttempts","_ref2","list","_ref3","firm","_ref4","bankDetails","objectSpread","selectedLawFirm","attempts","lawFirmsList","submissionResult","status","text","FIELD_EMAIL","FIELD_SURNAME","FIELD_POSTCODE","FIELD_RECAPTCHA","Validator","value","_this","this","classCallCheck","isEmail","isValid","emailValidator","validate","errorMessage","isName","test","isPostCode","hasMinLength","minLength","String","length","concat","isReCAPTCHA","isNil","isRequired","isChecked","isAccountNumber","isSortCode","defaultState","fields","_fields","isCompleted","validateField","field","validation","resetSubmission","R","submitComplete","_ref4$error","error","newState","case_details_handleActions","validatedField","recaptcha","forEach","SESSION_EMAIL_TOKEN","VALIDATE_TOKEN","session_handleActions","token","createReducers","history","combineReducers","app","accountDetails","persistReducer","key","storage","stateReconciler","autoMergeLevel2","whitelist","caseDetails","router","connectRouter","session","HTTPError","statusText","possibleConstructorReturn","getPrototypeOf","call","Error","fetch","endpoint","query","method","headers","body","options","arguments","undefined","ignoreErrorStatusCodes","window","process","keys","queryString","stringify","serialize","JSON","then","response","ok","catchErrors","http","get","params","post","Accept","Content-Type","VERIFICATION","CLIENT_ACCOUNT_VERIFICATION","apiError","type","appIsLoading","submit","setRemainingAttempts","setLawFirmsList","submitLawFirmSelection","setSubmissionResult","setSubmissionError","searchLawFirm","postCode","firmName","resetLawFirmResults","selectLawFirm","resetSelectedLawFirm","lawFirm","schema","Entity","processStrategy","entity","label","title","goToAccountDetailsPage","watchActions","getVerification","branchId","accountNumber","sortCode","url","API_ENDPOINTS","asyncToGenerator","regenerator_default","a","mark","_callee","wrap","_context","prev","next","json","t0","sent","t1","abrupt","data","stop","_x","apply","getLawFirms","getRemainingAttempts","getBranchId","id","getSessionStore","_ref5","_ref6","_ref7","_ref8","_context2","put","delay","select","replace","push","finish","_marked","_ref9","_ref10","_normalize","_context3","normalize","lawFirmSchema","entities","_marked2","_context4","_marked3","_context5","takeLatest","_marked4","fork","expired","validateToken","setTokenValidity","redirectToErrorPage","statusCode","Number","code","pathname","search","app_marked","app_marked2","updateField","updateFieldValidation","submitSuccess","submitFailure","postVerification","getFields","_call","values","every","case_details_marked","case_details_marked2","getLocationSearch","location","getToken","fetchIsValidToken","_queryString$parse","_queryString$parse$em","emailToken","parse","ignoreQueryPrefix","session_marked","session_marked2","rootSaga","sagas","all","sagas_marked","sagaMiddleware","createSagaMiddleware","createMiddleware","applyMiddleware","routerMiddleware","currentUrl","fetch_intercept","dispatch","fetchIntercept","register","responseUrl","RegExp","join","request","config","fontFamily","config_theme","createMuiTheme","typography","default","color","useNextVariants","h2","fontSize","h3","marginBottom","h6","body2","palette","background","primary","light","main","dark","contrastText","overrides","MuiInputLabel","root","lineHeight","shrink","transform","MuiButton","contained","padding","boxShadow","borderRadius","backgroundColor","grey","containedPrimary","containedSecondary","MuiFormHelperText","filled","margin","MuiInputBase","input","marginTop","position","border","width","MuiInputAdornment","positionEnd","marginLeft","MuiListItem","button","MuiLink","underlineHover","textDecoration","display","fontWeight","MuiPaper","MuiSvgIcon","colorPrimary","MuiDivider","middle","marginRight","height","overflowX","contentContainer","top","overflowY","trailingSlash","absoluteUrl","path","origin","basePath","map","trimValue","HeaderLink","props","href","className","react_default","createElement","Link","to","defaultProps","withStyles","theme","header","alignItems","paper","justifyContent","spacing","unit","zIndex","logo","backgroundImage","backgroundSize","poweredBy","backgroundRepeat","classes","headerLeftIconLink","headerRightIconLink","footer","bottom","link","&:hover","termsOfUsePath","target","privacyNoticePath","Modal","Button","buttonComponent","content","isOpen","onClose","paragraphs","index_es","open","onEscapeKeyDown","paperModal","aria-label","closeModalButton","onClick","icons_index_es","variant","headingModal","containerModal","paragraph","paragraphModal","dangerouslySetInnerHTML","_html","modal","right","shadows","outline","left","maxWidth","maxHeight","flexDirection","paddingBottom","&::after","CustomTooltip","handleTooltipClose","setState","handleTooltipOpen","handleOnClick","prevState","_this$props","placement","tooltip","onOpen","tooltipIcon","PureComponent","common","white","cursor","container","overlay","opacity","message","boxSizing","& p","spinner","spinnerSlice","transformOrigin","animation","Array","fill","reduce","acc","nth","animationDelay","e","compose","connect","_ref3$caseDetails","_ref3$app","resetSubmissionAction","bindActionCreators","submitAction","updateFieldAction","updateFieldValidationAction","resultHeading","textField","intro","nextButtonContainer","privacyPolicy","modalButtonContainer","formControlWithTooltip","& input","inputLabel","& > label","inputBox","& .validation","inputErrorMessage","formLabel","formLabelWithTooltip","_ref$fields","email","surname","postcode","ReCAPTCHAField","_useState","useState","_useState2","slicedToArray","setValue","recaptchaEl","useRef","onChangeField","ev","onBlurField","onClickResendLink","current","reset","areFieldsValid","loading","align","component","HashLink","ga","fullWidth","htmlFor","onChange","onBlur","onFocus","hidden","toUpperCase","reCaptchaContainer","lib_es","ref","sitekey","reCaptchaKey","data-submit-form","preventDefault","disabled","rightIcon","bankName","ErrorView","faq","errorDescription","resultIconWarning","resultHeaderDivider","buttonContainer","buttons","exitLink","& svg","validateTokenAction","children","withToken","WrappedComponent","tokened_view","AttemptsRemaining_style","AttemptsRemaining","pluralize","style","tnc","AccountDetailsView","_Component","onChangeInput","checked","substr","match","slice","formatValue","onBlurInput","onFocusInput","onClickSubmit","routes","_this$state","inherits","createClass","_this2","_this$state2","control","attempts_remaining","Component","SuggestionItem","suggestion","companyName","tradingName","suggestionItem","Autocomplete","initialInputValue","itemToString","onSelect","placeholder","suggestions","stateReducer","downshift_esm","onInputValueChange","getInputProps","getItemProps","getMenuProps","highlightedIndex","isSuggestionsOpen","InputLabelProps","InputProps","disableUnderline","inputRoot","inputInput","cx","is-open","square","index","isHighlighted","itemProps","item","assign","selected","data-qa","autocomplete_SuggestionItem","flexGrow","&.is-open","chip","flexWrap","divider","overflow","& strong, & span","& span","whiteSpace","textOverflow","SelectedLawFirm","isLawFirmNotListed","messageLawFirmNotListed","isUnderReview","address","regulator","Fragment","prepareSuggestionsList","downshiftStateReducer","changes","Downshift","stateChangeTypes","mouseUp","blurInput","LawFirmSearchView","onChangePostCode","_ev$target$value","isValidPostCode","onBlurPostCode","showLawFirmSearch","setFirmNotListed","newShowLawFirmSearch","onKeyDownPostCode","keyCode","onClickShowLawFirmSearch","onChangeFirmName","onSelectLawFirm","selectedFirmId","downshiftItemToString","itemId","Boolean","_this$state3","inputSearchPostcode","onKeyDown","autoComplete","endAdornment","autoCompleteContainer","autocomplete","& input[type=\"text\"]","& button","& [role=listbox] > div > div:last-of-type","& > p","_ref$accountDetails","backgroundPosition","cta","matched","ButtonExit","resetSelected","BankAccountResultView","resultIconSuccess","resultHeaderLink","resultIconCancel","detailsTitle","dayjs","dateTime","format","resultContainer","downloadLabel","downloadButtonContainer","buttonDownloadPdf","disableRipple","disableFocusRipple","bank_account_result_view_ButtonExit","buttonExit","result","_ref2$accountDetails","borderWidth","borderStyle","borderColor","& a","toc","hash","h1","question","& > h1","paddingTop","answer","& p > a","& ul","listStyleType","& li","rel","App","_registerStore","composeEnhancers","createBrowserHistory","basename","middleware","reducers","store","createStore","persistor","persistStore","run","registerStore","es","integration_react","styles","CssBaseline_default","esm","Switch","Route","exact","LandingView","CaseDetailsView","FAQView","render","error_view","displayName","name","hostname","startUp","rootElement","document","getElementById","ReactDOM","src_App","navigator","serviceWorker","ready","registration","unregister","catch","console"],"mappings":"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","file":"static/js/main.163cdd9a.chunk.js","sourcesContent":["export const LANDING_PAGE = `/`;\r\nexport const CASE_DETAILS_PAGE = `/case-details`;\r\nexport const BANK_ACCOUNT_RESULT_PAGE = `/bank-account-result`;\r\nexport const ERROR_PAGE = `/error`;\r\nexport const ACCOUNT_DETAILS_PAGE = `/account-details`;\r\nexport const LAW_FIRM_SEARCH_PAGE = `/law-firm-search`;\r\nexport const FAQ_PAGE = `/faq`;\r\n\r\nexport const ERROR_UNAUTHORIZED = 401;\r\nexport const ERROR_FORBIDDEN = 403;\r\nexport const ERROR_TOO_MANY_ATTEMPTS = 429;\r\nexport const ERROR_CODE_EXPIRED = 440;\r\n","export const API_ERROR = `APP::API_ERROR`;\r\nexport const APP_IS_LOADING = `APP::IS_LOADING`;\r\n","import { handleActions } from \"redux-actions\";\r\nimport { assocPath } from \"ramda\";\r\n\r\nimport { APP_IS_LOADING } from \"../constants/app\";\r\n\r\nconst defaultState = {\r\n isLoading: false,\r\n};\r\n\r\nconst appIsLoading = (state, { isLoading }) => assocPath([`isLoading`], isLoading, state);\r\n\r\nexport default handleActions(\r\n {\r\n [APP_IS_LOADING]: appIsLoading,\r\n },\r\n defaultState,\r\n);\r\n","export const SET_FIRM_FIELD = `ACCOUNT_DETAILS::SET_FIRM_FIELD`;\r\nexport const SET_LAW_FIRMS_LIST = `ACCOUNT_DETAILS::SET_LAW_FIRMS_LIST`;\r\nexport const SET_REMAINING_ATTEMPTS = `ACCOUNT_DETAILS::SET_REMAINING_ATTEMPTS`;\r\nexport const SUBMISSION_ERROR = `ACCOUNT_DETAILS::SUBMISSION_ERROR`;\r\nexport const SET_SUBMISSION_RESULT = `ACCOUNT_DETAILS::SET_SUBMISSION_RESULT`;\r\nexport const SUBMIT = `ACCOUNT_DETAILS::SUBMIT`;\r\nexport const SUBMIT_LAW_FIRM_SELECTION = `ACCOUNT_DETAILS::SUBMIT_LAW_FIRM_SELECTION`;\r\nexport const UPDATE_FIELD = `ACCOUNT_DETAILS::UPDATE_FIELD`;\r\nexport const FIELD_ACCOUNT_NUMBER = `accountNumber`;\r\nexport const FIELD_FIRM_ID = `firmId`;\r\nexport const FIELD_FIRM_NAME = `firmName`;\r\nexport const FIELD_POST_CODE = `postCode`;\r\nexport const FIELD_SORT_CODE = `sortCode`;\r\nexport const FIELD_TNC = `TERMS_AND_CONDITIONS`;\r\n\r\nexport const SEARCH_LAW_FIRM = `SEARCH_LAW_FIRM`;\r\nexport const RESET_LAW_FIRM_RESULTS = `RESET_LAW_FIRM_RESULTS`;\r\nexport const SELECT_LAW_FIRM = `SELECT_LAW_FIRM`;\r\nexport const RESET_SELECTED_LAW_FIRM = `RESET_SELECTED_LAW_FIRM`;\r\n","import { handleActions } from \"redux-actions\";\r\nimport { assoc, assocPath } from \"ramda\";\r\nimport {\r\n SET_REMAINING_ATTEMPTS,\r\n SET_SUBMISSION_RESULT,\r\n SET_LAW_FIRMS_LIST,\r\n RESET_LAW_FIRM_RESULTS,\r\n SELECT_LAW_FIRM,\r\n RESET_SELECTED_LAW_FIRM,\r\n SUBMIT,\r\n} from \"../constants/account-details\";\r\n\r\nconst defaultState = {\r\n attempts: 3,\r\n lawFirmsList: {},\r\n selectedLawFirm: null,\r\n submissionResult: {\r\n status: null,\r\n text: null,\r\n },\r\n};\r\n\r\nconst setRemainingAttempts = (state, { remainingAttempts }) => assocPath([`attempts`], remainingAttempts, state);\r\n\r\nconst setLawFirmsList = (state, { list }) => assocPath([`lawFirmsList`], list, state);\r\n\r\nconst setSubmissionResult = (state, payload) => assoc(`submissionResult`, payload, state);\r\n\r\nconst resetLawFirmResults = state => assocPath([`lawFirmsList`], {}, state);\r\n\r\nconst selectLawFirm = (state, { firm }) => assocPath([`selectedLawFirm`], firm, state);\r\n\r\nconst resetSelectedLawFirm = state => assocPath([`selectedLawFirm`], null, state);\r\n\r\nconst submit = (state, { bankDetails }) => assocPath(\r\n [`selectedLawFirm`],\r\n {\r\n ...state.selectedLawFirm,\r\n ...bankDetails,\r\n },\r\n state,\r\n);\r\n\r\nexport default handleActions(\r\n {\r\n [SET_SUBMISSION_RESULT]: setSubmissionResult,\r\n [SET_REMAINING_ATTEMPTS]: setRemainingAttempts,\r\n [SET_LAW_FIRMS_LIST]: setLawFirmsList,\r\n [RESET_LAW_FIRM_RESULTS]: resetLawFirmResults,\r\n [SELECT_LAW_FIRM]: selectLawFirm,\r\n [RESET_SELECTED_LAW_FIRM]: resetSelectedLawFirm,\r\n [SUBMIT]: submit,\r\n },\r\n defaultState,\r\n);\r\n","export const UPDATE_FIELD = `CASE_DETAILS::UPDATE_FIELD`;\r\nexport const UPDATE_FIELD_VALIDATION = `CASE_DETAILS::UPDATE_FIELD_VALIDATION`;\r\nexport const RESET_SUBMISSION = `CASE_DETAILS::RESET_SUBMISSION`;\r\nexport const SUBMIT = `CASE_DETAILS::SUBMIT`;\r\nexport const SUBMIT_SUCCESS = `CASE_DETAILS::SUBMIT_SUCCESS`;\r\nexport const SUBMIT_FAILURE = `CASE_DETAILS::SUBMIT_FAILURE`;\r\nexport const FIELD_EMAIL = `email`;\r\nexport const FIELD_SURNAME = `surname`;\r\nexport const FIELD_POSTCODE = `postcode`;\r\nexport const FIELD_RECAPTCHA = `recaptcha`;\r\n","import emailValidator from \"email-validator\";\r\nimport { isNil } from \"ramda\";\r\n\r\nexport function isPostCode(str) {\r\n const rg = /^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9][A-Za-z]?))))\\s?[0-9][A-Za-z]{2})$/i;\r\n return rg.test(str);\r\n}\r\n\r\nexport default class Validator {\r\n constructor(value) {\r\n this.value = value;\r\n this.isValid = true;\r\n this.errorMessage = ``;\r\n }\r\n\r\n isEmail = () => {\r\n /* istanbul ignore else */\r\n if (this.isValid) {\r\n this.isValid = emailValidator.validate(this.value);\r\n\r\n if (!this.isValid) {\r\n this.errorMessage = `The email address you have provided is not valid, please re-enter your email address correctly as this will be used to send you a personalised link to access Bank Account Check.`;\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n isName = () => {\r\n /* istanbul ignore else */\r\n if (this.isValid) {\r\n const validSurnameRegEx = /^[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]+$/u;\r\n this.isValid = validSurnameRegEx.test(this.value);\r\n\r\n if (!this.isValid) {\r\n this.errorMessage = `Invalid characters`;\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n isPostCode = () => {\r\n /* istanbul ignore else */\r\n if (this.isValid) {\r\n const validPostCodeRegEx = /^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9][A-Za-z]?))))\\s?[0-9][A-Za-z]{2})$/;\r\n this.isValid = validPostCodeRegEx.test(this.value);\r\n\r\n if (!this.isValid) {\r\n this.errorMessage = `The postcode you have provided is not in a valid format, please re-enter your postcode`;\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n hasMinLength = (minLength) => {\r\n if (this.isValid) {\r\n this.isValid = this.value && String(this.value).length >= minLength;\r\n\r\n if (!this.isValid) {\r\n this.errorMessage = `The value should have at least ${minLength} characters`;\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n isReCAPTCHA = () => {\r\n /* istanbul ignore else */\r\n if (this.isValid) {\r\n this.isValid = !isNil(this.value);\r\n this.isRequired();\r\n }\r\n\r\n return this;\r\n };\r\n\r\n isRequired = () => {\r\n this.hasMinLength(1);\r\n\r\n if (!this.isValid) {\r\n this.errorMessage = `We need this information to proceed`;\r\n }\r\n\r\n return this;\r\n };\r\n\r\n isChecked = () => {\r\n if (this.isValid) {\r\n this.isValid = this.value === true;\r\n\r\n if (!this.isValid) {\r\n this.errorMessage = `Without agreeing to the Terms & Conditions you are unable to use LMS Bank Account Check`;\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n isAccountNumber = () => {\r\n if (this.isValid) {\r\n const isNumber8CharsLengthRegEx = /[0-9]{8}/;\r\n this.isValid = this.value && isNumber8CharsLengthRegEx.test(this.value);\r\n\r\n if (!this.isValid) {\r\n this.errorMessage = `The account number you have provided is not in a valid format, please re-enter`;\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n isSortCode = () => {\r\n if (this.isValid) {\r\n const sortCodeRegEx = /[0-9]{2}-?[0-9]{2}-?[0-9]{2}-?/;\r\n this.isValid = this.value && sortCodeRegEx.test(this.value);\r\n\r\n if (!this.isValid) {\r\n this.errorMessage = `The sort code you have provided is not in a valid format, please re-enter`;\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n}\r\n","import { handleActions } from \"redux-actions\";\r\nimport * as R from \"ramda\";\r\nimport {\r\n RESET_SUBMISSION,\r\n SUBMIT,\r\n SUBMIT_FAILURE,\r\n SUBMIT_SUCCESS,\r\n UPDATE_FIELD,\r\n UPDATE_FIELD_VALIDATION,\r\n FIELD_EMAIL,\r\n FIELD_SURNAME,\r\n FIELD_POSTCODE,\r\n FIELD_RECAPTCHA,\r\n} from \"../constants/case-details\";\r\n\r\nimport Validator from \"../services/validator\";\r\n\r\nconst defaultState = {\r\n fields: {\r\n [FIELD_EMAIL]: {\r\n value: ``,\r\n isValid: null,\r\n },\r\n [FIELD_SURNAME]: {\r\n value: ``,\r\n isValid: null,\r\n },\r\n [FIELD_POSTCODE]: {\r\n value: ``,\r\n isValid: null,\r\n },\r\n [FIELD_RECAPTCHA]: {\r\n value: ``,\r\n isValid: null,\r\n },\r\n },\r\n submissionResult: {\r\n isCompleted: false,\r\n status: null,\r\n },\r\n};\r\n\r\nconst validateField = ({ field, value }) => {\r\n const validation = new Validator(value);\r\n\r\n if (field === FIELD_EMAIL) {\r\n return validation.isRequired().isEmail();\r\n }\r\n\r\n if (field === FIELD_SURNAME) {\r\n return validation.isRequired().isName();\r\n }\r\n\r\n if (field === FIELD_POSTCODE) {\r\n return validation.isRequired().isPostCode();\r\n }\r\n\r\n /* istanbul ignore else */\r\n if (field === FIELD_RECAPTCHA) {\r\n return validation.isRequired().isReCAPTCHA();\r\n }\r\n\r\n /* istanbul ignore next */\r\n return validation;\r\n};\r\n\r\nconst updateField = (state, { value, field }) => {\r\n let newState = state;\r\n\r\n if (R.has(field)(newState.fields)) {\r\n const validatedField = validateField({ field, value });\r\n\r\n newState = R.assocPath([`fields`, field, `value`], value, newState);\r\n newState = R.assocPath([`fields`, field, `isValid`], validatedField.isValid, newState);\r\n newState = R.assocPath(\r\n [`fields`, field, `errorMessage`],\r\n validatedField.errorMessage,\r\n newState,\r\n );\r\n }\r\n\r\n return newState;\r\n};\r\n\r\nconst updateFieldValidation = (state, { field, isValid, errorMessage }) => {\r\n let newState = state;\r\n newState = R.assocPath([`fields`, field, `isValid`], isValid, newState);\r\n newState = R.assocPath([`fields`, field, `errorMessage`], errorMessage, newState);\r\n return newState;\r\n};\r\n\r\nconst resetSubmission = state => R.assocPath([`submissionResult`], defaultState.submissionResult, state);\r\n\r\n\r\nconst submit = (state) => {\r\n let newState = state;\r\n\r\n // when resend the link, the recaptcha may have expired\r\n if (R.isNil(state.fields.recaptcha.isValid)) {\r\n return resetSubmission(state);\r\n }\r\n\r\n R.keys(state.fields).forEach((field) => {\r\n if (R.isNil(state.fields[field].isValid)) {\r\n const validatedField = validateField({\r\n field,\r\n value: state.fields[field].value,\r\n });\r\n\r\n newState = R.assocPath([`fields`, field, `isValid`], validatedField.isValid, newState);\r\n newState = R.assocPath(\r\n [`fields`, field, `errorMessage`],\r\n validatedField.errorMessage,\r\n newState,\r\n );\r\n }\r\n });\r\n\r\n return newState;\r\n};\r\n\r\nconst submitComplete = (state, { error = 202 }) => {\r\n let newState = state;\r\n newState = R.assocPath([`submissionResult`, `isCompleted`], true, newState);\r\n newState = R.assocPath([`submissionResult`, `status`], error, newState);\r\n return newState;\r\n};\r\n\r\n\r\nexport default handleActions(\r\n {\r\n [UPDATE_FIELD]: updateField,\r\n [UPDATE_FIELD_VALIDATION]: updateFieldValidation,\r\n [RESET_SUBMISSION]: resetSubmission,\r\n [SUBMIT]: submit,\r\n [SUBMIT_SUCCESS]: submitComplete,\r\n [SUBMIT_FAILURE]: submitComplete,\r\n },\r\n defaultState,\r\n);\r\n","export const SESSION_EMAIL_TOKEN = 'EmailToken';\r\nexport const SESSION_ACCOUNT_CHECKS_SUCCESS = 'SESSION::CHECK_SUCCESSFUL';\r\nexport const EXPIRED = 'SESSION::EXPIRED';\r\nexport const SET_TOKEN_VALIDATION = 'SESSION::SET_TOKEN_VALIDATION';\r\nexport const VALIDATE_TOKEN = 'SESSION::VALIDATE_TOKEN';\r\n","import { handleActions } from \"redux-actions\";\r\nimport { assocPath } from \"ramda\";\r\nimport { EXPIRED, SET_TOKEN_VALIDATION, SESSION_EMAIL_TOKEN } from \"../constants/session\";\r\n\r\nconst defaultState = {\r\n isValid: false,\r\n [SESSION_EMAIL_TOKEN]: null,\r\n};\r\n\r\nconst expired = (state) => {\r\n let newState = state;\r\n\r\n newState = assocPath([`isValid`], false, newState);\r\n newState = assocPath([SESSION_EMAIL_TOKEN], null, newState);\r\n\r\n return newState;\r\n};\r\n\r\nconst setToken = (state, { isValid, token }) => {\r\n let newState = state;\r\n newState = assocPath([`isValid`], isValid, newState);\r\n newState = assocPath([SESSION_EMAIL_TOKEN], token, newState);\r\n\r\n return newState;\r\n};\r\n\r\nexport default handleActions(\r\n {\r\n [EXPIRED]: expired,\r\n [SET_TOKEN_VALIDATION]: setToken,\r\n },\r\n defaultState,\r\n);\r\n","import { combineReducers } from \"redux\";\r\nimport { connectRouter } from \"connected-react-router\";\r\nimport { persistReducer } from \"redux-persist\";\r\nimport storage from \"redux-persist/lib/storage/session\";\r\nimport autoMergeLevel2 from \"redux-persist/lib/stateReconciler/autoMergeLevel2\";\r\n\r\nimport app from \"./app\";\r\nimport accountDetails from \"./account-details\";\r\nimport caseDetails from \"./case-details\";\r\nimport session from \"./session\";\r\n\r\nconst createReducers = history => combineReducers({\r\n app,\r\n accountDetails: persistReducer(\r\n {\r\n key: `accountDetails`,\r\n storage,\r\n stateReconciler: autoMergeLevel2,\r\n whitelist: [`selectedLawFirm`, `submissionResult`],\r\n },\r\n accountDetails,\r\n ),\r\n caseDetails,\r\n router: connectRouter(history),\r\n session: persistReducer(\r\n {\r\n key: `session`,\r\n storage,\r\n stateReconciler: autoMergeLevel2,\r\n },\r\n session,\r\n ),\r\n});\r\n\r\nexport default createReducers;\r\n","import queryString from \"query-string\";\r\n\r\nfunction serialize(query) {\r\n return query && Object.keys(query).length > 0 ? `?${queryString.stringify(query)}` : ``;\r\n}\r\n\r\nclass HTTPError extends Error {\r\n constructor(status, statusText) {\r\n super();\r\n this.status = status;\r\n this.statusText = statusText;\r\n }\r\n}\r\n\r\nfunction catchErrors(response, options) {\r\n const { ignoreErrorStatusCodes } = options;\r\n if (ignoreErrorStatusCodes && ignoreErrorStatusCodes.test(String(response.status))) {\r\n return response;\r\n }\r\n if (!response.ok) {\r\n throw new HTTPError(response.status, response.statusText);\r\n }\r\n return response;\r\n}\r\n\r\nfunction fetch(\r\n endpoint,\r\n {\r\n query, method, headers, body,\r\n },\r\n options = {\r\n ignoreErrorStatusCodes: null, // regex matching what error codes to ignore\r\n },\r\n) {\r\n return window\r\n .fetch(`${process.env.REACT_APP_API_PREFIX}${endpoint}${serialize(query)}`, {\r\n ...(method && { method }),\r\n ...(headers && { headers }),\r\n ...(body && { body: JSON.stringify(body) }),\r\n })\r\n .then(response => catchErrors(response, options));\r\n}\r\n\r\nfunction get(endpoint, query = {}, params = {}, options) {\r\n return fetch(endpoint, { query, ...params }, options);\r\n}\r\n\r\nfunction post(endpoint, params = {}, options) {\r\n const headers = {\r\n Accept: `application/json`,\r\n \"Content-Type\": `application/json`,\r\n };\r\n\r\n return fetch(\r\n endpoint,\r\n {\r\n ...params,\r\n method: `POST`,\r\n headers: { ...params.headers, ...headers },\r\n },\r\n options,\r\n );\r\n}\r\n\r\nexport default {\r\n get,\r\n post,\r\n HTTPError,\r\n};\r\n","export const VERIFICATION = `/verification`;\r\nexport const CLIENT_ACCOUNT_VERIFICATION = `/ClientAccountVerification`;\r\nexport const CLIENT_ACCOUNT_VERIFICATION_REPORT = `/ClientAccountVerificationReport`;\r\nexport const TOKEN_VALIDATION = `/validate-token`;\r\nexport const LAW_FIRMS = `/LawFirms`;\r\n","import { API_ERROR, APP_IS_LOADING } from \"../constants/app\";\r\n\r\nexport const apiError = response => ({\r\n type: API_ERROR,\r\n response,\r\n});\r\n\r\nexport const appIsLoading = isLoading => ({\r\n type: APP_IS_LOADING,\r\n isLoading,\r\n});\r\n","import {\r\n SET_FIRM_FIELD,\r\n SET_LAW_FIRMS_LIST,\r\n SET_REMAINING_ATTEMPTS,\r\n SUBMISSION_ERROR,\r\n SET_SUBMISSION_RESULT,\r\n SUBMIT_LAW_FIRM_SELECTION,\r\n SUBMIT,\r\n UPDATE_FIELD,\r\n SEARCH_LAW_FIRM,\r\n RESET_LAW_FIRM_RESULTS,\r\n SELECT_LAW_FIRM,\r\n RESET_SELECTED_LAW_FIRM,\r\n} from \"../constants/account-details\";\r\n\r\nexport const updateField = payload => ({\r\n type: UPDATE_FIELD,\r\n ...payload,\r\n});\r\n\r\nexport const submit = bankDetails => ({\r\n type: SUBMIT,\r\n bankDetails,\r\n});\r\n\r\nexport const setRemainingAttempts = payload => ({\r\n type: SET_REMAINING_ATTEMPTS,\r\n ...payload,\r\n});\r\n\r\nexport const setFirmField = payload => ({\r\n type: SET_FIRM_FIELD,\r\n ...payload,\r\n});\r\n\r\nexport const setLawFirmsList = list => ({\r\n type: SET_LAW_FIRMS_LIST,\r\n list,\r\n});\r\n\r\nexport const submitLawFirmSelection = () => ({\r\n type: SUBMIT_LAW_FIRM_SELECTION,\r\n});\r\n\r\nexport const setSubmissionResult = payload => ({\r\n type: SET_SUBMISSION_RESULT,\r\n ...payload,\r\n});\r\n\r\nexport const setSubmissionError = () => ({\r\n type: SUBMISSION_ERROR,\r\n});\r\n\r\nexport const searchLawFirm = (postCode, firmName) => ({\r\n type: SEARCH_LAW_FIRM,\r\n postCode,\r\n firmName,\r\n});\r\n\r\nexport const resetLawFirmResults = () => ({\r\n type: RESET_LAW_FIRM_RESULTS,\r\n});\r\n\r\nexport const selectLawFirm = firm => ({\r\n type: SELECT_LAW_FIRM,\r\n firm,\r\n});\r\n\r\nexport const resetSelectedLawFirm = () => ({\r\n type: RESET_SELECTED_LAW_FIRM,\r\n});\r\n","import { schema } from 'normalizr';\r\n\r\nconst lawFirm = new schema.Entity('lawFirm', {}, {\r\n processStrategy: entity => ({\r\n ...entity,\r\n label: entity.title,\r\n }),\r\n});\r\n\r\nexport default lawFirm;\r\n","import {\r\n call, delay, fork, put, select, takeLatest,\r\n} from \"redux-saga/effects\";\r\nimport { push } from \"connected-react-router\";\r\nimport { normalize } from \"normalizr\";\r\n\r\nimport { SUBMIT_LAW_FIRM_SELECTION, SUBMIT, SEARCH_LAW_FIRM } from \"../constants/account-details\";\r\nimport http from \"../services/http\";\r\nimport * as API_ENDPOINTS from \"../constants/api-endpoints\";\r\nimport { SESSION_EMAIL_TOKEN } from \"../constants/session\";\r\nimport { BANK_ACCOUNT_RESULT_PAGE, ACCOUNT_DETAILS_PAGE } from \"../constants/routes\";\r\nimport { apiError, appIsLoading } from \"../actions/app\";\r\nimport {\r\n setSubmissionResult,\r\n setSubmissionError,\r\n setLawFirmsList,\r\n setRemainingAttempts,\r\n resetLawFirmResults,\r\n} from \"../actions/account-details\";\r\nimport lawFirmSchema from \"../schemas/law-firm\";\r\n\r\nexport const getVerification = ({\r\n token, branchId, accountNumber, sortCode,\r\n}) => {\r\n const url = `${\r\n API_ENDPOINTS.CLIENT_ACCOUNT_VERIFICATION\r\n }/${branchId}/${accountNumber}/${sortCode}`;\r\n return http\r\n .get(\r\n url,\r\n {},\r\n {\r\n headers: {\r\n [SESSION_EMAIL_TOKEN]: token,\r\n },\r\n },\r\n {\r\n ignoreErrorStatusCodes: /404/,\r\n },\r\n )\r\n .then(async response => ({\r\n data: await response.json(),\r\n status: response.status,\r\n }));\r\n};\r\n\r\nexport const getLawFirms = ({ firmName, postCode, token }) => {\r\n const url = `${API_ENDPOINTS.LAW_FIRMS}/${firmName}/${postCode}`;\r\n return http\r\n .get(\r\n url,\r\n {},\r\n {\r\n headers: {\r\n [SESSION_EMAIL_TOKEN]: token,\r\n },\r\n },\r\n )\r\n .then(response => response.json());\r\n};\r\n\r\nexport const getRemainingAttempts = ({ accountDetails: { attempts } }) => attempts;\r\nexport const getBranchId = state => state.accountDetails.selectedLawFirm.id;\r\nexport const getSessionStore = ({ session }) => session;\r\n\r\nexport function* submit({ bankDetails }) {\r\n try {\r\n yield put(appIsLoading(true));\r\n yield delay(500);\r\n const { [SESSION_EMAIL_TOKEN]: token } = yield select(getSessionStore);\r\n const { accountNumber, sortCode } = bankDetails;\r\n const branchId = yield select(getBranchId);\r\n const { status, data } = yield call(getVerification, {\r\n token,\r\n branchId,\r\n accountNumber,\r\n sortCode: sortCode.replace(/-/gm, ``),\r\n });\r\n yield put(setSubmissionResult({ status, ...data }));\r\n\r\n const remainingAttempts = yield select(getRemainingAttempts);\r\n yield put(setRemainingAttempts({ remainingAttempts: remainingAttempts - 1 }));\r\n\r\n yield put(push(BANK_ACCOUNT_RESULT_PAGE));\r\n } catch (e) {\r\n yield put(setSubmissionError(e));\r\n if (e instanceof http.HTTPError) {\r\n yield put(apiError(e));\r\n }\r\n } finally {\r\n yield put(appIsLoading(false));\r\n }\r\n}\r\n\r\nexport function* searchLawFirm({ postCode, firmName }) {\r\n const { [SESSION_EMAIL_TOKEN]: token } = yield select(getSessionStore);\r\n\r\n try {\r\n const response = yield call(getLawFirms, {\r\n firmName,\r\n postCode,\r\n token,\r\n });\r\n\r\n const {\r\n entities: { lawFirm: lawFirmsList },\r\n } = normalize(response, [lawFirmSchema]);\r\n\r\n yield put(setLawFirmsList(lawFirmsList || {}));\r\n } catch (error) {\r\n yield put(resetLawFirmResults());\r\n if (error instanceof http.HTTPError) {\r\n yield put(apiError(error));\r\n }\r\n }\r\n}\r\n\r\nexport function* goToAccountDetailsPage() {\r\n yield put(appIsLoading(true));\r\n yield delay(500);\r\n yield put(push(ACCOUNT_DETAILS_PAGE));\r\n yield put(appIsLoading(false));\r\n}\r\n\r\nexport function* watchActions() {\r\n yield takeLatest(SEARCH_LAW_FIRM, searchLawFirm);\r\n yield takeLatest(SUBMIT_LAW_FIRM_SELECTION, goToAccountDetailsPage);\r\n yield takeLatest(SUBMIT, submit);\r\n}\r\n\r\nexport default fork(watchActions);\r\n","import {\r\n EXPIRED,\r\n VALIDATE_TOKEN,\r\n SET_TOKEN_VALIDATION,\r\n} from '../constants/session';\r\n\r\nexport const expired = () => ({\r\n type: EXPIRED,\r\n});\r\n\r\nexport const validateToken = () => ({\r\n type: VALIDATE_TOKEN,\r\n});\r\n\r\nexport const setTokenValidity = payload => ({\r\n type: SET_TOKEN_VALIDATION,\r\n ...payload,\r\n});\r\n","import { fork, put, takeLatest } from \"redux-saga/effects\";\r\nimport { push } from \"connected-react-router\";\r\n\r\nimport { API_ERROR } from \"../constants/app\";\r\nimport { ERROR_PAGE } from \"../constants/routes\";\r\nimport { expired } from \"../actions/session\";\r\n\r\nfunction isManagedError(code) {\r\n if (code === 412) return true;\r\n return false;\r\n}\r\n\r\nexport function* redirectToErrorPage({ response: { status } }) {\r\n const statusCode = Number(status);\r\n if (statusCode < 400 || isManagedError(statusCode)) return;\r\n yield put(\r\n push({\r\n pathname: ERROR_PAGE,\r\n search: `?code=${status}`,\r\n }),\r\n );\r\n yield put(expired());\r\n}\r\n\r\nexport function* watchActions() {\r\n yield takeLatest(API_ERROR, redirectToErrorPage);\r\n}\r\n\r\nexport default fork(watchActions);\r\n","import {\r\n RESET_SUBMISSION,\r\n SUBMIT_FAILURE,\r\n SUBMIT_SUCCESS,\r\n SUBMIT,\r\n UPDATE_FIELD,\r\n UPDATE_FIELD_VALIDATION,\r\n} from \"../constants/case-details\";\r\n\r\nexport const updateField = payload => ({\r\n type: UPDATE_FIELD,\r\n ...payload,\r\n});\r\n\r\nexport const updateFieldValidation = payload => ({\r\n type: UPDATE_FIELD_VALIDATION,\r\n ...payload,\r\n});\r\n\r\nexport const submit = () => ({\r\n type: SUBMIT,\r\n});\r\n\r\nexport const resetSubmission = () => ({\r\n type: RESET_SUBMISSION,\r\n});\r\n\r\nexport const submitSuccess = () => ({\r\n type: SUBMIT_SUCCESS,\r\n});\r\n\r\nexport const submitFailure = error => ({\r\n type: SUBMIT_FAILURE,\r\n error,\r\n});\r\n","import {\r\n call, fork, put, select, takeLatest, delay,\r\n} from \"redux-saga/effects\";\r\nimport { values } from \"ramda\";\r\n\r\nimport http from \"../services/http\";\r\nimport {\r\n SUBMIT,\r\n FIELD_EMAIL,\r\n FIELD_SURNAME,\r\n FIELD_POSTCODE,\r\n FIELD_RECAPTCHA,\r\n} from \"../constants/case-details\";\r\nimport * as API_ENDPOINTS from \"../constants/api-endpoints\";\r\nimport { submitSuccess, submitFailure } from \"../actions/case-details\";\r\nimport { appIsLoading } from \"../actions/app\";\r\n\r\nexport const postVerification = (body, recaptcha) => http.post(\r\n API_ENDPOINTS.VERIFICATION,\r\n { body, headers: { recaptcha } },\r\n { ignoreErrorStatusCodes: /404/ },\r\n);\r\n\r\nexport const getFields = ({ caseDetails: { fields } }) => fields;\r\n\r\nexport function* submit() {\r\n try {\r\n yield put(appIsLoading(true));\r\n yield delay(500);\r\n const fields = yield select(getFields);\r\n const { value: recaptcha } = fields[FIELD_RECAPTCHA];\r\n\r\n if (values(fields).every(field => field.isValid)) {\r\n const response = yield call(\r\n postVerification,\r\n {\r\n [FIELD_EMAIL]: fields[FIELD_EMAIL].value,\r\n [FIELD_SURNAME]: fields[FIELD_SURNAME].value,\r\n [FIELD_POSTCODE]: fields[FIELD_POSTCODE].value,\r\n },\r\n recaptcha,\r\n );\r\n\r\n if (response.status >= 200 && response.status < 300) {\r\n yield put(submitSuccess());\r\n } else {\r\n throw response.status;\r\n }\r\n }\r\n } catch (e) {\r\n yield put(submitFailure(e));\r\n } finally {\r\n yield put(appIsLoading(false));\r\n }\r\n}\r\n\r\nexport function* watchActions() {\r\n yield takeLatest(SUBMIT, submit);\r\n}\r\n\r\nexport default fork(watchActions);\r\n","import {\r\n call, fork, put, select, takeLatest,\r\n} from \"redux-saga/effects\";\r\nimport queryString from \"query-string\";\r\n\r\nimport http from \"../services/http\";\r\nimport { SESSION_EMAIL_TOKEN, VALIDATE_TOKEN } from \"../constants/session\";\r\nimport { setRemainingAttempts } from \"../actions/account-details\";\r\nimport { setTokenValidity } from \"../actions/session\";\r\nimport { VERIFICATION } from \"../constants/api-endpoints\";\r\n\r\nexport const getLocationSearch = ({\r\n router: {\r\n location: { search },\r\n },\r\n}) => search;\r\nexport const getToken = ({ session: { [SESSION_EMAIL_TOKEN]: token } }) => token;\r\n\r\nexport const fetchIsValidToken = params => http.get(VERIFICATION, {}, params);\r\n\r\nexport function* validateToken() {\r\n let isValid = false;\r\n let token = null;\r\n\r\n try {\r\n token = yield select(getToken);\r\n\r\n const search = yield select(getLocationSearch);\r\n const { emailToken = null } = queryString.parse(search, { ignoreQueryPrefix: true });\r\n if (emailToken) {\r\n token = emailToken === token ? token : emailToken;\r\n }\r\n\r\n const response = yield call(fetchIsValidToken, { headers: { [SESSION_EMAIL_TOKEN]: token } });\r\n const { remainingAttempts } = yield response.json();\r\n yield put(setRemainingAttempts({ remainingAttempts }));\r\n\r\n isValid = response.status >= 200 && response.status < 300;\r\n } finally {\r\n yield put(setTokenValidity({ isValid, token }));\r\n }\r\n}\r\n\r\nexport function* watchActions() {\r\n yield takeLatest(VALIDATE_TOKEN, validateToken);\r\n}\r\n\r\nexport default fork(watchActions);\r\n","import { all } from 'redux-saga/effects';\r\n\r\nimport accountDetails from './account-details';\r\nimport app from './app';\r\nimport caseDetails from './case-details';\r\nimport session from './session';\r\n\r\nconst sagas = [\r\n accountDetails,\r\n app,\r\n caseDetails,\r\n session,\r\n];\r\n\r\nfunction* rootSaga() {\r\n yield all(sagas);\r\n}\r\n\r\nexport default rootSaga;\r\n","import { applyMiddleware } from 'redux';\r\nimport { routerMiddleware } from 'connected-react-router';\r\nimport createSagaMiddleware from 'redux-saga';\r\n\r\nexport const sagaMiddleware = createSagaMiddleware();\r\n\r\nexport const createMiddleware = history => applyMiddleware(\r\n sagaMiddleware,\r\n routerMiddleware(history),\r\n);\r\n","import fetchIntercept from \"fetch-intercept\";\r\n\r\nimport * as API_ENDPOINTS from \"../constants/api-endpoints\";\r\n\r\nimport { apiError } from \"../actions/app\";\r\n\r\n// IE11 hack: hold what URL is being requested from server\r\nlet currentUrl = null;\r\n\r\nexport default (dispatch) => {\r\n const onResponse = (response) => {\r\n // IE11 hack: response.url is always \"\",\r\n const responseUrl = response.url || currentUrl;\r\n // the 404 returned by these actions are handled by the app, not the http service\r\n const rg = new RegExp(\r\n [API_ENDPOINTS.CLIENT_ACCOUNT_VERIFICATION, API_ENDPOINTS.VERIFICATION].join(`|`),\r\n );\r\n if (rg.test(responseUrl) && response.status === 404) {\r\n return response;\r\n }\r\n if (Number(response.status) > 399) {\r\n dispatch(apiError(response));\r\n }\r\n return response;\r\n };\r\n\r\n const onRequest = (url, config) => {\r\n // IE11 hack: keep hold of what URL is being requested\r\n currentUrl = url;\r\n return [url, config];\r\n };\r\n\r\n fetchIntercept.register({\r\n response: onResponse,\r\n request: onRequest,\r\n });\r\n};\r\n","import { createMuiTheme } from \"@material-ui/core/styles\";\r\nimport { grey } from \"@material-ui/core/colors\";\r\n\r\nexport const fontFamily = [\r\n `Trebuchet MS`,\r\n `Lucida Grande`,\r\n `Lucida Sans Unicode`,\r\n `Lucida Sans`,\r\n `Tahoma`,\r\n `sans-serif`,\r\n].join(`,`);\r\n\r\nexport default createMuiTheme({\r\n typography: {\r\n default: {\r\n color: `#0c2b83`,\r\n },\r\n fontFamily,\r\n useNextVariants: true,\r\n h2: {\r\n fontSize: `1rem`,\r\n },\r\n h3: {\r\n fontSize: `1.5rem`,\r\n color: `inherit`,\r\n marginBottom: `.5em`,\r\n },\r\n h6: {\r\n color: `#7288ac`,\r\n fontSize: `12px`,\r\n },\r\n body2: {\r\n color: `#00206c`,\r\n },\r\n },\r\n palette: {\r\n background: {\r\n default: `#EFEFF0`,\r\n },\r\n primary: {\r\n light: `#496493`,\r\n main: `#1C3E79`,\r\n dark: `#132b54`,\r\n contrastText: `#fff`,\r\n },\r\n },\r\n overrides: {\r\n MuiInputLabel: {\r\n root: {\r\n lineHeight: 2,\r\n color: `#1c3e79`,\r\n },\r\n shrink: {\r\n transform: `translate(0, -5px) scale(0.9) !important`,\r\n color: `inherit`,\r\n },\r\n },\r\n MuiButton: {\r\n contained: {\r\n padding: `10px 10px`,\r\n boxShadow: `0px 0px 41px -5px rgba(0,0,0,0.28)`,\r\n borderRadius: 0,\r\n color: `#fff`,\r\n backgroundColor: grey[400],\r\n },\r\n containedPrimary: {\r\n backgroundColor: `#00aae8`,\r\n color: `#fff`,\r\n },\r\n containedSecondary: {\r\n color: `#fff`,\r\n backgroundColor: `#00236c`,\r\n },\r\n },\r\n MuiFormHelperText: {\r\n filled: {\r\n margin: `.5em 0 1.5em`,\r\n },\r\n },\r\n MuiInputBase: {\r\n input: {\r\n marginTop: 24,\r\n position: `relative`,\r\n backgroundColor: `#fff`,\r\n border: `none`,\r\n width: `100%`,\r\n padding: `14px 16px`,\r\n },\r\n },\r\n MuiInputAdornment: {\r\n root: {\r\n marginTop: 24,\r\n },\r\n positionEnd: {\r\n marginLeft: 9,\r\n },\r\n },\r\n MuiListItem: {\r\n button: {\r\n backgroundColor: `#fff`,\r\n },\r\n },\r\n MuiLink: {\r\n underlineHover: {\r\n textDecoration: `underline`,\r\n display: `inline-block`,\r\n lineHeight: `1.5em`,\r\n fontFamily: `Trebuchet MS`,\r\n fontSize: `.9rem`,\r\n color: `#00aae5`,\r\n fontWeight: `bold`,\r\n },\r\n },\r\n MuiPaper: {\r\n root: {\r\n boxShadow: `none !important`,\r\n border: `1px solid #00aae5`,\r\n padding: 16,\r\n },\r\n },\r\n MuiSvgIcon: {\r\n colorPrimary: {\r\n color: `#00aae5`,\r\n },\r\n },\r\n MuiDivider: {\r\n middle: {\r\n marginLeft: `inherit`,\r\n marginRight: `inherit`,\r\n margin: `1em 0`,\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport const body = {\r\n position: `relative`,\r\n height: `100%`,\r\n overflowX: `hidden`,\r\n};\r\n\r\nexport const contentContainer = {\r\n position: `relative`,\r\n top: 50,\r\n height: `calc(100% - 47px - 50px)`,\r\n padding: `2rem 0 2rem 0`,\r\n overflowY: `auto`,\r\n};\r\n","function trailingSlash(url) {\r\n return /\\/$/.test(url) ? url : `${url}/`;\r\n}\r\n\r\nexport default function absoluteUrl(path) {\r\n return [window.location.origin, window.config.basePath, path]\r\n .map(trailingSlash)\r\n .join(``)\r\n .replace(/\\/{1,}/g, `/`);\r\n}\r\n","// leftTrim :: String -> String\r\nfunction leftTrim(str) {\r\n return str.replace(/^\\s*/, ``);\r\n}\r\n\r\n// trimValue :: a -> a\r\nexport default function trimValue(value = ``) {\r\n return typeof value === `string` ? leftTrim(value) : value;\r\n}\r\n","export default theme => ({\r\n header: {\r\n alignItems: `center`,\r\n backgroundColor: theme.palette.background.paper,\r\n display: `flex`,\r\n height: 50,\r\n justifyContent: `space-between`,\r\n padding: `0 ${2 * theme.spacing.unit}px`,\r\n position: `fixed`,\r\n top: 0,\r\n width: `100%`,\r\n zIndex: 2,\r\n },\r\n logo: {\r\n width: 100,\r\n height: 33,\r\n backgroundImage: `url(${process.env.PUBLIC_URL}/assets/images/logo-bank-account-check.png)`,\r\n backgroundSize: `contain`,\r\n },\r\n poweredBy: {\r\n width: 55,\r\n height: 33,\r\n backgroundImage: `url(${process.env.PUBLIC_URL}/assets/images/logo-lms-powered.png)`,\r\n backgroundRepeat: `no-repeat`,\r\n backgroundSize: `contain`,\r\n },\r\n});\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nfunction HeaderLink(props) {\r\n const { href, className } = props;\r\n return /^http|^www|\\.co\\.uk/.test(href) ? (\r\n \r\n  \r\n \r\n ) : (\r\n \r\n );\r\n}\r\n\r\nHeaderLink.propTypes = {\r\n href: PropTypes.string,\r\n className: PropTypes.string,\r\n};\r\n\r\nHeaderLink.defaultProps = {\r\n href: `#`,\r\n className: ``,\r\n};\r\n\r\nexport const Header = ({ classes }) => (\r\n
\r\n \r\n \r\n
\r\n);\r\n\r\nHeader.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n","import { withStyles } from '@material-ui/core/styles';\r\n\r\nimport style from './Header.style';\r\nimport { Header } from './Header';\r\n\r\nexport default withStyles(style)(Header);\r\n","import { withStyles } from '@material-ui/core/styles';\r\n\r\nimport style from './Footer.style';\r\nimport { Footer } from './Footer';\r\n\r\nexport default withStyles(style)(Footer);\r\n","import { fontFamily } from \"../../config/theme\";\r\n\r\nexport default theme => ({\r\n body: {\r\n marginBottom: 10 * theme.spacing.unit,\r\n },\r\n footer: {\r\n position: `fixed`,\r\n bottom: 0,\r\n alignItems: `center`,\r\n backgroundColor: theme.palette.primary.main,\r\n display: `flex`,\r\n height: 47,\r\n justifyContent: `center`,\r\n width: `100vw`,\r\n zIndex: 1,\r\n },\r\n link: {\r\n fontFamily,\r\n color: theme.palette.background.paper,\r\n fontSize: 12,\r\n fontWeight: `bold`,\r\n\r\n \"&:hover\": {\r\n color: theme.palette.background.default,\r\n },\r\n padding:`0 ${.375 * theme.spacing.unit}px`,\r\n },\r\n});\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nexport const Footer = ({ classes }) => (\r\n
\r\n \r\n Terms and Conditions\r\n \r\n \r\n Privacy Policy\r\n \r\n
\r\n);\r\n\r\nFooter.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n","/* eslint-disable react/no-danger */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n ButtonBase,\r\n Modal as MUIModal,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport { Cancel as CancelIcon } from '@material-ui/icons';\r\n\r\nexport const Modal = ({\r\n buttonComponent: Button,\r\n classes,\r\n content,\r\n isOpen,\r\n onClose,\r\n paragraphs,\r\n title,\r\n}) => (\r\n \r\n
\r\n \r\n \r\n \r\n {title}\r\n
\r\n { paragraphs.length > 0 && paragraphs.map(paragraph => (\r\n \r\n {paragraph}\r\n \r\n ))}\r\n { !!content && (\r\n
\r\n ) }\r\n
\r\n
\r\n \r\n);\r\n\r\nModal.propTypes = {\r\n buttonComponent: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,\r\n classes: PropTypes.object.isRequired,\r\n content: PropTypes.string,\r\n isOpen: PropTypes.bool.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n paragraphs: PropTypes.array,\r\n title: PropTypes.string.isRequired,\r\n};\r\n\r\nModal.defaultProps = {\r\n content: '',\r\n paragraphs: [],\r\n};\r\n","import { withStyles } from '@material-ui/core/styles';\r\n\r\nimport style from './Modal.style';\r\nimport { Modal } from './Modal';\r\n\r\nexport default withStyles(style)(Modal);\r\n","export default theme => ({\r\n modal: {\r\n position: 'relative',\r\n },\r\n closeModalButton: {\r\n position: 'absolute',\r\n right: theme.spacing.unit,\r\n top: theme.spacing.unit,\r\n },\r\n paperModal: {\r\n position: 'absolute',\r\n backgroundColor: theme.palette.background.paper,\r\n boxShadow: theme.shadows[5],\r\n padding: 4 * theme.spacing.unit,\r\n outline: 'none',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n width: theme.spacing.unit * 50,\r\n maxWidth: `calc(100vw - ${6 * theme.spacing.unit}px)`,\r\n maxHeight: `calc(100vh - ${6 * theme.spacing.unit}px)`,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n headingModal: {\r\n position: 'relative',\r\n paddingBottom: 0.5 * theme.spacing.unit,\r\n marginBottom: 0.5 * theme.spacing.unit,\r\n '&::after': {\r\n content: '\"\"',\r\n width: 1 * theme.spacing.unit,\r\n height: 0.25 * theme.spacing.unit,\r\n position: 'absolute',\r\n backgroundColor: theme.palette.text.primary,\r\n bottom: 0,\r\n left: 0,\r\n },\r\n },\r\n containerModal: {\r\n overflowY: 'scroll',\r\n },\r\n paragraphModal: {\r\n marginBottom: theme.spacing.unit,\r\n },\r\n});\r\n","import React, { PureComponent } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\nimport { Tooltip } from \"@material-ui/core\";\r\nimport { Error as ErrorIcon } from \"@material-ui/icons\";\r\n\r\nimport style from \"./Tooltip.style\";\r\n\r\nclass CustomTooltip extends PureComponent {\r\n state = {\r\n open: false,\r\n };\r\n\r\n handleTooltipClose = () => {\r\n this.setState({ open: false });\r\n };\r\n\r\n handleTooltipOpen = () => {\r\n this.setState({ open: true });\r\n };\r\n\r\n handleOnClick = () => {\r\n this.setState(prevState => ({ open: !prevState.open }));\r\n };\r\n\r\n render() {\r\n const { classes, title, placement } = this.props;\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nCustomTooltip.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n title: PropTypes.string.isRequired,\r\n placement: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default withStyles(style)(CustomTooltip);\r\n","export default theme => ({\r\n tooltip: {\r\n backgroundColor: theme.palette.common.white,\r\n color: `#0c2b83`,\r\n boxShadow: theme.shadows[1],\r\n fontSize: `0.8em`,\r\n },\r\n tooltipIcon: {\r\n width: 20,\r\n height: 20,\r\n marginLeft: 5,\r\n boxShadow: `none`,\r\n color: `#3871b1`,\r\n \"&:hover\": {\r\n cursor: `pointer`,\r\n },\r\n },\r\n});\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\nimport style from \"./style\";\r\n\r\nfunction Loading(props) {\r\n const { classes } = props;\r\n return (\r\n
\r\n
\r\n
\r\n

Please wait...

\r\n
\r\n {Object.keys(new Array(12).fill()).map(e => (\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nLoading.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default withStyles(style)(Loading);\r\n","function spinnerDivsTransform() {\r\n return Object.keys(new Array(13).fill()).reduce((acc, nth) => {\r\n acc[`&:nth-child(${nth})`] = {\r\n transform: `rotate(${(nth - 1) * 30}deg)`,\r\n animationDelay: `-${1.1 - (nth - 1) * 0.1}s`,\r\n };\r\n return acc;\r\n }, {});\r\n}\r\n\r\nexport default theme => ({\r\n container: {\r\n position: `fixed`,\r\n display: `flex`,\r\n justifyContent: `center`,\r\n alignItems: `center`,\r\n width: `100%`,\r\n height: `calc(100% + 50px)`,\r\n top: -50,\r\n right: 0,\r\n bottom: 0,\r\n left: 0,\r\n zIndex: 1301,\r\n },\r\n overlay: {\r\n position: `absolute`,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0,\r\n width: `100%`,\r\n height: `100%`,\r\n backgroundColor: `#00236c`,\r\n opacity: 0.7,\r\n display: `flex`,\r\n alignItems: `center`,\r\n justifyContent: `center`,\r\n zIndex: 5,\r\n },\r\n message: {\r\n boxSizing: `border-box`,\r\n position: `relative`,\r\n zIndex: 6,\r\n width: `100%`,\r\n maxWidth: `30rem`,\r\n margin: `0 1rem`,\r\n padding: `1rem 0`,\r\n display: `flex`,\r\n right: theme.spacing.unit,\r\n flexDirection: `column`,\r\n alignItems: `center`,\r\n justifyContent: `center`,\r\n backgroundColor: `#fff`,\r\n \"& p\": {\r\n ...theme.typography.body2,\r\n margin: `0 0 1rem 0`,\r\n padding: `0 1rem`,\r\n fontSize: `1.4em`,\r\n fontWeight: `bold`,\r\n },\r\n },\r\n spinner: {\r\n display: `inline-block`,\r\n position: `relative`,\r\n width: 64,\r\n height: 64,\r\n },\r\n spinnerSlice: {\r\n transformOrigin: `32px 32px`,\r\n animation: `lms-spinner 1.2s linear infinite`,\r\n \"&::after\": {\r\n content: `\" \"`,\r\n display: `block`,\r\n position: `absolute`,\r\n top: 3,\r\n left: 29,\r\n width: 5,\r\n height: 14,\r\n borderRadius: `20%`,\r\n backgroundColor: `#00aae5`,\r\n },\r\n ...spinnerDivsTransform(),\r\n },\r\n});\r\n","import { withStyles } from \"@material-ui/core/styles\";\r\nimport { connect } from \"react-redux\";\r\nimport { compose } from \"redux\";\r\n\r\nimport style from \"./CaseDetailsView.style\";\r\nimport { CaseDetailsView, mapStateToProps, mapDispatchToProps } from \"./CaseDetailsView\";\r\n\r\nexport default compose(\r\n connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n ),\r\n withStyles(style),\r\n)(CaseDetailsView);\r\n","/* eslint jsx-a11y/label-has-associated-control:off */\r\n/* eslint jsx-a11y/label-has-for:off */\r\nimport React, { useState, useRef } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as R from \"ramda\";\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\nimport { HashLink } from \"react-router-hash-link\";\r\nimport {\r\n Button,\r\n FormHelperText,\r\n Link,\r\n Typography,\r\n FormControl,\r\n InputBase,\r\n Icon,\r\n Divider,\r\n} from \"@material-ui/core\";\r\n\r\nimport { ChevronRight as ChevronRightIcon } from \"@material-ui/icons\";\r\n\r\nimport {\r\n FIELD_EMAIL,\r\n FIELD_SURNAME,\r\n FIELD_POSTCODE,\r\n FIELD_RECAPTCHA,\r\n} from \"../../constants/case-details\";\r\n\r\nimport absoluteUrl from \"../../_lib/absolute-url\";\r\nimport trimValue from \"../../_lib/trim-value\";\r\nimport {\r\n updateField,\r\n updateFieldValidation,\r\n submit,\r\n resetSubmission,\r\n} from \"../../actions/case-details\";\r\n\r\nimport Header from \"../header\";\r\nimport Footer from \"../footer\";\r\nimport Modal from \"../modal\";\r\nimport Tooltip from \"../tooltip\";\r\nimport Loading from \"../loading\";\r\n\r\nexport const CaseDetailsView = ({\r\n classes,\r\n fields: {\r\n [FIELD_EMAIL]: email,\r\n [FIELD_SURNAME]: surname,\r\n [FIELD_POSTCODE]: postcode,\r\n [FIELD_RECAPTCHA]: ReCAPTCHAField,\r\n } = {},\r\n resetSubmissionAction,\r\n submitAction,\r\n submissionResult,\r\n updateFieldAction,\r\n updateFieldValidationAction,\r\n appIsLoading,\r\n}) => {\r\n const [values, setValue] = useState(\r\n [FIELD_EMAIL, FIELD_SURNAME, FIELD_POSTCODE].reduce(\r\n (acc, field) => ({ ...acc, [field]: `` }),\r\n {},\r\n ),\r\n );\r\n\r\n const recaptchaEl = useRef(null);\r\n\r\n const onChangeField = field => (ev) => {\r\n setValue(R.assoc(field, ev.target.value, values));\r\n };\r\n\r\n const onBlurField = field => ({ target: { value } }) => {\r\n updateFieldAction({ field, value: trimValue(value) });\r\n };\r\n\r\n const onFocusField = field => () => {\r\n updateFieldValidationAction({ field });\r\n };\r\n\r\n const onChangeReCAPTCHA = (value) => {\r\n updateFieldAction({ field: FIELD_RECAPTCHA, value });\r\n };\r\n\r\n const onClickResendLink = () => {\r\n recaptchaEl.current.reset();\r\n updateFieldAction({ field: FIELD_RECAPTCHA, value: null });\r\n resetSubmissionAction();\r\n };\r\n\r\n const submitForm = (e) => {\r\n e.preventDefault();\r\n submitAction();\r\n };\r\n\r\n const areFieldsValid = [email, surname, postcode, ReCAPTCHAField].reduce(\r\n (acc, value) => acc && value.isValid,\r\n true,\r\n );\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n {appIsLoading && }\r\n
\r\n \r\n Enter Case Details\r\n \r\n
\r\n {\r\n window.ga(`send`, `pageview`, absoluteUrl(`faq#what-is-lms-bank-account-check`));\r\n }}\r\n >\r\n What is Bank Account Check?\r\n \r\n
\r\n
\r\n {\r\n window.ga(`send`, `pageview`, absoluteUrl(`faq#who-is-lms`));\r\n }}\r\n >\r\n Who are LMS?\r\n \r\n
\r\n \r\n To allow access to this service we need to check your surname and postcode against our\r\n records. We will then send you an email containing a personalised link which will take\r\n you straight to Bank Account Check.\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n {email.errorMessage}\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n {surname.errorMessage}\r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n {postcode.errorMessage}\r\n \r\n \r\n\r\n
\r\n \r\n {ReCAPTCHAField.errorMessage}\r\n
\r\n\r\n
\r\n \r\n Next \r\n \r\n
\r\n \r\n (\r\n
\r\n \r\n
\r\n )\r\n }\r\n />\r\n (\r\n
\r\n \r\n Edit form\r\n \r\n
\r\n )\r\n }\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nCaseDetailsView.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n fields: PropTypes.shape({\r\n [FIELD_EMAIL]: PropTypes.shape({\r\n value: PropTypes.string,\r\n isValid: PropTypes.bool,\r\n errorMessage: PropTypes.string,\r\n }),\r\n [FIELD_SURNAME]: PropTypes.shape({\r\n value: PropTypes.string,\r\n isValid: PropTypes.bool,\r\n errorMessage: PropTypes.string,\r\n }),\r\n [FIELD_POSTCODE]: PropTypes.shape({\r\n value: PropTypes.string,\r\n isValid: PropTypes.bool,\r\n errorMessage: PropTypes.string,\r\n }),\r\n [FIELD_RECAPTCHA]: PropTypes.shape({\r\n value: PropTypes.string,\r\n isValid: PropTypes.bool,\r\n errorMessage: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n resetSubmissionAction: PropTypes.func.isRequired,\r\n submissionResult: PropTypes.shape({\r\n isCompleted: PropTypes.bool,\r\n status: PropTypes.number,\r\n }).isRequired,\r\n submitAction: PropTypes.func.isRequired,\r\n updateFieldAction: PropTypes.func.isRequired,\r\n updateFieldValidationAction: PropTypes.func.isRequired,\r\n appIsLoading: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport const mapStateToProps = ({ caseDetails: { fields, submissionResult }, app = {} }) => ({\r\n fields,\r\n submissionResult,\r\n appIsLoading: app.isLoading,\r\n});\r\n\r\nexport const mapDispatchToProps = dispatch => ({\r\n resetSubmissionAction: bindActionCreators(resetSubmission, dispatch),\r\n submitAction: bindActionCreators(submit, dispatch),\r\n updateFieldAction: bindActionCreators(updateField, dispatch),\r\n updateFieldValidationAction: bindActionCreators(updateFieldValidation, dispatch),\r\n});\r\n","import { body, contentContainer } from \"../../config/theme\";\r\n\r\nexport default theme => ({\r\n body,\r\n contentContainer,\r\n container: {\r\n padding: 3 * theme.spacing.unit,\r\n paddingBottom: 2 * theme.spacing.unit,\r\n },\r\n resultHeading: {\r\n color: `#0c2b83`,\r\n fontSize: 24,\r\n fontWeight: `bold`,\r\n },\r\n textField: {\r\n marginTop: theme.spacing.unit,\r\n },\r\n intro: {\r\n marginTop: theme.spacing.unit,\r\n },\r\n nextButtonContainer: {\r\n display: `flex`,\r\n justifyContent: `center`,\r\n alignItems: `center`,\r\n marginTop: 2 * theme.spacing.unit,\r\n },\r\n privacyPolicy: {\r\n fontSize: `.7rem`,\r\n position: `fixed`,\r\n bottom: theme.spacing.unit,\r\n left: theme.spacing.unit,\r\n },\r\n modalButtonContainer: {\r\n display: `flex`,\r\n justifyContent: `center`,\r\n alignItems: `center`,\r\n marginTop: 2 * theme.spacing.unit,\r\n },\r\n formControlWithTooltip: {\r\n \"& input\": {\r\n marginTop: theme.spacing.unit * 0.5,\r\n },\r\n },\r\n inputLabel: {\r\n position: `relative`,\r\n height: `30px`,\r\n display: `flex`,\r\n alignItems: `center`,\r\n \"& > label\": {\r\n position: `relative`,\r\n display: `flex`,\r\n alignItems: `center`,\r\n },\r\n },\r\n inputBox: {\r\n position: `relative`,\r\n display: `flex`,\r\n alignItems: `center`,\r\n \"& input\": {\r\n width: `100%`,\r\n marginTop: 0,\r\n },\r\n \"& .validation\": {\r\n position: `absolute`,\r\n right: theme.spacing.unit,\r\n top: 12,\r\n },\r\n },\r\n inputErrorMessage: {\r\n color: `#f44336`,\r\n },\r\n formLabel: {\r\n ...theme.typography.body2,\r\n margin: 0,\r\n fontSize: `0.9rem`,\r\n },\r\n formLabelWithTooltip: {\r\n ...theme.typography.body2,\r\n margin: 0,\r\n fontSize: `0.9rem`,\r\n },\r\n});\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport queryString from \"query-string\";\r\nimport {\r\n Link, Typography, Button, Divider,\r\n} from \"@material-ui/core\";\r\nimport { HashLink } from \"react-router-hash-link\";\r\n\r\nimport {\r\n Error as ErrorIcon,\r\n ExitToApp as ExitToAppIcon,\r\n Refresh as RefreshIcon,\r\n} from \"@material-ui/icons\";\r\n\r\nimport absoluteUrl from \"../../_lib/absolute-url\";\r\n\r\nimport {\r\n CASE_DETAILS_PAGE,\r\n ERROR_CODE_EXPIRED,\r\n ERROR_TOO_MANY_ATTEMPTS,\r\n ERROR_UNAUTHORIZED,\r\n ERROR_FORBIDDEN,\r\n} from \"../../constants/routes\";\r\n\r\nimport Header from \"../header\";\r\nimport Footer from \"../footer\";\r\n\r\n// errorDescription :: ErrorDescription a => Number -> a\r\nfunction errorDescription(code) {\r\n if (code === ERROR_CODE_EXPIRED || code === ERROR_UNAUTHORIZED) {\r\n return {\r\n title: `Link expired`,\r\n text: `Sorry but this link has now expired, please click below to obtain a new link. You will\r\n be asked to enter your email address, surname and postcode.`,\r\n };\r\n }\r\n if (code === ERROR_TOO_MANY_ATTEMPTS) {\r\n return {\r\n title: `Limit reached`,\r\n text: `Sorry, you have carried out to many searches.`,\r\n faq: {\r\n text: `Why can’t I run more searches?`,\r\n href: `/faq#attempts-remaining-limit-reached`,\r\n },\r\n };\r\n }\r\n if (code === ERROR_FORBIDDEN) {\r\n return {\r\n title: `Bad domain`,\r\n text: `Sorry, the link you have used is not valid. Please go to lms.com/bankaccountcheck.`,\r\n };\r\n }\r\n if (code >= 500) {\r\n return {\r\n title: `Service offline`,\r\n text: `Sorry it’s us not you. This service is currently offline, please try again later. If\r\n this message persists please email helpdesk@lms.com`,\r\n };\r\n }\r\n return { title: `Unexpected error [${code}]`, text: `` };\r\n}\r\n\r\nexport const ErrorView = ({ classes, status }) => {\r\n const { code } = queryString.parse(window.location.search, { ignoreQueryPrefix: true });\r\n\r\n const error = errorDescription(Number(code || status));\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n {error.title}\r\n \r\n \r\n {error.text}\r\n {error.faq && (\r\n \r\n {\r\n window.ga(\r\n `send`,\r\n `pageview`,\r\n absoluteUrl(`faq#attempts-remaining-limit-reached`),\r\n );\r\n }}\r\n >\r\n {error.faq.text}\r\n \r\n \r\n )}\r\n\r\n
\r\n \r\n Send me a new link\r\n \r\n \r\n \r\n Exit\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nErrorView.propTypes = {\r\n status: PropTypes.number,\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nErrorView.defaultProps = {\r\n status: -1,\r\n};\r\n","import { compose } from \"redux\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport style from \"./ErrorView.style\";\r\nimport { ErrorView } from \"./ErrorView\";\r\n\r\nexport default compose(withStyles(style))(ErrorView);\r\n","import { body, contentContainer } from \"../../config/theme\";\r\n\r\nexport default theme => ({\r\n body,\r\n contentContainer,\r\n container: {\r\n padding: 2 * theme.spacing.unit,\r\n },\r\n buttonContainer: {\r\n display: `flex`,\r\n justifyContent: `center`,\r\n alignItems: `center`,\r\n marginTop: 2 * theme.spacing.unit,\r\n },\r\n resultIconWarning: {\r\n display: `block`,\r\n height: 42,\r\n margin: `0 auto`,\r\n width: 42,\r\n fill: `#eb933d`,\r\n },\r\n resultHeaderDivider: {\r\n width: 12,\r\n margin: `12px auto`,\r\n },\r\n buttons: {\r\n borderRadius: 0,\r\n justifyContent: `flex-start`,\r\n color: `#fff`,\r\n fontSize: 12,\r\n marginLeft: 5,\r\n width: `50%`,\r\n \"& svg\": {\r\n position: `absolute`,\r\n right: 12,\r\n },\r\n },\r\n});\r\n","import { connect } from 'react-redux';\r\n\r\nimport { TokenedView, mapDispatchToProps } from './TokenedView';\r\n\r\nexport default connect(null, mapDispatchToProps)(TokenedView);\r\n","import { bindActionCreators } from 'redux';\r\nimport { validateToken } from '../../actions/session';\r\n\r\nexport const TokenedView = ({ children, validateTokenAction }) => {\r\n validateTokenAction();\r\n return children;\r\n};\r\n\r\nexport const mapDispatchToProps = dispatch => ({\r\n validateTokenAction: bindActionCreators(validateToken, dispatch),\r\n});\r\n","import { withToken } from './withToken';\r\n\r\nexport default withToken;\r\n","import React from 'react';\r\nimport TokenedView from '../../components/tokened-view';\r\n\r\nexport const withToken = WrappedComponent => () => (\r\n \r\n \r\n \r\n);\r\n","export default theme => ({\r\n container: {\r\n marginTop: theme.spacing.unit * 2,\r\n },\r\n});\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Link, Typography } from \"@material-ui/core\";\r\nimport pluralize from \"pluralize\";\r\nimport { HashLink } from \"react-router-hash-link\";\r\n\r\nimport absoluteUrl from \"../../_lib/absolute-url\";\r\n\r\nexport const AttemptsRemaining = ({ attempts, classes }) => (\r\n
\r\n \r\n You have {attempts} {pluralize(`attempt`, attempts)} remaining\r\n \r\n
\r\n {\r\n window.ga(`send`, `pageview`, absoluteUrl(`faq#attempts-remaining-limit-reached`));\r\n }}\r\n >\r\n What does this mean?\r\n \r\n
\r\n
\r\n);\r\n\r\nAttemptsRemaining.propTypes = {\r\n attempts: PropTypes.number,\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nAttemptsRemaining.defaultProps = {\r\n attempts: 3,\r\n};\r\n\r\nexport const mapStateToProps = ({ accountDetails: { attempts } }) => ({\r\n attempts,\r\n});\r\n","import { withStyles } from \"@material-ui/core/styles\";\r\nimport { connect } from \"react-redux\";\r\nimport { compose } from \"redux\";\r\n\r\nimport style from \"./AttemptsRemaining.style\";\r\n\r\nimport { AttemptsRemaining, mapStateToProps } from \"./AttemptsRemaining\";\r\n\r\nconst component = compose(\r\n withStyles(style),\r\n connect(mapStateToProps),\r\n)(AttemptsRemaining);\r\n\r\nexport default withStyles(style)(component);\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport * as R from \"ramda\";\r\nimport {\r\n Checkbox,\r\n FormControlLabel,\r\n Typography,\r\n Link,\r\n Button,\r\n FormHelperText,\r\n FormControl,\r\n InputLabel,\r\n InputBase,\r\n} from \"@material-ui/core\";\r\nimport { submit } from \"../../actions/account-details\";\r\n\r\nimport * as routes from \"../../constants/routes\";\r\nimport absoluteUrl from \"../../_lib/absolute-url\";\r\nimport trimValue from \"../../_lib/trim-value\";\r\n\r\nimport Header from \"../header\";\r\nimport Footer from \"../footer\";\r\nimport AttemptsRemaining from \"../attempts-remaining\";\r\nimport Loading from \"../loading\";\r\n\r\nfunction isValid(field) {\r\n const validators = {\r\n accountNumber: value => value.length < 1 || /[0-9]{8}/.test(value),\r\n sortCode: value => value.length < 1 || /[0-9]{2}-?[0-9]{2}-?[0-9]{2}-?/.test(value),\r\n tnc: value => typeof value === `boolean` && value,\r\n };\r\n return validators[field];\r\n}\r\n\r\nfunction formatValue(field) {\r\n const formatters = {\r\n accountNumber: value => trimValue(value)\r\n .replace(/[^0-9]/, ``)\r\n .substr(0, 8),\r\n sortCode: value => (trimValue(value).length > 0\r\n ? trimValue(value)\r\n .replace(/[^0-9]/, ``)\r\n .match(/\\d{1,2}/g)\r\n .slice(0, 3)\r\n .join(`-`)\r\n : ``),\r\n tnc: value => value,\r\n };\r\n return formatters[field];\r\n}\r\n\r\nexport class AccountDetailsView extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n accountNumber: ``,\r\n sortCode: ``,\r\n tnc: false,\r\n isValid: {\r\n accountNumber: true,\r\n sortCode: true,\r\n tnc: true,\r\n },\r\n };\r\n }\r\n\r\n onChangeInput = field => (ev) => {\r\n let { value } = ev.target;\r\n if (field === `tnc`) {\r\n value = ev.target.checked;\r\n }\r\n this.setState({\r\n [field]: formatValue(field)(value),\r\n });\r\n };\r\n\r\n onBlurInput = field => () => {\r\n this.setState(prevState => R.assocPath([`isValid`, field], isValid(field)(prevState[field]), prevState));\r\n };\r\n\r\n onFocusInput = field => () => {\r\n this.setState(prevState => R.assocPath([`isValid`, field], true, prevState));\r\n };\r\n\r\n onClickSubmit = (ev) => {\r\n ev.preventDefault();\r\n window.ga(`send`, `pageview`, absoluteUrl(routes.BANK_ACCOUNT_RESULT_PAGE));\r\n const { accountNumber, sortCode, tnc } = this.state;\r\n this.props.submit({ accountNumber, sortCode, tnc });\r\n };\r\n\r\n render() {\r\n const { classes, appIsLoading } = this.props;\r\n const { accountNumber, sortCode, tnc } = this.state;\r\n\r\n const areFieldsValid = [`accountNumber`, `sortCode`, `tnc`].reduce(\r\n (acc, field) => acc && isValid(field)(this.state[field]),\r\n true,\r\n );\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n {appIsLoading && }\r\n \r\n Please enter the account details the law firm have provided\r\n \r\n
\r\n \r\n \r\n Law firm account number\r\n \r\n \r\n \r\n {!this.state.isValid.accountNumber\r\n ? `The account number you have provided is not in a valid format, please re-enter`\r\n : ``}\r\n \r\n \r\n\r\n \r\n \r\n Law firm sort code\r\n \r\n \r\n \r\n {!this.state.isValid.sortCode\r\n ? `The sort code you have provided is not in a\r\n valid format, please re-enter`\r\n : ``}\r\n \r\n \r\n\r\n \r\n This service is provided by LMS.com to support safer conveyancing.\r\n \r\n\r\n
\r\n \r\n Terms & conditions of use\r\n \r\n
\r\n
\r\n \r\n Privacy policy\r\n \r\n
\r\n\r\n \r\n)}\r\n label=\"I accept the Terms & Conditions of use\"\r\n />\r\n \r\n {!isValid(`tnc`)(tnc)\r\n ? `Without agreeing to the Terms & Conditions you are unable to use LMS Bank Account\r\n Check`\r\n : ``}\r\n \r\n\r\n
\r\n \r\n Submit\r\n \r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nAccountDetailsView.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n submit: PropTypes.func.isRequired,\r\n appIsLoading: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport const mapStateToProps = ({ app }) => ({\r\n appIsLoading: app.isLoading,\r\n});\r\n\r\nexport const mapDispatchToProps = dispatch => ({\r\n submit: bindActionCreators(submit, dispatch),\r\n});\r\n","import { withStyles } from \"@material-ui/core/styles\";\r\nimport { connect } from \"react-redux\";\r\nimport { compose } from \"redux\";\r\n\r\nimport withToken from \"../../hocs/with-token\";\r\n\r\nimport style from \"./AccountDetailsView.style\";\r\nimport { AccountDetailsView, mapStateToProps, mapDispatchToProps } from \"./AccountDetailsView\";\r\n\r\nconst component = compose(\r\n connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n ),\r\n withStyles(style),\r\n)(AccountDetailsView);\r\n\r\nexport default withToken(component);\r\n","import { body, contentContainer } from \"../../config/theme\";\r\n\r\nexport default theme => ({\r\n body,\r\n contentContainer,\r\n container: {\r\n padding: 3 * theme.spacing.unit,\r\n },\r\n textField: {\r\n marginTop: theme.spacing.unit,\r\n },\r\n nextButtonContainer: {\r\n display: `flex`,\r\n justifyContent: `center`,\r\n alignItems: `center`,\r\n marginTop: 2 * theme.spacing.unit,\r\n },\r\n});\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nfunction SuggestionItem({ suggestion, classes }) {\r\n const { label, companyName, tradingName } = suggestion;\r\n if (suggestion.id === -1) return label;\r\n return (\r\n
\r\n {companyName}\r\n {tradingName}\r\n
\r\n );\r\n}\r\n\r\nSuggestionItem.propTypes = {\r\n suggestion: PropTypes.object,\r\n classes: PropTypes.object,\r\n};\r\n\r\nSuggestionItem.defaultProps = {\r\n suggestion: {},\r\n classes: {},\r\n};\r\n\r\nexport default SuggestionItem;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport Downshift from \"downshift\";\r\nimport { MenuItem, Paper, TextField } from \"@material-ui/core\";\r\nimport cx from \"classnames\";\r\n\r\nimport trimValue from \"../../_lib/trim-value\";\r\n\r\nimport SuggestionItem from \"./SuggestionItem\";\r\n\r\nexport const Autocomplete = ({\r\n classes,\r\n initialInputValue,\r\n itemToString,\r\n label,\r\n onChange,\r\n onSelect,\r\n placeholder,\r\n suggestions,\r\n stateReducer,\r\n}) => (\r\n \r\n {({\r\n getInputProps, getItemProps, getMenuProps, highlightedIndex, isOpen,\r\n }) => {\r\n const { value: rawValue } = getInputProps();\r\n const value = trimValue(rawValue);\r\n const isSuggestionsOpen = isOpen && value.length > 2;\r\n return (\r\n
\r\n \r\n
\r\n \r\n {suggestions.slice(0, 8).map((suggestion, index) => {\r\n const isHighlighted = highlightedIndex === index;\r\n const itemProps = getItemProps({ item: suggestion.id });\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n
\r\n );\r\n }}\r\n \r\n);\r\n\r\nAutocomplete.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n initialInputValue: PropTypes.string,\r\n itemToString: PropTypes.func,\r\n label: PropTypes.string,\r\n onChange: PropTypes.func.isRequired,\r\n onSelect: PropTypes.func.isRequired,\r\n placeholder: PropTypes.string,\r\n suggestions: PropTypes.array.isRequired,\r\n stateReducer: PropTypes.func,\r\n};\r\n\r\nAutocomplete.defaultProps = {\r\n itemToString: item => item,\r\n stateReducer: state => state,\r\n initialInputValue: ``,\r\n label: ``,\r\n placeholder: ``,\r\n};\r\n","import { withStyles } from '@material-ui/core/styles';\r\n\r\nimport styles from './Autocomplete.style';\r\nimport { Autocomplete } from './Autocomplete';\r\n\r\nexport default withStyles(styles)(Autocomplete);\r\n","export default theme => ({\r\n container: {\r\n flexGrow: 1,\r\n position: `relative`,\r\n },\r\n paper: {\r\n position: `absolute`,\r\n zIndex: -1,\r\n left: 0,\r\n right: 0,\r\n opacity: 0,\r\n marginTop: theme.spacing.unit,\r\n \"&.is-open\": {\r\n zIndex: 1,\r\n opacity: 1,\r\n },\r\n },\r\n chip: {\r\n margin: `${theme.spacing.unit / 2}px ${theme.spacing.unit / 4}px`,\r\n },\r\n inputRoot: {\r\n flexWrap: `wrap`,\r\n },\r\n inputInput: {\r\n width: `auto`,\r\n flexGrow: 1,\r\n marginTop: theme.spacing.unit,\r\n },\r\n divider: {\r\n height: theme.spacing.unit * 2,\r\n },\r\n suggestionItem: {\r\n display: `flex`,\r\n flexDirection: `column`,\r\n overflow: `hidden`,\r\n \"& strong, & span\": {\r\n lineHeight: `1.2rem`,\r\n },\r\n \"& span\": {\r\n display: `block`,\r\n overflow: `hidden`,\r\n whiteSpace: `nowrap`,\r\n textOverflow: `ellipsis`,\r\n fontSize: `0.9rem`,\r\n },\r\n },\r\n});\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Paper, Typography } from \"@material-ui/core\";\r\n\r\nexport default function SelectedLawFirm(props) {\r\n const { classes, selectedLawFirm, isLawFirmNotListed } = props;\r\n if (isLawFirmNotListed) {\r\n return (\r\n \r\n \r\n Please check the search criteria above as we have been unable to find a law firm that\r\n matches the search.\r\n \r\n \r\n LMS Bank Account Check covers law firms that fulfil 97% of conveyancing transactions in\r\n the UK, however, sometimes a law firms bank details may not be available to check against.\r\n Please speak to your law firm directly to check their bank details.\r\n \r\n \r\n );\r\n }\r\n if (!selectedLawFirm) return null;\r\n\r\n if (selectedLawFirm.isUnderReview) {\r\n return (\r\n \r\n \r\n Unfortunately you are unable to check this law firms details at the moment. Please speak\r\n to your law firm directly to check their bank details.\r\n \r\n \r\n );\r\n }\r\n\r\n const {\r\n companyName, tradingName, address, regulator,\r\n } = selectedLawFirm;\r\n return (\r\n <>\r\n Your law firm`s details:\r\n \r\n Company Name\r\n {companyName}\r\n Trading Name(s)\r\n {tradingName}\r\n Address\r\n {address}\r\n Who is the law firm regulated by?:\r\n {regulator}\r\n \r\n \r\n );\r\n}\r\n\r\nSelectedLawFirm.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n selectedLawFirm: PropTypes.object,\r\n isLawFirmNotListed: PropTypes.bool.isRequired,\r\n};\r\n\r\nSelectedLawFirm.defaultProps = {\r\n selectedLawFirm: null,\r\n};\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport * as R from \"ramda\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport Downshift from \"downshift\";\r\nimport {\r\n Button,\r\n FormControl,\r\n FormHelperText,\r\n InputBase,\r\n InputAdornment,\r\n InputLabel,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport { Search as SearchIcon, ChevronRight as ChevronRightIcon } from \"@material-ui/icons\";\r\n\r\nimport * as routes from \"../../constants/routes\";\r\nimport absoluteUrl from \"../../_lib/absolute-url\";\r\nimport trimValue from \"../../_lib/trim-value\";\r\n\r\nimport {\r\n searchLawFirm,\r\n resetLawFirmResults,\r\n selectLawFirm,\r\n resetSelectedLawFirm,\r\n submitLawFirmSelection,\r\n} from \"../../actions/account-details\";\r\n\r\nimport { isPostCode } from \"../../services/validator\";\r\n\r\nimport Header from \"../header\";\r\nimport Footer from \"../footer\";\r\nimport AttemptsRemaining from \"../attempts-remaining\";\r\nimport Autocomplete from \"../autocomplete\";\r\nimport Loading from \"../loading\";\r\n\r\nimport SelectedLawFirm from \"./SelectedLawFirm\";\r\n\r\n// prepareSuggestionsList :: LawFirm a => [a] -> [a]\r\nfunction prepareSuggestionsList(lawFirmsList = {}) {\r\n return R.values(lawFirmsList)\r\n .slice(0, 7)\r\n .concat({\r\n id: -1,\r\n label: `My law firm isn't listed here`,\r\n });\r\n}\r\n\r\nfunction validatePostCode(postcode) {\r\n return postcode.length > 2 && isPostCode(postcode);\r\n}\r\n\r\nfunction downshiftStateReducer(state, changes) {\r\n switch (changes.type) {\r\n // don't re-send the selected item when the user clicks out from AutoComplete\r\n case Downshift.stateChangeTypes.mouseUp:\r\n return state;\r\n // don't close the suggestions list when user blurs out of input (ex. changes browser tab)\r\n case Downshift.stateChangeTypes.blurInput:\r\n return state;\r\n default:\r\n return changes;\r\n }\r\n}\r\n\r\nexport class LawFirmSearchView extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const { selectedLawFirm } = this.props;\r\n this.state = {\r\n postCode: R.propOr(``, `postcode`, selectedLawFirm),\r\n firmName: R.propOr(``, `label`, selectedLawFirm),\r\n selectedFirmId: R.prop(`id`, selectedLawFirm),\r\n isValidPostCode: selectedLawFirm || false,\r\n showLawFirmSearch: Boolean(R.propOr(false, `label`, selectedLawFirm)),\r\n isLawFirmNotListed: false,\r\n };\r\n }\r\n\r\n onChangePostCode = (ev) => {\r\n const { value = `` } = ev.target;\r\n const postCode = trimValue(value);\r\n this.setState({\r\n postCode: postCode.toUpperCase(),\r\n isValidPostCode: true,\r\n });\r\n };\r\n\r\n onBlurPostCode = () => {\r\n const { postCode, showLawFirmSearch } = this.state;\r\n this.props.resetLawFirmResults();\r\n this.props.resetSelectedLawFirm();\r\n this.setFirmNotListed(false);\r\n const isValidPostCode = validatePostCode(postCode);\r\n // only change if the postCode turns invalid\r\n const newShowLawFirmSearch = !isValidPostCode ? false : showLawFirmSearch;\r\n this.setState({\r\n isValidPostCode,\r\n showLawFirmSearch: newShowLawFirmSearch,\r\n });\r\n };\r\n\r\n onKeyDownPostCode = (ev) => {\r\n if (ev.keyCode === 13) {\r\n // prevent IE11 from submitting the form onKeyDown:Enter\r\n ev.preventDefault();\r\n // make onKeyDown:Enter submit the form on all browsers\r\n this.onBlurPostCode();\r\n this.onClickShowLawFirmSearch();\r\n }\r\n };\r\n\r\n onClickShowLawFirmSearch = () => {\r\n const { postCode, isValidPostCode } = this.state;\r\n if (postCode.length > 0 && isValidPostCode) {\r\n this.setState({ showLawFirmSearch: true });\r\n }\r\n };\r\n\r\n onChangeFirmName = (value = ``) => {\r\n const firmName = trimValue(value);\r\n // when changing the input, make sure there's a real change\r\n if (this.state.firmName === firmName) return;\r\n this.props.resetSelectedLawFirm();\r\n if (firmName.length === 0) {\r\n this.setState({ isLawFirmNotListed: false, firmName });\r\n return;\r\n }\r\n this.setState({ firmName });\r\n if (firmName.length < 3) return;\r\n const { postCode } = this.state;\r\n this.props.searchLawFirm(postCode, firmName);\r\n };\r\n\r\n onSelectLawFirm = (selectedFirmId) => {\r\n // happens when clicking outside the suggestion link without selecting anything\r\n if (typeof selectedFirmId === `undefined`) {\r\n return;\r\n }\r\n // selected: My law firm isn't listed here\r\n if (selectedFirmId === -1) {\r\n this.setFirmNotListed(true);\r\n this.setState({ isLawFirmNotListed: true });\r\n this.props.resetLawFirmResults();\r\n this.props.resetSelectedLawFirm();\r\n return;\r\n }\r\n\r\n this.setFirmNotListed(false);\r\n const { lawFirmsList } = this.props;\r\n const lawFirm = lawFirmsList[selectedFirmId];\r\n this.props.selectLawFirm(lawFirm);\r\n this.setState({ selectedFirmId, firmName: lawFirm.label });\r\n };\r\n\r\n setFirmNotListed = (isLawFirmNotListed) => {\r\n this.props.resetLawFirmResults();\r\n this.props.resetSelectedLawFirm();\r\n this.setState({ isLawFirmNotListed, firmName: `` });\r\n };\r\n\r\n onClickSubmit = (ev) => {\r\n ev.preventDefault();\r\n window.ga(`send`, `pageview`, absoluteUrl(routes.ACCOUNT_DETAILS_PAGE));\r\n this.props.submitLawFirmSelection();\r\n };\r\n\r\n downshiftItemToString = (itemId) => {\r\n const { lawFirmsList } = this.props;\r\n const { firmName } = this.state;\r\n return itemId in lawFirmsList ? lawFirmsList[itemId].label : firmName;\r\n };\r\n\r\n render() {\r\n const {\r\n classes, lawFirmsList, selectedLawFirm, appIsLoading,\r\n } = this.props;\r\n const {\r\n isValidPostCode,\r\n postCode,\r\n showLawFirmSearch,\r\n selectedFirmId,\r\n isLawFirmNotListed,\r\n firmName,\r\n } = this.state;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n {appIsLoading && }\r\n
\r\n \r\n Welcome back\r\n \r\n
\r\n
\r\n
\r\n 0 && !isValidPostCode} fullWidth>\r\n \r\n Please provide the law firms postcode:\r\n \r\n \r\n 0 && isValidPostCode ? `primary` : `default`}\r\n disabled={postCode.length > 0 && !isValidPostCode}\r\n >\r\n Search\r\n \r\n \r\n \r\n)}\r\n />\r\n 0 && !isValidPostCode}>\r\n {postCode.length > 0 && !isValidPostCode\r\n ? `The postcode you have provided is not in a valid format, please re-enter your\r\n postcode`\r\n : ``}\r\n \r\n \r\n {showLawFirmSearch && (\r\n
\r\n \r\n \r\n {selectedFirmId === -2 && `We need this information to proceed`}\r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n Next\r\n \r\n \r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nLawFirmSearchView.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n lawFirmsList: PropTypes.object.isRequired,\r\n searchLawFirm: PropTypes.func.isRequired,\r\n resetLawFirmResults: PropTypes.func.isRequired,\r\n selectLawFirm: PropTypes.func.isRequired,\r\n selectedLawFirm: PropTypes.object,\r\n resetSelectedLawFirm: PropTypes.func.isRequired,\r\n submitLawFirmSelection: PropTypes.func.isRequired,\r\n appIsLoading: PropTypes.bool.isRequired,\r\n};\r\n\r\nLawFirmSearchView.defaultProps = {\r\n selectedLawFirm: null,\r\n};\r\n\r\nexport const mapStateToProps = ({ accountDetails: { lawFirmsList, selectedLawFirm }, app }) => ({\r\n lawFirmsList,\r\n selectedLawFirm,\r\n appIsLoading: app.isLoading,\r\n});\r\n\r\nexport const mapDispatchToProps = dispatch => ({\r\n searchLawFirm: bindActionCreators(searchLawFirm, dispatch),\r\n resetLawFirmResults: bindActionCreators(resetLawFirmResults, dispatch),\r\n selectLawFirm: bindActionCreators(selectLawFirm, dispatch),\r\n resetSelectedLawFirm: bindActionCreators(resetSelectedLawFirm, dispatch),\r\n submitLawFirmSelection: bindActionCreators(submitLawFirmSelection, dispatch),\r\n});\r\n","import { withStyles } from \"@material-ui/core/styles\";\r\nimport { connect } from \"react-redux\";\r\nimport { compose } from \"redux\";\r\n\r\nimport withToken from \"../../hocs/with-token\";\r\n\r\nimport { LawFirmSearchView, mapStateToProps, mapDispatchToProps } from \"./LawFirmSearchView\";\r\nimport style from \"./LawFirmSearchView.style\";\r\n\r\nconst component = compose(\r\n withStyles(style),\r\n connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n ),\r\n)(LawFirmSearchView);\r\n\r\nexport default withToken(component);\r\n","import { body, contentContainer } from \"../../config/theme\";\r\n\r\nexport default theme => ({\r\n body,\r\n contentContainer,\r\n header: {\r\n padding: `${2 * theme.spacing.unit}px ${4 * theme.spacing.unit}px`,\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText,\r\n },\r\n h2: {\r\n color: theme.palette.primary.contrastText,\r\n fontSize: `1rem`,\r\n fontWeight: `bold`,\r\n },\r\n container: {\r\n padding: `${2 * theme.spacing.unit}px ${4 * theme.spacing.unit}px`,\r\n },\r\n inputSearchPostcode: {\r\n '& input[type=\"text\"]': {\r\n width: `300px`,\r\n },\r\n \"& button\": {\r\n width: `100px`,\r\n },\r\n },\r\n nextButtonContainer: {\r\n alignItems: `center`,\r\n display: `flex`,\r\n justifyContent: `center`,\r\n marginTop: 2 * theme.spacing.unit,\r\n },\r\n rightIcon: {\r\n marginLeft: theme.spacing.unit,\r\n },\r\n autoCompleteContainer: {\r\n \"& [role=listbox] > div > div:last-of-type\": {\r\n color: `#00aae5`,\r\n textDecoration: `underline`,\r\n },\r\n },\r\n messageLawFirmNotListed: {\r\n marginTop: theme.spacing.unit,\r\n \"& > p\": {\r\n paddingBottom: theme.spacing.unit * 2,\r\n },\r\n },\r\n});\r\n","import { withStyles } from \"@material-ui/core/styles\";\r\n\r\nimport style from \"./LandingView.style\";\r\n\r\nimport { LandingView } from \"./LandingView\";\r\n\r\nexport default withStyles(style)(LandingView);\r\n","import { body } from \"../../config/theme\";\r\n\r\nexport default () => ({\r\n body: {\r\n ...body,\r\n paddingBottom: 0,\r\n },\r\n background: {\r\n height: `100%`,\r\n width: `100%`,\r\n backgroundImage: `url(${process.env.PUBLIC_URL}/assets/images/bg-landing.jpg)`,\r\n backgroundPosition: `50% 50%`,\r\n backgroundSize: `cover`,\r\n display: `flex`,\r\n flexDirection: `column`,\r\n alignItems: `center`,\r\n justifyContent: `center`,\r\n },\r\n logo: {\r\n width: 260,\r\n height: 85,\r\n backgroundImage: `url(${process.env.PUBLIC_URL}/assets/images/logo-landing-bac.png)`,\r\n backgroundSize: `contain`,\r\n margin: `0 auto`,\r\n },\r\n poweredBy: {\r\n width: 87,\r\n height: 55,\r\n backgroundImage: `url(${process.env.PUBLIC_URL}/assets/images/logo-landing-powered.png)`,\r\n backgroundSize: `contain`,\r\n margin: `32px auto`,\r\n },\r\n cta: {\r\n position: `relative`,\r\n width: 280,\r\n height: 40,\r\n color: `#fff`,\r\n backgroundColor: `#00aae8`,\r\n display: `flex`,\r\n justifyContent: `center`,\r\n alignItems: `center`,\r\n fontSize: 14,\r\n fontWeight: `bold`,\r\n borderRadius: 0,\r\n \"& svg\": {\r\n position: `absolute`,\r\n left: 40,\r\n },\r\n },\r\n});\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Button } from \"@material-ui/core\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { LockOpen as LockOpenIcon } from \"@material-ui/icons\";\r\n\r\nimport * as routes from \"../../constants/routes\";\r\nimport absoluteUrl from \"../../_lib/absolute-url\";\r\n\r\nimport Header from \"../header\";\r\n\r\nexport const LandingView = ({ classes }) => (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n window.ga(`send`, `pageview`, absoluteUrl(routes.CASE_DETAILS_PAGE));\r\n }}\r\n >\r\n \r\n Check an account\r\n \r\n
\r\n
\r\n);\r\n\r\nLandingView.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Button } from \"@material-ui/core\";\r\nimport { ExitToApp as ExitToAppIcon } from \"@material-ui/icons\";\r\n\r\nfunction matched(submissionResult) {\r\n const { status } = submissionResult;\r\n return status >= 200 && status <= 300;\r\n}\r\n\r\nfunction link(href) {\r\n if (/^http|^www|\\.co\\.uk/.test(href)) return /^http/.test(href) ? href : `https://${href}`;\r\n return href;\r\n}\r\n\r\nfunction ButtonExit(props) {\r\n const {\r\n className, submissionResult, resetSelected, history,\r\n } = props;\r\n return (\r\n {\r\n resetSelected();\r\n if (matched(submissionResult)) {\r\n window.location = link(window.config.exitLink);\r\n } else {\r\n history.push(`/law-firm-search`);\r\n }\r\n }}\r\n >\r\n {matched(submissionResult) ? `Exit` : `Start Again`}\r\n \r\n \r\n );\r\n}\r\n\r\nButtonExit.propTypes = {\r\n className: PropTypes.string.isRequired,\r\n submissionResult: PropTypes.object.isRequired,\r\n resetSelected: PropTypes.func.isRequired,\r\n history: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default ButtonExit;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { bindActionCreators } from \"redux\";\r\nimport {\r\n Typography, Button, Link, Divider,\r\n} from \"@material-ui/core\";\r\nimport {\r\n Cancel as CancelIcon,\r\n CheckCircle as CheckCircleIcon,\r\n Note as NoteIcon,\r\n} from \"@material-ui/icons\";\r\nimport { HashLink } from \"react-router-hash-link\";\r\nimport dayjs from \"dayjs\";\r\n\r\nimport absoluteUrl from \"../../_lib/absolute-url\";\r\n\r\nimport AttemptsRemaining from \"../attempts-remaining\";\r\nimport { CLIENT_ACCOUNT_VERIFICATION_REPORT } from \"../../constants/api-endpoints\";\r\nimport { resetSelectedLawFirm } from \"../../actions/account-details\";\r\n\r\nimport Header from \"../header\";\r\nimport Footer from \"../footer\";\r\nimport ButtonExit from \"./ButtonExit\";\r\n\r\nexport const BankAccountResultView = ({\r\n classes,\r\n submissionResult,\r\n selectedLawFirm,\r\n history,\r\n resetSelected,\r\n}) => (\r\n
\r\n
\r\n
\r\n
\r\n {submissionResult.status >= 200 && submissionResult.status <= 300 && (\r\n <>\r\n \r\n \r\n {`It's a match`}\r\n \r\n \r\n\r\n \r\n The details you have provided have matched the records that we hold for the law firm.\r\n \r\n\r\n \r\n {\r\n window.ga(\r\n `send`,\r\n `pageview`,\r\n absoluteUrl(`faq#what-if-the-bank-details-dont-match`),\r\n );\r\n }}\r\n >\r\n Am I ok to now send money to the law firm?\r\n \r\n \r\n \r\n )}\r\n {submissionResult.status >= 400 && (\r\n <>\r\n \r\n \r\n No Match\r\n \r\n \r\n \r\n The details you have provided do not match the records that we hold for the law firm.\r\n Please check the details below and if they are as provided by the law firm you should\r\n speak to your contact at the law firm by phone before transferring money.\r\n \r\n \r\n {\r\n window.ga(\r\n `send`,\r\n `pageview`,\r\n absoluteUrl(`faq#what-if-the-bank-details-dont-match`),\r\n );\r\n }}\r\n >\r\n Should I transfer my money?\r\n \r\n \r\n \r\n )}\r\n <>\r\n \r\n You asked us to check these details on{` `}\r\n {dayjs(submissionResult.dateTime).format(`DD/MM/YYYY`)} at{` `}\r\n {dayjs(submissionResult.dateTime).format(`HH:mm`)}:\r\n \r\n
\r\n Company Name:\r\n {selectedLawFirm.companyName}\r\n Trading Name(s):\r\n {selectedLawFirm.tradingName}\r\n Address:\r\n {selectedLawFirm.address}\r\n Who is the law firm regulated by?:\r\n {selectedLawFirm.regulator}\r\n Sort Code:\r\n {selectedLawFirm.sortCode}\r\n Account Number:\r\n {selectedLawFirm.accountNumber}\r\n
\r\n\r\n \r\n Download a copy of the results for your records\r\n \r\n\r\n
\r\n \r\n Download PDF\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n);\r\n\r\nBankAccountResultView.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n submissionResult: PropTypes.object.isRequired,\r\n selectedLawFirm: PropTypes.object.isRequired,\r\n history: PropTypes.object,\r\n resetSelected: PropTypes.func,\r\n};\r\n\r\nBankAccountResultView.defaultProps = {\r\n history: {},\r\n resetSelected: () => {},\r\n};\r\n\r\nexport const mapStateToProps = ({ accountDetails: { submissionResult, selectedLawFirm } }) => ({\r\n submissionResult,\r\n selectedLawFirm,\r\n});\r\n\r\nexport const mapDispatchToProps = dispatch => ({\r\n resetSelected: bindActionCreators(resetSelectedLawFirm, dispatch),\r\n});\r\n","import { withStyles } from \"@material-ui/core/styles\";\r\nimport { compose } from \"redux\";\r\nimport { connect } from \"react-redux\";\r\n\r\nimport style from \"./BankAccountResultView.style\";\r\nimport {\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n BankAccountResultView,\r\n} from \"./BankAccountResultView\";\r\n\r\nexport default compose(\r\n connect(\r\n mapStateToProps,\r\n mapDispatchToProps,\r\n ),\r\n withStyles(style),\r\n)(BankAccountResultView);\r\n","import { body, contentContainer } from \"../../config/theme\";\r\n\r\nexport default theme => ({\r\n body,\r\n contentContainer,\r\n container: {\r\n padding: 2 * theme.spacing.unit,\r\n },\r\n\r\n resultContainer: {\r\n background: theme.palette.grey,\r\n borderWidth: `1px`,\r\n borderStyle: `solid`,\r\n borderColor: `#bccad8`,\r\n padding: `16px 16px 0 16px`,\r\n },\r\n\r\n resultIconSuccess: {\r\n display: `block`,\r\n height: 42,\r\n margin: `0 auto`,\r\n width: 42,\r\n fill: `#aecf4a`,\r\n },\r\n\r\n resultIconCancel: {\r\n display: `block`,\r\n height: 42,\r\n margin: `0 auto`,\r\n width: 42,\r\n fill: `#df2e5b`,\r\n },\r\n\r\n resultHeading: {\r\n color: `#0c2b83`,\r\n fontSize: 24,\r\n fontWeight: `bold`,\r\n },\r\n\r\n resultHeaderDivider: {\r\n width: 12,\r\n margin: `12px auto`,\r\n },\r\n\r\n resultHeaderLink: {\r\n fontWeight: `bold`,\r\n fontSize: 16,\r\n margin: `12px 0`,\r\n \"& a\": {\r\n color: `#00aae8`,\r\n },\r\n },\r\n\r\n detailsTitle: {\r\n margin: `16px 0`,\r\n },\r\n\r\n value: {\r\n marginBottom: 8,\r\n fontWeight: `bold`,\r\n },\r\n\r\n downloadLabel: {\r\n marginTop: 16,\r\n marginBottom: 2,\r\n fontWeight: `normal`,\r\n },\r\n downloadButtonContainer: {\r\n display: `flex`,\r\n justifyContent: `space-between`,\r\n alignItems: `center`,\r\n margin: `16px 0`,\r\n },\r\n buttonDownloadPdf: {\r\n position: `relative`,\r\n backgroundColor: `#00aae8`,\r\n borderRadius: 0,\r\n color: `#fff`,\r\n fontSize: 12,\r\n marginRight: 5,\r\n whiteSpace: `nowrap`,\r\n width: `50%`,\r\n \"& svg\": {\r\n position: `absolute`,\r\n right: 12,\r\n },\r\n },\r\n buttonExit: {\r\n backgroundColor: `#00236c`,\r\n borderRadius: 0,\r\n color: `#fff`,\r\n fontSize: 12,\r\n marginLeft: 5,\r\n width: `50%`,\r\n \"& svg\": {\r\n position: `absolute`,\r\n right: 12,\r\n },\r\n },\r\n});\r\n","/* eslint jsx-a11y/anchor-is-valid:off */\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Link, Typography } from \"@material-ui/core\";\r\nimport { HashLink } from \"react-router-hash-link\";\r\n\r\nimport absoluteUrl from \"../../_lib/absolute-url\";\r\n\r\nimport Header from \"../header\";\r\nimport Footer from \"../footer\";\r\n\r\nconst toc = [\r\n {\r\n hash: `what-is-lms-bank-account-check`,\r\n text: `What is LMS Bank Account Check?`,\r\n },\r\n {\r\n hash: `who-is-lms`,\r\n text: `Who is LMS?`,\r\n },\r\n {\r\n hash: `what-should-i-do-if-i-receive-an-email-from-my-law-firm`,\r\n text: `What should I do if I receive an email from my law firm informing me of a change to their\r\n bank details?`,\r\n },\r\n {\r\n hash: `how-can-i-spot-a-scam-email`,\r\n text: `How can I spot a scam email?`,\r\n },\r\n {\r\n hash: `what-if-my-case-cant-be-found`,\r\n text: `What if my case can’t be found?`,\r\n },\r\n {\r\n hash: `what-if-i-dont-receive-the-email`,\r\n text: `What if I don’t receive the email?`,\r\n },\r\n {\r\n hash: `attempts-remaining-limit-reached`,\r\n text: `Attempts remaining / limit reached`,\r\n },\r\n {\r\n hash: `what-if-my-case-cant-be-found`,\r\n text: `What if my law firm can’t be found?`,\r\n },\r\n {\r\n hash: `what-if-my-link-expired`,\r\n text: `What if my link expires?`,\r\n },\r\n {\r\n hash: `what-if-the-bank-details-dont-match`,\r\n text: `What if the bank details don’t match? Should I transfer my money?`,\r\n },\r\n];\r\n\r\nexport const FAQ = ({ classes }) => (\r\n
\r\n
\r\n
\r\n
\r\n Frequently Asked Questions\r\n
\r\n {toc.map(({ hash, text }) => (\r\n {\r\n window.ga(`send`, `pageview`, absoluteUrl(`faq#${hash}`));\r\n }}\r\n >\r\n {text}\r\n \r\n ))}\r\n
\r\n \r\n

What is LMS Bank Account Check?

\r\n
\r\n
\r\n \r\n LMS Bank Account Check is a fraud prevention service which allows you to check law firm\r\n bank details before sending them any money. This service is provided by LMS, you can\r\n find out more below.\r\n \r\n \r\n If you have any concernsabout any communications you may have received from any parties\r\n visit the HM Government fraud prevention advice page at \r\n \r\n https://takefive-stopfraud.org.uk/\r\n \r\n .\r\n \r\n
\r\n \r\n

Who is LMS?

\r\n
\r\n
\r\n \r\n LMS is the UK’s leading provider of conveyancing services and has over 25 years’\r\n experience. We deliver the highest quality conveyancing along with management of wider\r\n transactional panels to lenders of all sizes, mortgage intermediaries and estate agents.\r\n LMS successfully manages over 300,000 conveyancing transactions a year.\r\n \r\n \r\n LMS is the trading name for Legal Marketing Services Limited (03002073), Bickerton\r\n House, Lloyd Drive, Ellesmere Port, CH65 9HQ.\r\n \r\n
\r\n \r\n

\r\n What should I do if I receive an email from my law firm informing me of a change to\r\n their bank details?\r\n

\r\n \r\n
\r\n \r\n Most law firms will not change their bank details during the time that they work on your\r\n transaction. In the unlikely event they did change their bank details you should not be\r\n informed via email.\r\n \r\n \r\n Fraudsters do not just try and contact you by phone and text, they also ‘phish’,\r\n contacting you by email too. So always be suspicious of unsolicited emails that are\r\n supposedly from your bank or some other trusted organisation because the address can\r\n easily be faked. Never automatically click on any links they contain either, not before\r\n stopping to check if they seem genuine first.\r\n \r\n
\r\n \r\n

How can I spot a scam email?

\r\n
\r\n
\r\n Take Five provides the following advice:\r\n
    \r\n
  • \r\n The sender’s address doesn’t match the website address of the organisation it says\r\n it’s from. Roll your mouse pointer over the sender’s name to reveal its true address.\r\n
  • \r\n
  • \r\n The email doesn’t use your proper name – using something like “Dear customer” instead.\r\n
  • \r\n
  • There’s a sense of urgency, asking you to act immediately.
  • \r\n
  • \r\n There’s a prominent website link which may seem like the proper address, but with one\r\n character different.\r\n
  • \r\n
  • There’s a request for personal information.
  • \r\n
  • There are spelling and grammatical errors.
  • \r\n
  • \r\n The entire text of the email is within an image rather than the usual text format and\r\n the image contains an embedded hyperlink to a bogus site. Again roll your mouse\r\n pointer over the link to reveal its true destination.\r\n
  • \r\n
\r\n
\r\n \r\n

What if my case can’t be found?

\r\n
\r\n
\r\n \r\n If we have been unable to match your surname and postcode to our records of customers\r\n who are currently remortgaging or purchasing a property through a lender managed by LMS,\r\n please ensure the surname and postcode match those on the mortgage offer sent to you by\r\n the lender and try again.\r\n \r\n \r\n It may be that we do not have your details which unfortunately means that this service\r\n is unavailable to you. Please speak to your law firm directly to check their bank\r\n details.\r\n \r\n
\r\n \r\n

What if I don’t receive the email?

\r\n
\r\n
\r\n \r\n If you have not received your email within a few minutes, please check your junk or spam\r\n folders first and if the email is not there re-input your details again ensuring the\r\n email address is correct.\r\n \r\n
\r\n \r\n

Attempts remaining / limit reached

\r\n
\r\n
\r\n \r\n Each link is valid for up to 72 hours and a maximum of 3 checks per link. Attempts\r\n remaining will let you know how many checks you have left.\r\n \r\n
\r\n \r\n

What if my law firm can’t be found?

\r\n
\r\n
\r\n \r\n LMS Bank Account Check covers law firms that fulfil 97% of conveyancing law firms\r\n transactions in the UK, however, sometimes a law firms bank details may not be available\r\n to check against. Please speak to your law firm directly to check their bank details.\r\n \r\n
\r\n \r\n

What if my link expired?

\r\n
\r\n
\r\n \r\n If your link has expired, you will need to go to{` `}\r\n lms.com/bankaccountcheck to obtain a new\r\n link. You will be asked to enter your email address, surname and postcode.\r\n \r\n
\r\n \r\n

What if the bank details don’t match? Should I transfer my money?

\r\n
\r\n
\r\n \r\n If the details you have provided do not match the records that we hold for the law firm\r\n should speak to your contact at the law firm by phone before transferring money.\r\n \r\n \r\n If you are unsure of the contact details for the law firm you can find them via the law\r\n firms regulator.\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n);\r\n\r\nFAQ.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n};\r\n","import { withStyles } from \"@material-ui/core/styles\";\r\n\r\nimport style from \"./FAQ.style\";\r\nimport { FAQ } from \"./FAQ\";\r\n\r\nexport default withStyles(style)(FAQ);\r\n","import { body, contentContainer } from \"../../config/theme\";\r\n\r\nexport default theme => ({\r\n body,\r\n contentContainer,\r\n container: {\r\n padding: 2 * theme.spacing.unit,\r\n paddingBottom: 100 * theme.spacing.unit,\r\n },\r\n toc: {\r\n ...theme.typography.default,\r\n \"& a\": {\r\n ...theme.typography.default,\r\n display: `block`,\r\n margin: `1em 0`,\r\n color: `#00aae5`,\r\n },\r\n },\r\n h1: {\r\n ...theme.typography.default,\r\n marginBottom: `${theme.spacing.unit * 4}px`,\r\n fontSize: `1.2rem`,\r\n fontWeight: `bold`,\r\n },\r\n question: {\r\n ...theme.typography.default,\r\n marginBottom: `${theme.spacing.unit}px`,\r\n marginTop: `${theme.spacing.unit * 3}px`,\r\n \"& > h1\": {\r\n ...theme.typography.default,\r\n marginTop: `-${theme.spacing.unit * 1}px`,\r\n paddingTop: `${theme.spacing.unit * 1}px`,\r\n fontWeight: `bold`,\r\n fontSize: `1rem`,\r\n },\r\n },\r\n answer: {\r\n ...theme.typography.default,\r\n \"& p > a\": {\r\n ...theme.typography.default,\r\n },\r\n \"& p\": {\r\n marginBottom: `${theme.spacing.unit * 2}px`,\r\n },\r\n \"& ul\": {\r\n listStyleType: `decimal`,\r\n },\r\n \"& li\": {\r\n ...theme.typography.body2,\r\n },\r\n },\r\n});\r\n","import React from \"react\";\r\nimport { Route, Switch } from \"react-router-dom\";\r\nimport { Provider } from \"react-redux\";\r\nimport { ConnectedRouter } from \"connected-react-router\";\r\nimport { MuiThemeProvider } from \"@material-ui/core/styles\";\r\nimport { PersistGate } from \"redux-persist/integration/react\";\r\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\r\n\r\nimport {\r\n ACCOUNT_DETAILS_PAGE,\r\n CASE_DETAILS_PAGE,\r\n ERROR_PAGE,\r\n LANDING_PAGE,\r\n LAW_FIRM_SEARCH_PAGE,\r\n BANK_ACCOUNT_RESULT_PAGE,\r\n FAQ_PAGE,\r\n} from \"./constants/routes\";\r\n\r\nimport registerStore from \"./config/store\";\r\nimport theme from \"./config/theme\";\r\n\r\nimport CaseDetailsView from \"./components/case-details-view\";\r\nimport ErrorView from \"./components/error-view\";\r\nimport AccountDetailsView from \"./components/account-details-view\";\r\nimport LawFirmSearchView from \"./components/law-firm-search-view\";\r\nimport LandingView from \"./components/landing-view\";\r\nimport BankAccountResultView from \"./components/bank-account-result-view\";\r\nimport FAQView from \"./components/faq-view\";\r\n\r\nfunction App() {\r\n const { store, history, persistor } = registerStore();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n } />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nApp.displayName = App.name;\r\n\r\nexport default App;\r\n","import { createStore, compose } from \"redux\";\r\nimport { createBrowserHistory } from \"history\";\r\nimport { persistStore } from \"redux-persist\";\r\n\r\nimport createReducers from \"../reducers\";\r\nimport sagas from \"../sagas\";\r\nimport { createMiddleware, sagaMiddleware } from \"../middlewares\";\r\n\r\nimport fetchIntercept from \"./fetch-intercept\";\r\n\r\nexport default function register() {\r\n /* eslint-disable no-underscore-dangle */\r\n /* istanbul ignore next */\r\n const composeEnhancers = process.env.NODE_ENV === `development` && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n : compose;\r\n /* eslint-enable */\r\n\r\n const history = createBrowserHistory({\r\n basename: window.config.basePath || `/`,\r\n });\r\n\r\n const middleware = createMiddleware(history);\r\n const reducers = createReducers(history);\r\n\r\n const store = createStore(reducers, composeEnhancers(middleware));\r\n\r\n const persistor = persistStore(store);\r\n\r\n sagaMiddleware.run(sagas);\r\n\r\n fetchIntercept(store.dispatch);\r\n\r\n return { history, store, persistor };\r\n}\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read http://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport \"normalize.css\";\r\n\r\nimport \"./index.css\";\r\n\r\nimport App from \"./App\";\r\nimport * as serviceWorker from \"./serviceWorker\";\r\n\r\nconst startUp = () => {\r\n const rootElement = document.getElementById(`root`);\r\n\r\n ReactDOM.render(, rootElement);\r\n\r\n serviceWorker.unregister();\r\n};\r\n\r\nwindow\r\n .fetch(`config`)\r\n .then(response => response.json())\r\n .then((config) => {\r\n window.config = config;\r\n startUp();\r\n })\r\n .catch((error) => {\r\n /* eslint-disable no-console */\r\n console.error(error);\r\n console.error(`Could not get config from the config endpoint`);\r\n /* eslint-enable */\r\n });\r\n"],"sourceRoot":""}