{"version":3,"file":"index.js","sources":["../../../TaxRebates.WebUI/src/modals/BootstrapModal.tsx","../../../TaxRebates.WebUI/src/modals/Modals.tsx","../../../TaxRebates.WebUI/src/modals/index.ts","../../../TaxRebates.WebUI/src/apis/httpService.ts","../../../TaxRebates.WebUI/src/apis/index.ts","../../../TaxRebates.WebUI/src/composition/useLoading.tsx","../../../TaxRebates.WebUI/src/components/RadioButton.tsx","../../../TaxRebates.WebUI/src/components/Question.tsx","../../../TaxRebates.WebUI/src/components/CurrencyInput.tsx","../../../TaxRebates.WebUI/src/steps/types.ts","../../../TaxRebates.WebUI/src/steps/index.ts","../../../TaxRebates.WebUI/src/steps/issues/components/MarriageClaimLink.tsx","../../../TaxRebates.WebUI/src/steps/issues/components/UniformBenefits.tsx","../../../TaxRebates.WebUI/src/steps/issues/AlreadyClaimed.tsx","../../../TaxRebates.WebUI/src/step-handler/history.ts","../../../TaxRebates.WebUI/src/constants.ts","../../../TaxRebates.WebUI/src/types/ClaimStatus.ts","../../../TaxRebates.WebUI/src/utils/jobDates.ts","../../../TaxRebates.WebUI/src/utils/validation.tsx","../../../TaxRebates.WebUI/src/step-handler/getStep.ts","../../../TaxRebates.WebUI/src/utils/miscPageUtils.ts","../../../TaxRebates.WebUI/src/utils/scrolling.ts","../../../TaxRebates.WebUI/src/step-handler/state.ts","../../../TaxRebates.WebUI/src/step-handler/setStep.ts","../../../TaxRebates.WebUI/src/step-handler/qualifying-checks/claimedBefore.ts","../../../TaxRebates.WebUI/src/calculatorConfig.ts","../../../TaxRebates.WebUI/src/step-handler/qualifying-checks/earnings.ts","../../../TaxRebates.WebUI/src/step-handler/qualifying-checks/newTaxPayer.ts","../../../TaxRebates.WebUI/src/step-handler/qualifying-checks/nothingToClaimFor.ts","../../../TaxRebates.WebUI/src/step-handler/qualifying-checks/selfAssessed.ts","../../../TaxRebates.WebUI/src/step-handler/qualifying-checks/uniformSubscriptions.ts","../../../TaxRebates.WebUI/src/step-handler/qualifying-checks/employed.ts","../../../TaxRebates.WebUI/src/step-handler/qualifying-checks/index.ts","../../../TaxRebates.WebUI/src/step-handler/saveStep.ts","../../../TaxRebates.WebUI/src/step-handler/navigation.ts","../../../TaxRebates.WebUI/src/step-handler/browserHistoryHandler.ts","../../../TaxRebates.WebUI/src/step-handler/index.ts","../../../TaxRebates.WebUI/src/components/ButtonNavigation.tsx","../../../TaxRebates.WebUI/src/steps/issues/EmployerDetailsNeeded.tsx","../../../TaxRebates.WebUI/src/steps/issues/LackOfExpenses.tsx","../../../TaxRebates.WebUI/src/steps/issues/components/LeaveAReview.tsx","../../../TaxRebates.WebUI/src/steps/issues/NoTaxPaid.tsx","../../../TaxRebates.WebUI/src/steps/issues/NoEmploymentHistory.tsx","../../../TaxRebates.WebUI/src/steps/issues/RequireSelfAssessment.tsx","../../../TaxRebates.WebUI/src/steps/issues/UniformClaimed.tsx","../../../TaxRebates.WebUI/src/steps/issues/WaitUntilNextTaxYear.tsx","../../../TaxRebates.WebUI/src/composition/useEmailDidYouMean.tsx","../../../TaxRebates.WebUI/src/utils/postcode.ts","../../../TaxRebates.WebUI/src/composition/usePostcodeLookup.ts","../../../TaxRebates.WebUI/src/steps/standard/components/PostcodeInput.tsx","../../../TaxRebates.WebUI/src/steps/standard/components/AddressInput.tsx","../../../TaxRebates.WebUI/src/steps/standard/components/SelectTitle.tsx","../../../TaxRebates.WebUI/src/steps/mod/AboutYouStep.tsx","../../../TaxRebates.WebUI/src/components/RadioButtons.tsx","../../../TaxRebates.WebUI/src/steps/mod/BasicInformationStep.tsx","../../../TaxRebates.WebUI/src/defaults.ts","../../../TaxRebates.WebUI/src/utils/clearClaim.ts","../../../TaxRebates.WebUI/src/steps/mod/DetailsPassedStep.tsx","../../../TaxRebates.WebUI/src/composition/useNext.ts","../../../TaxRebates.WebUI/src/steps/standard/components/SplitDateInput.tsx","../../../TaxRebates.WebUI/src/steps/standard/AddressStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/CompleteStep.tsx","../../../TaxRebates.WebUI/src/utils/animate.ts","../../../TaxRebates.WebUI/src/steps/standard/components/TrustPilotDisplay.tsx","../../../TaxRebates.WebUI/src/steps/standard/EstimateStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/NameStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/NationalInsuranceStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/components/ResumeClaim.tsx","../../../TaxRebates.WebUI/src/components/SearchSelect.tsx","../../../TaxRebates.WebUI/src/steps/standard/PostcodeStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/QualifyingStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/components/TextualDateInput.tsx","../../../TaxRebates.WebUI/src/steps/standard/components/ReviewDetails.tsx","../../../TaxRebates.WebUI/src/steps/standard/ReviewStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/SelfAssessedChecksStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/components/EditSignature.tsx","../../../TaxRebates.WebUI/src/steps/standard/SignatureDetails.tsx","../../../TaxRebates.WebUI/src/steps/standard/SignatureStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/components/EditSubscription.tsx","../../../TaxRebates.WebUI/src/steps/standard/SubscriptionDetailsStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/SubscriptionPermissionStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/SubscriptionsStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/TaxYearsStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/employment/components/IndustrySelect.tsx","../../../TaxRebates.WebUI/src/steps/standard/employment/components/OccupationSelect.tsx","../../../TaxRebates.WebUI/src/steps/standard/OccupationStep.tsx","../../../TaxRebates.WebUI/src/steps/standard/PandemicWorkFromHomeStep.tsx","../../../TaxRebates.WebUI/src/steps/issues/DetailsRejected.tsx","../../../TaxRebates.WebUI/src/utils/bigramSimilarity.ts","../../../TaxRebates.WebUI/src/steps/standard/employerStepStyles.tsx","../../../TaxRebates.WebUI/src/steps/standard/EmployerStep.tsx","../../../TaxRebates.WebUI/src/steps/StepComponents.ts","../../../TaxRebates.WebUI/src/components/ClaimStep.tsx","../../../TaxRebates.WebUI/src/steps/DisplayCurrentStep.tsx","../../../TaxRebates.WebUI/src/TaxRebateVuePlugin.ts","../../../TaxRebates.WebUI/src/apps/ClaimLookup.ts","../../../TaxRebates.WebUI/src/apps/PostalUnsubscribe.ts","../../../TaxRebates.WebUI/src/apps/RefundReceivedForm.ts","../../../TaxRebates.WebUI/src/components/CloseClaimButton.tsx","../../../TaxRebates.WebUI/src/initClaim.ts","../../../TaxRebates.WebUI/src/apps/TaxClaim.tsx","../../../TaxRebates.WebUI/src/utils/globals.ts","../../../TaxRebates.WebUI/src/apps/UpdateAddress.ts","../../../TaxRebates.WebUI/src/modals/testimonialContentModal.ts","../../../TaxRebates.WebUI/src/modals/testimonialIframeModal.ts","../../../TaxRebates.WebUI/src/taxrebates.ts"],"sourcesContent":["import { onMounted, ref } from \"vue\"\r\nimport { defineComponent, inferProps, type ReactiveComponent } from \"vue-utils\"\r\nimport type { ModalData } from \"./types\"\r\n\r\nconst BootstrapModal: ReactiveComponent = (props) => {\r\n\tconst modalRef = ref()\r\n\r\n\tonMounted(open)\r\n\r\n\tfunction open() {\r\n\t\tconst el = modalRef.value\r\n\t\tif (el) {\r\n\t\t\t$(el).modal(\"show\")\r\n\t\t\t$(el).on(\"hidden.bs.modal\", () => props.onClosed?.())\r\n\t\t}\r\n\t}\r\n\tfunction close() {\r\n\t\tconst el = modalRef.value\r\n\t\tif (el) {\r\n\t\t\t$(el).modal(\"hide\")\r\n\t\t}\r\n\t}\r\n\r\n\tfunction renderTitle() {\r\n\t\tif (typeof props.title === \"string\") {\r\n\t\t\treturn props.title\r\n\t\t}\r\n\t\treturn \r\n\t}\r\n\r\n\tfunction renderContent() {\r\n\t\tif (typeof props.content === \"string\") {\r\n\t\t\treturn props.content\r\n\t\t}\r\n\t\treturn \r\n\t}\r\n\r\n\tfunction renderFooter() {\r\n\t\tif (!props.footer) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t)\r\n\t\t}\r\n\t\tif (typeof props.footer === \"string\") {\r\n\t\t\treturn props.footer\r\n\t\t}\r\n\t\treturn \r\n\t}\r\n\r\n\treturn () => (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
{renderTitle()}
\r\n\t\t\t\t\t\t{props.closeButton !== false && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
{renderContent()}
\r\n\t\t\t\t\t
{renderFooter()}
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default defineComponent(BootstrapModal, inferProps())\r\n","import { shallowRef } from \"vue\"\r\nimport { ConfirmResult, defineComponent } from \"vue-utils\"\r\nimport BootstrapModal from \"./BootstrapModal\"\r\nimport type { AlertModalData, ConfirmModalData, ModalData } from \"./types\"\r\n\r\nconst modals = shallowRef([])\r\n\r\nexport function openModal(modal: ModalData) {\r\n\tmodals.value = [...modals.value, modal]\r\n}\r\n\r\nexport function showClosableConfirmModal(modal: ConfirmModalData): Promise {\r\n\tlet result = ConfirmResult.Closed\r\n\r\n\treturn new Promise((resolve) => {\r\n\t\topenModal({\r\n\t\t\tcloseOnBackgroundClick: false,\r\n\t\t\tcloseButton: false,\r\n\t\t\t...modal,\r\n\t\t\tonClosed() {\r\n\t\t\t\tresolve(result)\r\n\t\t\t\tmodal.onClosed?.()\r\n\t\t\t},\r\n\t\t\tfooter: ({ close }) => (\r\n\t\t\t\t<>\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tresult = ConfirmResult.Cancel\r\n\t\t\t\t\t\t\tclose()\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{modal.cancelText ?? \"Cancel\"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tresult = ConfirmResult.Confirm\r\n\t\t\t\t\t\t\tclose()\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{modal.confirmText ?? \"Confirm\"}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t),\r\n\t\t})\r\n\t})\r\n}\r\n\r\nexport async function showConfirmModal(modal: ConfirmModalData): Promise {\r\n\tconst result = await showClosableConfirmModal({\r\n\t\tcloseOnBackgroundClick: false,\r\n\t\tcloseButton: false,\r\n\t\t...modal,\r\n\t})\r\n\treturn result === ConfirmResult.Confirm\r\n}\r\n\r\nexport function showAlertModal(modal: AlertModalData): Promise {\r\n\treturn new Promise((resolve) => {\r\n\t\topenModal({\r\n\t\t\t...modal,\r\n\t\t\tonClosed() {\r\n\t\t\t\tresolve()\r\n\t\t\t\tmodal.onClosed?.()\r\n\t\t\t},\r\n\t\t\tfooter: ({ close }) => (\r\n\t\t\t\t\r\n\t\t\t),\r\n\t\t})\r\n\t})\r\n}\r\n\r\nexport function showModalMessage(title: string, message: string) {\r\n\treturn showAlertModal({\r\n\t\ttitle,\r\n\t\tcontent: message,\r\n\t})\r\n}\r\n\r\nexport const ModalsWrapper = defineComponent({\r\n\tname: \"ModalsWrapper\",\r\n\tsetup() {\r\n\t\t// eslint-disable-next-line react/jsx-key\r\n\t\treturn () => modals.value.map((modal) => )\r\n\t},\r\n})\r\n","import { defineGlobals } from \"vue-utils\"\r\nimport { showModalMessage } from \"./Modals\"\r\n\r\nexport * from \"./types\"\r\nexport * from \"./Modals\"\r\n\r\ndefineGlobals({\r\n\tshowModalMessage,\r\n})\r\n","import type { ApiTypeOf } from \"@/types\"\r\nimport { defineGlobals, LoadingError } from \"vue-utils\"\r\n\r\nexport enum RequestMethod {\r\n\tGET = \"GET\",\r\n\tPOST = \"POST\",\r\n\tDELETE = \"DELETE\",\r\n\tPUT = \"PUT\",\r\n}\r\n\r\nexport class HttpLoadingError extends LoadingError {\r\n\treadonly statusCode: number\r\n\treadonly statusText: string\r\n\r\n\tconstructor(response: Response, message: string) {\r\n\t\tsuper(response.statusText, message)\r\n\r\n\t\tthis.statusCode = response.status\r\n\t\tthis.statusText = response.statusText\r\n\t}\r\n}\r\n\r\nexport const httpRequest = async (url: string, method: RequestMethod, requestOptions?: RequestInit) => {\r\n\tconst result = await fetch(api + (url.startsWith(\"/\") ? url : `/${url}`), {\r\n\t\tmethod,\r\n\t\t...(requestOptions ?? {}),\r\n\t\theaders: {\r\n\t\t\tAuthorization: `bearer ${key}`,\r\n\t\t\t...(requestOptions?.headers ?? {}),\r\n\t\t},\r\n\t})\r\n\r\n\tif (result.status === 400) {\r\n\t\tconst err = await tryReadJsonMessage(result)\r\n\t\tthrow new HttpLoadingError(result, err ?? \"There was an issue with the data you submitted\")\r\n\t}\r\n\tif (result.status >= 400 && result.status < 600) {\r\n\t\tconst err = await tryReadJsonMessage(result)\r\n\t\tthrow new HttpLoadingError(result, err ?? \"An unexpected error occurred on our back end systems\")\r\n\t}\r\n\r\n\treturn result\r\n}\r\n\r\nconst tryReadJsonMessage = async (result: Response): Promise => {\r\n\ttry {\r\n\t\tconst json = (await result.json()) as { ExceptionMessage?: string }\r\n\t\treturn json.ExceptionMessage ?? null\r\n\t} catch (e) {\r\n\t\treturn null\r\n\t}\r\n}\r\n\r\nexport const httpRequestJsonResponse = async (url: string, method: RequestMethod, requestOptions?: RequestInit): Promise> => {\r\n\tconst result = await httpRequest(url, method, requestOptions)\r\n\treturn (await result.json()) as ApiTypeOf\r\n}\r\n\r\nexport const httpJsonRequest = async (url: string, content: unknown, method: RequestMethod): Promise =>\r\n\tawait httpRequest(url, method, {\r\n\t\tbody: JSON.stringify(content),\r\n\t\theaders: {\r\n\t\t\t\"content-type\": \"application/json\",\r\n\t\t},\r\n\t})\r\n\r\nexport const httpJsonRequestJsonResponse = async (url: string, content: unknown, method: RequestMethod): Promise> => {\r\n\tconst result = await httpJsonRequest(url, content, method)\r\n\treturn (await result.json()) as ApiTypeOf\r\n}\r\n\r\ndefineGlobals({\r\n\tRequestMethod,\r\n\thttpRequest,\r\n\thttpJsonRequest,\r\n\thttpRequestJsonResponse,\r\n\thttpJsonRequestJsonResponse,\r\n})\r\n","import type {\r\n\tAddressResult,\r\n\tClaimCustomer,\r\n\tCustomerIOEvent,\r\n\tEmployerReference,\r\n\tEnumEntry,\r\n\tGuid,\r\n\tId,\r\n\tMODClaim,\r\n\tOccupationSearch,\r\n\tOccupationSerializable,\r\n\tTaxYearViewModel,\r\n\tSectorRecord,\r\n} from \"@/types\"\r\nimport { defineGlobals } from \"vue-utils\"\r\nimport { httpJsonRequest, httpJsonRequestJsonResponse, httpRequest, httpRequestJsonResponse, RequestMethod } from \"./httpService\"\r\n\r\nexport async function getIndustrySectors(brandTypeId: Id): Promise {\r\n\treturn await httpRequestJsonResponse(`/api/ui/industries/${brandTypeId}`, RequestMethod.GET)\r\n}\r\n\r\nexport async function getOccupations(industryId: Id): Promise {\r\n\treturn await httpRequestJsonResponse(`/api/ui/occupations/${industryId}`, RequestMethod.GET)\r\n}\r\n\r\nexport async function getOccupationsAll(): Promise {\r\n\treturn await httpRequestJsonResponse(\"/api/ui/occupations-all\", RequestMethod.GET)\r\n}\r\n\r\nexport async function getOccupationsFiltered(industryId: Id): Promise {\r\n\treturn await httpRequestJsonResponse(`/api/ui/occupations/${industryId}/filtered`, RequestMethod.GET)\r\n}\r\n\r\nexport async function getIndustrySectorsFiltered(brandTypeId: Id): Promise {\r\n\treturn await httpRequestJsonResponse(`/api/ui/industries/${brandTypeId}/filtered`, RequestMethod.GET)\r\n}\r\n\r\nexport async function addressLookup(postcode: string): Promise {\r\n\treturn await httpRequestJsonResponse(`/api/ui/addresslookup/${postcode}`, RequestMethod.GET)\r\n}\r\n\r\nexport async function getAddress(addressId: string): Promise {\r\n\treturn await httpRequestJsonResponse(`/api/ui/getaddress/${addressId}`, RequestMethod.GET)\r\n}\r\n\r\ndefineGlobals({ addressLookup, getAddress })\r\n\r\nexport async function getTaxYears(): Promise {\r\n\treturn await httpRequestJsonResponse(\"/api/ui/taxyears\", RequestMethod.GET)\r\n}\r\n\r\nexport async function getDetailedTaxYears(): Promise {\r\n\treturn await httpRequestJsonResponse(\"/api/ui/taxyears/full\", RequestMethod.GET)\r\n}\r\n\r\nexport async function getEmployerReferences(search: string, count = 100): Promise {\r\n\treturn await httpRequestJsonResponse(`/api/ui/employers/search/?search=${encodeURIComponent(search)}&count=${count}`, RequestMethod.GET)\r\n}\r\n\r\nexport async function saveClaimToServer(claim: ClaimCustomer): Promise {\r\n\tconst result = await httpJsonRequestJsonResponse(\"/api/ui/customerclaim/insert\", claim, RequestMethod.POST)\r\n\tlocalStorage.setItem(\"CustomerClaim\", JSON.stringify(result))\r\n\treturn result\r\n}\r\n\r\nexport async function saveMODClaimtoServer(claim: MODClaim): Promise {\r\n\tawait httpJsonRequest(\"/api/ui/modclaim/insert\", claim, RequestMethod.POST)\r\n}\r\n\r\nexport async function generateDownloadKey(userId: string): Promise {\r\n\tawait httpRequest(`/api/ui/customerclaim/${userId}/createdownloadkey`, RequestMethod.POST)\r\n}\r\n\r\nexport async function cancelClaim(userId: Guid, claimId: Id): Promise {\r\n\treturn await httpRequestJsonResponse(`/api/ui/customerclaim/${userId}/cancel/${claimId}`, RequestMethod.POST)\r\n}\r\n\r\nexport async function occupationSearch(search: string): Promise {\r\n\treturn await httpJsonRequestJsonResponse(\"/api/ui/occupationsearch\", search, RequestMethod.POST)\r\n}\r\n\r\nexport async function getCompanyPAYEData(): Promise {\r\n\treturn await httpRequestJsonResponse(\"/api/companies-paye/sectors\", RequestMethod.GET)\r\n}\r\n\r\nexport async function insertQualifyingCheck(question: string, answer: string, allowed: boolean, claimId: Id, code: string): Promise {\r\n\treturn await httpJsonRequestJsonResponse(\r\n\t\t\"/api/ui/qualifyingcheck/insert\",\r\n\t\t{\r\n\t\t\tQuestionText: question,\r\n\t\t\tAnswer: answer,\r\n\t\t\tAllowed: allowed,\r\n\t\t\tClaimId: claimId,\r\n\t\t\tCheckCode: code,\r\n\t\t},\r\n\t\tRequestMethod.POST\r\n\t)\r\n}\r\n\r\nexport async function logCustomerIOEvent(claimId: Id, data: CustomerIOEvent): Promise {\r\n\tawait httpJsonRequest(`/api/ui/customerclaim/${claimId}/cioevent/log`, data, RequestMethod.POST)\r\n}\r\n\r\nexport async function checkEmailDidYouMean(claimId: Id, email: string): Promise {\r\n\treturn await httpJsonRequestJsonResponse(`/api/ui/check-email/${claimId}`, email, RequestMethod.POST)\r\n}\r\n","import { showModalMessage } from \"@/modals\"\r\nimport { createLoadingHook, LoadingError, watchDebounce } from \"vue-utils\"\r\n\r\nconst { LoadingWrapper, useLoading, loading } = createLoadingHook({\r\n\tloadingComponent: () => null,\r\n\tshowError: showModalMessage,\r\n\tcoolInTimeMs: 100,\r\n\tdefaultError: \"Sorry, we could not contact the server. Please try again.\",\r\n})\r\n\r\nwatchDebounce(\r\n\tloading,\r\n\t() => {\r\n\t\tif (loading.value) {\r\n\t\t\t$(\"#waiting\").fadeIn()\r\n\t\t} else {\r\n\t\t\t$(\"#waiting\").fadeOut()\r\n\t\t}\r\n\t},\r\n\t125\r\n)\r\n\r\nexport { LoadingWrapper, useLoading, LoadingError }\r\n","import type { InputHTMLAttributes } from \"vue\"\r\nimport { defineComponent, inferProps, renderSlot, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\tenabledValue: boolean\r\n\tvalue: boolean | null | undefined\r\n\tsetValue(newValue: boolean): void\r\n}\r\n\r\nconst RadioButton: ReactiveComponent = (props, { attrs, slots }) => {\r\n\treturn () => (\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(RadioButton, inferProps())\r\n","import { renderSlot } from \"vue\"\r\nimport { defineComponent, inferProps, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\tquestion: string\r\n}\r\n\r\nconst Question: ReactiveComponent = (props, { slots }) => {\r\n\treturn () => (\r\n\t\t
\r\n\t\t\t

{props.question}

\r\n\t\t\t{renderSlot(slots, \"default\")}\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default defineComponent(Question, inferProps())\r\n","import { ref, type InputHTMLAttributes } from \"vue\"\r\nimport { defineComponent, inferProps, useOnInputNumber, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\tvalue: number\r\n\tsetValue(value: number): void\r\n\tformat?: Intl.NumberFormat\r\n}\r\n\r\nconst gbpFormat = new Intl.NumberFormat(\"en-GB\", { style: \"currency\", currency: \"GBP\" })\r\n\r\nconst CurrencyInput: ReactiveComponent = (props, { attrs }) => {\r\n\tconst inputRef = ref()\r\n\tconst isFocus = ref(false)\r\n\tfunction handleInput(amount: number) {\r\n\t\tprops.setValue(amount)\r\n\t\tinputRef.value?.blur()\r\n\t}\r\n\tfunction getValue() {\r\n\t\tif (isFocus.value) {\r\n\t\t\treturn props.value\r\n\t\t}\r\n\t\treturn (props.format ?? gbpFormat).format(props.value)\r\n\t}\r\n\r\n\treturn () => (\r\n\t\t (isFocus.value = false)}\r\n\t\t\tonFocus={() => (isFocus.value = true)}\r\n\t\t\tmin={0}\r\n\t\t\tstep={0.01}\r\n\t\t\t{...attrs}\r\n\t\t/>\r\n\t)\r\n}\r\n\r\nexport default defineComponent(CurrencyInput, inferProps())\r\n","import type { ClaimCustomer } from \"@/types\"\r\n\r\nexport enum ClaimType {\r\n\tStandard = \"standard\",\r\n\tMoD = \"mod\",\r\n\tMarriage = \"marriage\",\r\n}\r\n\r\nexport interface ClaimStepData {\r\n\tstep: number\r\n\tname: string\r\n\ttype: ClaimType\r\n\tisIssue: boolean\r\n\tgetNextStep?: () => ClaimStepData | null | \"auto\"\r\n\tgetPreviousStep?: () => ClaimStepData | null | \"auto\"\r\n\tshouldSkipStep?: (claim: ClaimCustomer) => boolean\r\n}\r\n","import { defineGlobals } from \"vue-utils\"\r\nimport { ClaimType, type ClaimStepData } from \"./types\"\r\n\r\nexport * from \"./types\"\r\n\r\nconst step = (step: number, name: string, type: ClaimType = ClaimType.Standard, extra: Partial = {}): ClaimStepData => ({\r\n\tstep,\r\n\tname,\r\n\ttype,\r\n\tisIssue: false,\r\n\t...extra,\r\n})\r\n\r\nconst issueStep = (step: number, name: string, type: ClaimType = ClaimType.Standard, extra: Partial = {}): ClaimStepData => ({\r\n\tstep,\r\n\tname,\r\n\ttype,\r\n\tisIssue: true,\r\n\tgetPreviousStep: () => null,\r\n\tgetNextStep: () => null,\r\n\tshouldSkipStep: () => true,\r\n\t...extra,\r\n})\r\n\r\nconst Postcode = step(1, \"postcode\")\r\nconst Name = step(2, \"name\")\r\nconst TaxYears = step(3, \"tax-years\")\r\nconst Qualifying = step(4, \"qualifying\")\r\nconst Address = step(5, \"address\")\r\nconst SelfAssessedChecks = step(6, \"self-assessed-checks\", ClaimType.Standard, {\r\n\tshouldSkipStep: (claim) => claim.selfAssessed === true || claim.selfAssessed === false,\r\n})\r\nconst Estimate = step(7, \"estimate\")\r\nconst WorkFromHome = step(8, \"work-from-home\")\r\nconst Employer = step(9, \"employer\")\r\nconst Occupation = step(10, \"occupation\")\r\nconst Subscriptions = step(11, \"subscriptions\", ClaimType.Standard, {\r\n\tshouldSkipStep: (claim) => claim.Subscriptions.length === 0,\r\n})\r\nconst SubscriptionPermission = step(12, \"subscription-permission\", ClaimType.Standard, {\r\n\tshouldSkipStep: (claim) => claim.Subscriptions.length === 0,\r\n})\r\n//currently set to skip this step since the subs data should already be populated by the OccupationSubscriptionYears data lookup (server side) and no need to show values to client.\r\nconst SubscriptionDetails = step(13, \"subscription-details\", ClaimType.Standard, {\r\n\tshouldSkipStep: () => true,\r\n})\r\nconst NationalInsurance = step(14, \"NI\")\r\nconst ReviewClaim = step(15, \"review\")\r\nconst Signature = step(16, \"signature\", ClaimType.Standard, {})\r\nconst ClaimComplete = step(17, \"complete\")\r\n\r\nconst BasicInformation = step(3, \"basic-information\", ClaimType.MoD, {\r\n\tgetPreviousStep: () => Employer,\r\n})\r\nconst AboutYou = step(4, \"about-you\", ClaimType.MoD)\r\nconst DetailsPassed = step(5, \"details-passed\", ClaimType.MoD)\r\n\r\nconst NoTaxPaid = issueStep(99, \"no-tax\", ClaimType.Standard, {\r\n\tgetPreviousStep: () => TaxYears,\r\n})\r\n\r\nconst AlreadyClaimed = issueStep(100, \"already-claimed\")\r\nconst RequireSelfAssessment = issueStep(101, \"require-sa\", ClaimType.Standard, {\r\n\tgetPreviousStep: () => Address,\r\n})\r\nconst NoEmploymentHistory = issueStep(103, \"no-employment-history\")\r\nconst LackOfExpenses = issueStep(104, \"lack-expenses\")\r\nconst UniformClaimed = issueStep(106, \"uniform-claimed\", ClaimType.Standard, {\r\n\tgetPreviousStep: () => Qualifying,\r\n})\r\nconst EmployerDetailsNeeded = issueStep(107, \"employer-details-needed\", ClaimType.Standard, {\r\n\tgetPreviousStep: () => Employer,\r\n})\r\nconst WaitUntilNextTaxYear = issueStep(108, \"wait-until-next-tax-year\")\r\nconst DetailsRejected = issueStep(109, \"cancelled-details-rejected\")\r\n\r\nexport const ClaimSteps = {\r\n\tPostcode,\r\n\tName,\r\n\tTaxYears,\r\n\tQualifying,\r\n\tAddress,\r\n\tSelfAssessedChecks,\r\n\tEstimate,\r\n\tWorkFromHome,\r\n\tEmployer,\r\n\tOccupation,\r\n\tSubscriptions,\r\n\tSubscriptionDetails,\r\n\tSubscriptionPermission,\r\n\tNationalInsurance,\r\n\tReviewClaim,\r\n\tSignature,\r\n\tClaimComplete,\r\n\r\n\tBasicInformation,\r\n\tAboutYou,\r\n\tDetailsPassed,\r\n\r\n\tNoTaxPaid,\r\n\tAlreadyClaimed,\r\n\tRequireSelfAssessment,\r\n\tNoEmploymentHistory,\r\n\tLackOfExpenses,\r\n\tUniformClaimed,\r\n\tEmployerDetailsNeeded,\r\n\tWaitUntilNextTaxYear,\r\n\tDetailsRejected,\r\n\r\n\tInitialStep: Postcode,\r\n\tFinalStep: ClaimComplete,\r\n\tFinalMoDStep: DetailsPassed,\r\n} as const\r\n\r\ndefineGlobals({\r\n\tClaimSteps,\r\n})\r\n\r\nexport default ClaimSteps\r\n","import { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst MarriageClaimLink: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t

\r\n\t\t\t\t\r\n\t\t\t\t\t Click here if you are married >\r\n\t\t\t\t\r\n\t\t\t

\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(MarriageClaimLink)\r\n","import { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst UniformBenefits: ReactiveComponent = () => {\r\n\treturn () => <>\r\n}\r\n\r\nexport default defineComponent(UniformBenefits)\r\n","import { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport MarriageClaimLink from \"./components/MarriageClaimLink\"\r\nimport UniformBenefits from \"./components/UniformBenefits\"\r\n\r\nconst AlreadyClaimed: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

Your Claim

\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t

\r\n\t\t\t\t\tI'm sorry this is a one off process. When you claim the first time any relief is added to your tax code which means you continue to\r\n\t\t\t\t\tbenefit from it as long as you continue your job.\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tBecause you have stated that you have previously made a claim before through us, with HMRC directly or with another company we cannot\r\n\t\t\t\t\tcontinue with your new claim.\r\n\t\t\t\t

\r\n\t\t\t\t{(App.CustomerClaim.Married ?? true) && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

You could still qualify for a Marriage Tax Rebate however. Find out by click the link below if you're married.

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(AlreadyClaimed)\r\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\r\n\r\nexport type ClaimHistoryType = \"back\" | \"current\" | \"forward\"\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport function getHistoryState(state: any): ClaimHistoryType | null {\r\n\tif (!state) {\r\n\t\treturn null\r\n\t}\r\n\tif (!(\"claimHistoryType\" in state && \"step\")) {\r\n\t\treturn null\r\n\t}\r\n\r\n\tif (state.claimHistoryType !== \"back\" && state.claimHistoryType !== \"forward\" && state.claimHistoryType !== \"current\") {\r\n\t\treturn null\r\n\t}\r\n\treturn state.claimHistoryType as ClaimHistoryType\r\n}\r\n\r\nexport function createHistoryState(type: \"back\" | \"forward\" | \"current\") {\r\n\treturn {\r\n\t\tclaimHistoryType: type,\r\n\t}\r\n}\r\n\r\nexport function awaitNavPop() {\r\n\treturn new Promise((resolve) => {\r\n\t\tfunction onPopState(e: PopStateEvent) {\r\n\t\t\twindow.removeEventListener(\"popstate\", onPopState)\r\n\t\t\tresolve(e)\r\n\t\t}\r\n\t\twindow.addEventListener(\"popstate\", onPopState)\r\n\t\thistory.back()\r\n\t})\r\n}\r\n","export const earningsMonthlyThreshold = 1000\r\nexport const teacherIndustryIds = [205, 206, 201]\r\nexport const moreDetailIndustryIds = [103, 207]\r\nexport const pandemicYearIds = [18, 19]\r\nexport const modIndustryId = 203\r\n\r\n/**\r\n * Total number of years someone can select for their job start date before the option changes to \"Before xxxx\"\r\n */\r\nexport const selectableEmploymentYears = 5\r\n\r\nexport const ErrorsSteps = {\r\n\tClaimedBefore: 100,\r\n\tSelfAssessed: 101,\r\n\tEarningTooLow: 102,\r\n\tNotPaidTaxLongEnough: 103,\r\n\tNothingToClaimFor: 104,\r\n\tWorkPartTime: 105,\r\n\tUniformClaimed: 106,\r\n}\r\nexport const modEmployers = [\r\n\t\"hm forces\",\r\n\t\"h m forces\",\r\n\t\"army\",\r\n\t\"h.m forces\",\r\n\t\"hm forces (army)\",\r\n\t\"hm forces (army) \",\r\n\t\"mod\",\r\n\t\"royal air force\",\r\n\t\"british army\",\r\n\t\"royal navy\",\r\n\t\"armed forces\",\r\n\t\"army \",\r\n\t\"soldier\",\r\n\t\"hm forces - brittish army\",\r\n\t\"armed forces \",\r\n\t\"hm forces - army\",\r\n\t\"h.m forces (army)\",\r\n\t\"hm forces army\",\r\n\t\"british army (hm forces)\",\r\n\t\"ministry of defence\",\r\n\t\"h&m armed forces\",\r\n\t\"mod (army)\",\r\n\t\"hm forces \",\r\n\t\"mod army\",\r\n\t\"british armed forces\",\r\n\t\"army hmf\",\r\n\t\"royal air force \",\r\n\t\"h.m.forces\",\r\n\t\"hmforce\",\r\n\t\"hm forces (a)\",\r\n\t\"brithish army\",\r\n\t\"british army, military of defence\",\r\n\t\"army hm government\",\r\n\t\"m.o.d\",\r\n\t\"royal maines\",\r\n\t\"4 rifles, army\",\r\n\t\"hm armed forces\",\r\n\t\"hm royal navy\",\r\n\t\"hm forces (raf)\",\r\n\t\"army force\",\r\n\t\"salvation army\",\r\n\t\"british army/nhs\",\r\n\t\"army, 3 para, hm forces\",\r\n\t\"hm force\",\r\n\t\"brirish army\",\r\n\t\"mod royal navy\",\r\n\t\"british army forces\",\r\n\t\"armed force\",\r\n\t\"hm forcesc\",\r\n\t\"hm forces(army)\",\r\n\t\"mistry of defence\",\r\n\t\"hm frorce\",\r\n\t\"h.m forces \",\r\n\t\"hm forces, babock flagship\",\r\n\t\"armed forces (army)\",\r\n\t\"royal marines.\",\r\n\t\"mod army \",\r\n\t\"uk armed forces\",\r\n\t\"military\",\r\n\t\"royal navy \",\r\n\t\"royal navy - armed forces\",\r\n\t\"hm armed forces \",\r\n\t\"1rgr, shornecliffe folkestone\",\r\n\t\"british army mod\",\r\n\t\"hmforces\",\r\n\t\"h.m armed forces\",\r\n\t\"hm force (army) \",\r\n\t\"hm armforce\",\r\n\t\"arm forces\",\r\n\t\"m o d\",\r\n\t\"british army \",\r\n\t\"h m force\",\r\n\t\"mod \",\r\n\t\"hm froces \",\r\n\t\"hm fources \",\r\n\t\"hm force \",\r\n\t\"south east reserve forces and cadets association\",\r\n\t\"royal marines\",\r\n\t\"h.m. forces\",\r\n\t\"h m forces \",\r\n\t\"british army (reserves)\",\r\n\t\"british forces united kingdom\",\r\n\t\"mod, army\",\r\n\t\"1 rgr\",\r\n\t\"h m forces army\",\r\n\t\"hm forces british army\",\r\n\t\"mod uk\",\r\n\t\"hmg forces\",\r\n\t\"brtish army\",\r\n\t\"hf forces\",\r\n\t\"british forces army\",\r\n\t\"hm forces, army\",\r\n\t\"hm forces military\",\r\n\t\"hmf\",\r\n\t\"h m force \",\r\n\t\"united kingdom\",\r\n\t\"1rgr\",\r\n\t\"hms force (army)\",\r\n\t\"iss fs defence\",\r\n\t\"hm ministry of defence\",\r\n\t\"hmg\",\r\n\t\"hgm \",\r\n\t\"british army forces \",\r\n\t\"mod army( mpgs)\",\r\n\t\"hm forcre\",\r\n\t\"hm arm force\",\r\n\t\"hm arm forces\",\r\n\t\"hm forces,\",\r\n\t\"mod brigade of gurkhas\",\r\n\t\"hm forces mod\",\r\n\t\"hm forces-army\",\r\n\t\"mod ,army\",\r\n\t\"mod- army\",\r\n\t\"britsih army\",\r\n\t\"hm forces -army\",\r\n\t\"hm forces- army\",\r\n\t\"h,m forses\",\r\n\t\"army (mod)\",\r\n\t\"m.o.d.\",\r\n\t\"goverment service\",\r\n\t\"hm fources\",\r\n\t\"the royal navy\",\r\n\t\"mod/army\",\r\n\t\"her majesty government\",\r\n\t\"army welfare service\",\r\n\t\"royal navy(mod)\",\r\n\t\"maj bridges ra\",\r\n\t\"mh forces\",\r\n\t\"1st royal gurkha rifles\",\r\n\t\"hm's forces (army)\",\r\n\t\"mod british army\",\r\n\t\"h. m. forces\",\r\n\t\"hmf forces\",\r\n\t\"hm forces army \",\r\n\t\"1 rrf\",\r\n\t\"hm foces \",\r\n\t\"royal navy (hm forces)\",\r\n\t\"britsh army\",\r\n\t\"hms, \",\r\n\t\"hms\",\r\n\t\"hms forces\",\r\n\t\"army cadet force\",\r\n\t\"hm forces (queen's gurkha signal)\",\r\n\t\"hm forces uk\",\r\n\t\"fm forces\",\r\n\t\"mod-army\",\r\n\t\"hm armed forces (army)\",\r\n\t\"m.o.d(10 qoglr)\",\r\n\t\"armed forces, army\",\r\n\t\"mod(army)\",\r\n\t\"hmf army\",\r\n\t\"mod/ (qoglr)\",\r\n\t\"`hm forces\",\r\n\t\"army mod\",\r\n\t\"mod police\",\r\n\t\"mod(n)\",\r\n\t\"hm. forces\",\r\n\t\"mdpga, hm force\",\r\n\t\"hm forces - army other ranks\",\r\n\t\"hm forces \",\r\n\t\"hm armed forces 2 signal regiment\",\r\n\t\"miinistry of defence\",\r\n\t\"army-mod\",\r\n\t\"armed forces uk\",\r\n\t\"hm forcess\",\r\n\t\"hm forces / army\",\r\n\t\"m.o.d (army)\",\r\n\t\"hm forses\",\r\n\t\"mod - army\",\r\n\t\"hm forcese\",\r\n\t\"h m forces (army)\",\r\n\t\"brittish army\",\r\n\t\"hm forces (mod)\",\r\n\t\"army hm forces\",\r\n\t\"h mforces\",\r\n\t\"h m forces, \",\r\n\t\"mod royal air force\",\r\n\t\"dfrmo (mod)\",\r\n\t\"mod (royal navy)\",\r\n\t\"hm forces navy and army\",\r\n\t\"army forces\",\r\n\t\"royal airforce\",\r\n\t\"m.o.d fire service\",\r\n\t\"ministry of defence police\",\r\n\t\"britishe army\",\r\n\t\"hm force (mod)\",\r\n\t\"h.m. force\",\r\n\t\"hm forse\",\r\n\t\"hm forces-uk\",\r\n\t\"10 regt (qoglr)\",\r\n\t\"forces\",\r\n\t\"royal navy/ nhs\",\r\n]\r\n","export enum ClaimStatus {\r\n\tEstimateGiven = 1,\r\n\tAbandonedBeforePayment = 3,\r\n\tNotProvidedPAYEOrSARPermission = 4,\r\n\tNotCompletedEmployerDetails = 5,\r\n\tSubmitNextTaxYear = 6,\r\n\tReverseSpouseClaimIncomplete = 7,\r\n\tSpouseClaimIncomplete = 8,\r\n\tSpouseClaimLegacy = 9,\r\n\tCompletePaymentSuccessful = 10,\r\n\tCompleteFullRecord = 11,\r\n\tCompleteSpouseClaim = 12,\r\n\tCompleteReverseSpouseClaim = 13,\r\n\tPaymentFailed = 20,\r\n\tImportedFromLegacy = 30,\r\n\tSentTo3rdParty = 40,\r\n\tCancelledByCustomer = 50,\r\n\tCancelledWorksPartTime = 53,\r\n\tCancelledNothingToClaimFor = 54,\r\n\tCancelledClaimedBefore = 55,\r\n\tCancelledSelfAssessed = 56,\r\n\tCancelledNoTaxPaid = 57,\r\n\tCancelledEarningsTooLow = 58,\r\n\tCancelledNoEmploymentHistory = 59,\r\n\tCancelledDuplicateClaim = 60,\r\n\tCancelledDetailsRejected = 61,\r\n\tSpouseClaimNotValid = 70,\r\n}\r\n","import type { Employer, EmploymentRecordDate, Nullable } from \"@/types\"\r\n\r\nexport function compareEmploymentDates(d1: EmploymentRecordDate, d2: EmploymentRecordDate): number {\r\n\tif (d1 === d2) return 0\r\n\tif (d1.Year < d2.Year || (d1.Year === d2.Year && d1.Month < d2.Month)) return -1\r\n\tif (d2.Year < d1.Year || (d2.Year === d1.Year && d2.Month < d1.Month)) return 1\r\n\treturn 0\r\n}\r\n\r\nexport function getLatestJob(records: Employer[]): Nullable {\r\n\tif (records.length === 0) {\r\n\t\treturn null\r\n\t}\r\n\r\n\tconst sortedJobs = [...records].sort((r1, r2) => {\r\n\t\treturn (r1.YearCommenced ?? 0) < (r2.YearCommenced ?? 0) ? -1 : 1\r\n\t})\r\n\r\n\treturn sortedJobs[0]\r\n}\r\n\r\nexport function calculateTotalYearsEmployed(records: Employer[]): number {\r\n\tconst current = new Date().getFullYear()\r\n\treturn current - Math.min(...records.map((x) => x.YearCommenced ?? current))\r\n}\r\n","import { showAlertModal } from \"@/modals\"\r\nimport type { Nullable } from \"@/types\"\r\nimport moment from \"moment\"\r\nimport { delay, ValidationHandler } from \"vue-utils\"\r\n\r\n/*VALIDATION FUNCTIONS*/\r\nexport async function checkFields(validationHandler: ValidationHandler): Promise {\r\n\tconst result = await validationHandler.validateForm()\r\n\tif (result.successful) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tconst errorMessages = result.errorMessages ?? []\r\n\tif (errorMessages.length > 0) {\r\n\t\tawait showAlertModal({\r\n\t\t\ttitle: \"Missing information\",\r\n\t\t\tcontent: () => (\r\n\t\t\t\t
    \r\n\t\t\t\t\t{errorMessages.map((msg, i) => (\r\n\t\t\t\t\t\t
  • {msg}
  • \r\n\t\t\t\t\t))}\r\n\t\t\t\t
\r\n\t\t\t),\r\n\t\t})\r\n\t\tawait delay(250)\r\n\t\treturn false\r\n\t}\r\n\r\n\treturn false\r\n}\r\n\r\nexport function decodeHTML(html: string) {\r\n\tconst txt = document.createElement(\"textarea\")\r\n\ttxt.innerHTML = html\r\n\treturn txt.value\r\n}\r\n\r\nexport function validateEmail(email: string) {\r\n\tconst re =\r\n\t\t/^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\r\n\treturn re.test(email)\r\n}\r\n\r\nexport function validateInternationalMobile(inp: string) {\r\n\tconst re = /([+0])(\\d{1,4})(\\s?(\\d{1,4}))?(\\s?\\(?\\d{1,4}\\)?\\s?)?(\\d{1,4}(\\s?\\d{1,4}){1,2}\\s?){1,2}(\\d{3}\\s?\\d{3})/\r\n\treturn re.test(inp)\r\n}\r\n\r\nexport function validateUKMobile(inp: string) {\r\n\tconst re = /((\\+44(\\s\\(0\\)\\s|\\s0\\s|\\s)?)|0)7\\d{3}(\\s)?\\d{6}/\r\n\treturn re.test(inp)\r\n}\r\n\r\nexport function validateNI(NI: string) {\r\n\tconst re = /^[A-CEGHJ-PR-TW-Z]{1}[A-CEGHJ-NPR-TW-Z]{1}[0-9]{6}[A-DFM]{0,1}$/\r\n\treturn re.test(NI)\r\n}\r\n\r\nexport function isValidDate(str: Nullable): { valid: boolean; tidiedDate: string } {\r\n\t//return valid for empty string as null is acceptable...\r\n\tif (!str || str.length === 0) return { valid: true, tidiedDate: \"\" }\r\n\r\n\t//fix 2 digit years\r\n\tconst a = str.split(\"/\")\r\n\tlet y = a[a.length - 1]\r\n\tif (testMode) console.log(y)\r\n\tif (y.length === 2) {\r\n\t\tconst yint = parseInt(y)\r\n\t\tif (yint > 70 && yint <= 99) {\r\n\t\t\ty = `19${y}`\r\n\t\t} else {\r\n\t\t\ty = `20${y}`\r\n\t\t}\r\n\t\ta[a.length - 1] = y\r\n\t\tstr = a.join(\"/\")\r\n\t\tif (testMode) console.log(str)\r\n\t}\r\n\r\n\tlet d = moment(str, \"D/M/YYYY\")\r\n\tif (!d || !d.isValid()) {\r\n\t\t//Try a different format\r\n\t\tstr = `01/${str}`\r\n\t\td = moment(str, \"D/M/YYYY\")\r\n\t}\r\n\tif (!d.isValid()) {\r\n\t\treturn {\r\n\t\t\tvalid: false,\r\n\t\t\ttidiedDate: \"\",\r\n\t\t}\r\n\t}\r\n\r\n\tconst OK =\r\n\t\tstr.indexOf(d.format(\"D/M/YYYY\")) >= 0 ||\r\n\t\tstr.indexOf(d.format(\"DD/MM/YYYY\")) >= 0 ||\r\n\t\tstr.indexOf(d.format(\"D/M/YY\")) >= 0 ||\r\n\t\tstr.indexOf(d.format(\"DD/MM/YY\")) >= 0\r\n\r\n\treturn { valid: OK, tidiedDate: str }\r\n}\r\n","import type { ClaimStepData } from \"@/steps\"\r\nimport ClaimSteps from \"@/steps\"\r\n\r\nfunction shouldSkipStep(step: ClaimStepData) {\r\n\tif (!step.shouldSkipStep) {\r\n\t\treturn false\r\n\t}\r\n\treturn step.shouldSkipStep(App.CustomerClaim)\r\n}\r\n\r\n/**\r\n * @param currentStep The current step\r\n * @returns The next step to go to, ignoring any steps which are to be skipped\r\n */\r\nexport function getNextStep(currentStep: ClaimStepData): ClaimStepData | null {\r\n\tlet newStep: ClaimStepData | null = currentStep\r\n\tdo {\r\n\t\tnewStep = getDirectNextStep(newStep)\r\n\t} while (newStep !== null && shouldSkipStep(newStep))\r\n\r\n\treturn newStep\r\n}\r\n\r\n/**\r\n * @param currentStep The current step\r\n * @returns The direct next step, disregarding any stages which should be skipped\r\n */\r\nexport function getDirectNextStep(currentStep: ClaimStepData): ClaimStepData | null {\r\n\tif (currentStep.getNextStep) {\r\n\t\tconst next = currentStep.getNextStep()\r\n\t\tif (next !== \"auto\") {\r\n\t\t\treturn next\r\n\t\t}\r\n\t}\r\n\r\n\tconst nextSteps = Object.values(ClaimSteps)\r\n\t\t.filter((step) => step.step > currentStep.step)\r\n\t\t.sort((s1, s2) => s1.step - s2.step)\r\n\r\n\treturn nextSteps.find((s) => s.type === currentStep.type) ?? null\r\n}\r\n\r\n/**\r\n * @param currentStep The current step\r\n * @returns The previous step to go to, ignoring any steps which are to be skipped\r\n */\r\nexport function getPreviousStep(currentStep: ClaimStepData): ClaimStepData | null {\r\n\tlet previousStep: ClaimStepData | null = currentStep\r\n\tdo {\r\n\t\tpreviousStep = getDirectPreviousStep(previousStep)\r\n\t} while (previousStep !== null && shouldSkipStep(previousStep))\r\n\r\n\treturn previousStep\r\n}\r\n\r\n/**\r\n * @param currentStep The current step\r\n * @returns The direct previous step, disregarding any stages which should be skipped\r\n */\r\nexport function getDirectPreviousStep(currentStep: ClaimStepData): ClaimStepData | null {\r\n\tif (currentStep.getPreviousStep) {\r\n\t\tconst previous = currentStep.getPreviousStep()\r\n\t\tif (previous !== \"auto\") {\r\n\t\t\treturn previous\r\n\t\t}\r\n\t}\r\n\r\n\tconst previousSteps = Object.values(ClaimSteps)\r\n\t\t.filter((step) => step.step < currentStep.step)\r\n\t\t.sort((s1, s2) => s2.step - s1.step)\r\n\tconst directPreviousStep = previousSteps.find((s) => s.type === currentStep.type)\r\n\tif (directPreviousStep) {\r\n\t\treturn directPreviousStep\r\n\t}\r\n\r\n\t/*\r\n\t\tIf no step is found with a lower step number and the same claim type, assume that the previous step was a different type\r\n\t\tThis is feasible in the case of, say, entering into the MoD flow\r\n\t*/\r\n\treturn previousSteps.length === 0 ? null : previousSteps[0]\r\n}\r\n","import { useLoading } from \"@/composition/useLoading\"\r\nimport ClaimSteps from \"@/steps\"\r\nimport type { Id } from \"@/types\"\r\nimport moment from \"moment\"\r\nimport { defineGlobals } from \"vue-utils\"\r\nimport { logCustomerIOEvent } from \"../apis\"\r\n\r\n//TODO\r\nexport function fixHeadFoot(cStage = CurrentStep, minStage = ClaimSteps.Estimate) {\r\n\tif (cStage.step >= minStage.step) {\r\n\t\t// Add claim class to body to activate minimal header and fixed footer when at count up stage or later\r\n\t\tif (!$(\"body\").hasClass(\"claim\")) $(\"body\").addClass(\"claim\")\r\n\t}\r\n}\r\n\r\nexport async function showTrustPilotModal(id: Id, tpUrl: string) {\r\n\tawait useLoading().runAction(\r\n\t\tlogCustomerIOEvent(id, {\r\n\t\t\tname: \"5Star\",\r\n\t\t\t// eslint-disable-next-line new-cap\r\n\t\t\tdata: { claimid: App.CustomerClaim.ClaimId, timestamp: moment() },\r\n\t\t})\r\n\t)\r\n\tif (testMode) console.log(\"Sent 5 start event to CustIO\")\r\n\t$(\"#Modal h5.modal-title\").html(\"We're glad you're pleased!\")\r\n\tconst tpFrame = ``\r\n\t$(\"#Modal .modal-body\").html(tpFrame)\r\n\t$(\"#Modal\").modal({\r\n\t\tkeyboard: false,\r\n\t})\r\n}\r\n\r\ndefineGlobals({ fixHeadFoot, showTrustPilotModal })\r\n","import { defineGlobals } from \"vue-utils\"\r\nimport { fixHeadFoot } from \"@/utils/miscPageUtils\"\r\n\r\nexport function scrollTo(elementId: string) {\r\n\tconst offset = $(`#${elementId}`).offset()\r\n\tif (offset === undefined) {\r\n\t\tconsole.warn(`Unknown element '#${elementId}'`)\r\n\t\treturn\r\n\t}\r\n\t$(\"html, body\").animate({ scrollTop: offset.top - 190 }, 300)\r\n}\r\n\r\nexport function scrollToTop() {\r\n\t$(\"#Claim\").off(\"hidden.bs.collapse\")\r\n\t$(\"html, body\").animate(\r\n\t\t{\r\n\t\t\tscrollTop: 0,\r\n\t\t},\r\n\t\t300\r\n\t)\r\n}\r\n\r\nexport function focusClaimForm(openClaim: boolean) {\r\n\tconst element = document.getElementById(\"Claim\")\r\n\tif (!element) {\r\n\t\tdocument.location.href = \"/\"\r\n\t} else {\r\n\t\tif (openClaim) {\r\n\t\t\tApp.IsQuickEstimate = false\r\n\t\t}\r\n\t\tfixHeadFoot()\r\n\t\tscrollTo(\"Claim\")\r\n\t}\r\n}\r\ndefineGlobals({ focusClaimForm })\r\n\r\ndefineGlobals({ scrollToTop, scrollTo })\r\n","import type { ClaimStepData } from \"@/steps\"\r\nimport { ref, shallowRef } from \"vue\"\r\n\r\n/*\r\n\t\"CurrentStep\" variable is defined on the global object as a property so that getting and settings its value\r\n\thooks into Vue's reactivity system, allowing updating of the page when set\r\n*/\r\nconst currentStepRef = shallowRef()\r\nObject.defineProperty(globalThis, \"CurrentStep\", {\r\n\tget() {\r\n\t\treturn currentStepRef.value\r\n\t},\r\n\tset(value) {\r\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n\t\tcurrentStepRef.value = value\r\n\t},\r\n})\r\n\r\nexport const ignoreNavigation = ref(false)\r\n","import ClaimSteps, { type ClaimStepData, ClaimType } from \"@/steps\"\r\nimport { fixHeadFoot } from \"@/utils/miscPageUtils\"\r\nimport { focusClaimForm } from \"@/utils/scrolling\"\r\nimport { awaitNavPop, createHistoryState, getHistoryState } from \"./history\"\r\nimport { ignoreNavigation } from \"./state\"\r\n\r\nexport interface SetClaimSetOptions {\r\n\tignoreHistory?: boolean\r\n\tinitialLoad?: boolean\r\n}\r\n\r\nasync function setUpNavigation() {\r\n\tconst current = getHistoryState(history.state)\r\n\tignoreNavigation.value = true\r\n\tif (!current) {\r\n\t\thistory.replaceState(createHistoryState(\"back\"), \"\")\r\n\t\thistory.pushState(createHistoryState(\"current\"), \"\")\r\n\t\thistory.pushState(createHistoryState(\"forward\"), \"\")\r\n\t\tawait awaitNavPop()\r\n\t} else if (current === \"back\") {\r\n\t\thistory.pushState(createHistoryState(\"current\"), \"\")\r\n\t\thistory.pushState(createHistoryState(\"forward\"), \"\")\r\n\t\tawait awaitNavPop()\r\n\t} else if (current === \"forward\") {\r\n\t\tawait awaitNavPop()\r\n\t}\r\n\tignoreNavigation.value = false\r\n}\r\n\r\nexport async function setClaimStep(step: ClaimStepData, options: SetClaimSetOptions = {}) {\r\n\tconst { ignoreHistory = false, initialLoad = false } = options\r\n\r\n\tdataLayer.push({ ClaimId: App.CustomerClaim.ClaimId }) //push claim id to Google Tag Manager datalayer...\r\n\r\n\tif (!ignoreHistory) {\r\n\t\tawait setUpNavigation()\r\n\t}\r\n\r\n\tlocalStorage.setItem(\"ClaimType\", step.type)\r\n\tlocalStorage.setItem(\"ClaimStage\", step.name)\r\n\r\n\tCurrentStep = step\r\n\r\n\tif (step.isIssue || (!initialLoad && (step.type !== ClaimType.Standard || step.step > ClaimSteps.Name.step))) {\r\n\t\tApp.IsQuickEstimate = false\r\n\t}\r\n\r\n\tif (!initialLoad) {\r\n\t\tsetTimeout(() => focusClaimForm(false), 50)\r\n\t}\r\n\tfixHeadFoot()\r\n}\r\n","import { insertQualifyingCheck } from \"@/apis\"\r\nimport ClaimSteps, { ClaimType } from \"@/steps\"\r\nimport { ClaimStatus } from \"@/types\"\r\nimport type { QualifyingCheck } from \".\"\r\n\r\nexport const ClaimedBeforeCheck: QualifyingCheck = ({ claim }) => {\r\n\tif (CurrentStep.type === ClaimType.Standard && App.CustomerClaim.ClaimedBefore) {\r\n\t\tclaim.ClaimStatus = ClaimStatus.CancelledClaimedBefore\r\n\t\tvoid insertQualifyingCheck(\"Have you claimed before?\", \"yes\", false, App.CustomerClaim.ClaimId, \"REP\")\r\n\r\n\t\treturn ClaimSteps.AlreadyClaimed\r\n\t}\r\n\r\n\tvoid insertQualifyingCheck(\"Have you claimed before?\", \"no\", true, App.CustomerClaim.ClaimId, \"REP\")\r\n\treturn true\r\n}\r\n","export interface EarningBand {\r\n\ttitle: string\r\n\tqualifies: boolean\r\n}\r\n\r\nexport interface CalculatorConfig {\r\n\tmaximumSubscriptions: number\r\n\tearningsBands: typeof EarningBands\r\n}\r\n\r\nexport const EarningBands = {\r\n\t\"LT-12K-All\": {\r\n\t\ttitle: \"Always less than £12,500\",\r\n\t\tqualifies: false,\r\n\t},\r\n\t\"12K-50K-All\": {\r\n\t\ttitle: \"Usually more than £12,500 and less than £50,000\",\r\n\t\tqualifies: true,\r\n\t},\r\n\t\"MT-50K-All\": {\r\n\t\ttitle: \"Typically more than £50,000 but always less than £100,000\",\r\n\t\tqualifies: true,\r\n\t},\r\n\t\"MT-100K-Some\": {\r\n\t\ttitle: \"Sometimes more than £100,000\",\r\n\t\tqualifies: true,\r\n\t},\r\n\t\"MT-100K-All\": {\r\n\t\ttitle: \"Always more than £100,000\",\r\n\t\tqualifies: false,\r\n\t},\r\n} satisfies Record\r\n\r\n//WARNING: the earningsBands are mirrored in the server-side code UpdateClaimService.cs\r\nconst calculatorConfig: CalculatorConfig = {\r\n\tmaximumSubscriptions: 10,\r\n\tearningsBands: EarningBands,\r\n}\r\n\r\nexport default calculatorConfig\r\n","import { insertQualifyingCheck } from \"@/apis\"\r\nimport calculatorConfig from \"@/calculatorConfig\"\r\nimport ClaimSteps, { ClaimType } from \"@/steps\"\r\nimport { ClaimStatus } from \"@/types\"\r\nimport type { QualifyingCheck } from \".\"\r\n\r\nexport const EarningsCheck: QualifyingCheck = ({ claim }) => {\r\n\t\r\n\t// Not high enough earnings - go to step 99 (once we have their address), don't do anything else\r\n\tconst defaultEarningsBand =\r\n\t\tclaim.EarningsAboveMinimum && claim.Employed ? calculatorConfig.earningsBands[\"12K-50K-All\"] : calculatorConfig.earningsBands[\"LT-12K-All\"]\r\n\tconst earningsBand = claim.EarningsBand ? calculatorConfig.earningsBands[claim.EarningsBand] : defaultEarningsBand\r\n\tconst qualifies = earningsBand?.qualifies ?? false\r\n\tif (!qualifies && CurrentStep.type === ClaimType.Standard && CurrentStep.step > ClaimSteps.TaxYears.step) {\r\n\t\tclaim.ClaimStatus = ClaimStatus.CancelledNoTaxPaid\r\n\r\n\t\tvoid insertQualifyingCheck(\"Have you paid tax in the last 5 years?\", \"no\", false, claim.ClaimId, \"TAX5\")\r\n\r\n\t\t//if married then let them carry on as they might be due a marriage rebate as the lowest earner\r\n\t\tconst isMarriage = claim.QualifiesForMarriageClaim && !claim.MarriageClaimSkipped\r\n\t\tif (!isMarriage) {\r\n\t\t\treturn ClaimSteps.NoTaxPaid\r\n\t\t}\r\n\t} else if (CurrentStep.type === ClaimType.Standard && CurrentStep.step > ClaimSteps.TaxYears.step) {\r\n\t\tclaim.TaxYearIds = App.currentTaxYears.map((e) => e.Value)\r\n\t\tvoid insertQualifyingCheck(\"Have you paid tax in the last 5 years?\", \"yes\", true, claim.ClaimId, \"TAX5\")\r\n\t}\r\n\r\n\treturn true\r\n}\r\n","import { insertQualifyingCheck } from \"@/apis\"\r\nimport { selectableEmploymentYears } from \"@/constants\"\r\nimport ClaimSteps, { ClaimType } from \"@/steps\"\r\nimport { ClaimStatus } from \"@/types\"\r\nimport type { QualifyingCheck } from \".\"\r\n\r\nexport const NewTaxPayerCheck: QualifyingCheck = ({ claim }) => {\r\n\t//Not been paying tax long enough? - go to step defined above. Cannot process claim.\r\n\tif (CurrentStep.type !== ClaimType.Standard || CurrentStep.step < ClaimSteps.Employer.step) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (claim.Employers.length === 0) {\r\n\t\tclaim.ClaimStatus = ClaimStatus.CancelledNoEmploymentHistory\r\n\t\tvoid insertQualifyingCheck(\r\n\t\t\t`Do you have any employment history in the past ${selectableEmploymentYears} years?`,\r\n\t\t\t\"no\",\r\n\t\t\tfalse,\r\n\t\t\tclaim.ClaimId,\r\n\t\t\t\"TAX1\"\r\n\t\t)\r\n\t\treturn ClaimSteps.NoEmploymentHistory\r\n\t}\r\n\r\n\tvoid insertQualifyingCheck(\r\n\t\t`Do you have any employment history in the past ${selectableEmploymentYears} years?`,\r\n\t\t\"yes\",\r\n\t\ttrue,\r\n\t\tclaim.ClaimId,\r\n\t\t\"TAX1\"\r\n\t)\r\n\treturn true\r\n}\r\n","import { insertQualifyingCheck } from \"@/apis\"\r\nimport ClaimSteps from \"@/steps\"\r\nimport { ClaimStatus } from \"@/types\"\r\nimport type { QualifyingCheck } from \".\"\r\n\r\nexport const NothingToClaimForCheck: QualifyingCheck = ({ claim }) => {\r\n\t// Status set by server, calculated that there is nothing to claim for - no uniform, subs or expenses - so claim ends\r\n\tif (claim.ClaimStatus !== ClaimStatus.CancelledNothingToClaimFor) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tvoid insertQualifyingCheck(\"Is there anything to claim for?\", \"no\", false, claim.ClaimId, \"ANYCL\")\r\n\treturn ClaimSteps.LackOfExpenses\r\n}\r\n","import { insertQualifyingCheck } from \"@/apis\"\r\nimport ClaimSteps, { ClaimType } from \"@/steps\"\r\nimport { ClaimStatus } from \"@/types\"\r\nimport type { QualifyingCheck } from \".\"\r\n\r\nexport const SelfAssessedCheck: QualifyingCheck = ({ claim }) => {\r\n\t// Self assessed - go to step 101. Cannot process claim.\r\n\tif (CurrentStep.type === ClaimType.Standard && claim.selfAssessed === true) {\r\n\t\tclaim.ClaimStatus = ClaimStatus.CancelledSelfAssessed\r\n\t\tvoid insertQualifyingCheck(\"Are you self-assessed?\", \"yes\", false, claim.ClaimId, \"SA\")\r\n\t\treturn ClaimSteps.RequireSelfAssessment\r\n\t}\r\n\r\n\tif (CurrentStep.type === ClaimType.Standard && claim.selfAssessed === false) {\r\n\t\tvoid insertQualifyingCheck(\"Are you self-assessed?\", \"no\", true, claim.ClaimId, \"SA\")\r\n\t} else {\r\n\t\tvoid insertQualifyingCheck(\"Are you self-assessed?\", \"unknown\", false, claim.ClaimId, \"SA\")\r\n\t}\r\n\treturn true\r\n}\r\n","import { insertQualifyingCheck } from \"@/apis\"\r\nimport calculatorConfig from \"@/calculatorConfig\"\r\nimport ClaimSteps, { ClaimType } from \"@/steps\"\r\nimport { ClaimStatus } from \"@/types\"\r\nimport type { QualifyingCheck } from \".\"\r\n\r\nexport const UniformSubscriptionsCheck: QualifyingCheck = ({ claim }) => {\r\n\t//if customer is married and doesn't qualify in their own right then skip this check - we'll let them pass because them\r\n\t//they might be due a marriage refund\r\n\tconst { ClaimedUniformAllowanceCurrentJob, ClaimedUniformAllowancePreviousJob, Subscriptions } = claim\r\n\tconst earningsBand = claim.EarningsBand ? calculatorConfig.earningsBands[claim.EarningsBand] : null\r\n\tconst qualifies = earningsBand?.qualifies ?? false\r\n\tconst possMarriageClaim = claim.Married && ((claim.SpouseEmployed && !qualifies) || (!claim.SpouseEmployed && qualifies))\r\n\r\n\tif (possMarriageClaim) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (\r\n\t\tCurrentStep.type === ClaimType.Standard &&\r\n\t\t(ClaimedUniformAllowanceCurrentJob || ClaimedUniformAllowancePreviousJob) &&\r\n\t\t(!Subscriptions || Subscriptions.length === 0)\r\n\t) {\r\n\t\tclaim.ClaimStatus = ClaimStatus.CancelledWorksPartTime\r\n\t\tvoid insertQualifyingCheck(\"Claimed uniform and not in a subscription industry?\", \"yes\", false, claim.ClaimId, \"UNIF\")\r\n\t\treturn ClaimSteps.UniformClaimed\r\n\t}\r\n\r\n\tvoid insertQualifyingCheck(\"Claimed uniform and not in a subscription industry?\", \"no\", true, claim.ClaimId, \"UNIF\")\r\n\treturn true\r\n}\r\n","import { insertQualifyingCheck } from \"@/apis\"\r\nimport ClaimSteps, { ClaimType } from \"@/steps\"\r\nimport { ClaimStatus } from \"@/types\"\r\nimport type { QualifyingCheck } from \".\"\r\n\r\nexport const EmployedCheck: QualifyingCheck = ({ claim }) => {\r\n\tif (CurrentStep.type === ClaimType.Standard && !claim.Employed) {\r\n\t\tclaim.ClaimStatus = ClaimStatus.CancelledNoEmploymentHistory\r\n\t\tvoid insertQualifyingCheck(\"Do you have a current job?\", \"no\", false, App.CustomerClaim.ClaimId, \"UNEMP\")\r\n\t\treturn ClaimSteps.NoEmploymentHistory\r\n\t}\r\n\r\n\tvoid insertQualifyingCheck(\"Do you have a current job?\", \"yes\", true, App.CustomerClaim.ClaimId, \"UNEMP\")\r\n\treturn true\r\n}\r\n","import { saveClaimToServer } from \"@/apis\"\r\nimport { useLoading } from \"@/composition/useLoading\"\r\nimport type { ClaimStepData } from \"@/steps\"\r\nimport type { ClaimCustomer } from \"@/types\"\r\nimport { setClaimStep, type SetClaimSetOptions } from \"../setStep\"\r\nimport { ClaimedBeforeCheck } from \"./claimedBefore\"\r\nimport { EarningsCheck } from \"./earnings\"\r\nimport { NewTaxPayerCheck } from \"./newTaxPayer\"\r\nimport { NothingToClaimForCheck } from \"./nothingToClaimFor\"\r\nimport { SelfAssessedCheck } from \"./selfAssessed\"\r\nimport { UniformSubscriptionsCheck } from \"./uniformSubscriptions\"\r\nimport { EmployedCheck } from \"./employed\"\r\n\r\nconst { runAction } = useLoading()\r\n\r\nexport type QualifyingCheckOptions = {\r\n\tclaim: ClaimCustomer\r\n\r\n\trequestedNextStep?: ClaimStepData\r\n\tnextStep: ClaimStepData\r\n\tstepOptions: SetClaimSetOptions\r\n}\r\n\r\nexport type QualifyingCheckResult = true | ClaimStepData\r\nexport type QualifyingCheck = (options: QualifyingCheckOptions) => QualifyingCheckResult | Promise\r\n\r\nexport const QualifyingChecks: QualifyingCheck[] = [\r\n\tEmployedCheck,\r\n\tEarningsCheck,\r\n\tClaimedBeforeCheck,\r\n\tSelfAssessedCheck,\r\n\tUniformSubscriptionsCheck,\r\n\tNewTaxPayerCheck,\r\n\tNothingToClaimForCheck,\r\n]\r\n\r\nasync function runAllQualifyingChecks(options: QualifyingCheckOptions): Promise {\r\n\tfor (const check of QualifyingChecks) {\r\n\t\tconst result = await check(options)\r\n\t\tif (result !== true) {\r\n\t\t\treturn result\r\n\t\t}\r\n\t}\r\n\treturn true\r\n}\r\n\r\nexport default async function runQualifyingChecks(options: QualifyingCheckOptions): Promise {\r\n\tconst result = await runAllQualifyingChecks(options)\r\n\tif (typeof result === \"boolean\") {\r\n\t\treturn result\r\n\t}\r\n\r\n\tApp.CustomerClaim = await runAction(saveClaimToServer(App.CustomerClaim))\r\n\tawait setClaimStep(result, options.stepOptions)\r\n\treturn false\r\n}\r\n","import { saveClaimToServer, saveMODClaimtoServer } from \"@/apis\"\r\nimport { useLoading } from \"@/composition/useLoading\"\r\nimport ClaimSteps, { ClaimType, type ClaimStepData } from \"@/steps\"\r\nimport { ClaimStatus } from \"@/types\"\r\nimport { calculateTotalYearsEmployed } from \"@/utils/jobDates\"\r\nimport { getNextStep } from \"./getStep\"\r\nimport runQualifyingChecks from \"./qualifying-checks\"\r\nimport { setClaimStep, type SetClaimSetOptions } from \"./setStep\"\r\n\r\nconst { runAction } = useLoading()\r\n\r\nexport default async function runPostSaveActions(requestedNextStep?: ClaimStepData, options?: SetClaimSetOptions) {\r\n\tApp.InitialLoadWithExistingClaim = false\r\n\r\n\tconst nextStep = getRequestedNextStep(requestedNextStep)\r\n\r\n\t//save MOD claim if needed\r\n\tif (CurrentStep.type === ClaimType.MoD && App.MODClaim.CustomerId > 0 && App.MODClaim.MobileNumber.length > 0) {\r\n\t\tawait runAction(saveMODClaimtoServer(App.MODClaim))\r\n\t\tlocalStorage.setItem(\"MODClaim\", JSON.stringify(App.MODClaim))\r\n\t}\r\n\r\n\t//check if we're moving on to the occupation step but haven't provided sufficient employer data\r\n\tif (nextStep === ClaimSteps.Occupation) {\r\n\t\tif (App.CustomerClaim.Employers.some((er) => er.PAYEReference === \"\") && !App.CustomerClaim.ConsentContactEmployers) {\r\n\t\t\tApp.CustomerClaim.ClaimStatus = ClaimStatus.NotProvidedPAYEOrSARPermission\r\n\t\t\tApp.CustomerClaim = await runAction(saveClaimToServer(App.CustomerClaim))\r\n\t\t\tawait setClaimStep(ClaimSteps.EmployerDetailsNeeded)\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n\r\n\tif (nextStep === ClaimSteps.FinalStep) {\r\n\t\t//TODO Can these be moved as individual qualifying checks? Or is there a reason they need to be further up\r\n\r\n\t\tif (testMode) console.log(\"Claim complete!! Going to do some stuff now...\")\r\n\r\n\t\tif (calculateTotalYearsEmployed(App.CustomerClaim.Employers) < 1 && !App.CustomerClaim.ConsentContactEmployers) {\r\n\t\t\tApp.CustomerClaim.ClaimStatus = ClaimStatus.SubmitNextTaxYear\r\n\t\t\tApp.CustomerClaim = await runAction(saveClaimToServer(App.CustomerClaim))\r\n\t\t\tawait setClaimStep(ClaimSteps.WaitUntilNextTaxYear)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tApp.CustomerClaim.ClaimStatus =\r\n\t\t\tApp.CustomerClaim.Employers.some((er) => er.PAYEReference === \"\") && App.CustomerClaim.ConsentContactEmployers\r\n\t\t\t\t? ClaimStatus.NotCompletedEmployerDetails\r\n\t\t\t\t: ClaimStatus.CompletePaymentSuccessful\r\n\t\tApp.CustomerClaim = await runAction(saveClaimToServer(App.CustomerClaim))\r\n\r\n\t\tif (App.CustomerClaim.ClaimStatus === ClaimStatus.CancelledDetailsRejected) {\r\n\t\t\tawait setClaimStep(ClaimSteps.DetailsRejected)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (!App.CustomerClaim.IsRepeatCustomer) {\r\n\t\t\twindow.location.href = `${conversionUrl}/?cid=${App.CustomerClaim.ClaimId}` //'/payments';\r\n\t\t} else if (App.CustomerClaim.selfAssessed === false && (App.CustomerClaim.ClaimStatus as number) < 20) {\r\n\t\t\t// Repeat customer\r\n\t\t\tif (testMode) console.log(\"Repeat customer - not going to do stuff after all...\")\r\n\t\t\tif (testMode) console.log(\"Redirecting to final page...\")\r\n\t\t\twindow.location.href = `${repeatCustomerConversionUrl}/${App.CustomerClaim.UserId}`\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n\r\n\tconst successful = await runQualifyingChecks({\r\n\t\tclaim: App.CustomerClaim,\r\n\t\tnextStep,\r\n\t\trequestedNextStep,\r\n\t\tstepOptions: options ?? {},\r\n\t})\r\n\tif (!successful) {\r\n\t\treturn\r\n\t}\r\n\tawait setClaimStep(nextStep, options)\r\n}\r\n\r\nfunction getRequestedNextStep(requested?: ClaimStepData) {\r\n\tif (requested) {\r\n\t\treturn requested\r\n\t}\r\n\tconst next = getNextStep(CurrentStep)\r\n\tif (!next) {\r\n\t\tthrow new Error(\"No next step\")\r\n\t}\r\n\treturn next\r\n}\r\n","import { logCustomerIOEvent, saveClaimToServer } from \"@/apis\"\r\nimport { useLoading } from \"@/composition/useLoading\"\r\nimport { modEmployers, modIndustryId } from \"@/constants\"\r\nimport ClaimSteps, { type ClaimStepData, ClaimType } from \"@/steps\"\r\nimport { ClaimStatus } from \"@/types\"\r\nimport { getLatestJob } from \"@/utils/jobDates\"\r\nimport { checkFields } from \"@/utils/validation\"\r\nimport { getNextStep, getPreviousStep } from \"./getStep\"\r\nimport runPostSaveActions from \"./saveStep\"\r\nimport { type SetClaimSetOptions, setClaimStep } from \"./setStep\"\r\n\r\nexport async function goToNextStep(nextStep?: ClaimStepData, options?: SetClaimSetOptions): Promise {\r\n\tconst handler = App.ValidationHandler\r\n\tif (!handler) {\r\n\t\tthrow new Error(\"Validation handler is not set up. Are you in a step?\")\r\n\t}\r\n\r\n\tconst ok = await checkFields(handler)\r\n\tif (!ok) {\r\n\t\treturn false\r\n\t}\r\n\r\n\tif (!nextStep && !getNextStep(CurrentStep)) {\r\n\t\treturn false\r\n\t}\r\n\r\n\t//check for MOD\r\n\t//THIS IS WHERE WE DEFINE THE PARAMETERS THAT DEFINE A 'MOD' CLAIM\r\n\t// Check for employer name that could be MOD and change claim accordingly\r\n\tif (CurrentStep.type === ClaimType.Standard && CurrentStep.step >= ClaimSteps.Employer.step && isMoDClaim()) {\r\n\t\tnextStep = ClaimSteps.BasicInformation\r\n\t}\r\n\r\n\tif (CurrentStep.type === ClaimType.Standard && CurrentStep.step >= ClaimSteps.Signature.step && CurrentStep.step < ClaimSteps.FinalStep.step) {\r\n\t\tApp.CustomerClaim.ClaimStatus = ClaimStatus.AbandonedBeforePayment\r\n\t}\r\n\r\n\tApp.CustomerClaim = await useLoading().runAction(saveClaimToServer(App.CustomerClaim))\r\n\tawait runPostSaveActions(nextStep, options)\r\n\r\n\treturn true\r\n}\r\n\r\nfunction isMoDClaim(): boolean {\r\n\tconst latestJob = getLatestJob(App.CustomerClaim.Employers)\r\n\tif (!latestJob) {\r\n\t\treturn false\r\n\t}\r\n\tconst employerName = latestJob.EmployerName.trim().toLowerCase()\r\n\treturn latestJob.IndustryId === modIndustryId || modEmployers.some((employer) => employer === employerName)\r\n}\r\n\r\nexport async function goToPreviousStep(previousStep?: ClaimStepData, options?: SetClaimSetOptions) {\r\n\tif (!previousStep) {\r\n\t\tconst previous = getPreviousStep(CurrentStep)\r\n\t\tif (!previous) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tpreviousStep = previous\r\n\t}\r\n\r\n\t// If claim status was changed to an error status then change it back\r\n\tif (App.CustomerClaim.ClaimStatus > 20 && previousStep.step < 50) {\r\n\t\tApp.CustomerClaim.ClaimStatus = ClaimStatus.AbandonedBeforePayment\r\n\t}\r\n\r\n\tawait setClaimStep(previousStep, options)\r\n\r\n\t//if (ClaimStage > 1 || window.location.hash.indexOf('step') > -1) {\r\n\t/*if (ClaimStage > getClaimStepNo('job') || window.location.hash.indexOf('step') > -1) {\r\n var hashString = '#step' + ClaimStage;\r\n history.pushState('', '', hashString);\r\n }*/\r\n\r\n\tconst event = {\r\n\t\tname: \"click_back\",\r\n\t\tdata: {\r\n\t\t\tstep_number: previousStep.step,\r\n\t\t},\r\n\t}\r\n\tvoid logCustomerIOEvent(App.CustomerClaim.ClaimId, event)\r\n\treturn true\r\n}\r\n","import ClaimSteps from \"@/steps\"\r\nimport { delay } from \"vue-utils\"\r\nimport { awaitNavPop, getHistoryState } from \"./history\"\r\nimport { goToNextStep, goToPreviousStep } from \"./navigation\"\r\nimport { ignoreNavigation } from \"./state\"\r\n\r\nwindow.addEventListener(\"popstate\", (event) => {\r\n\tif (ignoreNavigation.value) {\r\n\t\treturn\r\n\t}\r\n\tconst type = getHistoryState(event.state)\r\n\tif (type === \"back\") {\r\n\t\tvoid handleBrowserBack()\r\n\t} else if (type === \"forward\") {\r\n\t\tvoid handlerBrowserForward()\r\n\t}\r\n})\r\n\r\nlet isSubmitting = false\r\n\r\nasync function handleBrowserBack() {\r\n\tif (CurrentStep === ClaimSteps.InitialStep) {\r\n\t\tignoreNavigation.value = true\r\n\r\n\t\twhile (getHistoryState(history.state) !== null) {\r\n\t\t\tawait awaitNavPop()\r\n\t\t\tawait delay(5)\r\n\t\t}\r\n\r\n\t\tignoreNavigation.value = false\r\n\t\treturn\r\n\t}\r\n\r\n\tignoreNavigation.value = true\r\n\thistory.forward()\r\n\tignoreNavigation.value = false\r\n\r\n\tif (!isSubmitting) {\r\n\t\ttry {\r\n\t\t\tisSubmitting = true\r\n\t\t\tawait goToPreviousStep(undefined, { ignoreHistory: true })\r\n\t\t} finally {\r\n\t\t\tisSubmitting = false\r\n\t\t}\r\n\t}\r\n}\r\n\r\nasync function handlerBrowserForward() {\r\n\tignoreNavigation.value = true\r\n\tawait awaitNavPop()\r\n\tignoreNavigation.value = false\r\n\r\n\tif (App.InitialLoadWithExistingClaim) {\r\n\t\tApp.InitialLoadWithExistingClaim = false\r\n\t\tApp.IsQuickEstimate = false\r\n\t} else if (!isSubmitting) {\r\n\t\ttry {\r\n\t\t\tisSubmitting = true\r\n\t\t\tawait goToNextStep(undefined, { ignoreHistory: true })\r\n\t\t\tconsole.log(\"submitting done\")\r\n\t\t} finally {\r\n\t\t\tisSubmitting = false\r\n\t\t}\r\n\t}\r\n}\r\n","import { defineGlobals } from \"vue-utils\"\r\nimport \"./browserHistoryHandler\"\r\nimport { setClaimStep } from \"./setStep\"\r\n\r\nexport * from \"./getStep\"\r\nexport * from \"./navigation\"\r\nexport * from \"./setStep\"\r\nexport * from \"./state\"\r\n\r\ndefineGlobals({ setClaimStage: setClaimStep, setClaimStep })\r\n","import { goToNextStep, goToPreviousStep } from \"@/step-handler\"\r\nimport type { ClaimStepData } from \"@/steps\"\r\nimport { defineComponent, inferProps, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\tbackDisabled?: string | boolean\r\n\tnextDisabled?: string | boolean\r\n\r\n\thideBack?: boolean\r\n\thideNext?: boolean\r\n\r\n\tnextStep?: ClaimStepData\r\n\tpreviousStep?: ClaimStepData\r\n\r\n\tnextText?: string\r\n\tbackText?: string\r\n}\r\n\r\nconst ButtonNavigation: ReactiveComponent = (props) => {\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t{!props.hideBack && (\r\n\t\t\t\t\t void goToPreviousStep(props.previousStep)}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{\"<\"} {props.backText ?? \"Back\"}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{!props.hideNext && (\r\n\t\t\t\t\t void goToNextStep(props.nextStep)}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{props.nextText ?? \"Next\"} {\">\"}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{!props.hideBack && (\r\n\t\t\t\t\t\t\t\t void goToPreviousStep(props.previousStep)}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{\"<\"} {props.backText ?? \"Back\"}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{!props.hideNext && (\r\n\t\t\t\t\t\t\t\t void goToNextStep(props.nextStep)}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{props.nextText ?? \"Next\"} {\">\"}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(ButtonNavigation, inferProps())\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst EmployerDetailsNeeded: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

\r\n\t\t\t\t\t Employer Details Required\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t\t

\r\n\t\t\t\tBecause you have not been able to look up your employer from our database of employers we are not able to help you at this time.\r\n\t\t\t\tUnfortunately HMRC require detailed employer information without which your claim cannot be processed. If you would like to look again\r\n\t\t\t\tfor your employer, please use the back button below.\r\n\t\t\t

\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(EmployerDetailsNeeded)\r\n","import { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport MarriageClaimLink from \"./components/MarriageClaimLink\"\r\n\r\nconst LackOfExpenses: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Sorry - you don't qualify for a claim

\r\n\t\t\t\t

\r\n\t\t\t\t\tBased on your employment history and lack of expenses we have calculated that you have nothing to claim for. I'm afraid this means we\r\n\t\t\t\t\twill be unable to process your claim.\r\n\t\t\t\t

\r\n\t\t\t\t{(App.CustomerClaim.Married ?? true) && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

You might be eligible for a Marriage Tax Rebate however - click the button below if you're married.

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default defineComponent(LackOfExpenses)\r\n","import { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport { showTrustPilotModal } from \"@/utils/miscPageUtils\"\r\n\r\nconst LeaveAReview: ReactiveComponent = () => {\r\n\tfunction openTrustPilot() {\r\n\t\tvoid showTrustPilotModal(App.CustomerClaim.ClaimId, App.CustomerClaim.TrustPilotSiteUrl)\r\n\t}\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t

How easy was that? If you're happy with our service please leave a 5 star review:

\r\n\t\t\t

\r\n\t\t\t\t\r\n\t\t\t

\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(LeaveAReview)\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport LeaveAReview from \"./components/LeaveAReview\"\r\nimport MarriageClaimLink from \"./components/MarriageClaimLink\"\r\nimport UniformBenefits from \"./components/UniformBenefits\"\r\n\r\nconst NoTaxPaid: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

Your Claim

\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{App.CustomerClaim.Married && App.CustomerClaim.SpouseEmployed ? (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

Thanks for your claim. We'll send you a paper claim form within 2 weeks to complete your claim.

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\tThanks for your claim. We need to perform some basic eligibility checks to see if you qualify for a refund. We will email you back\r\n\t\t\t\t\t\t\twithin 48 hours.\r\n\t\t\t\t\t\t

\r\n\r\n\t\t\t\t\t\t{(App.CustomerClaim.Married ?? true) && (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t

You might be eligible for a Marriage Tax Rebate - click the button below if you're married

\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(NoTaxPaid)\r\n","import { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport MarriageClaimLink from \"./components/MarriageClaimLink\"\r\n\r\nconst NoEmploymentHistory: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Sorry - you don't qualify for a claim

\r\n\t\t\t\t

We can only process employment-based rebates for those currently in a job.

\r\n\t\t\t\t

However, if you are married or in a civil partnership you might qualify for a marriage rebate.

\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default defineComponent(NoEmploymentHistory)\r\n","import { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst RequireSelfAssessment: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Self Assessment Taxpayers

\r\n\t\t\t\t

\r\n\t\t\t\t\tI'm sorry but this claim process is for taxpayers with simple tax affairs. This means you have a regular\r\n\t\t\t\t\temployer who pays you a salary and deducts tax at source.\r\n\t\t\t\t

\r\n\t\t\t\t

\r\n\t\t\t\t\tIf you are required to submit a self assessment tax return, usually by 31st January deadline, in any of the\r\n\t\t\t\t\tyears of the claim you can't use this service.\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default defineComponent(RequireSelfAssessment)\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport MarriageClaimLink from \"./components/MarriageClaimLink\"\r\nimport UniformBenefits from \"./components/UniformBenefits\"\r\n\r\nconst UniformClaimed: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

Your Claim

\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t

I'm sorry but You have indicated that you have claimed a uniform allowance.

\r\n\t\t\t\t{(App.CustomerClaim.Married ?? true) && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

You might be eligible for a Marriage Tax Rebate - click the button below if you're married

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(UniformClaimed)\r\n","import { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst WaitUntilNextTaxYear: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

Your Claim

\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Thank you for submitting your claim.

\r\n\t\t\t\t

\r\n\t\t\t\t\tWe note from the information you provided that you have not yet been in employment for a full tax year. This means that we cannot yet\r\n\t\t\t\t\tsend your claim to HMRC. We will submit your details to HMRC when your claim becomes eligible on the 6th April{\" \"}\r\n\t\t\t\t\t{new Date().getFullYear() + 1}.\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(WaitUntilNextTaxYear)\r\n","import { checkEmailDidYouMean } from \"@/apis\"\r\nimport { showConfirmModal } from \"@/modals\"\r\nimport type { Id } from \"@/types\"\r\nimport type { MaybeRef } from \"@vueuse/core\"\r\nimport { unref } from \"vue\"\r\nimport { useCustomCheck } from \"vue-utils\"\r\nimport { useLoading } from \"./useLoading\"\r\n\r\nasync function confirmChangeEmail(currentEmail: string, didYouMean: string) {\r\n\treturn await showConfirmModal({\r\n\t\ttitle: \"Possible email correction\",\r\n\t\tcontent: () => (\r\n\t\t\t<>\r\n\t\t\t\tWe've detected that it's possible your email address may have been mistyped.\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\tWe suggest changing it from {currentEmail} to {didYouMean}.\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\tWould you like to change it?\r\n\t\t\t\r\n\t\t),\r\n\t\tcancelText: \"No, don't change it\",\r\n\t\tconfirmText: \"Yes, change it\",\r\n\t})\r\n}\r\n\r\nexport const useEmailDidYouMean = (claimId: MaybeRef, getEmail: () => string, setEmail: (newEmail: string) => void) => {\r\n\tconst { runAction } = useLoading()\r\n\r\n\tuseCustomCheck(async () => {\r\n\t\tconst currentEmail = getEmail()\r\n\t\tconst didYouMean = await runAction(checkEmailDidYouMean(unref(claimId), currentEmail))\r\n\t\tif (!didYouMean || didYouMean.length === 0) {\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\tconst changeEmail = await confirmChangeEmail(currentEmail, didYouMean)\r\n\t\tif (changeEmail) {\r\n\t\t\tsetEmail(didYouMean)\r\n\t\t}\r\n\r\n\t\treturn true\r\n\t})\r\n}\r\n","export function fixPostcode(postcode: string): string {\r\n\tif (!isPostcodeValid(postcode)) {\r\n\t\treturn postcode\r\n\t}\r\n\tpostcode = postcode.replace(/\\s/g, \"\")\r\n\treturn `${postcode.substring(0, postcode.length - 3)} ${postcode.substring(postcode.length - 3)}`\r\n}\r\n\r\nexport function isPostcodeValid(postcode: string): boolean {\r\n\treturn /^[A-Z](\\d|[A-Z]){1,3}\\s?\\d(\\d|[A-Z]){2}$/gi.test(postcode.trim())\r\n}\r\n","import { addressLookup, getAddress } from \"@/apis\"\r\nimport { showModalMessage } from \"@/modals\"\r\nimport type { AddressResult } from \"@/types\"\r\nimport { isPostcodeValid } from \"@/utils/postcode\"\r\nimport { shallowRef } from \"vue\"\r\nimport { useLoading } from \"./useLoading\"\r\n\r\nexport default function usePostcodeLookup() {\r\n\tconst { runAction } = useLoading()\r\n\tconst addresses = shallowRef([])\r\n\r\n\t/**\r\n\t * Attempts to find the matching address\r\n\t */\r\n\tasync function matchAddress(addressId: string): Promise {\r\n\t\tif (addressId === \"-1\" || addressId === \"\") {\r\n\t\t\treturn null\r\n\t\t}\r\n\t\treturn await getAddress(addressId)\r\n\t}\r\n\r\n\tasync function lookupPostcode(postcode: string, isUserAction = true) {\r\n\t\t//Remove all whitespace\r\n\t\tpostcode = postcode.replace(/\\s/g, \"\")\r\n\r\n\t\tif (isUserAction && !isPostcodeValid(postcode)) {\r\n\t\t\tvoid showModalMessage(\"Postcode search\", \"Please input a complete UK postcode.\")\r\n\t\t\tthrow new Error(\"Invalid postcode\")\r\n\t\t}\r\n\r\n\t\tconst addressesResult = await runAction(addressLookup(postcode))\r\n\t\tif (addressesResult.length === 0 && isUserAction) {\r\n\t\t\tvoid showModalMessage(\r\n\t\t\t\t\"Postcode search\",\r\n\t\t\t\t\"No addresses could be found for the postcode you supplied. Please ensure you have provided a valid UK RESIDENTIAL Postcode.\"\r\n\t\t\t)\r\n\t\t}\r\n\r\n\t\taddresses.value = addressesResult\r\n\t\treturn addressesResult\r\n\t}\r\n\r\n\treturn {\r\n\t\taddresses,\r\n\t\tlookupPostcode,\r\n\t\tmatchAddress,\r\n\t}\r\n}\r\n","import { fixPostcode, isPostcodeValid } from \"@/utils/postcode\"\r\nimport { ref, type InputHTMLAttributes } from \"vue\"\r\nimport { defineComponent, inferProps, useInputValidation, useOnInput, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\tpostcode: string\r\n\tsetPostcode(postcode: string): void\r\n}\r\n\r\nconst PostcodeInput: ReactiveComponent = (props, { attrs }) => {\r\n\tconst inputRef = ref()\r\n\r\n\tfunction updatePostcode(postcode: string) {\r\n\t\tlet result = \"\"\r\n\t\twhile (postcode.includes(\" \")) {\r\n\t\t\tpostcode = postcode.replace(\" \", \" \")\r\n\t\t}\r\n\t\tfor (const ch of postcode.toUpperCase().trimStart()) {\r\n\t\t\tif (/([A-Z0-9]|\\s)/.test(ch)) {\r\n\t\t\t\tresult += ch\r\n\t\t\t}\r\n\t\t}\r\n\t\tprops.setPostcode(result)\r\n\t}\r\n\r\n\tuseInputValidation(inputRef, () => {\r\n\t\tconst postcode = App.CustomerClaim.Postcode\r\n\t\tif (!isPostcodeValid(postcode)) {\r\n\t\t\treturn \"Please enter a valid postcode\"\r\n\t\t}\r\n\t\tprops.setPostcode(fixPostcode(postcode))\r\n\t\treturn true\r\n\t})\r\n\r\n\treturn () => (\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(PostcodeInput, inferProps())\r\n","import usePostcodeLookup from \"@/composition/usePostcodeLookup\"\r\nimport { fixPostcode, isPostcodeValid } from \"@/utils/postcode\"\r\nimport { toReactive } from \"@vueuse/core\"\r\nimport { computed, ref, toRef, watch } from \"vue\"\r\nimport { defineComponent, inferProps, type ReactiveComponent } from \"vue-utils\"\r\nimport PostcodeInput from \"./PostcodeInput\"\r\n\r\ninterface AddressLike {\r\n\tAddress1: string\r\n\tAddress2: string\r\n\tAddress3: string\r\n\tCounty: string\r\n\tPostcode: string\r\n}\r\n\r\ninterface Props {\r\n\taddress: AddressLike\r\n\tupdateAddress(data: Partial): void\r\n}\r\n\r\nconst AddressInput: ReactiveComponent = (props) => {\r\n\tconst { addresses, lookupPostcode, matchAddress } = usePostcodeLookup()\r\n\r\n\tconst address = toReactive(toRef(props, \"address\"))\r\n\tconst hasAddress = computed(() => !!address.Address1 && address.Address1.length > 0)\r\n\r\n\tconst addressId = ref(\"\")\r\n\tasync function lookUpAddresses(replaceExisting: boolean) {\r\n\t\tconst results = await lookupPostcode(address.Postcode)\r\n\t\taddressId.value = results.find((result) => hasAddress.value && result.StreetAddress.startsWith(address.Address1))?.AddressId ?? \"\"\r\n\r\n\t\tif (replaceExisting) {\r\n\t\t\tprops.updateAddress({\r\n\t\t\t\tAddress1: \"\",\r\n\t\t\t\tAddress2: \"\",\r\n\t\t\t\tAddress3: \"\",\r\n\t\t\t\tCounty: \"\",\r\n\t\t\t\tPostcode: fixPostcode(address.Postcode),\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\twatch(addressId, () => void selectAddress())\r\n\r\n\tasync function selectAddress() {\r\n\t\tconst address = await matchAddress(addressId.value)\r\n\t\tif (address) {\r\n\t\t\tprops.updateAddress({\r\n\t\t\t\tAddress1: address.Address1,\r\n\t\t\t\tAddress2: address.Address2,\r\n\t\t\t\tAddress3: address.Address3,\r\n\t\t\t\tCounty: address.County,\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tif (isPostcodeValid(address.Postcode)) {\r\n\t\tvoid lookUpAddresses(false)\r\n\t}\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{hasAddress.value && (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t props.updateAddress({ Postcode: postcode })}\r\n\t\t\t\t\tonChange={() => void lookUpAddresses(true)}\r\n\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(AddressInput, inferProps())\r\n","import { defineComponent, inferProps, useOnInput, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\ttitle: string\r\n\tsetTitle(title: string): void\r\n}\r\n\r\nconst SelectTitle: ReactiveComponent = (props) => {\r\n\treturn () => (\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(SelectTitle, inferProps())\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport { useEmailDidYouMean } from \"@/composition/useEmailDidYouMean\"\r\nimport { validateInternationalMobile, validateUKMobile } from \"@/utils/validation\"\r\nimport { ref } from \"vue\"\r\nimport { defineComponent, useInputValidation, type ReactiveComponent } from \"vue-utils\"\r\nimport AddressInput from \"../standard/components/AddressInput\"\r\nimport SelectTitle from \"../standard/components/SelectTitle\"\r\n\r\ntype TelType = \"uk\" | \"intl\"\r\n\r\nconst AboutYouStep: ReactiveComponent = () => {\r\n\t//copy claim details to MOD Claim if needed\r\n\tif (App.MODClaim.Title === \"na\") {\r\n\t\tApp.MODClaim.CustomerId = App.CustomerClaim.CustomerId\r\n\t\tApp.MODClaim.ClaimId = App.CustomerClaim.ClaimId\r\n\t\tApp.MODClaim.Title = App.CustomerClaim.Title\r\n\t\tApp.MODClaim.FirstName = App.CustomerClaim.FirstName\r\n\t\tApp.MODClaim.Surname = App.CustomerClaim.Surname\r\n\t\tApp.MODClaim.EmailAddress = App.CustomerClaim.Email\r\n\t\tApp.MODClaim.BrandId = App.CustomerClaim.BrandId\r\n\t\tApp.MODClaim.Postcode = App.CustomerClaim.Postcode\r\n\t\tApp.MODClaim.Address1 = App.CustomerClaim.Address1\r\n\t\tApp.MODClaim.Address2 = App.CustomerClaim.Address2\r\n\t\tApp.MODClaim.Address3 = App.CustomerClaim.Address3\r\n\t\tApp.MODClaim.County = App.CustomerClaim.County\r\n\t\tApp.MODClaim.MobileNumber = App.CustomerClaim.Phone\r\n\t\tApp.CustomerClaim.ClaimStatus = 40 //set main claim object to 'Third Pty' status\r\n\t}\r\n\r\n\tconst telRef = ref()\r\n\tconst telType = ref(App.MODClaim.MobileNumber === \"\" || validateUKMobile(App.MODClaim.MobileNumber) ? \"uk\" : \"intl\")\r\n\r\n\tuseInputValidation(telRef, () => {\r\n\t\tif (telType.value === \"uk\") {\r\n\t\t\tif (App.MODClaim.MobileNumber === \"\" || !validateUKMobile(App.MODClaim.MobileNumber)) {\r\n\t\t\t\treturn \"Please provide a valid UK phone number\"\r\n\t\t\t}\r\n\t\t} else if (App.MODClaim.MobileNumber === \"\" || !validateInternationalMobile(App.MODClaim.MobileNumber)) {\r\n\t\t\treturn \"Please provide a valid phone number\"\r\n\t\t}\r\n\t\treturn true\r\n\t})\r\n\r\n\tuseEmailDidYouMean(\r\n\t\tApp.CustomerClaim.ClaimId,\r\n\t\t() => App.MODClaim.EmailAddress,\r\n\t\t(newEmail) => (App.MODClaim.EmailAddress = newEmail)\r\n\t)\r\n\r\n\treturn () => (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t

\r\n\t\t\t\t\tMOD Claim | About you\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t (App.MODClaim.Title = title)} />\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t{/* */}\r\n\t\t\t
\r\n\r\n\t\t\t {\r\n\t\t\t\t\tObject.assign(App.CustomerClaim, newAddress)\r\n\t\t\t\t\tObject.assign(App.MODClaim, newAddress)\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default defineComponent(AboutYouStep)\r\n","import { renderSlot, type InputHTMLAttributes } from \"vue\"\r\nimport { defineComponent, inferProps, type ReactiveComponent } from \"vue-utils\"\r\nimport RadioButton from \"./RadioButton\"\r\n\r\ninterface Props {\r\n\tname: string\r\n\tvalue: boolean | null | undefined\r\n\tsetValue?: (newValue: boolean) => void\r\n\trequired?: boolean\r\n\treadonly?: boolean\r\n\tlegend?: string\r\n\r\n\t/**\r\n\t * If true, render the yes option before the no option.\r\n\t * @default false\r\n\t */\r\n\treverse?: boolean\r\n}\r\n\r\nconst RadioButtons: ReactiveComponent = (props, { emit, attrs, slots }) => {\r\n\tfunction setValue(value: boolean) {\r\n\t\temit(\"input\", value)\r\n\t\tprops.setValue?.(value)\r\n\t}\r\n\r\n\tfunction renderNo() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\tNo\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\r\n\tfunction renderYes() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\tYes\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\r\n\treturn () => (\r\n\t\t
\r\n\t\t\t{(props.legend || \"default\" in slots) && {props.legend ? props.legend : renderSlot(slots, \"default\")}}\r\n\t\t\t
\r\n\t\t\t\t{props.reverse ? renderYes() : renderNo()}\r\n\t\t\t\t{props.reverse ? renderNo() : renderYes()}\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default defineComponent(RadioButtons, inferProps())\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport RadioButtons from \"@/components/RadioButtons\"\r\nimport { computed } from \"vue\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst BasicInformationStep: ReactiveComponent = () => {\r\n\tconst canMoveForward = computed(\r\n\t\t() =>\r\n\t\t\tApp.MODClaim.CompletedPhaseOneTraining !== false &&\r\n\t\t\tApp.MODClaim.PostedToBaseTwoYearsOrLess !== false &&\r\n\t\t\tApp.MODClaim.UseOwnVehicle !== false\r\n\t)\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t

MOD Tax Rebate Claims

\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tYou could be owed a £2,500 tax refund for your travel expenses. Bases outside the UK are included, and you might also be able to\r\n\t\t\t\t\t\tclaim for Mess Dress.\r\n\t\t\t\t\t

\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tThis is a complex claim and we've heard reports of some claims being rejected when submitted by inexperienced advisors. For that\r\n\t\t\t\t\t\treason we would like to refer you to our expert partners who have obtained confirmation on the validity of claims both from HMRC and\r\n\t\t\t\t\t\tthe MOD so you can have peace of mind that your refund is yours to keep when you receive it.\r\n\t\t\t\t\t

\r\n\t\t\t\t\t

If you complete the form below our partners will be in touch shortly about your free without obligation assessment.

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t (App.MODClaim.CompletedPhaseOneTraining = value)}\r\n\t\t\t\t\trequired\r\n\t\t\t\t/>\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t (App.MODClaim.PostedToBaseTwoYearsOrLess = value)}\r\n\t\t\t\t\trequired\r\n\t\t\t\t/>\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t (App.MODClaim.UseOwnVehicle = value)}\r\n\t\t\t\t\trequired\r\n\t\t\t\t/>\r\n\t\t\t
\r\n\t\t\t{!canMoveForward.value && (\r\n\t\t\t\t
\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tBased on the information you provided above, you won't be able to make a claim at this time.\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(BasicInformationStep)\r\n","import type { ClaimCustomer, MODClaim } from \"./types\"\r\n\r\nexport const defaultCustomerClaim: ClaimCustomer = {\r\n\tUserId: \"\",\r\n\tClaimId: 0,\r\n\tCustomerId: 0,\r\n\tDateStamp: null,\r\n\tClaimStatus: 1,\r\n\tTitle: \"\",\r\n\tAddress1: \"\",\r\n\tAddress2: \"\",\r\n\tAddress3: \"\",\r\n\tCounty: \"\",\r\n\tPostcode: \"\",\r\n\tDateOfBirth: null,\r\n\tFirstName: \"\",\r\n\tSurname: \"\",\r\n\tEmail: \"\",\r\n\tPhone: \"\",\r\n\tnoPhone: false,\r\n\tIPAddress: IP,\r\n\tMarried: null,\r\n\tEmployed: null,\r\n\tSpouseEmployed: false,\r\n\tEarningsAboveMinimum: null,\r\n\tMarriageAllowanceTransfer: null,\r\n\tClaimedUniformAllowanceCurrentJob: null,\r\n\tClaimedUniformAllowancePreviousJob: null,\r\n\tNI: \"\",\r\n\tThirdPtyPermission: null,\r\n\tTaxYearIds: [],\r\n\tAverageRefund: 0,\r\n\tMaxRefund: 0,\r\n\tAnnualRefund: 0,\r\n\tEstimatedClaim: 0,\r\n\tBrandId: brand.BrandId,\r\n\tAcceptedTerms: false,\r\n\tselfAssessed: null,\r\n\temailConfirm: \"\",\r\n\tniConfirm: \"\",\r\n\tUniformBenefitsSignUpCompleted: false,\r\n\tSourceBrandId: brand.BrandId,\r\n\tSignatureSVG: \"\",\r\n\tSARSignatureSVG: \"\",\r\n\tAWC: awcvalue,\r\n\tEmploymentRecords: [],\r\n\tEmployers: [\r\n\t\t{\r\n\t\t\tEmployerName: \"\",\r\n\t\t\tPAYEReference: \"\",\r\n\t\t\tAddress: \"\",\r\n\t\t\tYearCommenced: null,\r\n\t\t\tPostcode: \"\",\r\n\t\t\tLookupDataSectorIdentifier: \"\",\r\n\t\t\tLookupDataSectorCategoryIndex: null,\r\n\t\t\tOccupationId: null,\r\n\t\t\tIndustryId: null,\r\n\t\t\tJobTitle: \"\",\r\n\t\t\tWoreUniform: null,\r\n\t\t},\r\n\t],\r\n\tConsentContactEmployers: null,\r\n\tSubscriptions: [],\r\n\tClaimedBefore: null,\r\n\tOccupationDeduction: null,\r\n\tTaxYearStatuses: [],\r\n\tClientPath: window.location.pathname,\r\n\tMarriageDate: \"\",\r\n\tMarriageData: null,\r\n\tWorkFromHomeYears: [],\r\n\tEarningsBand: null,\r\n\tEarningsBandSpouse: null,\r\n\tSACEarns100k: null,\r\n\tSAC10kInvestmentsIncome: null,\r\n\tSACEarns50kPlusBens: null,\r\n\tSACFilesTaxReturn: null,\r\n\tSACHasAccountant: null,\r\n\tSACHasBusiness: null,\r\n\tSACHasProperty: null,\r\n\tSACIncomeFromOtherCountry: null,\r\n\tSACIsDirector: null,\r\n\tSACIsSelfEmployed: null,\r\n\tSourceData: sourcedata,\r\n\tTrustPilotSiteUrl: \"\",\r\n\tIsRepeatCustomer: false,\r\n\tOtherExpenses: 0,\r\n\tMarriageClaimTaxYears: null,\r\n\tMarriageClaimSkipped: false,\r\n\tQualifiesForMarriageClaim: null,\r\n\tSampleOccupationRefunds: [],\r\n\tWoreUniformTaxYears: [],\r\n\tRoughAnnualSalary: null,\r\n\tResumeLink: null,\r\n\tHMRCPermission: null,\r\n\tSubscriptionsPermission: null,\r\n\tSubscriptionsSignatureSVG: null,\r\n\tSubscriptionAmountsConfirmed: null,\r\n}\r\n\r\nexport const defaultMODClaim: MODClaim = {\r\n\tID: 0,\r\n\tCompletedPhaseOneTraining: null,\r\n\tPostedToBaseTwoYearsOrLess: null,\r\n\tUseOwnVehicle: null,\r\n\tTitle: \"na\",\r\n\tFirstName: \"\",\r\n\tSurname: \"\",\r\n\tMobileNumber: \"\",\r\n\tEmailAddress: \"\",\r\n\tPostcode: \"\",\r\n\tAddress1: \"\",\r\n\tAddress2: \"\",\r\n\tAddress3: \"\",\r\n\tCounty: \"\",\r\n\tAdditionalInfo: \"\",\r\n\tCustomerId: 0,\r\n\tClaimId: 0,\r\n\tBrandId: 1,\r\n}\r\n","import { defaultCustomerClaim, defaultMODClaim } from \"@/defaults\"\r\nimport { setClaimStep } from \"@/step-handler\"\r\nimport ClaimSteps from \"@/steps\"\r\nimport { defineGlobals } from \"vue-utils\"\r\n\r\nexport function closeClaimClearData() {\r\n\tclearLocalStorage()\r\n\r\n\twindow.location.replace(\"/\")\r\n}\r\n\r\nexport async function clearClaimData() {\r\n\tclearLocalStorage()\r\n\r\n\tawait setClaimStep(ClaimSteps.InitialStep, {\r\n\t\tinitialLoad: true,\r\n\t})\r\n\tApp.CustomerClaim = defaultCustomerClaim\r\n\tApp.MODClaim = defaultMODClaim\r\n\tApp.IsQuickEstimate = true\r\n}\r\n\r\nexport function clearLocalStorage() {\r\n\tlocalStorage.removeItem(\"CustomerClaim\")\r\n\tlocalStorage.removeItem(\"MODClaim\")\r\n\tlocalStorage.removeItem(\"ClaimType\")\r\n\tlocalStorage.removeItem(\"ClaimStage\")\r\n\tlocalStorage.removeItem(\"MarriageClaim\")\r\n}\r\n\r\ndefineGlobals({ clearClaimData })\r\n","import { closeClaimClearData } from \"@/utils/clearClaim\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst DetailsPassedStep: ReactiveComponent = () => {\r\n\tfunction closeTax(e: Event) {\r\n\t\te.preventDefault()\r\n\t\tcloseClaimClearData()\r\n\t}\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

Thank you

\r\n\t\t\t\t

Thanks for showing an interest in claiming your tax rebate.

\r\n\t\t\t\t

\r\n\t\t\t\t\tWe have passed your details to our partner,\r\n\t\t\t\t\tRift Group\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(DetailsPassedStep)\r\n","export function useGoToNext(checkIsValid: (inputValue: string) => boolean): (e: Event) => void {\r\n\treturn (e) => {\r\n\t\tconst val = (e.target as HTMLInputElement).value\r\n\t\tif (checkIsValid(val)) {\r\n\t\t\tgoToNextFocusable(e.target as Element)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function goToNextFocusable(root: Element) {\r\n\tlet currentElement = root\r\n\twhile (true) {\r\n\t\tconst next = currentElement.nextElementSibling\r\n\t\tif (!next) return\r\n\t\tif (next instanceof HTMLInputElement || next instanceof HTMLSelectElement) {\r\n\t\t\tif (!next.disabled) {\r\n\t\t\t\tnext.focus()\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (const nested of next.querySelectorAll(\"input select\")) {\r\n\t\t\tconst element = nested as HTMLInputElement | HTMLSelectElement\r\n\t\t\tif (!element.disabled) {\r\n\t\t\t\telement.focus()\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcurrentElement = next\r\n\t}\r\n}\r\n","import { useGoToNext } from \"@/composition/useNext\"\r\nimport { css } from \"vite-css-in-js\"\r\nimport { ref, shallowRef, toRef, watch, type InputHTMLAttributes } from \"vue\"\r\nimport { defineComponent, inferProps, useInputValidation, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\tdate: Date | null | string\r\n\tlabel: string | null\r\n\tsetDate(date: string): void\r\n}\r\n\r\nconst inputRegex = /^((0[1-9])|([1-2]\\d)|(3[0-1]))\\/((0[1-9])|10|11|12)\\/((19|20)\\d{2})$/\r\n\r\nconst inputStyles = css`\r\n\t//Firefox\r\n\t-moz-appearance: textfield;\r\n\r\n\t//Chromium\r\n\t:-webkit-outer-spin-button,\r\n\t:-webkit-inner-spin-button {\r\n\t\t-webkit-appearance: none;\r\n\t\tmargin: 0;\r\n\t}\r\n\r\n\ttext-align: center;\r\n`\r\n\r\nfunction formatDate(date: Date): string {\r\n\tif (!Number.isFinite(date.valueOf())) {\r\n\t\treturn \"\"\r\n\t}\r\n\treturn date.toLocaleDateString(\"en-GB\", {\r\n\t\tday: \"2-digit\",\r\n\t\tmonth: \"2-digit\",\r\n\t\tyear: \"numeric\",\r\n\t})\r\n}\r\n\r\nfunction getDayStr(date: Props[\"date\"]): string {\r\n\treturn formatDateInputString(date).split(\"/\")[0]\r\n}\r\nfunction getMonthStr(date: Props[\"date\"]): string {\r\n\treturn formatDateInputString(date).split(\"/\")[1]\r\n}\r\nfunction getYearStr(date: Props[\"date\"]): string {\r\n\treturn formatDateInputString(date).split(\"/\")[2]\r\n}\r\n\r\nfunction formatDateInputString(date: Props[\"date\"]): string {\r\n\tif (!date) {\r\n\t\treturn \"\"\r\n\t}\r\n\tif (date instanceof Date) {\r\n\t\treturn formatDate(date)\r\n\t}\r\n\tconst parsedDate = new Date(date)\r\n\tif (!Number.isFinite(parsedDate.valueOf())) {\r\n\t\treturn date\r\n\t}\r\n\treturn formatDate(parsedDate)\r\n}\r\n\r\nfunction tryParseDate(str: string): Date | null {\r\n\tif (!inputRegex.test(str)) {\r\n\t\treturn null\r\n\t}\r\n\tconst parts = str.split(\"/\").map((part) => Number.parseInt(part))\r\n\tconst date = new Date(parts[2], parts[1] - 1, parts[0])\r\n\tif (date.getDate() !== parts[0] || date.getMonth() !== parts[1] - 1 || date.getFullYear() !== parts[2]) {\r\n\t\treturn null\r\n\t}\r\n\treturn date\r\n}\r\n\r\nconst SplitDateInput: ReactiveComponent> = (props, { attrs }) => {\r\n\tconst inputRef = shallowRef()\r\n\r\n\tconst dayStr = ref(getDayStr(props.date))\r\n\tconst monthStr = ref(getMonthStr(props.date))\r\n\tconst yearStr = ref(getYearStr(props.date))\r\n\r\n\tlet dateStr = `${dayStr.value}/${monthStr.value}/${yearStr.value}`\r\n\twatch(toRef(props, \"date\"), (date) => (dateStr = formatDateInputString(date)))\r\n\r\n\twatch([dayStr, monthStr, yearStr], () => {\r\n\t\tif (dayStr.value && monthStr && yearStr && yearStr.value && yearStr.value.length === 4) {\r\n\t\t\tconst s = `${dayStr.value}/${monthStr.value}/${yearStr.value}`\r\n\t\t\tlet date = tryParseDate(s)\r\n\t\t\tif (date) {\r\n\t\t\t\tconst offset = date.getTimezoneOffset()\r\n\t\t\t\tdate = new Date(date.getTime() - offset * 60 * 1000)\r\n\t\t\t\tprops.setDate(date.toISOString().split(\"T\")[0])\r\n\t\t\t} else {\r\n\t\t\t\tprops.setDate(\"\")\r\n\t\t\t}\r\n\t\t}\r\n\t})\r\n\r\n\tuseInputValidation(inputRef, () => {\r\n\t\tif (dateStr.length > 0 && !tryParseDate(dateStr)) {\r\n\t\t\treturn \"Please enter a valid date\"\r\n\t\t}\r\n\t\treturn true\r\n\t})\r\n\r\n\tfunction checkTwoDigits(value: string) {\r\n\t\treturn /[0-9]{2}/.test(value)\r\n\t}\r\n\r\n\treturn () => (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{props.label}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default defineComponent(SplitDateInput, inferProps())\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport { validateInternationalMobile, validateUKMobile } from \"@/utils/validation\"\r\nimport { ref, watch } from \"vue\"\r\nimport { defineComponent, useCustomValidation, useInputValidation, type ReactiveComponent } from \"vue-utils\"\r\nimport AddressInput from \"./components/AddressInput\"\r\nimport SplitDateInput from \"./components/SplitDateInput\"\r\n\r\ntype TelType = \"uk\" | \"intl\"\r\n\r\nconst AddressStep: ReactiveComponent = () => {\r\n\tconst telRef = ref()\r\n\tconst telType = ref(App.CustomerClaim.Phone === \"\" || validateUKMobile(App.CustomerClaim.Phone) ? \"uk\" : \"intl\")\r\n\r\n\tuseInputValidation(telRef, () => {\r\n\t\tif (App.CustomerClaim.noPhone) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\tif (telType.value === \"uk\") {\r\n\t\t\tif (App.CustomerClaim.Phone === \"\" || !validateUKMobile(App.CustomerClaim.Phone)) {\r\n\t\t\t\treturn \"Please provide a valid UK phone number\"\r\n\t\t\t}\r\n\t\t} else if (App.CustomerClaim.Phone === \"\" || !validateInternationalMobile(App.CustomerClaim.Phone)) {\r\n\t\t\treturn \"Please provide a valid phone number\"\r\n\t\t}\r\n\t\treturn true\r\n\t})\r\n\r\n\tfunction updateSelfAssessed() {\r\n\t\t//When changing the self assessed option to \"no\" or \"not sure\", need to reset the SAC options\r\n\t\tconst selfAssessed = App.CustomerClaim.selfAssessed\r\n\r\n\t\tif (selfAssessed === false || selfAssessed === null) {\r\n\t\t\tconst claim = App.CustomerClaim as unknown as Record\r\n\t\t\tfor (const key in App.CustomerClaim) {\r\n\t\t\t\tif (key.startsWith(\"SAC\")) {\r\n\t\t\t\t\tclaim[key] = selfAssessed\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\twatch(() => App.CustomerClaim.selfAssessed, updateSelfAssessed)\r\n\r\n\tuseCustomValidation(() => {\r\n\t\tif (!App.CustomerClaim.DateOfBirth) return \"Please enter your date of birth\"\r\n\t\tconst MaxYear = new Date().getFullYear() - 15\r\n\t\tconst MinYear = new Date().getFullYear() - 100\r\n\t\tconst DoB = new Date(App.CustomerClaim.DateOfBirth)\r\n\t\tif (DoB.getFullYear() < MinYear || DoB.getFullYear() > MaxYear) return \"Please enter a valid date of birth\"\r\n\t\tif (App.CustomerClaim.Address1 === \"\") return \"Please ensure you have chosen your address\"\r\n\t\treturn true\r\n\t})\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
Are you required to prepare a self-assessment tax return?
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t Object.assign(App.CustomerClaim, data)} />\r\n\r\n\t\t\t
\r\n\t\t\t\t (App.CustomerClaim.DateOfBirth = date)}\r\n\t\t\t\t\tplaceholder=\"Your date of birth\"\r\n\t\t\t\t\tlabel=\"Your date of birth\"\r\n\t\t\t\t\trequired\r\n\t\t\t\t/>\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{App.CustomerClaim.noPhone ? (\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\tOR\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(AddressStep)\r\n","import { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport { showTrustPilotModal } from \"@/utils/miscPageUtils\"\r\n\r\nconst CompleteStep: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

Thanks! You have completed your claim

\r\n\t\t\t\t

Your claim is complete! How easy was that?

\r\n\t\t\t\t

Rate your experience so far:

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t void showTrustPilotModal(App.CustomerClaim.ClaimId, App.CustomerClaim.TrustPilotSiteUrl)}\r\n\t\t\t\t\tclass=\"btn btn-success\"\r\n\t\t\t\t>\r\n\t\t\t\t\tI would give it 5 stars\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
Why not?
\r\n\t\t\t\t\r\n\t\t\t\t\tLeave feedback\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

\r\n\t\t\t\t\tYour unique claim reference is{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{brand.Abbreviation}\r\n\t\t\t\t\t\t{App.CustomerClaim.ClaimId}\r\n\t\t\t\t\t\r\n\t\t\t\t

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

\r\n\t\t\t\t\tPlease make a note of this reference or print this page as you will need your claim number if you have any\r\n\t\t\t\t\tenquiries.\r\n\t\t\t\t

\r\n\t\t\t\t

You will have been sent an email to confirm your claim.

\r\n\t\t\t\t

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tIMPORTANT – we will keep you up to date about the progress of your claim by email. Please do the following\r\n\t\t\t\t\t\tto ensure you receive our emails:\r\n\t\t\t\t\t\r\n\t\t\t\t\t

    \r\n\t\t\t\t\t\t
  1. Check your email now to see if you have received an email from us.
  2. \r\n\t\t\t\t\t\t
  3. \r\n\t\t\t\t\t\t\tIf no email is there please check your 'spam' and 'promotions' folders and move any email from us to your\r\n\t\t\t\t\t\t\tmain inbox.\r\n\t\t\t\t\t\t
  4. \r\n\t\t\t\t\t
\r\n\t\t\t\t

\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

\r\n\t\t\t\t\tIf you wish to cancel your claim please visit{\" \"}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tthis link\r\n\t\t\t\t\t\r\n\t\t\t\t\t.\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(CompleteStep)\r\n","import { defineGlobals } from \"vue-utils\"\r\n\r\nexport function animateFigures() {\r\n\t$(\".countup\").each(function () {\r\n\t\tconst val = Math.ceil(Number.parseFloat(String($(this).data(\"value\"))))\r\n\t\tconst text = $(this).text()\r\n\r\n\t\tif (testMode) console.log(`detected count up tag with max value of: ${val}`)\r\n\r\n\t\tif (text === \"-\") {\r\n\t\t\t$(this).text(val.toString().replace(/(\\d)(?=(\\d{3})+(?:\\.\\d+)?$)/g, \"$1,\"))\r\n\t\t\t$(this)\r\n\t\t\t\t.prop(\"Counter\", 0)\r\n\t\t\t\t.animate(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tCounter: val,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tduration: 2000,\r\n\t\t\t\t\t\teasing: \"swing\",\r\n\t\t\t\t\t\tstep(now) {\r\n\t\t\t\t\t\t\t$(this).text(\r\n\t\t\t\t\t\t\t\tMath.ceil(now)\r\n\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t.replace(/(\\d)(?=(\\d{3})+(?:\\.\\d+)?$)/g, \"$1,\")\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t}\r\n\t})\r\n}\r\n\r\ndefineGlobals({ animateFigures })\r\n","import { onMounted, ref } from \"vue\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\ndeclare const Trustpilot: {\r\n\tloadFromElement(element: Element): void\r\n}\r\n\r\nconst TrustPilotDisplay: ReactiveComponent = () => {\r\n\tconst devRef = ref()\r\n\r\n\tonMounted(() => {\r\n\t\tif (devRef.value) {\r\n\t\t\tTrustpilot.loadFromElement(devRef.value)\r\n\t\t}\r\n\t})\r\n\r\n\treturn () => (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\tTrustpilot\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(TrustPilotDisplay)\r\n","import { goToNextStep, goToPreviousStep } from \"@/step-handler\"\r\nimport { animateFigures } from \"@/utils/animate\"\r\nimport { onMounted } from \"vue\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport TrustPilotDisplay from \"./components/TrustPilotDisplay\"\r\n\r\nconst CurrencyFormat = new Intl.NumberFormat(\"en-GB\", {\r\n\tstyle: \"currency\",\r\n\tcurrency: \"GBP\",\r\n})\r\nconst TotalFormat = new Intl.NumberFormat(\"en-GB\", {\r\n\tmaximumSignificantDigits: 3,\r\n})\r\n\r\nconst EstimateStep: ReactiveComponent = () => {\r\n\tconst termsEl = document.getElementById(\"calculator-terms-1\") as HTMLTemplateElement\r\n\r\n\tfunction formatCurrency(amount: number) {\r\n\t\treturn CurrencyFormat.format(amount)\r\n\t}\r\n\tfunction formatTotal(total: number) {\r\n\t\treturn TotalFormat.format(total)\r\n\t}\r\n\r\n\tonMounted(() => {\r\n\t\tanimateFigures()\r\n\t})\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{!!App.CustomerClaim && (\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{App.CustomerClaim.Title} {App.CustomerClaim.FirstName} {App.CustomerClaim.Surname}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tYour Refund Estimate\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t£\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t-\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tLargest Refund\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{!!App.CustomerClaim.SampleOccupationRefunds && App.CustomerClaim.SampleOccupationRefunds.length > 0 && (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tRecent Similar Refunds\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{App.CustomerClaim.SampleOccupationRefunds.map((r) => (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t£\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t-\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{App.CustomerClaim.SampleOccupationRefunds.indexOf(r) < App.CustomerClaim.SampleOccupationRefunds.length - 1\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \",\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tAverage Refund\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t£\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t-\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t void goToPreviousStep()}\r\n\t\t\t\t\t\t\t\tstyle={{ border: \"none\", textTransform: \"none\", opacity: 0.9, fontSize: \"1rem\" }}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t Adjust my details\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t

What our customers think

\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t{formatCurrency(claimsTotalMin)}\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t

Total claims

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\t{formatTotal(noOfClaimsMin)}\r\n\t\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t

Successful claims

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t

{\"<\"} 60

\r\n\t\t\t\t\t\t\t\t

Seconds to claim

\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\tComplete your claim in less than 60 seconds\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tComplete your claim in less than 60 seconds\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(EstimateStep)\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport { useEmailDidYouMean } from \"@/composition/useEmailDidYouMean\"\r\nimport { shallowRef } from \"vue\"\r\nimport { defineComponent, useInputValidation, type ReactiveComponent } from \"vue-utils\"\r\nimport SelectTitle from \"./components/SelectTitle\"\r\nimport TrustPilotDisplay from \"./components/TrustPilotDisplay\"\r\n\r\nconst NameStep: ReactiveComponent = () => {\r\n\tconst emailInputRef = shallowRef()\r\n\r\n\tuseInputValidation(emailInputRef, () => {\r\n\t\tif (App.CustomerClaim.Email !== App.CustomerClaim.emailConfirm) {\r\n\t\t\treturn \"Please ensure both emails match.\"\r\n\t\t}\r\n\t\treturn true\r\n\t})\r\n\r\n\tuseEmailDidYouMean(\r\n\t\tApp.CustomerClaim.ClaimId,\r\n\t\t() => App.CustomerClaim.Email,\r\n\t\t(newEmail) => {\r\n\t\t\t//Set both email & email confirm - assumption is at this point validation has passed they are the same\r\n\t\t\tApp.CustomerClaim.Email = newEmail\r\n\t\t\tApp.CustomerClaim.emailConfirm = newEmail\r\n\t\t}\r\n\t)\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t (App.CustomerClaim.Title = title)} />\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t{!suppressUBOptin ? (\r\n\t\t\t\t
\r\n\t\t\t\t\tThis FREE tax rebate estimate is provided by One Time Refund Ltd.\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t) : (\r\n\t\t\t\t\r\n\t\t\t)}\r\n\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(NameStep)\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport { goToNextFocusable } from \"@/composition/useNext\"\r\nimport { validateInternationalMobile, validateUKMobile } from \"@/utils/validation\"\r\nimport { ref } from \"vue\"\r\nimport { defineComponent, useCustomValidation, useInputValidation, type ReactiveComponent } from \"vue-utils\"\r\n\r\ntype TelType = \"uk\" | \"intl\"\r\n\r\nconst NationalInsuranceStep: ReactiveComponent = () => {\r\n\tconst telRef = ref()\r\n\tconst telType = ref(App.CustomerClaim.Phone === \"\" || validateUKMobile(App.CustomerClaim.Phone) ? \"uk\" : \"intl\")\r\n\r\n\tuseInputValidation(telRef, () => {\r\n\t\tif (App.CustomerClaim.noPhone) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\tif (telType.value === \"uk\") {\r\n\t\t\tif (App.CustomerClaim.Phone === \"\" || !validateUKMobile(App.CustomerClaim.Phone)) {\r\n\t\t\t\treturn \"Please provide a valid UK phone number\"\r\n\t\t\t}\r\n\t\t} else if (App.CustomerClaim.Phone === \"\" || !validateInternationalMobile(App.CustomerClaim.Phone)) {\r\n\t\t\treturn \"Please provide a valid phone number\"\r\n\t\t}\r\n\t\treturn true\r\n\t})\r\n\r\n\tfunction niValue(index: number) {\r\n\t\tconst ni = App.CustomerClaim.NI\r\n\t\treturn ni.length <= index ? \"\" : App.CustomerClaim.NI.charAt(index)\r\n\t}\r\n\tfunction setNiValue(index: number, char: string) {\r\n\t\tconst ni = App.CustomerClaim.NI.padEnd(index + 1, \" \")\r\n\t\tApp.CustomerClaim.NI = ni.substring(0, index) + char.toUpperCase() + ni.substring(index + 1)\r\n\t\tApp.CustomerClaim.NI = App.CustomerClaim.NI.substring(0, 9)\r\n\t}\r\n\tfunction isCharacterInput(index: number) {\r\n\t\treturn index === 0 || index === 1 || index === 8\r\n\t}\r\n\tfunction checkNIDigit(value: string, index: number) {\r\n\t\treturn value.length > 0 && (isCharacterInput(index) ? /[a-z]/i.test(value) : /[0-9]/.test(value))\r\n\t}\r\n\tuseCustomValidation(() => {\r\n\t\t//const niReg = /^[a-ceghj-pr-tw-zA-CEGHJ-PR-TW-Z]{1}[a-ceghj-pr-tw-zA-CEGHJ-NPR-TW-Z]{1}[0-9]{6}[a-dfmA-DFM]{0,1}$/\r\n\t\t// https://stackoverflow.com/questions/10204378/regular-expression-to-validate-uk-national-insurance-number\r\n\t\tconst niReg = /^(?!BG|GB|NK|KN|TN|NT|ZZ)[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z](?:\\s?\\d){6}\\s?[A-DM ]$/i\r\n\t\tconst niResult = niReg.test(App.CustomerClaim.NI)\r\n\t\treturn niResult ? true : \"Please enter a valid NI number\"\r\n\t})\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t

Final Details

\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\tIn order to process your claim we will need your National Insurance Number and your phone number.\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t

\r\n\t\t\t\t\tNational Insurance Number (eg AA 123456 B)\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{Array.from({ length: 9 }, (_, i) => (\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tconst target = e.target as HTMLInputElement\r\n\t\t\t\t\t\t\tsetNiValue(i, target.value)\r\n\t\t\t\t\t\t\tif (checkNIDigit(target.value, i)) {\r\n\t\t\t\t\t\t\t\tgoToNextFocusable(target)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tplaceholder={isCharacterInput(i) ? \"X\" : \"0\"}\r\n\t\t\t\t\t\tmaxlength={1}\r\n\t\t\t\t\t\tclass=\"form-control fragment required\"\r\n\t\t\t\t\t\trequired\r\n\t\t\t\t\t\tv-mask={isCharacterInput(i) ? \"A\" : \"#\"}\r\n\t\t\t\t\t/>\r\n\t\t\t\t))}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{!App.CustomerClaim.noPhone ? (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\tMobile Phone\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\tMobile Phone\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(NationalInsuranceStep)\r\n","import { closeClaimClearData } from \"@/utils/clearClaim\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst ResumeClaim: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t {\r\n\t\t\t\t\tApp.InitialLoadWithExistingClaim = false\r\n\t\t\t\t\tApp.IsQuickEstimate = false\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\tCarry on with your quote \r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default defineComponent(ResumeClaim)\r\n","/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\r\nimport { css } from \"vite-css-in-js\"\r\nimport { ref, type HTMLAttributes, type InputHTMLAttributes } from \"vue\"\r\nimport { defineComponent, inferProps, useOnInput, type Component, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\tsearchTerm: string\r\n\tsetSearch(term: string): void\r\n\r\n\tgetKey(option: T): string\r\n\tgetText(option: T): string\r\n\r\n\tsetOption(option: T): void\r\n\r\n\toptions: T[]\r\n\r\n\tinputProps?: InputHTMLAttributes\r\n\r\n\tplaceholder?: string\r\n\tdisabled?: boolean\r\n}\r\n\r\nconst selectStyles = css`\r\n\tposition: absolute;\r\n\tz-index: 2;\r\n\tleft: 0;\r\n\tright: 0;\r\n\ttop: 100%;\r\n\twidth: 100%;\r\n\tmax-height: 50vh;\r\n\toverflow: auto;\r\n\r\n\tlist-style: none;\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\ttext-align: left;\r\n\r\n\tbackground-color: white;\r\n\tborder: 1px solid rgba(0, 0, 0, 0.25);\r\n\tborder-radius: 0.5rem;\r\n\tborder-top-left-radius: 0;\r\n\tborder-top-right-radius: 0;\r\n\tborder-top: none;\r\n\r\n\t& > li {\r\n\t\tcolor: initial;\r\n\t\tmargin: 0;\r\n\t\tpadding: 0.35rem 0.5rem;\r\n\t\tfont-size: 0.95rem;\r\n\t\ttransition: initial;\r\n\r\n\t\t&[data-hover=\"true\"] {\r\n\t\t\tcolor: white;\r\n\t\t\tbackground-color: #f36d21;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\t}\r\n`\r\n\r\nconst createSearchSelect = (): Component, HTMLAttributes> => {\r\n\tconst SearchSelect: ReactiveComponent, HTMLAttributes> = (props, { attrs }) => {\r\n\t\tconst isOpen = ref(false)\r\n\t\tconst hoveredItem = ref(null)\r\n\t\tconst listRef = ref()\r\n\r\n\t\tfunction handleArrowNavigation(e: KeyboardEvent) {\r\n\t\t\tif (!isOpen.value || (e.key !== \"ArrowDown\" && e.key !== \"ArrowUp\")) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tconst index = props.options.findIndex((option) => props.getKey(option) === hoveredItem.value)\r\n\t\t\tlet newIndex = e.key === \"ArrowDown\" ? index + 1 : index - 1\r\n\t\t\tif (newIndex < 0) {\r\n\t\t\t\tnewIndex = props.options.length - 1\r\n\t\t\t} else if (newIndex >= props.options.length) {\r\n\t\t\t\tnewIndex = 0\r\n\t\t\t}\r\n\r\n\t\t\tif (newIndex >= 0 && newIndex < props.options.length) {\r\n\t\t\t\thoveredItem.value = props.getKey(props.options[newIndex])\r\n\r\n\t\t\t\tconst container = listRef.value\r\n\t\t\t\tif (container && container.children.length >= newIndex) {\r\n\t\t\t\t\tconst child = container.children[newIndex]\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tchild instanceof HTMLLIElement &&\r\n\t\t\t\t\t\tchild.dataset.key === hoveredItem.value &&\r\n\t\t\t\t\t\t(child.offsetTop + child.clientHeight >= container.clientHeight + container.scrollTop || child.offsetTop <= container.scrollTop)\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tcontainer.scrollTop = child.offsetTop - container.clientHeight + child.clientHeight\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\te.preventDefault()\r\n\t\t}\r\n\r\n\t\tfunction inputKeyUp(e: KeyboardEvent) {\r\n\t\t\tif (e.key !== \"Enter\") {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tif (hoveredItem.value === null) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tconst option = props.options.find((option) => props.getKey(option) === hoveredItem.value)\r\n\t\t\tif (option) {\r\n\t\t\t\thandleOptionClick(option)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction handleOptionClick(option: T) {\r\n\t\t\tprops.setSearch(props.getText(option))\r\n\t\t\tprops.setOption(option)\r\n\r\n\t\t\tisOpen.value = false\r\n\t\t\thoveredItem.value = null\r\n\t\t}\r\n\r\n\t\treturn () => (\r\n\t\t\t
\r\n\t\t\t\t (isOpen.value = true)}\r\n\t\t\t\t\tonBlur={() => (isOpen.value = false)}\r\n\t\t\t\t\t{...(props.inputProps ?? {})}\r\n\t\t\t\t/>\r\n\t\t\t\t{isOpen.value && (\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{props.options.map((option) => (\r\n\t\t\t\t\t\t\t (hoveredItem.value = props.getKey(option))}\r\n\t\t\t\t\t\t\t\tonMousedown={(e) => e.button === 0 && handleOptionClick(option)}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{props.getText(option)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t)\r\n\t}\r\n\r\n\treturn defineComponent(SearchSelect, inferProps>())\r\n}\r\n\r\nexport default createSearchSelect\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport { defineComponent, watchDebounce, type ReactiveComponent } from \"vue-utils\"\r\nimport PostcodeInput from \"./components/PostcodeInput\"\r\nimport ResumeClaim from \"./components/ResumeClaim\"\r\nimport createSearchSelect from \"@/components/SearchSelect\"\r\nimport type { Employer, OccupationSearch } from \"@/types\"\r\nimport { occupationSearch } from \"@/apis\"\r\nimport { ref, toRef } from \"vue\"\r\n\r\nconst JobSelect = createSearchSelect()\r\n\r\nconst PostcodeStep: ReactiveComponent = () => {\r\n\tconst occupationSearchResults = ref([])\r\n\tconst noCurrentJob = ref(false)\r\n\r\n\tasync function runOccupationSearch(search: string) {\r\n\t\tconst results = search.length === 0 ? [] : await occupationSearch(search)\r\n\t\toccupationSearchResults.value = results\r\n\t}\r\n\twatchDebounce(toRef(App.CustomerClaim.Employers[0], \"JobTitle\"), () => void runOccupationSearch(App.CustomerClaim.Employers[0].JobTitle))\r\n\twatchDebounce(noCurrentJob, () => {\r\n\t\tif (noCurrentJob.value) {\r\n\t\t\tApp.CustomerClaim.Employed = false\r\n\t\t\tconst newData: Partial = {\r\n\t\t\t\tJobTitle: \"\",\r\n\t\t\t\tOccupationId: null,\r\n\t\t\t\tIndustryId: null,\r\n\t\t\t}\r\n\t\t\tObject.assign(App.CustomerClaim.Employers[0], newData)\r\n\t\t} else {\r\n\t\t\tApp.CustomerClaim.Employed = true\r\n\t\t}\r\n\t})\r\n\r\n\tfunction onSelectJob(job: OccupationSearch) {\r\n\t\tconst newData: Partial = {\r\n\t\t\tOccupationId: job.OccupationId,\r\n\t\t\tIndustryId: null,\r\n\t\t\tJobTitle: job.Name,\r\n\t\t}\r\n\t\tObject.assign(App.CustomerClaim.Employers[0], newData)\r\n\t\tApp.CustomerClaim.Employed = true\r\n\t}\r\n\r\n\tfunction updateJobSearch(search: string) {\r\n\t\tconst newData: Partial = {\r\n\t\t\tJobTitle: search,\r\n\t\t\tOccupationId: null,\r\n\t\t\tIndustryId: null,\r\n\t\t}\r\n\t\tObject.assign(App.CustomerClaim.Employers[0], newData)\r\n\t}\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\tEnter your HOME postcode and your most recent job title to find out what you're owed\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t (App.CustomerClaim.Postcode = postcode)}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{!noCurrentJob.value && (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t o.Id.toString()}\r\n\t\t\t\t\t\t\t\t\t\t\tgetText={(o) => o.Name}\r\n\t\t\t\t\t\t\t\t\t\t\toptions={occupationSearchResults.value}\r\n\t\t\t\t\t\t\t\t\t\t\tsearchTerm={App.CustomerClaim.Employers[0].JobTitle}\r\n\t\t\t\t\t\t\t\t\t\t\tsetSearch={updateJobSearch}\r\n\t\t\t\t\t\t\t\t\t\t\tsetOption={onSelectJob}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{App.IsQuickEstimate && App.InitialLoadWithExistingClaim ? : }\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(PostcodeStep)\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport Question from \"@/components/Question\"\r\nimport RadioButtons from \"@/components/RadioButtons\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst QualifyingStep: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t{App.CustomerClaim.Married && !App.CustomerClaim.MarriageClaimSkipped && (\r\n\t\t\t\t\r\n\t\t\t\t\t (App.CustomerClaim.MarriageAllowanceTransfer = value)}\r\n\t\t\t\t\t\trequired\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t)}\r\n\r\n\t\t\t\r\n\t\t\t\t (App.CustomerClaim.ClaimedUniformAllowanceCurrentJob = value)}\r\n\t\t\t\t\trequired\r\n\t\t\t\t/>\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t (App.CustomerClaim.ClaimedUniformAllowancePreviousJob = value)}\r\n\t\t\t\t\trequired\r\n\t\t\t\t/>\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(QualifyingStep)\r\n","import { ref, toRef, watch, type InputHTMLAttributes } from \"vue\"\r\nimport { defineComponent, inferProps, useInputValidation, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\tdate: Date | null | string\r\n\tsetDate(date: string): void\r\n}\r\n\r\nconst inputRegex = /^((0[1-9])|([1-2]\\d)|(3[0-1]))\\/((0[1-9])|10|11|12)\\/((19|20)\\d{2})$/\r\n\r\nfunction formatDate(date: Date): string {\r\n\tif (!Number.isFinite(date.valueOf())) {\r\n\t\treturn \"\"\r\n\t}\r\n\treturn date.toLocaleDateString(\"en-GB\", {\r\n\t\tday: \"2-digit\",\r\n\t\tmonth: \"2-digit\",\r\n\t\tyear: \"numeric\",\r\n\t})\r\n}\r\nfunction formatDateInputString(date: Props[\"date\"]): string {\r\n\tif (!date) {\r\n\t\treturn \"\"\r\n\t}\r\n\tif (date instanceof Date) {\r\n\t\treturn formatDate(date)\r\n\t}\r\n\tconst parsedDate = new Date(date)\r\n\tif (!Number.isFinite(parsedDate.valueOf())) {\r\n\t\treturn date\r\n\t}\r\n\treturn formatDate(parsedDate)\r\n}\r\n\r\nfunction tryParseDate(str: string): Date | null {\r\n\tif (!inputRegex.test(str)) {\r\n\t\treturn null\r\n\t}\r\n\tconst parts = str.split(\"/\").map((part) => Number.parseInt(part))\r\n\tconst date = new Date(parts[2], parts[1] - 1, parts[0])\r\n\tif (date.getDate() !== parts[0] || date.getMonth() !== parts[1] - 1 || date.getFullYear() !== parts[2]) {\r\n\t\treturn null\r\n\t}\r\n\treturn date\r\n}\r\n\r\nconst TextualDateInput: ReactiveComponent> = (props, { attrs }) => {\r\n\tconst inputRef = ref()\r\n\r\n\tconst dateStr = ref(formatDateInputString(props.date))\r\n\twatch(toRef(props, \"date\"), (date) => {\r\n\t\tdateStr.value = formatDateInputString(date)\r\n\t})\r\n\r\n\twatch(dateStr, (str) => {\r\n\t\tconst date = tryParseDate(str)\r\n\t\tif (date) {\r\n\t\t\tprops.setDate(date.toISOString())\r\n\t\t}\r\n\t})\r\n\r\n\tuseInputValidation(inputRef, () => {\r\n\t\tif (dateStr.value.length > 0 && !tryParseDate(dateStr.value)) {\r\n\t\t\treturn \"Please enter a valid date\"\r\n\t\t}\r\n\t\treturn true\r\n\t})\r\n\r\n\treturn () => \r\n}\r\n\r\nexport default defineComponent(TextualDateInput, inferProps())\r\n","import RadioButtons from \"@/components/RadioButtons\"\r\nimport { pandemicYearIds, selectableEmploymentYears } from \"@/constants\"\r\nimport type { EmploymentRecord, Id } from \"@/types\"\r\nimport { computed } from \"vue\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport TextualDateInput from \"./TextualDateInput\"\r\n\r\nfunction formatJobStartDate(started: EmploymentRecord[\"Started\"]) {\r\n\tconst startYear = new Date().getFullYear() - (selectableEmploymentYears - 1)\r\n\treturn started ? `${String(started.Month).padStart(2, \"0\")}/${String(started.Year)}` : `Before ${startYear}`\r\n}\r\n\r\nfunction formatJobFinishDate(finished: EmploymentRecord[\"Finished\"]) {\r\n\treturn finished ? `${String(finished.Month).padStart(2, \"0\")}/${String(finished.Year)}` : \"I still work here\"\r\n}\r\n\r\nfunction taxYearName(id: Id) {\r\n\treturn App.currentTaxYears.find((ty) => ty.Value === id)?.Key ?? \"\"\r\n}\r\n\r\nconst ReviewDetails: ReactiveComponent = () => {\r\n\tconst enabledSubscriptions = computed(() => App.CustomerClaim.Subscriptions.filter((sub) => sub.Enabled))\r\n\r\n\tconst wfhYears = computed(() => {\r\n\t\tconst years = (App.CustomerClaim.WorkFromHomeYears ?? []).filter((yr) => pandemicYearIds.includes(yr.Id))\r\n\t\tyears.sort((y1, y2) => y2.Id - y1.Id)\r\n\t\treturn years\r\n\t})\r\n\r\n\treturn () => (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Basic Details

\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Address and Job

\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t (App.CustomerClaim.DateOfBirth = date)}\r\n\t\t\t\t\t\tplaceholder=\"Your date of birth\"\r\n\t\t\t\t\t\treadonly\r\n\t\t\t\t\t\trequired\r\n\t\t\t\t\t/>\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Marriage

\r\n\r\n\t\t\t\t (App.CustomerClaim.Married = v)}\r\n\t\t\t\t\tlegend=\"Are you currently married or in a civil partnership?\"\r\n\t\t\t\t\treadonly\r\n\t\t\t\t\trequired\r\n\t\t\t\t/>\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t

National Insurance Number and Telephone

\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t{!App.CustomerClaim.noPhone && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Employment records

\r\n\t\t\t\t
    \r\n\t\t\t\t\t{App.CustomerClaim.EmploymentRecords.map((employmentRecord, i) => (\r\n\t\t\t\t\t\t
  1. \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{employmentRecord.JobTitle} at {employmentRecord.EmployerName}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tStarted: {formatJobStartDate(employmentRecord.Started)}\r\n\t\t\t\t\t\t\t\tFinished: {formatJobFinishDate(employmentRecord.Finished)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tWore Uniform: {employmentRecord.Uniformed ? \"Yes\" : \"No\"}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
  2. \r\n\t\t\t\t\t))}\r\n\t\t\t\t\t{App.CustomerClaim.Employers.map((employer, index) => (\r\n\t\t\t\t\t\t
  3. \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{employer.JobTitle} at {employer.EmployerName}, started in {employer.YearCommenced}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
  4. \r\n\t\t\t\t\t))}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Working from home

\r\n\t\t\t\t

These are the years in which you have indicated that you worked from home:

\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{!!App.CustomerClaim.WorkFromHomeYears &&\r\n\t\t\t\t\t\t\tApp.CustomerClaim.WorkFromHomeYears.length > 0 &&\r\n\t\t\t\t\t\t\twfhYears.value.map((taxyear) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\t\t\t\t
Year startedYesNoWeeks
{`06/04/${taxYearName(taxyear.Id).split(\"/\")[0].substring(2)}`}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t{taxyear.Value === true && !pandemicYearIds.includes(taxyear.Id) && (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Fixed Rate Expenses

\r\n\t\t\t\t

\r\n\t\t\t\t\tYou are claiming for Fixed Rate Expenses (FRE), based on HMRC’s rates for the upkeep of your uniform and or protective clothing, tools\r\n\t\t\t\t\tand equipment of your job in the following tax years:\r\n\t\t\t\t

\r\n\t\t\t\t\r\n\t\t\t\t\t{App.CustomerClaim.WoreUniformTaxYears.filter((w) => w.WoreUniform).map((ty) => (\r\n\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {ty.Year} (£{ty.Deduction})\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
  • \r\n\t\t\t\t\t))}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t{enabledSubscriptions.value.length > 0 && (\r\n\t\t\t\t
    \r\n\t\t\t\t\t

    Subscriptions

    \r\n\t\t\t\t\t{enabledSubscriptions.value.map((sub) => (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{sub.Name}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t{App.CustomerClaim.TaxYearIds.map((ty) => (\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t {taxYearName(ty)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t))}\r\n\t\t\t\t
    \r\n\t\t\t)}\r\n\r\n\t\t\t
    \r\n\t\t\t\t

    Tax Years

    \r\n\t\t\t\t\r\n\t\t\t\t\t{App.CustomerClaim.TaxYearIds.map((ty) => (\r\n\t\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {taxYearName(ty)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
  • \r\n\t\t\t\t\t))}\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t)\r\n}\r\n\r\nexport default defineComponent(ReviewDetails)\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport ReviewDetails from \"./components/ReviewDetails\"\r\n\r\nconst ReviewStep: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t

    Tax Claim

    \r\n\t\t\t\t

    Final Review

    \r\n\t\t\t\t
    \r\n\t\t\t\t

    \r\n\t\t\t\t\tYou have provided all of the details you need to submit your claim to HMRC. Please check that the information you have provided is\r\n\t\t\t\t\tcorrect before clicking the button at the bottom to submit your details.\r\n\t\t\t\t

    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(ReviewStep)\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport RadioButtons from \"@/components/RadioButtons\"\r\nimport type { ClaimCustomer } from \"@/types\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst SelfAssessedChecksStep: ReactiveComponent = () => {\r\n\tfunction updateSACProperty(key: K, value: V) {\r\n\t\tApp.CustomerClaim[key] = value\r\n\r\n\t\t// If any questions on self assessed check step have been answered yes/true set claim to self assessed\r\n\t\t// Don't need qualifying check here - gets set after the claim is saved\r\n\t\tconst sacChecks = Object.entries(App.CustomerClaim).filter(\r\n\t\t\t([key, value]) => key.startsWith(\"SAC\") && (typeof value === \"boolean\" || value === null)\r\n\t\t)\r\n\t\tif (sacChecks.some(([, value]) => value === true)) {\r\n\t\t\tApp.CustomerClaim.selfAssessed = true\r\n\t\t} else if (sacChecks.every(([, value]) => value === false)) {\r\n\t\t\tApp.CustomerClaim.selfAssessed = false\r\n\t\t} else {\r\n\t\t\tApp.CustomerClaim.selfAssessed = null\r\n\t\t}\r\n\t}\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\tIf you only receive a salary from your job you are usually not required to prepare a self assessment tax return. Please check the list\r\n\t\t\t\tbelow and confirm if any apply to you.\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t updateSACProperty(\"SACIsSelfEmployed\", value)}\r\n\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t updateSACProperty(\"SACHasAccountant\", value)}\r\n\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t updateSACProperty(\"SACIsDirector\", value)}\r\n\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t updateSACProperty(\"SACHasProperty\", value)}\r\n\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t updateSACProperty(\"SACEarns100k\", value)}\r\n\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t updateSACProperty(\"SACEarns50kPlusBens\", value)}\r\n\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t updateSACProperty(\"SACHasBusiness\", value)}\r\n\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t updateSACProperty(\"SACFilesTaxReturn\", value)}\r\n\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t updateSACProperty(\"SAC10kInvestmentsIncome\", value)}\r\n\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t updateSACProperty(\"SACIncomeFromOtherCountry\", value)}\r\n\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(SelfAssessedChecksStep)\r\n","import SignaturePad from \"signature_pad\"\r\nimport { onMounted, ref, toRef, watch } from \"vue\"\r\nimport { defineComponent, inferProps, useCustomValidation, useWindowListener, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\tsetSignatureSVG(svg: string): void\r\n\tsetSignaturePoints?(points: string): void\r\n\tpenColor?: string\r\n}\r\n\r\nconst EditSignature: ReactiveComponent = (props) => {\r\n\tconst canvasRef = ref()\r\n\tlet signaturePad: SignaturePad | null = null\r\n\r\n\tuseCustomValidation(() => {\r\n\t\tif (!signaturePad || signaturePad.isEmpty() || signaturePad.toDataURL(\"image/svg+xml\").length < 800) {\r\n\t\t\treturn \"Please provide a valid signature for your forms.\"\r\n\t\t}\r\n\t\treturn true\r\n\t})\r\n\r\n\tonMounted(() => {\r\n\t\tif (!canvasRef.value) {\r\n\t\t\tthrow new Error(\"No canvas available\")\r\n\t\t}\r\n\t\tresizeSignature()\r\n\r\n\t\tsignaturePad = new SignaturePad(canvasRef.value, {\r\n\t\t\tpenColor: props.penColor ?? \"rgb(0,0,100)\",\r\n\t\t})\r\n\t\tsignaturePad.addEventListener(\"endStroke\", updateSignature)\r\n\r\n\t\tupdateSignature()\r\n\t})\r\n\twatch(toRef(props, \"penColor\"), (penColor) => {\r\n\t\tif (signaturePad) {\r\n\t\t\tsignaturePad.penColor = penColor ?? \"rgb(0,0,100)\"\r\n\t\t}\r\n\t})\r\n\tuseWindowListener(\"resize\", () => {\r\n\t\tresizeSignature()\r\n\r\n\t\t//TODO Why clear the signature on resize?\r\n\t\tsignaturePad?.clear()\r\n\t\tupdateSignature()\r\n\t})\r\n\r\n\tfunction resizeSignature() {\r\n\t\tconst element = canvasRef.value\r\n\t\tconst ratio = Math.max(window.devicePixelRatio || 1, 1)\r\n\t\tif (element) {\r\n\t\t\telement.width = element.offsetWidth * ratio\r\n\t\t\telement.height = element.offsetHeight * ratio\r\n\t\t\telement.getContext(\"2d\")?.scale(ratio, ratio)\r\n\t\t}\r\n\t}\r\n\r\n\tfunction updateSignature() {\r\n\t\tif (signaturePad) {\r\n\t\t\tprops.setSignatureSVG(signaturePad.toDataURL(\"image/svg+xml\"))\r\n\t\t\tif (props.setSignaturePoints) {\r\n\t\t\t\tprops.setSignaturePoints(JSON.stringify(signaturePad.toData()))\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction clearSignature() {\r\n\t\tsignaturePad?.clear()\r\n\t\tupdateSignature()\r\n\t}\r\n\r\n\treturn () => (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tPlease sign in the box below using your finger or your mouse\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t)\r\n}\r\n\r\nexport default defineComponent(EditSignature, inferProps())\r\n","import { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport EditSignature from \"./components/EditSignature\"\r\n\r\nconst SignatureDetails: ReactiveComponent = () => {\r\n\tconst termsEl = document.getElementById(\"calculator-terms-2\") as HTMLTemplateElement\r\n\r\n\t//TODO Make sure you can't submit without checking the boxes\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t

    Contractual Agreement to Claim

    \r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t (App.CustomerClaim.SignatureSVG = svg)} />\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(SignatureDetails)\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport SignatureDetails from \"./SignatureDetails\"\r\n\r\nconst SignatureStep: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(SignatureStep)\r\n","import CurrencyInput from \"@/components/CurrencyInput\"\r\nimport type { Subscription } from \"@/types\"\r\nimport { defineComponent, inferProps, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\tsubscription: Subscription\r\n}\r\n\r\nconst EditSubscription: ReactiveComponent = (props) => {\r\n\treturn () => (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    {props.subscription.Name}
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{props.subscription.Years.map((year) => (\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{year.Name}\r\n\t\t\t\t\t\t\t\t (year.Amount = amount)}\r\n\t\t\t\t\t\t\t\t\tv-model={year.Amount}\r\n\t\t\t\t\t\t\t\t\tclass=\"form-control form-control-sm required sub\"\r\n\t\t\t\t\t\t\t\t\tstyle=\"max-width:95%;\"\r\n\t\t\t\t\t\t\t\t\trequired\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t)\r\n}\r\n\r\nexport default defineComponent(EditSubscription, inferProps())\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport { showConfirmModal } from \"@/modals\"\r\nimport { computed } from \"vue\"\r\nimport { defineComponent, useCustomCheck, useCustomValidation, type ReactiveComponent } from \"vue-utils\"\r\nimport EditSubscription from \"./components/EditSubscription\"\r\n\r\nconst SubscriptionDetailsStep: ReactiveComponent = () => {\r\n\tconst enabledSubscriptions = computed(() => App.CustomerClaim.Subscriptions.filter((sub) => sub.Enabled))\r\n\r\n\tuseCustomValidation(() => {\r\n\t\tif (enabledSubscriptions.value.some((sub) => sub.Years.some((year) => year.Amount === null))) {\r\n\t\t\treturn \"Please specify a value for all years of each subscription\"\r\n\t\t}\r\n\t\treturn true\r\n\t})\r\n\r\n\tuseCustomCheck(async () => {\r\n\t\tconst anyBelowThreshold = enabledSubscriptions.value.some((sub) => sub.Years.some((year) => year.Amount !== null && year.Amount < 50))\r\n\t\tif (!anyBelowThreshold) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\treturn await showConfirmModal({\r\n\t\t\ttitle: \"Confirm Subscriptions\",\r\n\t\t\tcontent: () => (\r\n\t\t\t\t<>\r\n\t\t\t\t\tPlease check your subscription figures and make sure you have input the ANNUAL amount.\r\n\t\t\t\t\r\n\t\t\t),\r\n\t\t\tcancelText: \"Oops - I'd like to correct the amounts.\",\r\n\t\t\tconfirmText: \"The amounts are correct.\",\r\n\t\t})\r\n\t})\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t

    Subscriptions & Expenses

    \r\n\t\t\t\t{enabledSubscriptions.value.length === 0 ? (\r\n\t\t\t\t\t

    You have not selected any available subscriptions or expenses.

    \r\n\t\t\t\t) : (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\tPlease enter the ANNUAL amount you paid for each year. If you pay monthly, multiply the amount by 12 to\r\n\t\t\t\t\t\t\tget to the figure you enter. Suggested subscription payments are based on typical rates. Edit these if your payments were\r\n\t\t\t\t\t\t\tdifferent.\r\n\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t{App.CustomerClaim.Subscriptions.filter((sub) => sub.Enabled).map((sub) => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(SubscriptionDetailsStep)\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport { computed } from \"vue\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport EditSignature from \"./components/EditSignature\"\r\n\r\nconst SubscriptionPermissionStep: ReactiveComponent = () => {\r\n\tconst enabledSubscriptions = computed(() => App.CustomerClaim.Subscriptions.filter((sub) => sub.Enabled))\r\n\r\n\t//TODO Make sure you can't submit without checking the boxes\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t

    Subscriptions - Permission

    \r\n\t\t\t\t{enabledSubscriptions.value.length === 0 ? (\r\n\t\t\t\t\t

    You have not selected any available subscriptions or expenses.

    \r\n\t\t\t\t) : (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\tYou have indicated that you pay membership or subscription fees to the following organisations. In order to make a claim on your\r\n\t\t\t\t\t\t\tbehalf, OTR needs to contact these organisations to confirm your membership costs. Please use the tick box below to indicate your\r\n\t\t\t\t\t\t\tpermission for us to proceed with this.\r\n\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t{App.CustomerClaim.Subscriptions.filter((sub) => sub.Enabled).map((sub) => (\r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t {sub.Name}\r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t (App.CustomerClaim.SubscriptionsSignatureSVG = svg)} />\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(SubscriptionPermissionStep)\r\n","import calculatorConfig from \"@/calculatorConfig\"\r\nimport ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport { showConfirmModal } from \"@/modals\"\r\nimport { computed } from \"vue\"\r\nimport { defineComponent, useCustomCheck, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst SubscriptionsStep: ReactiveComponent = () => {\r\n\tconst enabledSubscriptions = computed(() => App.CustomerClaim.Subscriptions.filter((sub) => sub.Enabled))\r\n\r\n\tuseCustomCheck(async () => {\r\n\t\tif (enabledSubscriptions.value.length > 0) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\treturn await showConfirmModal({\r\n\t\t\ttitle: \"Confirm Subscriptions\",\r\n\t\t\tcontent: () => \"You have not selected any applicable subscriptions. Please check this is correct.\",\r\n\t\t\tcancelText: \"Oops - I'd like to select some subscriptions\",\r\n\t\t\tconfirmText: \"This is correct\",\r\n\t\t})\r\n\t})\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t

    Subscriptions & Expenses

    \r\n\t\t\t\t

    \r\n\t\t\t\t\tHave you paid subscriptions or expenses for any of the following? You can select a maximum of {calculatorConfig.maximumSubscriptions}{\" \"}\r\n\t\t\t\t\there.\r\n\t\t\t\t

    \r\n\t\t\t\t{App.CustomerClaim.Subscriptions.map((sub) => (\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t))}\r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(SubscriptionsStep)\r\n","import calculatorConfig from \"@/calculatorConfig\"\r\nimport ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport RadioButtons from \"@/components/RadioButtons\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst TaxYearsStep: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t

    In the past 4 years was your income between £12,500 and £50,000 per year?

    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t{Object.entries(calculatorConfig.earningsBands).map(([key, band]) => (\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t

    Are you currently married or in a civil partnership?

    \r\n\t\t\t\t (App.CustomerClaim.Married = value)} required />\r\n\t\t\t
    \r\n\r\n\t\t\t{App.CustomerClaim.Married && (\r\n\t\t\t\t
    \r\n\t\t\t\t\t

    Is your spouse employed?

    \r\n\t\t\t\t\t (App.CustomerClaim.SpouseEmployed = value)}\r\n\t\t\t\t\t\trequired\r\n\t\t\t\t\t/>\r\n\t\t\t\t
    \r\n\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(TaxYearsStep)\r\n","import type { Id } from \"@/types\"\r\nimport { computed } from \"vue\"\r\nimport { defineComponent, inferProps, useOnInputNumber, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\tindustryId: Id\r\n\tsetIndustryId(id: Id): void\r\n}\r\n\r\nconst IndustrySelect: ReactiveComponent = (props) => {\r\n\tconst industries = computed(() => [...App.industrySectors].sort((i1, i2) => i1.Key.localeCompare(i2.Key)))\r\n\treturn () => (\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(IndustrySelect, inferProps())\r\n","import type { Id } from \"@/types\"\r\nimport { computed } from \"vue\"\r\nimport { defineComponent, inferProps, useOnInputNumber, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\tindustryId?: Id\r\n\toccupationId: Id\r\n\tsetOccupationId(id: Id): void\r\n}\r\n\r\nconst OccupationSelect: ReactiveComponent = (props) => {\r\n\tconst occupations = computed(() => {\r\n\t\tconst occupations =\r\n\t\t\tprops.industryId === undefined ? App.AllOccupations : App.AllOccupations.filter((occupation) => occupation.IndustryId === props.industryId)\r\n\t\treturn [...occupations].sort((o1, o2) => o1.Name.localeCompare(o2.Name))\r\n\t})\r\n\treturn () => (\r\n\t\t\r\n\t\t\t\r\n\t\t\t{occupations.value.map((occupation) => (\r\n\t\t\t\t\r\n\t\t\t))}\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(OccupationSelect, inferProps())\r\n","/* eslint-disable jsx-a11y/label-has-associated-control */\r\nimport { occupationSearch } from \"@/apis\"\r\nimport ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport createSearchSelect from \"@/components/SearchSelect\"\r\nimport type { Employer, OccupationSearch } from \"@/types\"\r\nimport { computed, ref, toRef } from \"vue\"\r\nimport { defineComponent, watchDebounce, type ReactiveComponent } from \"vue-utils\"\r\nimport IndustrySelect from \"./employment/components/IndustrySelect\"\r\nimport OccupationSelect from \"./employment/components/OccupationSelect\"\r\n\r\nconst JobSelect = createSearchSelect()\r\n\r\nconst OccupationStep: ReactiveComponent = () => {\r\n\tconst showJobs = ref(!App.CustomerClaim.Employers.some((emp) => !emp.IndustryId))\r\n\tconst readOnly = ref(!App.CustomerClaim.Employers.some((emp) => !emp.IndustryId))\r\n\tconst occupationSearchResults = ref([]) ///TODO - size this correctly...\r\n\tconst unknownJob = ref(false)\r\n\tconst activeEmployerIndex = ref(0)\r\n\r\n\tconst activeEmployer = computed(() => {\r\n\t\treturn App.CustomerClaim.Employers[activeEmployerIndex.value]\r\n\t})\r\n\tconst allEmployersPopulated = computed(() => {\r\n\t\treturn App.CustomerClaim.Employers.length <= 1 || !App.CustomerClaim.Employers.some((employer) => employer.JobTitle === \"\")\r\n\t})\r\n\tconst showButtons = computed(() => {\r\n\t\treturn activeEmployer.value.JobTitle !== \"\"\r\n\t})\r\n\r\n\tasync function runOccupationSearch(search: string) {\r\n\t\tconst results = search.length === 0 ? [] : await occupationSearch(search)\r\n\t\tunknownJob.value = unknownJob.value || results.length === 0\r\n\t\toccupationSearchResults.value = results\r\n\t}\r\n\twatchDebounce(activeEmployerIndex, () => {\r\n\t\toccupationSearchResults.value = []\r\n\t\twatchDebounce(toRef(activeEmployer.value, \"JobTitle\"), () => {\r\n\t\t\tvoid runOccupationSearch(App.CustomerClaim.Employers[activeEmployerIndex.value].JobTitle)\r\n\t\t})\r\n\t})\r\n\twatchDebounce(toRef(activeEmployer.value, \"JobTitle\"), () => {\r\n\t\tvoid runOccupationSearch(App.CustomerClaim.Employers[activeEmployerIndex.value].JobTitle)\r\n\t})\r\n\r\n\tfunction onSelectJob(job: OccupationSearch) {\r\n\t\tconst newData: Partial = {\r\n\t\t\tIndustryId: job.IndustryId,\r\n\t\t\tOccupationId: job.OccupationId,\r\n\t\t\tJobTitle: job.Name,\r\n\t\t}\r\n\t\tObject.assign(App.CustomerClaim.Employers[activeEmployerIndex.value], newData)\r\n\t}\r\n\r\n\tfunction updateJobSearch(search: string) {\r\n\t\tconst newData: Partial = {\r\n\t\t\tJobTitle: search,\r\n\t\t\tOccupationId: null,\r\n\t\t\tIndustryId: null,\r\n\t\t}\r\n\t\tObject.assign(App.CustomerClaim.Employers[activeEmployerIndex.value], newData)\r\n\t}\r\n\r\n\tfunction nextEmployer() {\r\n\t\tactiveEmployerIndex.value += 1\r\n\t}\r\n\r\n\tfunction editEmployer(index: number) {\r\n\t\tactiveEmployerIndex.value = index\r\n\t\treadOnly.value = false\r\n\t}\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t

    Your Jobs

    \r\n\t\t\t
    \r\n\t\t\t{showJobs.value && (\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{App.CustomerClaim.Employers.filter((f) => f.IndustryId).map((emp, index) => (\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\teditEmployer(index)\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{emp.EmployerName !== \"\" ? `${emp.JobTitle} at ${emp.EmployerName}` : emp.JobTitle}\r\n\t\t\t\t\t\t\t\t\t{emp.YearCommenced ? ` starting in ${emp.YearCommenced}` : \"\"}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t)}\r\n\t\t\t{!readOnly.value && (\r\n\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t{activeEmployer.value.PAYEReference === \"\" &&

    What's your current job?

    }\r\n\t\t\t\t\t\t\t\t\t{activeEmployer.value.PAYEReference !== \"\" && (\r\n\t\t\t\t\t\t\t\t\t\t

    While you were working at {activeEmployer.value.EmployerName}, what was your job?

    \r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t o.Id.toString()}\r\n\t\t\t\t\t\t\t\t\t\tgetText={(o) => o.Name}\r\n\t\t\t\t\t\t\t\t\t\toptions={occupationSearchResults.value}\r\n\t\t\t\t\t\t\t\t\t\tsearchTerm={activeEmployer.value.JobTitle}\r\n\t\t\t\t\t\t\t\t\t\tsetSearch={(term) => updateJobSearch(term)}\r\n\t\t\t\t\t\t\t\t\t\tsetOption={(job) => onSelectJob(job)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{unknownJob.value && (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tactiveEmployer.value.IndustryId = id\r\n\t\t\t\t\t\t\t\t\t\t\t\tactiveEmployer.value.OccupationId = -1\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{unknownJob.value && activeEmployer.value.IndustryId !== null && activeEmployer.value.IndustryId > 0 && (\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\t (activeEmployer.value.OccupationId = id)}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t)}\r\n\t\t\t
    \r\n\t\t\t\t{showButtons.value && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t{!allEmployersPopulated.value && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{allEmployersPopulated.value && }\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
    \r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(OccupationStep)\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport RadioButton from \"@/components/RadioButton\"\r\nimport { pandemicYearIds } from \"@/constants\"\r\nimport type { Id, WorkFromHomeYear } from \"@/types\"\r\nimport { css } from \"vite-css-in-js\"\r\nimport { computed } from \"vue\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst tableStyles = css`\r\n\twidth: 100%;\r\n\r\n\ttd,\r\n\tth {\r\n\t\tpadding: 0.5rem;\r\n\t\tvertical-align: middle;\r\n\t}\r\n\r\n\tthead th {\r\n\t\tfont-weight: bold;\r\n\t\ttext-align: center;\r\n\t\ttext-transform: uppercase;\r\n\t}\r\n\r\n\ttbody tr {\r\n\t\tborder-bottom: solid 2px #fff;\r\n\t}\r\n\r\n\tlabel {\r\n\t\tmargin-right: 0.25rem;\r\n\t}\r\n`\r\n\r\nconst WorkFromHomeStep: ReactiveComponent = () => {\r\n\tfunction taxYearName(taxYearId: Id) {\r\n\t\treturn App.currentTaxYears?.find((ty) => ty.Value === taxYearId)?.Key ?? \"\"\r\n\t}\r\n\r\n\tconst wfhYears = computed(() => {\r\n\t\tconst years = (App.CustomerClaim.WorkFromHomeYears ?? []).filter((yr) => pandemicYearIds.includes(yr.Id))\r\n\t\tyears.sort((y1, y2) => y2.Id - y1.Id)\r\n\t\treturn years\r\n\t})\r\n\r\n\tfunction renderYear(taxYear: WorkFromHomeYear) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{`06/04/${taxYearName(taxYear.Id).split(\"/\")[0].substring(2)}`}\r\n\t\t\t\t\t to \r\n\t\t\t\t\t{`05/04/${taxYearName(taxYear.Id).split(\"/\")[1]}`}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t (taxYear.Value = v)}\r\n\t\t\t\t\t\trequired\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t (taxYear.Value = v)}\r\n\t\t\t\t\t\trequired\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t

    Working from home

    \r\n\t\t\t\t

    \r\n\t\t\t\t\tDid you have to work from home at all during the COVID Pandemic?
    \r\n\t\t\t\t\tYears to 05/04/21 & 05/04/22 ONLY you can claim for a full 52 weeks in the year, even if you only worked from home\r\n\t\t\t\t\tfor 1 day.\r\n\t\t\t\t

    \r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{!!App.CustomerClaim.WorkFromHomeYears && App.currentTaxYears.length > 0 && wfhYears.value.map(renderYear)}\r\n\t\t\t\t
    \r\n\t\t\t\t\t\t\tYesNo
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(WorkFromHomeStep)\r\n","import { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst DetailsRejected: ReactiveComponent = () => {\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t
    \r\n\t\t\t\t

    Your Claim

    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t

    Sorry but we are unable to process your claim at this time.

    \r\n\t\t\t\t

    \r\n\t\t\t
    \r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(DetailsRejected)\r\n","/**\r\n * Calculates the bigram similarity between two strings.\r\n *\r\n * @param {string} text - The first input string.\r\n * @param {string} pattern - The second input string.\r\n * @returns {number} The bigram similarity between the two strings (a value between 0 and 1).\r\n */\r\nexport function bigramSimilarity(text: string, pattern: string): number {\r\n\ttext = text.replace(/\\s+/g, \"\")\r\n\tpattern = pattern.replace(/\\s+/g, \"\")\r\n\r\n\tif (text === pattern) return 1\r\n\tif (text.length < 2 || pattern.length < 2) return 0\r\n\r\n\tconst firstBigrams = new Map()\r\n\tfor (let i = 0; i < text.length - 1; i++) {\r\n\t\tconst bigram = text.substring(i, i + 2)\r\n\t\tconst count = firstBigrams.has(bigram) ? firstBigrams.get(bigram)! + 1 : 1\r\n\r\n\t\tfirstBigrams.set(bigram, count)\r\n\t}\r\n\r\n\tlet intersectionSize = 0\r\n\tfor (let i = 0; i < pattern.length - 1; i++) {\r\n\t\tconst bigram = pattern.substring(i, i + 2)\r\n\t\tconst count = firstBigrams.has(bigram) ? firstBigrams.get(bigram)! : 0\r\n\r\n\t\tif (count > 0) {\r\n\t\t\tfirstBigrams.set(bigram, count - 1)\r\n\t\t\tintersectionSize++\r\n\t\t}\r\n\t}\r\n\r\n\tconst denominator = text.length + pattern.length - 2\r\n\tif (denominator === 0) return 0\r\n\r\n\treturn (2.0 * intersectionSize) / denominator\r\n}\r\n","import { css } from \"vite-css-in-js\"\r\n\r\nexport const employerContainerStyles = css`\r\n\toverflow: hidden;\r\n\tmargin: 0 auto;\r\n\tdisplay: flex;\r\n\tflex-direction: row;\r\n\tgap: 2rem;\r\n\talign-items: center;\r\n\tjustify-items: last baseline;\r\n\ttransition: all 0.2s ease-in-out;\r\n`\r\n\r\nexport const employerListStyles = css`\r\n\tlist-style: none;\r\n\tmargin: 1rem auto;\r\n\tpadding: 0;\r\n\twidth: 310px;\r\n\ttext-align: center;\r\n\r\n\t&[data-open=\"true\"] {\r\n\t\tli button {\r\n\t\t\topacity: 0.6;\r\n\t\t}\r\n\t}\r\n\r\n\t> li {\r\n\t\tdisplay: inline-block;\r\n\t\tmargin: 0;\r\n\t\tpadding: 0.1em;\r\n\t\ttext-align: center;\r\n\r\n\t\t&.none {\r\n\t\t\tdisplay: block;\r\n\t\t\tmargin-top: 0.5rem;\r\n\t\t\tpadding-top: 0.5rem;\r\n\t\t\tborder-top: 1px solid #fff;\r\n\t\t}\r\n\t}\r\n`\r\n\r\nexport const employerListButtonStyles = css`\r\n\tcolor: #fff;\r\n\tfont-weight: 600;\r\n\ttransition: all 0.4s ease-in-out;\r\n\tborder: 1px solid #fff;\r\n\tpadding: 0.3em 0.8em;\r\n\tbackground: none;\r\n\tposition: relative;\r\n\tborder-radius: 0.2em;\r\n\tbackground-color: rgba(0, 0, 0, 0.3);\r\n\r\n\t&.dark {\r\n\t\tcolor: #000;\r\n\t\t&:hover,\r\n\t\t&:active {\r\n\t\t\tcolor: #000;\r\n\t\t}\r\n\t}\r\n\r\n\t&:hover,\r\n\t&:active {\r\n\t\tcolor: #333;\r\n\t\tbackground-color: #fff;\r\n\t}\r\n\r\n\t&[data-active=\"true\"] {\r\n\t\tcolor: rgb(243, 109, 33);\r\n\t\tborder: solid 1px #fff;\r\n\t\tbackground-color: #fff;\r\n\t\tborder-radius: 0.2em;\r\n\t\topacity: 1 !important;\r\n\t}\r\n`\r\n","import ButtonNavigation from \"@/components/ButtonNavigation\"\r\nimport RadioButtons from \"@/components/RadioButtons\"\r\nimport { goToNextStep } from \"@/step-handler\"\r\nimport type { Employer, Nullable } from \"@/types\"\r\nimport type { PAYERecord } from \"@/types/CompanyPAYEModels\"\r\nimport { bigramSimilarity } from \"@/utils/bigramSimilarity\"\r\nimport { computed, ref } from \"vue\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\nimport { employerContainerStyles, employerListButtonStyles, employerListStyles } from \"./employerStepStyles\"\r\n\r\nconst EmployerStep: ReactiveComponent = () => {\r\n\tconst sufficientYears = 2\r\n\tconst selectedSectorIndex = ref(0)\r\n\tconst selectedCategoryIndex = ref(null)\r\n\tconst categoryConfirmed = ref(false)\r\n\tconst searchValue = ref(null)\r\n\tconst companyResults = ref([])\r\n\tconst showNotFoundButton = ref(false)\r\n\r\n\tfunction nextSector() {\r\n\t\t//if ((selectedSectorIndex.value ?? 0) >= App.companyData.length - 1) {\r\n\t\tif (selectedSectorIndex.value === null) {\r\n\t\t\tselectedSectorIndex.value = 0\r\n\t\t} else {\r\n\t\t\tselectedSectorIndex.value = (selectedSectorIndex.value ?? -1) + 1\r\n\t\t}\r\n\t}\r\n\r\n\tfunction selectCategory(i: number) {\r\n\t\tif (activeEmployer.value !== null) {\r\n\t\t\tif (selectedCategoryIndex.value !== i) {\r\n\t\t\t\tselectedCategoryIndex.value = i\r\n\t\t\t\tactiveEmployer.value.LookupDataSectorCategoryIndex = i\r\n\t\t\t} else {\r\n\t\t\t\tselectedCategoryIndex.value = null\r\n\t\t\t}\r\n\r\n\t\t\tif (selectedSectorIndex.value !== null) {\r\n\t\t\t\tactiveEmployer.value.LookupDataSectorIdentifier = App.companyData[selectedSectorIndex.value]?.Identifier\r\n\t\t\t\tif (selectedCategoryIndex.value !== null) {\r\n\t\t\t\t\tactiveEmployer.value.OccupationId =\r\n\t\t\t\t\t\tactiveEmployer.value.OccupationId ?? App.companyData[selectedSectorIndex.value].Categories[selectedCategoryIndex.value].OccupationId\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction confirmCategory() {\r\n\t\tcategoryConfirmed.value = true\r\n\t}\r\n\r\n\tfunction compare(searchTerm: string, content: string) {\r\n\t\tconst l = content.length\r\n\t\tif (content.indexOf(searchTerm) !== -1) return (l - content?.indexOf(searchTerm)) / l\r\n\r\n\t\tconst split = content.split(\" \")\r\n\t\tconst wordSimilarities: number[] = []\r\n\t\tsplit.forEach((s) => {\r\n\t\t\tconst wordSimilarity = bigramSimilarity(s ?? \"\", searchTerm)\r\n\t\t\twordSimilarities.push(wordSimilarity + 1)\r\n\t\t})\r\n\t\tif (wordSimilarities.length > 1) {\r\n\t\t\tconst score =\r\n\t\t\t\twordSimilarities.reduce((a, b) => {\r\n\t\t\t\t\treturn a + b\r\n\t\t\t\t}) /\r\n\t\t\t\t\twordSimilarities.length -\r\n\t\t\t\t1\r\n\t\t\tif (score > 0) return score\r\n\t\t}\r\n\r\n\t\treturn 0\r\n\t}\r\n\tfunction sortCompare(a: PAYERecord, b: PAYERecord) {\r\n\t\tconst search = searchValue.value?.toUpperCase() ?? \"\"\r\n\t\tif (compare(search, a.Name ?? \"\") > compare(search, b.Name ?? \"\")) {\r\n\t\t\treturn -1\r\n\t\t} else if (compare(search, a.Name ?? \"\") < compare(search, b.Name ?? \"\")) {\r\n\t\t\treturn 1\r\n\t\t} else {\r\n\t\t\treturn 0\r\n\t\t}\r\n\t}\r\n\tfunction searchCompanies() {\r\n\t\tconsole.log(searchValue.value)\r\n\t\tconst search = searchValue.value?.toUpperCase() ?? \"\"\r\n\t\tconst Source = App.companyData[selectedSectorIndex.value ?? -1]?.Categories[selectedCategoryIndex.value ?? -1].Companies\r\n\t\tif (!Source) return []\r\n\t\tconst Results = Source.filter((r) => compare(search, r.Name ?? \"\") > 0.18).sort((a, b) => sortCompare(a, b))\r\n\t\tcompanyResults.value = Results\r\n\t\tshowNotFoundButton.value = true\r\n\t\treturn true\r\n\t}\r\n\tfunction selectEmployer(i: number) {\r\n\t\tif (i !== null) {\r\n\t\t\tconst selectedEmployer: PAYERecord | null = companyResults.value[i]\r\n\t\t\tif (selectedEmployer !== null && activeEmployer.value !== null) {\r\n\t\t\t\tactiveEmployer.value.EmployerName = selectedEmployer.Name ?? \"\"\r\n\t\t\t\tactiveEmployer.value.PAYEReference = selectedEmployer.Reference ?? \"\"\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tfunction checkEmployers() {\r\n\t\tif (activeEmployerValid.value === true) {\r\n\t\t\tif (!employerRecordsComplete.value) {\r\n\t\t\t\temployerIndex.value += 1\r\n\t\t\t\tsearchValue.value = null\r\n\t\t\t\tselectedCategoryIndex.value = null\r\n\t\t\t\tcategoryConfirmed.value = false\r\n\t\t\t\tcompanyResults.value = []\r\n\t\t\t} else {\r\n\t\t\t\temployerIndex.value = -1\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tfunction selectExistingRecord(i: number) {\r\n\t\temployerIndex.value = i\r\n\t}\r\n\tfunction needToAskAboutUniform(employer: Nullable) {\r\n\t\tif (!employer) return true\r\n\t\tif (employer.OccupationId === null) return true\r\n\r\n\t\tconst occupation = App.AllOccupations.find((o) => o.OccupationId === employer?.OccupationId)\r\n\r\n\t\tif ((occupation?.Deduction ?? 60) <= 60) {\r\n\t\t\treturn true\r\n\t\t} else {\r\n\t\t\temployer.WoreUniform = true\r\n\t\t\treturn false\r\n\t\t}\r\n\t}\r\n\tfunction skipStep() {\r\n\t\tApp.CustomerClaim.TaxYearIds = App.currentTaxYears.map((e) => e.Value)\r\n\t\tvoid goToNextStep()\r\n\t}\r\n\tconst categories = computed(() => {\r\n\t\tif (selectedSectorIndex.value !== null) {\r\n\t\t\treturn selectedSectorIndex.value < App.companyData.length ? App.companyData[selectedSectorIndex.value]?.Categories : []\r\n\t\t} else {\r\n\t\t\treturn null\r\n\t\t}\r\n\t})\r\n\r\n\tconst employerRecordsComplete = computed(() => {\r\n\t\tif (App.CustomerClaim.Employers.filter((e) => e.YearCommenced === null || e.WoreUniform === null).length > 0) return false\r\n\t\tconst d = new Date()\r\n\t\tconst allYears = App.CustomerClaim.Employers.flatMap((emp) => emp.YearCommenced ?? 2024)\r\n\t\tconst min = Math.min(...allYears)\r\n\r\n\t\treturn min <= d.getFullYear() - sufficientYears\r\n\t})\r\n\tconst resultsFound = computed(() => {\r\n\t\treturn (companyResults.value ?? []).length > 0\r\n\t})\r\n\tconst activeEmployer = computed(() => {\r\n\t\tif (employerIndex.value < 0) return null\r\n\t\tif (App.CustomerClaim.Employers.length < employerIndex.value + 1) {\r\n\t\t\tfor (let i = App.CustomerClaim.Employers.length; i <= employerIndex.value; i++) {\r\n\t\t\t\tApp.CustomerClaim.Employers[i] = {\r\n\t\t\t\t\tEmployerName: \"\",\r\n\t\t\t\t\tPAYEReference: \"\",\r\n\t\t\t\t\tAddress: \"\",\r\n\t\t\t\t\tYearCommenced: null,\r\n\t\t\t\t\tPostcode: \"\",\r\n\t\t\t\t\tLookupDataSectorIdentifier: \"\",\r\n\t\t\t\t\tLookupDataSectorCategoryIndex: null,\r\n\t\t\t\t\tOccupationId: null,\r\n\t\t\t\t\tIndustryId: null,\r\n\t\t\t\t\tJobTitle: \"\",\r\n\t\t\t\t\tWoreUniform: null,\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn App.CustomerClaim.Employers[employerIndex.value]\r\n\t})\r\n\tconst activeEmployerValid = computed(() => {\r\n\t\treturn activeEmployer.value?.PAYEReference && activeEmployer.value?.YearCommenced && activeEmployer.value?.WoreUniform !== null\r\n\t\t\t? true\r\n\t\t\t: false\r\n\t})\r\n\tconst anotherEmployerNeeded = computed(() => {\r\n\t\treturn !employerRecordsComplete.value\r\n\t})\r\n\tconst previousEmployer = computed(() => {\r\n\t\tif ((employerIndex.value ?? 0) === 0) return null\r\n\t\treturn App.CustomerClaim.Employers[employerIndex.value - 1]\r\n\t})\r\n\tconst moreThanOneEmployer = computed(() => {\r\n\t\treturn employerIndex.value > 0 ? true : false\r\n\t})\r\n\tconst employerIndex = ref(employerRecordsComplete.value ? -1 : 0)\r\n\r\n\treturn () => (\r\n\t\t<>\r\n\t\t\t{App.CustomerClaim.Employers.filter((e) => e.YearCommenced && e.WoreUniform !== null).length > 0 && (\r\n\t\t\t\t
    \r\n\t\t\t\t\t

    Employment records

    \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\t{App.CustomerClaim.Employers.filter((e) => e.YearCommenced).map((employer, index) => (\r\n\t\t\t\t\t\t\t
    1. \r\n\t\t\t\t\t\t\t\t{employer.EmployerName}, started in {employer.YearCommenced}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    2. \r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t)}\r\n\t\t\t{!employerRecordsComplete.value && !categoryConfirmed.value && !activeEmployer.value?.EmployerName && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t{!moreThanOneEmployer.value && (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t

    Does your employer work in one of these industries? Please choose the best match:

    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{moreThanOneEmployer.value && (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\tTo ensure you have a good chance of a rebate please tell us where you worked prior to {previousEmployer.value?.EmployerName}\r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{categories.value && (\r\n\t\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t\t{categories.value?.map((category, index) => (\r\n\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t selectCategory(index)}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{category.Name}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t{selectedCategoryIndex.value === null && categories.value.length !== 0 && (\r\n\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{categories.value.length === 0 && (\r\n\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\tskipStep()\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tNone of these apply to me\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{selectedCategoryIndex.value !== null && (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\t{categoryConfirmed.value && activeEmployer.value && !activeEmployer.value?.EmployerName && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t

    Please type the name of the company you work for and tap search.

    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\") {\r\n\t\t\t\t\t\t\t\t\t\tsearchCompanies()\r\n\t\t\t\t\t\t\t\t\t\te.preventDefault()\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t\t{resultsFound.value && (\r\n\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\tPossible matches - please choose your employer.\r\n\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{companyResults.value?.map((result, index) => (\r\n\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tselectEmployer(index)\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{result.Name}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t{showNotFoundButton.value && (\r\n\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tskipStep()\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\tCan't find your employer? Click here.\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\t{activeEmployer.value && activeEmployer.value.EmployerName && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t{needToAskAboutUniform(activeEmployer.value) && (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tif (activeEmployer.value) {\r\n\t\t\t\t\t\t\t\t\t\tactiveEmployer.value.WoreUniform = value\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t{activeEmployer.value.WoreUniform === false && (\r\n\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\t

    Are you sure you didn’t wear a uniform?
    \r\n\t\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tThis can be a t-shirt with a company logo, high viz gear or a recognised uniform such as a nurse or police officer.\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\tWhat year did you start working at {activeEmployer.value.EmployerName}?\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tif (activeEmployer.value) {\r\n\t\t\t\t\t\t\t\t\t\t\tconst y = parseInt((e.target as HTMLSelectElement).value)\r\n\t\t\t\t\t\t\t\t\t\t\tactiveEmployer.value.YearCommenced = y\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{App.currentTaxYears.map((taxYear) => (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t{anotherEmployerNeeded.value && (\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\tTo ensure you have a good chance of a rebate, we require at least 2 years worth of your employment history.\r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t)}\r\n\r\n\t\t\t{employerRecordsComplete.value && }\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(EmployerStep)\r\n","import { unref } from \"vue\"\r\nimport type { Component } from \"vue-utils\"\r\nimport type { ClaimStepData } from \".\"\r\nimport ClaimSteps from \".\"\r\nimport AlreadyClaimed from \"./issues/AlreadyClaimed\"\r\nimport EmployerDetailsNeeded from \"./issues/EmployerDetailsNeeded\"\r\nimport LackOfExpenses from \"./issues/LackOfExpenses\"\r\nimport NoTaxPaid from \"./issues/NoTaxPaid\"\r\nimport NoEmploymentHistory from \"./issues/NoEmploymentHistory\"\r\nimport RequireSelfAssessment from \"./issues/RequireSelfAssessment\"\r\nimport UniformClaimed from \"./issues/UniformClaimed\"\r\nimport WaitUntilNextTaxYear from \"./issues/WaitUntilNextTaxYear\"\r\nimport AboutYouStep from \"./mod/AboutYouStep\"\r\nimport BasicInformationStep from \"./mod/BasicInformationStep\"\r\nimport DetailsPassedStep from \"./mod/DetailsPassedStep\"\r\nimport AddressStep from \"./standard/AddressStep\"\r\nimport CompleteStep from \"./standard/CompleteStep\"\r\nimport EstimateStep from \"./standard/EstimateStep\"\r\nimport NameStep from \"./standard/NameStep\"\r\nimport NationalInsuranceStep from \"./standard/NationalInsuranceStep\"\r\nimport PostcodeStep from \"./standard/PostcodeStep\"\r\nimport QualifyingStep from \"./standard/QualifyingStep\"\r\nimport ReviewStep from \"./standard/ReviewStep\"\r\nimport SelfAssessedChecks from \"./standard/SelfAssessedChecksStep\"\r\nimport SignatureStep from \"./standard/SignatureStep\"\r\nimport SubscriptionDetails from \"./standard/SubscriptionDetailsStep\"\r\nimport SubscriptionPermissionStep from \"./standard/SubscriptionPermissionStep\"\r\nimport SubscriptionsStep from \"./standard/SubscriptionsStep\"\r\nimport TaxYearsStep from \"./standard/TaxYearsStep\"\r\nimport OccupationStep from \"./standard/OccupationStep\"\r\nimport WorkFromHomeStep from \"./standard/PandemicWorkFromHomeStep\"\r\nimport DetailsRejected from \"./issues/DetailsRejected\"\r\nimport EmployerStep from \"./standard/EmployerStep\"\r\n\r\n/*\r\n Step components are declared separately to the step information data so that the step components can reference other\r\n steps without causing errors from circular imports\r\n*/\r\n\r\nconst stepComponents = new Map()\r\n\r\nstepComponents.set(ClaimSteps.Postcode, PostcodeStep)\r\nstepComponents.set(ClaimSteps.Name, NameStep)\r\nstepComponents.set(ClaimSteps.TaxYears, TaxYearsStep)\r\nstepComponents.set(ClaimSteps.Qualifying, QualifyingStep)\r\nstepComponents.set(ClaimSteps.Address, AddressStep)\r\nstepComponents.set(ClaimSteps.SelfAssessedChecks, SelfAssessedChecks)\r\nstepComponents.set(ClaimSteps.Estimate, EstimateStep)\r\nstepComponents.set(ClaimSteps.WorkFromHome, WorkFromHomeStep)\r\nstepComponents.set(ClaimSteps.Subscriptions, SubscriptionsStep)\r\nstepComponents.set(ClaimSteps.Employer, EmployerStep)\r\nstepComponents.set(ClaimSteps.Occupation, OccupationStep)\r\nstepComponents.set(ClaimSteps.SubscriptionDetails, SubscriptionDetails)\r\nstepComponents.set(ClaimSteps.SubscriptionPermission, SubscriptionPermissionStep)\r\nstepComponents.set(ClaimSteps.NationalInsurance, NationalInsuranceStep)\r\nstepComponents.set(ClaimSteps.ReviewClaim, ReviewStep)\r\nstepComponents.set(ClaimSteps.Signature, SignatureStep)\r\nstepComponents.set(ClaimSteps.ClaimComplete, CompleteStep)\r\n\r\nstepComponents.set(ClaimSteps.BasicInformation, BasicInformationStep)\r\nstepComponents.set(ClaimSteps.AboutYou, AboutYouStep)\r\nstepComponents.set(ClaimSteps.DetailsPassed, DetailsPassedStep)\r\n\r\nstepComponents.set(ClaimSteps.NoTaxPaid, NoTaxPaid)\r\nstepComponents.set(ClaimSteps.AlreadyClaimed, AlreadyClaimed)\r\nstepComponents.set(ClaimSteps.RequireSelfAssessment, RequireSelfAssessment)\r\nstepComponents.set(ClaimSteps.NoEmploymentHistory, NoEmploymentHistory)\r\nstepComponents.set(ClaimSteps.LackOfExpenses, LackOfExpenses)\r\nstepComponents.set(ClaimSteps.UniformClaimed, UniformClaimed)\r\nstepComponents.set(ClaimSteps.EmployerDetailsNeeded, EmployerDetailsNeeded)\r\nstepComponents.set(ClaimSteps.WaitUntilNextTaxYear, WaitUntilNextTaxYear)\r\nstepComponents.set(ClaimSteps.DetailsRejected, DetailsRejected)\r\n\r\nexport const getStepComponent = (step: ClaimStepData) => stepComponents.get(unref(step))\r\n","import type { ClaimStepData } from \"@/steps\"\r\nimport { getStepComponent } from \"@/steps/StepComponents\"\r\nimport { h, markRaw, onBeforeMount, onUnmounted, provide, renderSlot, shallowRef } from \"vue\"\r\nimport { defineComponent, inferProps, ValidationHandler, ValidationHandlerKey, type ReactiveComponent } from \"vue-utils\"\r\n\r\ninterface Props {\r\n\tstep: ClaimStepData\r\n}\r\n\r\nconst ClaimStep: ReactiveComponent = (props, { slots }) => {\r\n\tconst formRef = shallowRef()\r\n\tconst validationHandler = new ValidationHandler({ form: formRef })\r\n\tprovide(ValidationHandlerKey, validationHandler)\r\n\r\n\tmarkRaw(validationHandler)\r\n\r\n\tonBeforeMount(() => (App.ValidationHandler = validationHandler))\r\n\tonUnmounted(() => (App.ValidationHandler = undefined))\r\n\r\n\tfunction renderComponent() {\r\n\t\tif (\"default\" in slots) {\r\n\t\t\treturn renderSlot(slots, \"default\")\r\n\t\t}\r\n\t\tconst component = getStepComponent(props.step)\r\n\t\tif (!component) {\r\n\t\t\treturn null\r\n\t\t}\r\n\t\treturn h(component)\r\n\t}\r\n\treturn () => (\r\n\t\t e.preventDefault()}\r\n\t\t>\r\n\t\t\t{renderComponent()}\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(ClaimStep, inferProps())\r\n","import ClaimStep from \"@/components/ClaimStep\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nconst DisplayCurrentStep: ReactiveComponent = () => {\r\n\treturn () => (!CurrentStep ? null : )\r\n}\r\n\r\nexport default defineComponent(DisplayCurrentStep)\r\n","import type { App } from \"vue\"\r\n\r\nimport { VueMaskDirective } from \"v-mask\"\r\nimport RadioButton from \"./components/RadioButton\"\r\nimport Question from \"./components/Question\"\r\nimport CurrencyInput from \"./components/CurrencyInput\"\r\nimport ClaimStep from \"./components/ClaimStep\"\r\nimport { LoadingWrapper } from \"./composition/useLoading\"\r\nimport DisplayCurrentStep from \"./steps/DisplayCurrentStep\"\r\nimport ButtonNavigation from \"./components/ButtonNavigation\"\r\nimport { ModalsWrapper } from \"./modals\"\r\n\r\nexport class TaxRebateVuePlugin {\r\n\tinstall(app: App) {\r\n\t\tapp.directive(\"mask\", {\r\n\t\t\tbeforeMount: (el, binding) => VueMaskDirective.bind(el as Element, binding),\r\n\t\t\tupdated: (el, directive) => VueMaskDirective.componentUpdated(el as Element, directive),\r\n\t\t\tunmounted: (el) => VueMaskDirective.unbind(el as Element),\r\n\t\t})\r\n\r\n\t\tapp.component(\"RadioButton\", RadioButton)\r\n\t\tapp.component(\"Question\", Question)\r\n\t\tapp.component(\"CurrencyInput\", CurrencyInput)\r\n\t\tapp.component(\"ButtonNavigation\", ButtonNavigation)\r\n\r\n\t\tapp.component(\"ClaimStage\", ClaimStep)\r\n\t\tapp.component(\"LoadingWrapper\", LoadingWrapper)\r\n\t\tapp.component(\"ModalsWrapper\", ModalsWrapper)\r\n\r\n\t\tapp.component(\"DisplayCurrentStep\", DisplayCurrentStep)\r\n\t}\r\n}\r\n","/* eslint-disable @typescript-eslint/no-misused-promises */\r\nimport { httpJsonRequest, httpJsonRequestJsonResponse, httpRequest, RequestMethod } from \"@/apis/httpService\"\r\nimport { useLoading } from \"@/composition/useLoading\"\r\nimport { showModalMessage } from \"@/modals\"\r\nimport type { CustomerClaimRecordForExport, Nullable } from \"@/types\"\r\nimport moment from \"moment\"\r\nimport { type App, createApp, defineComponent, reactive } from \"vue\"\r\nimport { defineGlobals } from \"vue-utils\"\r\nimport { generateDownloadKey } from \"../apis\"\r\nimport { TaxRebateVuePlugin } from \"../TaxRebateVuePlugin\"\r\n\r\ninterface Outcome {\r\n\tlogicSelector: string\r\n\tid: string\r\n\trenderAction: string\r\n}\r\n\r\n/*DECISION FLOW LOGIC*/\r\nconst ClaimLookup = reactive({\r\n\tResults: [] as CustomerClaimRecordForExport[],\r\n\tSelectedClaimId: \"none\",\r\n\tEnquirySent: false,\r\n\tSelectedClaim: null as Nullable,\r\n})\r\n\r\nconst { runAction } = useLoading()\r\nlet app: App | null = null\r\n\r\n//initialize vue context for Decision flow\r\nfunction lookupVueInit() {\r\n\tconst element = document.getElementById(\"Contact\")!\r\n\tconst component = defineComponent({\r\n\t\tdata: () => ({\r\n\t\t\tClaimLookup,\r\n\t\t}),\r\n\t\tmethods: {\r\n\t\t\tfrontEndDateFormat(date: string) {\r\n\t\t\t\treturn moment(date, \"YYYY-MM-DD\").format(\"DD/MM/YYYY\")\r\n\t\t\t},\r\n\t\t},\r\n\t})\r\n\r\n\tapp = createApp(component)\r\n\tapp.use(new TaxRebateVuePlugin())\r\n\tapp.mount(element)\r\n\r\n\tdefineGlobals({ ClaimLookup })\r\n\treturn app\r\n}\r\n\r\nexport function lookupVueInitialize() {\r\n\tif ($(\"#Contact\").length) {\r\n\t\tlookupVueInit()\r\n\t}\r\n}\r\n\r\nasync function loadPartial(url: string) {\r\n\tconst result = await fetch(url)\r\n\tif (!result.ok) {\r\n\t\tthrow new Error(\"Failed to load partial\")\r\n\t}\r\n\tconst text = await result.text()\r\n\r\n\tif (app) {\r\n\t\tapp.unmount()\r\n\t\tapp = null\r\n\t}\r\n\r\n\tconst mainApp = document.getElementById(\"Contact\")!\r\n\tmainApp.innerHTML = text\r\n\r\n\tlookupVueInit()\r\n}\r\n\r\n$(document).on(\"change\", \"#FlowItems\", async function () {\r\n\tconst optionSelected = $(\"option:selected\", this as Document)\r\n\tconst renderAction = optionSelected.data(\"render-action\") as string\r\n\tconst redirect = optionSelected.data(\"redirect\") as Nullable\r\n\r\n\tif (!!redirect && redirect !== \"\") {\r\n\t\tlocation.href = redirect\r\n\t}\r\n\r\n\tif (renderAction) {\r\n\t\tawait loadPartial(renderAction)\r\n\t}\r\n})\r\n\r\n//action on clicking look up claim\r\n$(document).on(\"click\", \"#btnLookupClaim\", async (e) => {\r\n\te.preventDefault()\r\n\t//console.log('looking up claims...');\r\n\tconst email = $(\"input[name=email]\").val() as string\r\n\tconst claimref = $(\"input[name=claimref]\").val() as string\r\n\tconst ni = $(\"input[name=NI]\").val() as string\r\n\r\n\tClaimLookup.Results = await runAction(lookupClaims(email, claimref, ni))\r\n})\r\n\r\n//action on clicking look up claim for print\r\n$(document).on(\"click\", \"#btnLookupClaimForPrint\", async (e) => {\r\n\te.preventDefault()\r\n\t//console.log('looking up claims...');\r\n\tconst email = $(\"input[name=email]\").val() as string\r\n\tconst claimref = $(\"input[name=claimref]\").val() as string\r\n\tconst ni = $(\"input[name=NI]\").val() as string\r\n\r\n\tif (email.length > 0 && claimref.length > 0 && ni.length > 0) {\r\n\t\tClaimLookup.Results = await runAction(lookupClaimsForPrint(email, claimref, ni))\r\n\t} else {\r\n\t\tvoid showModalMessage(\"Error\", \"You need to provide all 3 fields in order to look up your claim.\")\r\n\t}\r\n})\r\n\r\n//action to redirect to pdf\r\n$(document).on(\"click\", \".btn.print\", async function (e) {\r\n\te.preventDefault()\r\n\tconst userid = $(this).data(\"user\") as string\r\n\tconst url = $(this).data(\"link\") as string\r\n\r\n\tawait generateDownloadKey(userid)\r\n\twindow.location.href = url\r\n\t//window.open(url);\r\n})\r\n\r\n//action on clicking 'I don't have these details' on claim lookup\r\n$(document).on(\"click\", \"button.nodetails\", async (e) => {\r\n\te.preventDefault()\r\n\r\n\tconst outcome = lookupOutcome(\"var ClaimGross = 0;\\r\\nvar DaysSinceForms = -2\")\r\n\tif (outcome) {\r\n\t\tawait loadPartial(`/Home/${outcome.renderAction}/${outcome.id}`)\r\n\t}\r\n})\r\n\r\nfunction lookupOutcome(statement: string) {\r\n\tif (testMode) console.log(`looking up outcome for statement: ${statement}`)\r\n\tconst outcomeElements = $(\"span.outcome\")\r\n\tconst outcomes: Outcome[] = []\r\n\r\n\toutcomeElements.each(function () {\r\n\t\tconst e = $(this)\r\n\t\tif (testMode) console.log(e.attr(\"data-LogicSelector\"))\r\n\t\toutcomes.push({\r\n\t\t\tlogicSelector: e.attr(\"data-LogicSelector\") as string,\r\n\t\t\tid: e.attr(\"data-Id\") as string,\r\n\t\t\trenderAction: e.data(\"render-action\") as string,\r\n\t\t})\r\n\t})\r\n\r\n\tif (testMode) console.log(outcomes)\r\n\r\n\tfor (let i = 0; i < outcomes.length; i++) {\r\n\t\tconst result = evaluateOutcome(statement, outcomes[i].logicSelector)\r\n\t\tif (result) {\r\n\t\t\tif (testMode) console.log(outcomes[i].logicSelector)\r\n\t\t\treturn outcomes[i]\r\n\t\t}\r\n\t}\r\n\treturn undefined\r\n}\r\n\r\nfunction evaluateOutcome(statement: string, outcome: string): unknown {\r\n\t//TODO Use of \"new Function\" is basically just eval with extra steps. Needs to be replaced ASAP\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-implied-eval\r\n\treturn new Function(`${statement};return ${outcome}`)()\r\n}\r\n\r\n//action on picking your claim from looked-up claims\r\n$(document).on(\"click\", \"a.proceed\", async function (e) {\r\n\te.preventDefault()\r\n\tClaimLookup.SelectedClaimId = $(this).data(\"claimid\") as string\r\n\tconst claimgross = $(this).data(\"claimgross\") as Nullable\r\n\tconst dayssinceformsreceived = $(this).data(\"dayssinceformsreceived\") as string\r\n\tconst statementsToEvaluate = []\r\n\r\n\tClaimLookup.SelectedClaim = ClaimLookup.Results.find((obj) => obj.ClaimReference === ClaimLookup.SelectedClaimId) ?? null\r\n\r\n\tif (testMode) console.log(ClaimLookup.SelectedClaim)\r\n\r\n\tif (claimgross !== null && claimgross !== \"\") {\r\n\t\tstatementsToEvaluate.push(`var ClaimGross = ${claimgross};`)\r\n\t} else {\r\n\t\tstatementsToEvaluate.push(\"var ClaimGross = null;\")\r\n\t}\r\n\tif (dayssinceformsreceived !== null && dayssinceformsreceived !== \"\") {\r\n\t\tstatementsToEvaluate.push(`var DaysSinceForms = ${dayssinceformsreceived};`)\r\n\t} else {\r\n\t\tstatementsToEvaluate.push(\"var DaysSinceForms = null;\")\r\n\t}\r\n\r\n\tconst statementToEvaluate = statementsToEvaluate.join(\"\\r\\n\")\r\n\r\n\tconst outcome = lookupOutcome(statementToEvaluate)\r\n\tif (outcome) {\r\n\t\tawait loadPartial(`/Home/${outcome.renderAction}/${outcome.id}`)\r\n\t}\r\n})\r\n\r\n//action on clicking send claim enquiry\r\n$(document).on(\"click\", \"#btnContact\", async (e) => {\r\n\te.preventDefault()\r\n\r\n\tawait runAction(\r\n\t\tsendClaimEnquiry(\r\n\t\t\t$(\"input[name=firstname]\").val() as string,\r\n\t\t\t$(\"input[name=surname]\").val() as string,\r\n\t\t\t$(\"input[name=email]\").val() as string,\r\n\t\t\t$(\"input[name=refund]\").val() as string,\r\n\t\t\t$(\"input[name=NI]\").val() as string,\r\n\t\t\t$(\"input[name=claimref]\").val() as string,\r\n\t\t\t$(\"input[name=postcode]\").val() as string,\r\n\t\t\t$(\"input[name=address]\").val() as string\r\n\t\t)\r\n\t)\r\n\tClaimLookup.EnquirySent = true\r\n})\r\n\r\n//action on clicking send general enquiry\r\n$(document).on(\"click\", \"#btnGeneralContact\", async (e) => {\r\n\te.preventDefault()\r\n\r\n\tawait runAction(\r\n\t\tsendGeneralEnquiry(\r\n\t\t\t$(\"input[name=firstname]\").val() as string,\r\n\t\t\t$(\"input[name=surname]\").val() as string,\r\n\t\t\t$(\"input[name=email]\").val() as string,\r\n\t\t\t$(\"input[name=claimref]\").val() as string,\r\n\t\t\t$(\"input[name=postcode]\").val() as string,\r\n\t\t\t$(\"textarea[name=message]\").val() as string\r\n\t\t)\r\n\t)\r\n\tClaimLookup.EnquirySent = true\r\n})\r\n\r\n$(document).on(\"click\", \"#btnResendForms\", async (e) => {\r\n\te.preventDefault()\r\n\r\n\tawait runAction(cloneClaim(ClaimLookup.SelectedClaimId))\r\n\tClaimLookup.EnquirySent = true\r\n})\r\n\r\n$(document).on(\"click\", \"#btnReprintForms\", async (e) => {\r\n\te.preventDefault()\r\n\r\n\tawait runAction(reprintClaim(ClaimLookup.SelectedClaimId))\r\n\tClaimLookup.EnquirySent = true\r\n})\r\n\r\n$(document).on(\"click\", \"#btnUnsubscribe\", async (e) => {\r\n\te.preventDefault()\r\n\r\n\tconst email = $(\"input[name=email]\").val() as string\r\n\tconst type = $(\"input[name=unsub]:checked\").val() as \"claimonly\" | \"all\"\r\n\r\n\tawait runAction(unsubscribe(email, type))\r\n\t$(\"#UnsubscribeSuccess\").show()\r\n\t$(\"#UnsubscribeForm\").hide()\r\n})\r\n\r\nasync function lookupClaims(email: string, claimref: string, ni: string): Promise {\r\n\tconst search = {\r\n\t\tClaimReference: claimref,\r\n\t\tEmailAddress: email,\r\n\t\tNINumber: ni,\r\n\t\tClaimStatus: -2,\r\n\t\tBrandType: -1,\r\n\t\tBrand: -1,\r\n\t}\r\n\treturn await httpJsonRequestJsonResponse(\"/api/ui/claims/lookup\", search, RequestMethod.POST)\r\n}\r\n\r\nasync function lookupClaimsForPrint(email: string, claimref: string, ni: string): Promise {\r\n\tconst search = {\r\n\t\tClaimReference: claimref,\r\n\t\tEmailAddress: email,\r\n\t\tNINumber: ni,\r\n\t\tClaimStatus: -2,\r\n\t\tBrandType: -1,\r\n\t\tBrand: -1,\r\n\t}\r\n\treturn await httpJsonRequestJsonResponse(\"/api/ui/claims/lookup/print\", search, RequestMethod.POST)\r\n}\r\n\r\nasync function sendClaimEnquiry(\r\n\tfirstname: string,\r\n\tsurname: string,\r\n\temail: string,\r\n\trefund: string,\r\n\tni: string,\r\n\treference: string,\r\n\tpostcode: string,\r\n\taddress: string\r\n): Promise {\r\n\tconst data = {\r\n\t\tFirstName: firstname,\r\n\t\tSurname: surname,\r\n\t\tEmail: email,\r\n\t\tEstimatedClaim: refund,\r\n\t\tNI: ni,\r\n\t\tClaimGenericReference: reference,\r\n\t\tPostcode: postcode,\r\n\t\tAddress1: address,\r\n\t}\r\n\tawait httpJsonRequest(\"/api/ui/claim/sendenquiry\", data, RequestMethod.POST)\r\n}\r\n\r\nasync function sendGeneralEnquiry(\r\n\tfirstname: string,\r\n\tsurname: string,\r\n\temail: string,\r\n\treference: string,\r\n\tpostcode: string,\r\n\tmessage: string\r\n): Promise {\r\n\tconst data = {\r\n\t\tFirstName: firstname,\r\n\t\tSurname: surname,\r\n\t\tEmail: email,\r\n\t\tClaimReference: reference,\r\n\t\tPostcode: postcode,\r\n\t\tMessage: message,\r\n\t}\r\n\tawait httpJsonRequest(\"/api/ui/general/sendenquiry\", data, RequestMethod.POST)\r\n}\r\n\r\nasync function unsubscribe(email: string, type: \"claimonly\" | \"all\"): Promise {\r\n\tawait httpJsonRequest(`/api/ui/general/unsubscribe/${type}`, email, RequestMethod.POST)\r\n}\r\n\r\nasync function cloneClaim(id: string): Promise {\r\n\tawait httpRequest(`/api/ui/claim/${id}/clone`, RequestMethod.GET)\r\n}\r\n\r\nasync function reprintClaim(id: string): Promise {\r\n\tawait httpRequest(`/api/ui/claim/${id}/reprint`, RequestMethod.GET)\r\n}\r\n","/* eslint-disable @typescript-eslint/no-misused-promises */\r\n/*POSTAL UNSUBSCRIBE LOGIC*/\r\n\r\nimport { httpJsonRequest, httpJsonRequestJsonResponse, RequestMethod } from \"@/apis/httpService\"\r\nimport { useLoading } from \"@/composition/useLoading\"\r\nimport type { CustomerClaimRecordForExport, Id } from \"@/types\"\r\nimport moment from \"moment\"\r\nimport { createApp, reactive } from \"vue\"\r\nimport { TaxRebateVuePlugin } from \"../TaxRebateVuePlugin\"\r\n\r\n/*DECISION FLOW LOGIC*/\r\nconst PostalUnsubscribe = reactive({\r\n\tResults: {},\r\n\tSearch: {\r\n\t\tSurname: \"\",\r\n\t\tPostcode: \"\",\r\n\t\tClaimRef: \"\",\r\n\t},\r\n\tSelectedStatusId: 0,\r\n\tComplete: false,\r\n})\r\n\r\nconst { runAction } = useLoading()\r\n\r\n//initialize vue context for Decision flow\r\nfunction vueInitPostalUnsubscribe() {\r\n\tconst app = createApp({\r\n\t\tname: \"PostalUnsubscribe\",\r\n\t\tdata: () => ({ PostalUnsubscribe }),\r\n\t\tmethods: {\r\n\t\t\tfrontEndDateFormat(date: string) {\r\n\t\t\t\treturn moment(date, \"YYYY-MM-DD\").format(\"DD/MM/YYYY\")\r\n\t\t\t},\r\n\t\t\tasync handleLookup() {\r\n\t\t\t\tconst form = document.getElementById(\"Unsubscribe\")!.querySelector(\"form\")!\r\n\t\t\t\tif (form.reportValidity()) {\r\n\t\t\t\t\tPostalUnsubscribe.Results = await useLoading().runAction(lookupClaimsPostal())\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tasync handleUnsubscribe() {\r\n\t\t\t\tawait runAction(unsubscribeClaimsPostal(PostalUnsubscribe.SelectedStatusId))\r\n\t\t\t\tPostalUnsubscribe.Complete = true\r\n\t\t\t},\r\n\t\t},\r\n\t})\r\n\r\n\tapp.use(new TaxRebateVuePlugin())\r\n\tapp.mount(\"#Unsubscribe\")\r\n\r\n\treturn app\r\n}\r\n\r\nexport function postalUnsubscribeFormInit() {\r\n\tif ($(\"#Unsubscribe\").length) {\r\n\t\tvueInitPostalUnsubscribe()\r\n\t}\r\n}\r\n\r\nasync function lookupClaimsPostal(): Promise {\r\n\tconst search = {\r\n\t\tClaimReference: PostalUnsubscribe.Search.ClaimRef,\r\n\t\tSurname: PostalUnsubscribe.Search.Surname,\r\n\t\tPostcode: PostalUnsubscribe.Search.Postcode,\r\n\t\tClaimStatus: -1,\r\n\t\tFirstName: \"\",\r\n\t\tNINumber: \"\",\r\n\t\tBrandType: -1,\r\n\t\tEmailAddress: \"\",\r\n\t\tBrand: -1,\r\n\t}\r\n\treturn await httpJsonRequestJsonResponse(\"/api/ui/claims/lookup/unsubscribe\", search, RequestMethod.POST)\r\n}\r\n\r\nasync function unsubscribeClaimsPostal(statusId: Id): Promise {\r\n\tawait httpJsonRequest(`/api/ui/claims/unsubscribewithresponse/${statusId}`, PostalUnsubscribe.Results, RequestMethod.POST)\r\n}\r\n","/* eslint-disable @typescript-eslint/no-misused-promises */\r\nimport moment from \"moment\"\r\nimport { addressLookup, getAddress } from \"../apis\"\r\nimport { fixPostcode } from \"../utils/postcode\"\r\nimport { showModalMessage } from \"@/modals\"\r\nimport { createApp, reactive, watch } from \"vue\"\r\nimport { TaxRebateVuePlugin } from \"../TaxRebateVuePlugin\"\r\nimport { defineGlobals } from \"vue-utils\"\r\nimport { ClaimType } from \"@/steps\"\r\nimport { httpJsonRequest, httpJsonRequestJsonResponse, httpRequest, RequestMethod } from \"@/apis/httpService\"\r\nimport { useLoading } from \"@/composition/useLoading\"\r\nimport type { Id } from \"@/types\"\r\n\r\nconst RefundReceivedForm = reactive({\r\n\tFeedbackId: 0,\r\n\tReceived: null,\r\n\tPostcode: \"\",\r\n\tRatingId: 0,\r\n\tScore: null as number | null,\r\n\tAddressResults: {},\r\n\tEmail: null,\r\n\tAddress: null as string | null,\r\n\tComplete: false,\r\n\tCustomerId: 0,\r\n\tClaimId: 0,\r\n\tEnquirySent: false,\r\n\tComplaintSent: false,\r\n\tInvitationSent: false,\r\n\tMessage: \"\",\r\n\tClaimType: ClaimType.Standard,\r\n})\r\n\r\ndefineGlobals({ RefundReceivedForm })\r\n\r\nwatch(\r\n\t() => RefundReceivedForm.Received,\r\n\tasync () => {\r\n\t\t//fired when RefundReceivedForm.Received changes...\r\n\t\tRefundReceivedForm.FeedbackId = await createFeedbackRecord()\r\n\t}\r\n)\r\n\r\nwatch(\r\n\t() => RefundReceivedForm.RatingId,\r\n\tasync () => {\r\n\t\tif (RefundReceivedForm.FeedbackId >= 1) {\r\n\t\t\tawait updateFeedbackRecord()\r\n\t\t\t//RefundReceivedForm.FeedbackId = r;\r\n\r\n\t\t\tif (testMode) console.log(RefundReceivedForm.Score)\r\n\t\t\tif (RefundReceivedForm.Score !== null && RefundReceivedForm.Score >= 5) {\r\n\t\t\t\tawait queueRUKInvitation()\r\n\t\t\t\tif (testMode) console.log(\"sent RUK invitation request...\")\r\n\t\t\t\tRefundReceivedForm.InvitationSent = true\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tRefundReceivedForm.FeedbackId = await createFeedbackRecord()\r\n\t\t}\r\n\t}\r\n)\r\n\r\nconst { runAction } = useLoading()\r\n\r\n//initialize vue context\r\nfunction vueInitRefundReceivedForm() {\r\n\tconst app = createApp({\r\n\t\tdata: () => ({\r\n\t\t\tRefundReceivedForm,\r\n\t\t}),\r\n\t\tmethods: {\r\n\t\t\tfrontEndDateFormat(date: string) {\r\n\t\t\t\treturn moment(date, \"YYYY-MM-DD\").format(\"DD/MM/YYYY\")\r\n\t\t\t},\r\n\t\t\tasync lookUpAddresses(e: Event) {\r\n\t\t\t\tconst postcode = (e.target as HTMLInputElement).value.trim()\r\n\t\t\t\tif (postcode.length < 5) {\r\n\t\t\t\t\tif (postcode.length > 1) {\r\n\t\t\t\t\t\tvoid showModalMessage(\"Postcode search\", \"Please input a complete UK postcode.\")\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\ttry {\r\n\t\t\t\t\tRefundReceivedForm.AddressResults = await addressLookup(postcode)\r\n\t\t\t\t\tconst fixed = fixPostcode(postcode)\r\n\t\t\t\t\tRefundReceivedForm.Postcode = fixed\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tvoid showModalMessage(\r\n\t\t\t\t\t\t\"Postcode search\",\r\n\t\t\t\t\t\t\"No addresses could be found for the postcode you supplied. Please ensure you have provided a valid UK RESIDENTIAL Postcode.\"\r\n\t\t\t\t\t)\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tasync selectAddress(e: Event) {\r\n\t\t\t\tconst addressId = (e.target as HTMLInputElement).value\r\n\t\t\t\tconst address = await getAddress(addressId)\r\n\t\t\t\tRefundReceivedForm.Address = `${address.Address1}, ${address.Address2}, ${address.Address3}, ${address.County}`\r\n\t\t\t},\r\n\t\t},\r\n\t})\r\n\r\n\tapp.use(new TaxRebateVuePlugin())\r\n\tapp.mount(\"#RefundReceivedForm\")\r\n\r\n\treturn app\r\n}\r\n\r\nexport function refundReceivedFormInit() {\r\n\tif ($(\"#RefundReceivedForm\").length) {\r\n\t\tvueInitRefundReceivedForm()\r\n\t}\r\n}\r\n\r\nasync function createFeedbackRecord(): Promise {\r\n\tconst data = {\r\n\t\tClaimId: RefundReceivedForm.ClaimId,\r\n\t\tReceivedRebate: RefundReceivedForm.Received === null ? false : RefundReceivedForm.Received,\r\n\t\tRating: RefundReceivedForm.RatingId,\r\n\t\tClaimType: RefundReceivedForm.ClaimType,\r\n\t}\r\n\treturn await httpJsonRequestJsonResponse(\"/api/ui/customer/refundreceived/savefeedback\", data, RequestMethod.POST)\r\n}\r\n\r\nasync function updateFeedbackRecord(): Promise {\r\n\tconst data = {\r\n\t\tReceivedRebate: RefundReceivedForm.Received === null ? false : RefundReceivedForm.Received,\r\n\t\tRating: RefundReceivedForm.RatingId,\r\n\t\tDetails: RefundReceivedForm.Message,\r\n\t}\r\n\treturn await httpJsonRequestJsonResponse(\r\n\t\t`/api/ui/customer/refundreceived/updatefeedback/${RefundReceivedForm.FeedbackId}`,\r\n\t\tdata,\r\n\t\tRequestMethod.POST\r\n\t)\r\n}\r\n\r\nasync function sendNotReceivedReport(): Promise {\r\n\tconst data = {\r\n\t\tAddress: RefundReceivedForm.Address,\r\n\t\tEmail: RefundReceivedForm.Email,\r\n\t}\r\n\tawait httpJsonRequest(`/api/ui/customer/${RefundReceivedForm.CustomerId}/refundreceived/sendnotreceivedreport`, data, RequestMethod.POST)\r\n}\r\n\r\nasync function sendNegativeFeedbackReport(): Promise {\r\n\tconst data = {\r\n\t\tFBId: RefundReceivedForm.FeedbackId,\r\n\t\tComplaint: RefundReceivedForm.Message,\r\n\t}\r\n\tawait httpJsonRequest(`/api/ui/customer/${RefundReceivedForm.CustomerId}/refundreceived/sendnegativefeedbackreport`, data, RequestMethod.POST)\r\n}\r\n\r\nasync function queueRUKInvitation(): Promise {\r\n\tawait httpRequest(`/api/ui/customer/${RefundReceivedForm.CustomerId}/refundreceived/rukinvitation`, RequestMethod.POST)\r\n}\r\n\r\n$(document).on(\"click\", \"#RefundReceivedForm button.no-refund-enquiry\", async (e) => {\r\n\te.preventDefault()\r\n\r\n\tawait runAction(sendNotReceivedReport())\r\n\tRefundReceivedForm.EnquirySent = true\r\n})\r\n\r\n$(document).on(\"click\", \"#RefundReceivedForm button.review-invitation\", async (e) => {\r\n\te.preventDefault()\r\n\r\n\tawait runAction(queueRUKInvitation())\r\n\tRefundReceivedForm.InvitationSent = true\r\n})\r\n\r\n$(document).on(\"click\", \"#RefundReceivedForm button.send-complaint\", async (e) => {\r\n\te.preventDefault()\r\n\r\n\tawait runAction(sendNegativeFeedbackReport())\r\n\tRefundReceivedForm.ComplaintSent = true\r\n})\r\n\r\n$(document).on(\"click\", \"#RefundReceivedForm button.review-decline\", (e) => {\r\n\te.preventDefault()\r\n\twindow.location.href = \"/\"\r\n})\r\n","import { showConfirmModal } from \"@/modals\"\r\nimport { closeClaimClearData } from \"@/utils/clearClaim\"\r\nimport { defineComponent, type ReactiveComponent } from \"vue-utils\"\r\n\r\nasync function confirmCloseClaim() {\r\n\treturn !(await showConfirmModal({\r\n\t\ttitle: \"Save your claim on this device?\",\r\n\t\tcontent: () => (\r\n\t\t\t<>We've saved your claim data on this device so you can easily complete your claim later. Would you like to keep this data?\r\n\t\t),\r\n\t\tcancelText: \"No\",\r\n\t\tconfirmText: \"Yes\",\r\n\t}))\r\n}\r\n\r\nconst CloseClaimButton: ReactiveComponent = () => {\r\n\tasync function handleClick() {\r\n\t\tif (await confirmCloseClaim()) {\r\n\t\t\tcloseClaimClearData()\r\n\t\t}\r\n\t}\r\n\r\n\treturn () => (\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default defineComponent(CloseClaimButton)\r\n","import moment from \"moment\"\r\nimport { defaultCustomerClaim, defaultMODClaim } from \"./defaults\"\r\nimport ClaimSteps, { type ClaimStepData, ClaimType } from \"./steps\"\r\nimport type { ClaimCustomer, MODClaim } from \"./types\"\r\nimport { clearLocalStorage } from \"./utils/clearClaim\"\r\n\r\nfunction matchStepFromLocalStorage(): ClaimStepData | null {\r\n\tconst savedStageStr = localStorage.getItem(\"ClaimStage\")\r\n\tconst savedTypeStr = localStorage.getItem(\"ClaimType\")\r\n\r\n\tif (!savedStageStr || !savedTypeStr || !(Object.values(ClaimType) as string[]).includes(savedTypeStr)) {\r\n\t\treturn null\r\n\t}\r\n\r\n\treturn Object.values(ClaimSteps).find((step) => step.name === savedStageStr && step.type === savedTypeStr) ?? null\r\n}\r\n\r\nexport default function initClaim() {\r\n\tCurrentStep = matchStepFromLocalStorage() ?? ClaimSteps.InitialStep\r\n\r\n\tif (savedClaim === null) {\r\n\t\tApp.CustomerClaim = defaultCustomerClaim\r\n\t\tif (getParamValue(\"married\") === \"0\") {\r\n\t\t\tApp.CustomerClaim.Married = false\r\n\t\t\tApp.CustomerClaim.MarriageClaimSkipped = true\r\n\t\t}\r\n\t} else {\r\n\t\tApp.CustomerClaim = savedClaim\r\n\t\tlocalStorage.setItem(\"CustomerClaim\", JSON.stringify(savedClaim))\r\n\t\tCurrentStep = ClaimSteps.Estimate\r\n\r\n\t\tif (testMode) console.log(`found saved claim data status ${savedClaim.ClaimStatus}`)\r\n\t}\r\n\tApp.MODClaim = defaultMODClaim\r\n\r\n\tif (localStorage.getItem(\"CustomerClaim\") !== null) {\r\n\t\tApp.CustomerClaim = JSON.parse(localStorage.getItem(\"CustomerClaim\") as string) as ClaimCustomer\r\n\t\tconst conversionpage = window.location.href.indexOf(conversionUrl) > -1\r\n\t\tif (conversionpage) {\r\n\t\t\tif (testMode) {\r\n\t\t\t\tconsole.log(\"On conversion page - hold your horses - don't go clearing any local storage data just yet...\")\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove old claims without new properties (will error)\r\n\t\tif (typeof App.CustomerClaim.TaxYearStatuses === \"undefined\" || App.CustomerClaim.TaxYearStatuses === null) {\r\n\t\t\tlocalStorage.removeItem(\"CustomerClaim\")\r\n\t\t\tlocalStorage.removeItem(\"ClaimStage\")\r\n\t\t\twindow.location.href = \"/\"\r\n\t\t}\r\n\r\n\t\tif (App.CustomerClaim.BrandId === brand.BrandId || App.CustomerClaim.SourceBrandId === brand.BrandId) {\r\n\t\t\t/////if (true) {\r\n\t\t\t//check date of localStorage data and clear if older than 30 days\r\n\t\t\tconst today = new Date()\r\n\t\t\tif (testMode) console.log(App.CustomerClaim.DateStamp)\r\n\t\t\tif (App.CustomerClaim.DateStamp === null) {\r\n\t\t\t\tif (testMode) console.log(\"no date found in local storage claim data so add property and re-save to local storage...\")\r\n\r\n\t\t\t\tif (testMode) App.CustomerClaim.DateStamp = moment(today.getDate()).add(-31, \"days\").toISOString()\r\n\t\t\t\telse App.CustomerClaim.DateStamp = moment(today.getDate()).toISOString()\r\n\r\n\t\t\t\tlocalStorage.setItem(\"CustomerClaim\", JSON.stringify(App.CustomerClaim))\r\n\t\t\t}\r\n\t\t\tconst dataDate = moment(App.CustomerClaim.DateStamp)\r\n\t\t\tconsole.log(dataDate)\r\n\t\t\tconst now = moment()\r\n\t\t\tconsole.log(now)\r\n\t\t\tconst diff = now.diff(dataDate, \"days\")\r\n\t\t\tlet maxdiff = App.CustomerClaim.ClaimStatus >= 10 ? 1 : 14 //if claim is already complete then clear after 1 day\r\n\t\t\tif (testMode) maxdiff = 1\r\n\t\t\tconsole.log(`Local storage is ${diff} days old`)\r\n\t\t\tif (diff > maxdiff && !conversionpage) {\r\n\t\t\t\tif (testMode) console.log(\"clearing storage cos its older than today... (you're in test mode!)\")\r\n\t\t\t\tclearLocalStorage()\r\n\t\t\t\tApp.CustomerClaim = defaultCustomerClaim\r\n\t\t\t\tCurrentStep = ClaimSteps.InitialStep\r\n\t\t\t}\r\n\t\t} else if (CurrentStep !== ClaimSteps.FinalStep) {\r\n\t\t\t// Don't use !== above since types of the variables above are not the same\r\n\t\t\t// If claim relates to a different brand from the site it was created on and it's incomplete\r\n\t\t\t// (e.g.teacher claim submitted on UTR) then clear it\r\n\t\t\tif (testMode) console.log(\"Clearing local storage as brand doesn't match source brand\")\r\n\t\t\tclearLocalStorage()\r\n\t\t\tApp.CustomerClaim = defaultCustomerClaim\r\n\t\t}\r\n\t}\r\n\tif (localStorage.getItem(\"MODClaim\") !== null) {\r\n\t\tApp.MODClaim = JSON.parse(localStorage.getItem(\"MODClaim\") as string) as MODClaim\r\n\t}\r\n\r\n\tif (suppressUBOptin) {\r\n\t\tApp.CustomerClaim.ThirdPtyPermission = false\r\n\t}\r\n}\r\n\r\nfunction getParamValue(key: string) {\r\n\tconst urlParams = new URLSearchParams(window.location.search)\r\n\tconst value = urlParams.get(key)\r\n\treturn value\r\n}\r\n","import { TaxRebateVuePlugin } from \"@/TaxRebateVuePlugin\"\r\nimport { createApp } from \"vue\"\r\n\r\nimport ClaimStep from \"@/components/ClaimStep\"\r\nimport CloseClaimButton from \"@/components/CloseClaimButton\"\r\nimport initClaim from \"@/initClaim\"\r\nimport { setClaimStep } from \"@/step-handler\"\r\nimport ClaimSteps, { ClaimType, type ClaimStepData } from \"@/steps\"\r\nimport DisplayCurrentStep from \"@/steps/DisplayCurrentStep\"\r\nimport type { Brand, ClaimCustomer, EnumEntry, MODClaim, OccupationSerializable, TaxYearViewModel } from \"@/types\"\r\nimport type { SectorRecord } from \"@/types/CompanyPAYEModels\"\r\nimport { reactive } from \"vue\"\r\nimport type { ValidationHandler } from \"vue-utils\"\r\n\r\nexport interface AppData {\r\n\tcompanyData: SectorRecord[]\r\n\tindustrySectors: EnumEntry[]\r\n\tindustrySectorsFiltered: EnumEntry[]\r\n\toccupationsFiltered: EnumEntry[]\r\n\tcurrentTaxYears: EnumEntry[]\r\n\tAllOccupations: OccupationSerializable[]\r\n\tMarriageTaxYears: TaxYearViewModel[] | null\r\n\tCustomerClaim: ClaimCustomer\r\n\tMODClaim: MODClaim\r\n\tBrand: Brand\r\n\tIsQuickEstimate: boolean\r\n\tInitialLoadWithExistingClaim: boolean\r\n\tValidationHandler?: ValidationHandler\r\n}\r\n\r\nconst App = reactive({\r\n\tcompanyData: [],\r\n\tindustrySectors: [],\r\n\tindustrySectorsFiltered: [],\r\n\toccupationsFiltered: [],\r\n\tcurrentTaxYears: [],\r\n\tAllOccupations: [],\r\n\tMarriageTaxYears: null,\r\n\tCustomerClaim: undefined as unknown as ClaimCustomer,\r\n\tMODClaim: undefined as unknown as MODClaim,\r\n\tBrand: brand,\r\n\tIsQuickEstimate: true,\r\n\tInitialLoadWithExistingClaim: !!localStorage.getItem(\"CustomerClaim\"),\r\n\tValidationHandler: undefined,\r\n})\r\n\r\nglobalThis.App = App as AppData\r\n\r\nfunction isClaimIncomplete(currentStep: ClaimStepData): boolean {\r\n\tswitch (currentStep.type) {\r\n\t\tcase ClaimType.Standard:\r\n\t\t\treturn currentStep.step > ClaimSteps.InitialStep.step && currentStep.step < ClaimSteps.FinalStep.step\r\n\t\tcase ClaimType.MoD:\r\n\t\t\treturn currentStep.step > ClaimSteps.InitialStep.step && currentStep.step < ClaimSteps.FinalMoDStep.step\r\n\t\tcase ClaimType.Marriage:\r\n\t\t\treturn false\r\n\t}\r\n\tthrow new Error(`Unknown step type '${currentStep.type as string}'`)\r\n}\r\n\r\nexport async function createTaxClaimApp(): Promise {\r\n\tconst element = document.getElementById(\"ClaimWrapper\")\r\n\tif (!element) {\r\n\t\treturn false\r\n\t}\r\n\r\n\tinitClaim()\r\n\tawait setClaimStep(CurrentStep, {\r\n\t\tinitialLoad: true,\r\n\t})\r\n\r\n\tif (CurrentStep === ClaimSteps.ClaimComplete) $(\"#claim_complete\").show()\r\n\telse $(\"#claim_complete\").hide()\r\n\r\n\tif (isClaimIncomplete(CurrentStep)) {\r\n\t\t$(\"#resume_claim\").show()\r\n\t\t$(\"#ClaimUSP\").text(\"Complete your claim - you're nearly there!\")\r\n\t} else {\r\n\t\t$(\"#resume_claim\").hide()\r\n\t\t$(\"#ClaimUSP\").text(\"Make a claim now - it only takes 2 minutes\")\r\n\t}\r\n\r\n\tApp.IsQuickEstimate = element.dataset.openDefault === \"false\" && !CurrentStep.isIssue\r\n\tApp.InitialLoadWithExistingClaim = App.InitialLoadWithExistingClaim && !CurrentStep.isIssue\r\n\r\n\tconst app = createApp({\r\n\t\tdata: () => ({\r\n\t\t\tApp,\r\n\t\t}),\r\n\t\tmounted() {\r\n\t\t\tApp.CustomerClaim.SourceData = sourcedata\r\n\t\t},\r\n\t\trender() {\r\n\t\t\treturn (\r\n\t\t\t\t
    \r\n\t\t\t\t\t{!App.IsQuickEstimate && }\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t{App.IsQuickEstimate ? (\r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t\t\t{App.Brand.DomainName.includes(\"taxrefund\") ? (\r\n\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\tFREE Refund Estimate\r\n\t\t\t\t\t\t\t\t\t\t{CurrentStep === ClaimSteps.Postcode && (\r\n\t\t\t\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t\t\t\t - enter your postcode\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tDue a tax rebate? \r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\tFind out at \"\"\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t

    \r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t

    Claim Your Tax Refund

    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{App.IsQuickEstimate && App.InitialLoadWithExistingClaim && !CurrentStep.isIssue ? (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t)\r\n\t\t},\r\n\t})\r\n\r\n\tapp.use(new TaxRebateVuePlugin())\r\n\tapp.mount(element)\r\n\r\n\treturn true\r\n}\r\n","export function getGlobal(name: string): T {\r\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\treturn (window as Record)[name] as T\r\n}\r\n","import { httpJsonRequest, RequestMethod } from \"@/apis/httpService\"\r\nimport { useLoading } from \"@/composition/useLoading\"\r\nimport moment from \"moment\"\r\nimport { createApp, reactive } from \"vue\"\r\nimport { defineGlobals } from \"vue-utils\"\r\nimport { TaxRebateVuePlugin } from \"../TaxRebateVuePlugin\"\r\nimport { getGlobal } from \"../utils/globals\"\r\n\r\ninterface AddressData {\r\n\tAddress1: string\r\n\tAddress2: string\r\n\tAddress3: string\r\n\tCounty: string\r\n\tPostcode: string\r\n}\r\n\r\n/*BEGIN /claims/address/ logic*/\r\nconst UpdateAddressForm = reactive({\r\n\tKey: \"\",\r\n\tFinished: false,\r\n\tAddress: getGlobal(\"UpdateAddressData\"),\r\n})\r\n\r\n//initialize vue context\r\nfunction vueInitUpdateAddressForm() {\r\n\tconst { runAction } = useLoading()\r\n\tconst app = createApp({\r\n\t\tdata: () => ({ UpdateAddressForm }),\r\n\t\twatch: {},\r\n\t\tmethods: {\r\n\t\t\tfrontEndDateFormat(date: string) {\r\n\t\t\t\treturn moment(date, \"YYYY-MM-DD\").format(\"DD/MM/YYYY\")\r\n\t\t\t},\r\n\t\t\tasync saveAddress(e: Event) {\r\n\t\t\t\tconst btn = $(e.target as Element)\r\n\t\t\t\tconst key = btn.data(\"key\") as string\r\n\t\t\t\tUpdateAddressForm.Key = key\r\n\r\n\t\t\t\tawait runAction(updateAddressAndResendForms())\r\n\t\t\t\tUpdateAddressForm.Finished = true\r\n\t\t\t},\r\n\t\t},\r\n\t})\r\n\r\n\tapp.use(new TaxRebateVuePlugin())\r\n\tapp.mount(\"#UpdateAddress\")\r\n\r\n\treturn app\r\n}\r\n\r\nexport function updateAddressFormInit() {\r\n\tif ($(\"#UpdateAddress\").length) {\r\n\t\tvueInitUpdateAddressForm()\r\n\t}\r\n}\r\n\r\nasync function updateAddressAndResendForms(): Promise {\r\n\tconst data = UpdateAddressForm.Address\r\n\tawait httpJsonRequest(`/api/ui/address/${UpdateAddressForm.Key}/updateandresend`, data, RequestMethod.POST)\r\n}\r\n\r\ndefineGlobals({ UpdateAddressForm })\r\n","import { defineGlobals } from \"vue-utils\"\r\n\r\nfunction testimonialContentModal(heading: string, content: string, imageUrl: string) {\r\n\tlet modal: JQuery\r\n\tconst img = /*html*/ `\r\n `\r\n\tif ($(\"#testimonialContentModal\").length === 0) {\r\n\t\tmodal = $('
    ')\r\n\t\tmodal.html(/*html*/ `\r\n
    \r\n
    \r\n
    \r\n
    ${heading}
    \r\n \r\n
    \r\n
    \r\n ${img}\r\n
    \r\n ${content}\r\n
    \r\n
    \r\n
    \r\n
    \r\n `)\r\n\t\t$(\"body\").append(modal)\r\n\t} else {\r\n\t\tmodal = $(\"#testimonialContentModal\")\r\n\t\tmodal.html(/*html*/ `\r\n
    \r\n
    \r\n
    \r\n
    ${heading}
    \r\n \r\n
    \r\n
    \r\n ${img}\r\n
    \r\n ${content}\r\n
    \r\n
    \r\n
    \r\n
    \r\n `)\r\n\t}\r\n\tmodal.on(\"hidden.bs.modal\", () => {\r\n\t\t$(\"#testimonialContentModal\").modal(\"dispose\")\r\n\t\t$(\"#testimonialContentModal\").remove()\r\n\t})\r\n\tmodal.modal()\r\n}\r\n\r\ndefineGlobals({ testimonialContentModal })\r\n\r\nexport default testimonialContentModal\r\n","import { defineGlobals } from \"vue-utils\"\r\n\r\nfunction testimonialIframeModal(heading: string, url: string) {\r\n\tlet modal: JQuery\r\n\tconst iframe = /*html*/ `
    \r\n \r\n
    `\r\n\tif ($(\"#testimonialIframeModal\").length === 0) {\r\n\t\tmodal = $('
    ')\r\n\t\tmodal.html(/*html*/ `\r\n
    \r\n
    \r\n
    \r\n
    ${heading}
    \r\n \r\n
    \r\n
    \r\n ${iframe}\r\n
    \r\n
    \r\n
    \r\n `)\r\n\t\t$(\"body\").append(modal)\r\n\t} else {\r\n\t\tmodal = $(\"#testimonialIframeModal\")\r\n\t\tmodal.html(/*html*/ `\r\n
    \r\n
    \r\n
    \r\n
    ${heading}
    \r\n \r\n
    \r\n
    \r\n ${iframe}\r\n
    \r\n
    \r\n
    \r\n `)\r\n\t}\r\n\tmodal.on(\"hidden.bs.modal\", () => {\r\n\t\t$(\"#testimonialIframeModal\").modal(\"dispose\")\r\n\t\t$(\"#testimonialIframeModal\").remove()\r\n\t})\r\n\tmodal.modal()\r\n}\r\n\r\ndefineGlobals({ testimonialIframeModal })\r\n\r\nexport default testimonialIframeModal\r\n","/* eslint-disable vue/one-component-per-file */\r\n\r\nimport { ModalsWrapper, showModalMessage } from \"@/modals\"\r\nimport { createApp } from \"vue\"\r\nimport { mergePromises } from \"vue-utils\"\r\nimport {\r\n\tcancelClaim,\r\n\tgetCompanyPAYEData,\r\n\tgetDetailedTaxYears,\r\n\tgetIndustrySectors,\r\n\tgetIndustrySectorsFiltered,\r\n\tgetOccupationsAll,\r\n\tgetTaxYears,\r\n} from \"./apis\"\r\nimport { lookupVueInitialize } from \"./apps/ClaimLookup\"\r\nimport { postalUnsubscribeFormInit } from \"./apps/PostalUnsubscribe\"\r\nimport { refundReceivedFormInit } from \"./apps/RefundReceivedForm\"\r\nimport { createTaxClaimApp } from \"./apps/TaxClaim\"\r\nimport { updateAddressFormInit } from \"./apps/UpdateAddress\"\r\nimport \"./components\"\r\nimport { useLoading } from \"./composition/useLoading\"\r\nimport { pandemicYearIds } from \"./constants\"\r\nimport \"./modals/testimonialContentModal\"\r\nimport \"./modals/testimonialIframeModal\"\r\nimport \"./styles\"\r\nimport type { Nullable } from \"./types\"\r\nimport { focusClaimForm, scrollTo } from \"./utils/scrolling\"\r\n\r\ndocument.getElementById(\"temporary-stylesheet\")?.remove()\r\n\r\nlet isFocus = false\r\n\r\nfunction numberWithCommas(x: number | string) {\r\n\treturn x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\")\r\n}\r\n\r\nfunction incrementTotalClaims() {\r\n\tconst els = $(\".totalrefunds.increment\")\r\n\tif (els.length) {\r\n\t\tels.each(function () {\r\n\t\t\tconst el = $(this)\r\n\t\t\tconst t = el.text()\r\n\t\t\tconst n = parseFloat(t.replace(\"£\", \"\").replace(/,/g, \"\"))\r\n\t\t\tif (n < claimsTotalMax) {\r\n\t\t\t\tconst newTotal = (n + avgClaim).toFixed(0).toLocaleString()\r\n\t\t\t\tel.text(`£${numberWithCommas(newTotal)}`)\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n}\r\n\r\nfunction incrementClaimCount() {\r\n\tconst els = $(\".refundcount.increment\")\r\n\tif (els.length) {\r\n\t\tels.each(function () {\r\n\t\t\tconst el = $(this)\r\n\t\t\tconst t = el.text()\r\n\t\t\tconst n = parseFloat(t.replace(/,/g, \"\"))\r\n\t\t\tif (n < noOfClaimsMax) {\r\n\t\t\t\tconst newTotal = (n + 1).toFixed(0).toLocaleString()\r\n\t\t\t\tel.text(numberWithCommas(newTotal))\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n}\r\n\r\nfunction menuResizerInit() {\r\n\twindow.addEventListener(\"scroll\", () => {\r\n\t\tconst distanceY = window.screenY || document.documentElement.scrollTop\r\n\t\tif (distanceY > 0) {\r\n\t\t\t$(\"header\").addClass(\"slim\")\r\n\t\t} else {\r\n\t\t\t$(\"header\").removeClass(\"slim\")\r\n\t\t}\r\n\t})\r\n}\r\n\r\n/*MAIN DOC EVENT*/\r\n// eslint-disable-next-line @typescript-eslint/no-misused-promises\r\n$(async () => {\r\n\tmenuResizerInit()\r\n\tpostalUnsubscribeFormInit()\r\n\tlookupVueInitialize()\r\n\trefundReceivedFormInit()\r\n\tupdateAddressFormInit()\r\n\r\n\tif (document.getElementById(\"ModalsWrapper\")) {\r\n\t\tcreateApp(ModalsWrapper).mount(\"#ModalsWrapper\")\r\n\t}\r\n\r\n\tconst created = await createTaxClaimApp()\r\n\tif (created) {\r\n\t\tvoid loadInitialData()\r\n\t}\r\n\r\n\tsetInterval(incrementTotalClaims, 15000)\r\n\tsetInterval(incrementClaimCount, 15000)\r\n})\r\n\r\nasync function loadInitialData() {\r\n\tconst { runAction } = useLoading()\r\n\tconst brandIdToUse = brandTypeOverrideId > 0 ? brandTypeOverrideId : brandTypeId\r\n\tconst result = await runAction(\r\n\t\tmergePromises({\r\n\t\t\tcompanyData: getCompanyPAYEData(),\r\n\t\t\tindustrySectors: getIndustrySectors(brandIdToUse),\r\n\t\t\tindustrySectorsFiltered: getIndustrySectorsFiltered(brandIdToUse),\r\n\t\t\ttaxYears: getTaxYears(),\r\n\t\t\tmarriageTaxYears: getDetailedTaxYears(),\r\n\t\t\tallOccupations: getOccupationsAll(),\r\n\t\t})\r\n\t)\r\n\r\n\tApp.industrySectors = result.industrySectors\r\n\tApp.industrySectorsFiltered = result.industrySectorsFiltered\r\n\tApp.currentTaxYears = result.taxYears\r\n\tApp.MarriageTaxYears = result.marriageTaxYears\r\n\tApp.AllOccupations = result.allOccupations\r\n\tApp.companyData = result.companyData\r\n\r\n\tfor (const ty of result.taxYears) {\r\n\t\t// Add tax years to claim tax year statuses (if not already present)\r\n\t\tif (!App.CustomerClaim.TaxYearStatuses.some((status) => status.Key === ty.Value)) {\r\n\t\t\tApp.CustomerClaim.TaxYearStatuses.push({ Key: ty.Value, Value: null })\r\n\t\t}\r\n\t\tif (!App.CustomerClaim.WorkFromHomeYears.some((wfh) => wfh.Id === ty.Value)) {\r\n\t\t\tlet w = 0\r\n\t\t\tif (pandemicYearIds.indexOf(ty.Value) > -1) {\r\n\t\t\t\tw = 52\r\n\t\t\t}\r\n\t\t\tApp.CustomerClaim.WorkFromHomeYears.push({ Id: ty.Value, Value: null, Weeks: w })\r\n\t\t}\r\n\t}\r\n\tfor (const ty of result.taxYears) {\r\n\t\tif (!App.CustomerClaim.WoreUniformTaxYears.some((uty) => uty.TaxYearId === ty.Value)) {\r\n\t\t\tApp.CustomerClaim.WoreUniformTaxYears.push({ TaxYearId: ty.Value, WoreUniform: null, Deduction: null, OccupationId: null, Year: null })\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/*MISC EVENTS*/\r\n\r\n//remove focus blur effect and reset site\r\n$(\"body\").on(\"click\", (e) => {\r\n\tif (e.target.nodeName.toLowerCase() !== \"input\" && e.target.nodeName.toLowerCase() !== \"select\")\r\n\t\tif ($(\"body\").hasClass(\"blur\") && isFocus) {\r\n\t\t\tif (!e.target.classList.contains(\"focus\") && e.target.parentElement && !e.target.parentElement.classList.contains(\"focus\")) {\r\n\t\t\t\t$(\"body\").removeClass(\"blur\")\r\n\t\t\t\t$(\".focus\").removeClass(\"focus\")\r\n\t\t\t\tisFocus = false\r\n\t\t\t}\r\n\t\t}\r\n})\r\n$(window).on(\"scroll\", () => {\r\n\tif ($(\"body\").hasClass(\"blur\") && isFocus) {\r\n\t\t$(\"body\").removeClass(\"blur\")\r\n\t\t$(\".focus\").removeClass(\"focus\")\r\n\t\tisFocus = false\r\n\t}\r\n})\r\n\r\n$(document).on(\"click\", \"#QuickQuote\", (e) => {\r\n\tfocusClaimForm(false)\r\n\te.stopImmediatePropagation()\r\n})\r\n\r\n$(document).on(\"focus\", \"input.fragment\", function () {\r\n\tconst input = this as HTMLInputElement\r\n\tinput.select()\r\n})\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-misused-promises\r\n$(document).on(\"click\", \"button.cancel-claim\", async (e) => {\r\n\te.preventDefault()\r\n\tconst t = $(e.target)\r\n\tconst u = String(t.data(\"userid\"))\r\n\tconst c = Number.parseInt(String(t.data(\"claimid\")))\r\n\r\n\ttry {\r\n\t\tawait useLoading().runAction(cancelClaim(u, c))\r\n\t} catch {\r\n\t\treturn\r\n\t}\r\n\r\n\tt.attr(\"disabled\", \"disabled\")\r\n\tt.parent().parent().find(\"p > button.keep-claim\").attr(\"disabled\", \"disabled\")\r\n\tvoid showModalMessage(\r\n\t\t\"Claim cancelled\",\r\n\t\t\"We have cancelled your claim record and will no longer send your rebate claim to HMRC for processing.\"\r\n\t)\r\n})\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-misused-promises\r\n$(document).on(\"click\", \"button.keep-claim\", async (e) => {\r\n\te.preventDefault()\r\n\r\n\tawait showModalMessage(\"Claim saved\", \"Thank you - we will continue to process your claim on your behalf.\")\r\n\twindow.location.replace(\"/\")\r\n})\r\n\r\n//select optin\r\n$(document).on(\"click\", '#Claim input[type=\"radio\"][name=\"optin\"]', () => {\r\n\t$('#Claim div.step2 button[role=\"button\"]').removeAttr(\"disabled\")\r\n})\r\n\r\n$(document).on(\"click\", \"a.anchorlink\", function (e) {\r\n\te.preventDefault()\r\n\tconst anchor = $(this).data(\"anchorid\") as Nullable\r\n\tconst href = $(this).attr(\"href\") as string\r\n\tif (anchor !== null) {\r\n\t\tconst t = $(`#${anchor}`)\r\n\t\tif (t.length) {\r\n\t\t\tscrollTo(anchor)\r\n\t\t} else {\r\n\t\t\twindow.location.replace(href)\r\n\t\t}\r\n\t} else {\r\n\t\twindow.location.replace(href)\r\n\t}\r\n})\r\n\r\n/*QUICK-QUOTE-Specific stuff goes here*/\r\n"],"names":["BootstrapModal","props","modalRef","ref","onMounted","open","el","value","$","modal","on","onClosed","close","renderTitle","title","_createVNode","renderContent","content","renderFooter","footer","_createTextVNode","closeButton","BootstrapModal$1","defineComponent","closeOnBackgroundClick","type","Boolean","Function","modals","shallowRef","openModal","showClosableConfirmModal","result","ConfirmResult","Closed","Promise","resolve","__spreadProps","__spreadValues","_Fragment","onClick","Cancel","cancelText","Confirm","confirmText","showConfirmModal","showAlertModal","closeText","showModalMessage","message","ModalsWrapper","name","setup","map","defineGlobals","RequestMethod","HttpLoadingError","LoadingError","response","__publicField","httpRequest","url","method","requestOptions","_a","err","tryReadJsonMessage","e","httpRequestJsonResponse","httpJsonRequest","httpJsonRequestJsonResponse","getIndustrySectors","brandTypeId","getOccupationsAll","getIndustrySectorsFiltered","addressLookup","postcode","getAddress","addressId","getTaxYears","getDetailedTaxYears","saveClaimToServer","claim","saveMODClaimtoServer","generateDownloadKey","userId","cancelClaim","claimId","occupationSearch","search","getCompanyPAYEData","insertQualifyingCheck","question","answer","allowed","code","logCustomerIOEvent","data","checkEmailDidYouMean","email","LoadingWrapper","useLoading","loading","createLoadingHook","loadingComponent","showError","coolInTimeMs","defaultError","watchDebounce","fadeIn","fadeOut","RadioButton","attrs","slots","_mergeProps","required","enabledValue","onInput","setValue","renderSlot","RadioButton$1","Question","Question$1","gbpFormat","Intl","NumberFormat","style","currency","CurrencyInput","inputRef","isFocus","handleInput","amount","blur","getValue","format","useOnInputNumber","onBlur","onFocus","CurrencyInput$1","ClaimType","step","extra","issueStep","Postcode","Name","TaxYears","Qualifying","Address","SelfAssessedChecks","Estimate","WorkFromHome","Employer","Occupation","Subscriptions","SubscriptionPermission","SubscriptionDetails","NationalInsurance","ReviewClaim","Signature","ClaimComplete","BasicInformation","AboutYou","DetailsPassed","NoTaxPaid","AlreadyClaimed","RequireSelfAssessment","NoEmploymentHistory","LackOfExpenses","UniformClaimed","EmployerDetailsNeeded","WaitUntilNextTaxYear","DetailsRejected","ClaimSteps","MarriageClaimLink","MarriageClaimLink$1","UniformBenefits","UniformBenefits$1","App","CustomerClaim","Married","AlreadyClaimed$1","getHistoryState","state","createHistoryState","awaitNavPop","onPopState","pandemicYearIds","modIndustryId","selectableEmploymentYears","modEmployers","ClaimStatus","getLatestJob","records","r1","r2","_b","calculateTotalYearsEmployed","current","x","checkFields","validationHandler","validateForm","successful","errorMessages","length","margin","listStyle","padding","msg","i","delay","validateInternationalMobile","inp","test","validateUKMobile","shouldSkipStep","getNextStep","currentStep","newStep","getDirectNextStep","next","s1","s2","s","getPreviousStep","previousStep","getDirectPreviousStep","previous","previousSteps","directPreviousStep","fixHeadFoot","cStage","minStage","showTrustPilotModal","id","tpUrl","moment","tpFrame","scrollTo","elementId","offset","scrollToTop","focusClaimForm","openClaim","currentStepRef","ignoreNavigation","setUpNavigation","setClaimStep","options","ignoreHistory","initialLoad","ClaimedBeforeCheck","EarningBands","calculatorConfig","EarningsCheck","defaultEarningsBand","earningsBand","NewTaxPayerCheck","NothingToClaimForCheck","SelfAssessedCheck","UniformSubscriptionsCheck","ClaimedUniformAllowanceCurrentJob","ClaimedUniformAllowancePreviousJob","qualifies","EmployedCheck","runAction","QualifyingChecks","runAllQualifyingChecks","check","runQualifyingChecks","runPostSaveActions","requestedNextStep","nextStep","getRequestedNextStep","er","requested","goToNextStep","handler","isMoDClaim","latestJob","employerName","employer","goToPreviousStep","event","handleBrowserBack","handlerBrowserForward","isSubmitting","ButtonNavigation","columnGap","hideBack","backDisabled","backText","hideNext","nextDisabled","nextText","ButtonNavigation$1","String","EmployerDetailsNeeded$1","LackOfExpenses$1","LeaveAReview","openTrustPilot","ClaimId","TrustPilotSiteUrl","LeaveAReview$1","SpouseEmployed","NoTaxPaid$1","NoEmploymentHistory$1","RequireSelfAssessment$1","UniformClaimed$1","Date","getFullYear","WaitUntilNextTaxYear$1","confirmChangeEmail","currentEmail","didYouMean","useEmailDidYouMean","getEmail","setEmail","useCustomCheck","unref","fixPostcode","isPostcodeValid","usePostcodeLookup","addresses","matchAddress","lookupPostcode","isUserAction","addressesResult","PostcodeInput","updatePostcode","includes","replace","ch","toUpperCase","trimStart","setPostcode","useInputValidation","useOnInput","PostcodeInput$1","AddressInput","address","toReactive","toRef","hasAddress","computed","Address1","lookUpAddresses","replaceExisting","results","find","StreetAddress","startsWith","AddressId","updateAddress","Address2","Address3","County","watch","selectAddress","_withDirectives","$event","trim","_vModelSelect","onChange","AddressInput$1","SelectTitle","setTitle","SelectTitle$1","AboutYouStep","MODClaim","Title","CustomerId","FirstName","Surname","EmailAddress","Email","BrandId","MobileNumber","Phone","telRef","telType","newEmail","_vModelText","_resolveDirective","undefined","newAddress","Object","assign","AdditionalInfo","AboutYouStep$1","RadioButtons","emit","renderNo","readonly","default","renderYes","legend","reverse","RadioButtons$1","BasicInformationStep","canMoveForward","CompletedPhaseOneTraining","PostedToBaseTwoYearsOrLess","UseOwnVehicle","BasicInformationStep$1","defaultCustomerClaim","defaultMODClaim","closeClaimClearData","clearLocalStorage","clearClaimData","DetailsPassedStep","closeTax","preventDefault","DetailsPassedStep$1","useGoToNext","checkIsValid","val","goToNextFocusable","root","currentElement","nested","element","inputRegex","inputStyles","formatDate","date","Number","isFinite","valueOf","toLocaleDateString","day","month","year","getDayStr","formatDateInputString","split","getMonthStr","getYearStr","parsedDate","tryParseDate","str","parts","part","parseInt","getDate","getMonth","SplitDateInput","dayStr","monthStr","yearStr","dateStr","getTimezoneOffset","getTime","setDate","toISOString","checkTwoDigits","label","SplitDateInput$1","AddressStep","noPhone","updateSelfAssessed","selfAssessed","key","useCustomValidation","DateOfBirth","MaxYear","MinYear","DoB","_vModelRadio","_vModelCheckbox","AddressStep$1","CompleteStep","UserId","brand","Abbreviation","CompleteStep$1","animateFigures","text","now","TrustPilotDisplay","devRef","Trustpilot","loadFromElement","trustPilotBusinessUnitId","DomainName","TrustPilotDisplay$1","CurrencyFormat","TotalFormat","maximumSignificantDigits","EstimateStep","termsEl","document","getElementById","formatCurrency","formatTotal","total","MaxRefund","SampleOccupationRefunds","r","indexOf","AverageRefund","border","textTransform","opacity","fontSize","claimsTotalMin","noOfClaimsMin","innerHTML","EstimateStep$1","NameStep","emailInputRef","emailConfirm","suppressUBOptin","ThirdPtyPermission","NameStep$1","NationalInsuranceStep","niValue","index","NI","charAt","setNiValue","char","ni","padEnd","substring","isCharacterInput","checkNIDigit","Array","from","_","target","NationalInsuranceStep$1","ResumeClaim","InitialLoadWithExistingClaim","IsQuickEstimate","ResumeClaim$1","selectStyles","createSearchSelect","SearchSelect","isOpen","hoveredItem","listRef","handleArrowNavigation","findIndex","option","getKey","newIndex","container","children","child","HTMLLIElement","dataset","offsetTop","clientHeight","scrollTop","inputKeyUp","handleOptionClick","setSearch","getText","setOption","position","placeholder","searchTerm","disabled","inputProps","onMouseenter","button","JobSelect","PostcodeStep","occupationSearchResults","noCurrentJob","runOccupationSearch","Employers","JobTitle","Employed","newData","OccupationId","IndustryId","onSelectJob","job","updateJobSearch","flexGrow","class","o","Id","toString","PostcodeStep$1","QualifyingStep","MarriageClaimSkipped","MarriageAllowanceTransfer","QualifyingStep$1","TextualDateInput","TextualDateInput$1","formatJobStartDate","started","startYear","Month","padStart","Year","formatJobFinishDate","finished","taxYearName","currentTaxYears","ty","Value","Key","ReviewDetails","enabledSubscriptions","filter","sub","Enabled","wfhYears","years","WorkFromHomeYears","yr","sort","y1","y2","v","EmploymentRecords","employmentRecord","EmployerName","Started","Finished","Uniformed","YearCommenced","taxyear","paddingLeft","Weeks","WoreUniformTaxYears","w","WoreUniform","TaxYearId","Deduction","OccupationSubscriptionId","TaxYearIds","ReviewDetails$1","ReviewStep","ReviewStep$1","SelfAssessedChecksStep","updateSACProperty","sacChecks","entries","some","every","SACIsSelfEmployed","SACHasAccountant","SACIsDirector","SACHasProperty","SACEarns100k","SACEarns50kPlusBens","SACHasBusiness","SACFilesTaxReturn","SAC10kInvestmentsIncome","SACIncomeFromOtherCountry","EditSignature","canvasRef","signaturePad","isEmpty","toDataURL","Error","resizeSignature","SignaturePad","penColor","addEventListener","updateSignature","useWindowListener","clear","ratio","Math","max","window","devicePixelRatio","width","offsetWidth","height","offsetHeight","getContext","scale","setSignatureSVG","setSignaturePoints","JSON","stringify","toData","clearSignature","EditSignature$1","SignatureDetails","AcceptedTerms","HMRCPermission","svg","SignatureSVG","SignatureDetails$1","SignatureStep","SignatureStep$1","EditSubscription","subscription","Years","SubscriptionId","Amount","EditSubscription$1","SubscriptionDetailsStep","SubscriptionPermissionStep","SubscriptionsPermission","SubscriptionsSignatureSVG","SubscriptionPermissionStep$1","SubscriptionsStep","maximumSubscriptions","SubscriptionsStep$1","TaxYearsStep","earningsBands","band","EarningsBand","TaxYearsStep$1","IndustrySelect","industries","industrySectors","i1","i2","localeCompare","industryId","setIndustryId","industry","IndustrySelect$1","OccupationSelect","occupations","AllOccupations","occupation","o1","o2","occupationId","setOccupationId","OccupationSelect$1","OccupationStep","showJobs","emp","readOnly","unknownJob","activeEmployerIndex","activeEmployer","allEmployersPopulated","showButtons","nextEmployer","editEmployer","f","PAYEReference","term","OccupationStep$1","tableStyles","WorkFromHomeStep","taxYearId","renderYear","taxYear","WorkFromHomeStep$1","DetailsRejected$1","bigramSimilarity","pattern","firstBigrams","bigram","count","intersectionSize","denominator","employerContainerStyles","employerListStyles","employerListButtonStyles","EmployerStep","selectedSectorIndex","selectedCategoryIndex","categoryConfirmed","searchValue","companyResults","showNotFoundButton","nextSector","selectCategory","LookupDataSectorCategoryIndex","LookupDataSectorIdentifier","companyData","Identifier","Categories","confirmCategory","compare","l","wordSimilarities","forEach","wordSimilarity","push","score","reduce","a","b","sortCompare","searchCompanies","console","log","Source","Companies","Results","selectEmployer","selectedEmployer","Reference","checkEmployers","activeEmployerValid","employerRecordsComplete","employerIndex","selectExistingRecord","needToAskAboutUniform","skipStep","categories","d","allYears","flatMap","min","sufficientYears","resultsFound","anotherEmployerNeeded","previousEmployer","moreThanOneEmployer","category","y","EmployerStep$1","stepComponents","getStepComponent","ClaimStep","formRef","ValidationHandler","form","provide","ValidationHandlerKey","markRaw","onBeforeMount","onUnmounted","renderComponent","component","h","ClaimStep$1","DisplayCurrentStep","CurrentStep","DisplayCurrentStep$1","TaxRebateVuePlugin","app","binding","VueMaskDirective","directive","ClaimLookup","reactive","lookupVueInit","createApp","lookupVueInitialize","loadPartial","mainApp","optionSelected","renderAction","redirect","claimref","lookupClaims","lookupClaimsForPrint","userid","outcome","lookupOutcome","statement","outcomeElements","outcomes","evaluateOutcome","claimgross","dayssinceformsreceived","statementsToEvaluate","obj","statementToEvaluate","sendClaimEnquiry","sendGeneralEnquiry","cloneClaim","reprintClaim","unsubscribe","firstname","surname","refund","reference","PostalUnsubscribe","vueInitPostalUnsubscribe","lookupClaimsPostal","unsubscribeClaimsPostal","postalUnsubscribeFormInit","statusId","RefundReceivedForm","createFeedbackRecord","updateFeedbackRecord","queueRUKInvitation","vueInitRefundReceivedForm","fixed","refundReceivedFormInit","sendNotReceivedReport","sendNegativeFeedbackReport","confirmCloseClaim","CloseClaimButton","handleClick","CloseClaimButton$1","matchStepFromLocalStorage","savedStageStr","savedTypeStr","initClaim","getParamValue","conversionpage","today","dataDate","diff","maxdiff","industrySectorsFiltered","occupationsFiltered","MarriageTaxYears","Brand","localStorage","getItem","globalThis","isClaimIncomplete","Standard","InitialStep","FinalStep","MoD","FinalMoDStep","Marriage","createTaxClaimApp","show","hide","openDefault","isIssue","mounted","SourceData","sourcedata","render","use","mount","getGlobal","UpdateAddressForm","vueInitUpdateAddressForm","updateAddressAndResendForms","updateAddressFormInit","testimonialContentModal","heading","imageUrl","img","testimonialIframeModal","iframe","numberWithCommas","incrementTotalClaims","els","t","n","newTotal","incrementClaimCount","menuResizerInit","loadInitialData","brandIdToUse","mergePromises","status","wfh","uty","u","c","anchor","href"],"mappings":"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ACA,OACA,aACA,mBACA,oBACA,MACA,kBACA,eACA,aACA,eACA,QACA,UACA,4BACA,gBACA,mBACA,oBACA,iBACA,2BACA,sBACA,mBACA,aACA,aACA,WACA,uBACA,WACA,mBACA,aACA,UACA,gBACA,gBACA,oCACA,qBACA,QACA,eACA,iBACA,kBACA,gBACA,kBACA,aACA,iBACA,mBACA,0BACA,WACA,eACA,iBACA,sBACA,cACA,aACA,kBACA,oBACA,YACA,cACA,6BACA,sBACA,iBACA,YACA,kBACA,WACA,cACA,4BACA,mBACA,gCACA,mBACA,WACA,mBACA,mBACA,cACA,aACA,QACA,gBACA,YACA,OACA,aACA,cACA,YACA,mDACA,gBACA,cACA,cACA,0BACA,gCACA,YACA,QACA,kBACA,yBACA,SACA,aACA,cACA,YACA,sBACA,kBACA,qBACA,MACA,aACA,iBACA,OACA,mBACA,iBACA,yBACA,MACA,OACA,uBACA,kBACA,YACA,eACA,gBACA,aACA,yBACA,gBACA,iBACA,YACA,YACA,eACA,kBACA,kBACA,aACA,aACA,SACA,oBACA,aACA,iBACA,WACA,yBACA,uBACA,kBACA,iBACA,YACA,0BACA,qBACA,mBACA,eACA,aACA,kBACA,QACA,YACA,yBACA,cACA,QACA,MACA,aACA,mBACA,oCACA,eACA,YACA,WACA,yBACA,kBACA,qBACA,YACA,WACA,eACA,aACA,WACA,aACA,SACA,aACA,kBACA,+BACA,uBACA,oCACA,uBACA,WACA,kBACA,aACA,mBACA,eACA,YACA,aACA,aACA,oBACA,gBACA,kBACA,iBACA,YACA,eACA,sBACA,cACA,mBACA,0BACA,cACA,iBACA,qBACA,6BACA,gBACA,iBACA,aACA,WACA,eACA,kBACA,SACA,iBACD,ECrNY,IAAAC,GAAAA,IACXA,EAAAA,EAAA,cAAgB,CAAhB,EAAA,gBACAA,EAAAA,EAAA,uBAAyB,CAAzB,EAAA,yBACAA,EAAAA,EAAA,+BAAiC,CAAjC,EAAA,iCACAA,EAAAA,EAAA,4BAA8B,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"}