{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?8668","webpack:///./src/view/Login.vue?78b4","webpack:///./src/view/AutoPay.vue?f6b0","webpack:///./src/components/Card/CardForm.vue?8f9c","webpack:///./src/components/Select/MultiSelect.vue?0ea5","webpack:///./src/components/CreditCard/CreditCard.vue?4f22","webpack:///./src/view/Payment.vue?c01d","webpack:///./src/App.vue","webpack:///./src/components/SingleTime/TheHeader.vue","webpack:///./src/components/SingleTime/TheHeader.vue?0dae","webpack:///./src/components/SingleTime/TheFooter.vue","webpack:///./src/components/SingleTime/TheFooter.vue?2156","webpack:///./src/components/Modal/Modal.vue","webpack:///./src/components/Modal/Modal.vue?877b","webpack:///./src/App.vue?dfb6","webpack:///./src/view/UserInfo.vue","webpack:///./src/directives/IMaskDirective.js","webpack:///./src/constants/ErrorAlerts.js","webpack:///./src/global/Helpers.js","webpack:///./src/view/UserInfo.vue?8a9f","webpack:///./src/view/ContractSelect.vue","webpack:///./src/components/StepNav/StepNav.vue","webpack:///./src/components/StepNav/StepNav.vue?421b","webpack:///./src/components/Select/MultiSelect.vue","webpack:///./src/components/Select/MultiSelect.vue?4ef8","webpack:///./src/components/Select/UnitSelect/UnitGroup.vue","webpack:///./src/components/Select/UnitSelect/CheckSelect.vue","webpack:///./src/components/Select/UnitSelect/Checkbox.vue","webpack:///./src/components/Select/UnitSelect/Checkbox.vue?ec74","webpack:///./src/components/Select/UnitSelect/CheckSelect.vue?db31","webpack:///./src/components/Select/UnitSelect/UnitGroup.vue?76be","webpack:///./src/view/ContractSelect.vue?1879","webpack:///./src/view/Payment.vue","webpack:///./src/constants/CardTypeDisplay.js","webpack:///./src/components/CreditCard/CreditCard.vue","webpack:///./src/components/CreditCard/CreditCard.vue?954b","webpack:///./src/view/Payment.vue?7698","webpack:///./src/view/PaymentBreakdown.vue","webpack:///./src/constants/Months.js","webpack:///./src/components/Breakdown/ContractBreakdown.vue","webpack:///./src/components/Breakdown/UnitBreakdown.vue","webpack:///./src/components/Breakdown/UnitBreakdown.vue?59aa","webpack:///./src/components/Breakdown/ContractBreakdown.vue?3b7d","webpack:///./src/view/PaymentBreakdown.vue?c0cc","webpack:///./src/view/Receipt.vue","webpack:///./src/view/Receipt.vue?2e3a","webpack:///./src/view/Confirmation.vue","webpack:///./src/view/Confirmation.vue?35ab","webpack:///./src/view/Login.vue","webpack:///./src/view/Login.vue?a423","webpack:///./src/view/CreateAccount.vue","webpack:///./src/view/CreateAccount.vue?6a83","webpack:///./src/view/VerifyAccount.vue","webpack:///./src/constants/ApiRoot.js","webpack:///./src/api/Login.js","webpack:///./src/view/VerifyAccount.vue?abe9","webpack:///./src/view/ResetUsername.vue","webpack:///./src/view/ResetUsername.vue?7481","webpack:///./src/view/ResetVerify.vue","webpack:///./src/view/ResetVerify.vue?211a","webpack:///./src/view/AutoPay.vue","webpack:///./src/components/Card/CardForm.vue","webpack:///./src/components/Card/CardForm.vue?f518","webpack:///./src/view/AutoPay.vue?0f56","webpack:///./src/view/PaymentSelection.vue","webpack:///./src/view/PaymentSelection.vue?7da9","webpack:///./src/router/Routes.js","webpack:///./src/store/User/getters.js","webpack:///./src/api/Customer.js","webpack:///./src/store/User/actions.js","webpack:///./src/store/User/mutations.js","webpack:///./src/store/User/index.js","webpack:///./src/store/Contracts/getters.js","webpack:///./src/api/Contract.js","webpack:///./src/store/Contracts/actions.js","webpack:///./src/store/Contracts/mutations.js","webpack:///./src/store/Contracts/index.js","webpack:///./src/store/Location/getters.js","webpack:///./src/api/Location.js","webpack:///./src/store/Location/actions.js","webpack:///./src/store/Location/mutations.js","webpack:///./src/store/Location/index.js","webpack:///./src/store/Payment/getters.js","webpack:///./src/api/Payment.js","webpack:///./src/api/Receipt.js","webpack:///./src/store/Payment/actions.js","webpack:///./src/store/Payment/mutations.js","webpack:///./src/store/Payment/index.js","webpack:///./src/store/Nav/getters.js","webpack:///./src/store/Nav/index.js","webpack:///./src/store/index.js","webpack:///./src/global/FontAwesome.js","webpack:///./src/directives/IIdleDirective.js","webpack:///./src/global/Idle.js","webpack:///./src/global/VueHtmlToPaper.js","webpack:///./src/main.js","webpack:///./src/view/UserInfo.vue?128f","webpack:///./src/view/VerifyAccount.vue?cbf2","webpack:///./src/components/SingleTime/TheHeader.vue?39ad","webpack:///./src/view/PaymentBreakdown.vue?1ba7","webpack:///./src/components/SingleTime/TheFooter.vue?5e0f","webpack:///./src/view/ResetVerify.vue?962d","webpack:///./src/view/Receipt.vue?f20b","webpack:///./src/view/AutoPay.vue?34ca","webpack:///./src/view/PaymentSelection.vue?281c","webpack:///./src/view/ContractSelect.vue?ead2","webpack:///./src/components/StepNav/StepNav.vue?2fcf","webpack:///./src/components/Breakdown/ContractBreakdown.vue?04a3","webpack:///./src/components/Select/UnitSelect/Checkbox.vue?5dd3","webpack:///./src/components/Select/UnitSelect/CheckSelect.vue?e2de","webpack:///./src/view/Confirmation.vue?d896","webpack:///./src/components/Select/UnitSelect/UnitGroup.vue?76e8","webpack:///./src/components/Breakdown/UnitBreakdown.vue?963e","webpack:///./src/view/CreateAccount.vue?63be","webpack:///./src/components/Modal/Modal.vue?7b65","webpack:///./src/view/ResetUsername.vue?e3f9","webpack:///./src/view/AutoPay.vue?ff52"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","Component","route","to","shouldClose","closeModal","disabled","show-modal","shouldOpen","body","href","$router","resolve","locationId","handleIdle","duration","position","meta","transition","class","location","entityLogoImage","loadError","address1","city","state","zip","src","imageUrlMain","alt","setup","store","getters","__exports__","role","id","click.prevent","showModal","props","Boolean","methods","this","$emit","components","TheHeader","TheFooter","Modal","clearAll","dispatch","localStorage","clear","path","query","for","maxlength","type","form","firstName","lastName","phoneNumber","event","detail","phoneNumberMask","emailAddress","unitNumber","submitForm","IMaskDirective","beforeMount","el","options","initMask","updated","maskRef","updateOptions","_onChange","destroyMask","unmounted","fireEvent","eventName","e","document","createEvent","initCustomEvent","dispatchEvent","opts","IMask","on","destroy","ErrorAlerts","showIcon","dismiss","manually","automatically","appearance","toCurrency","formatter","Intl","NumberFormat","style","currency","minimumFractionDigits","format","isPrepaid","dueDate","date","Date","setMonth","getMonth","currentDate","formatDateString","dateString","getDate","getFullYear","hasEmptyValues","obj","values","filter","v","isEmail","regexEmail","test","setNotification","user","entity","checkCustomerFetch","aggregateTotal","contracts","customer","contractsToPay","updateUser","updateLocationId","fetchLocation","fetchCustomer","customerDto","fetchContracts","contractDto","fetchLocationByEntity","entityId","updateSelectedContracts","contractInfo","updateMonthsAhead","monthsAhead","updateMonthsAheadDisplay","monthsAheadDisplay","updatePayment","payment","updateTotal","total","mounted","$route","guest","processAmsCustomer","message","customerId","mask","preventDefault","response","errorMessage","contractUnitIds","split","centralCustomerId","monthsIntoFuture","forEach","contract","contractUnits","unit","includes","contractNumber","contractUnitNumber","reduce","newest","current","getTime","month","parse","parseInt","contractTotal","map","unitPaymentBreakdowns","breakdownBalance","a","b","contractId","contractUnitId","paymentAmount","onAutoPay","autopay","directives","imask","active","contractNumbers","handleContractSelect","default","defaultSelect","contract-number","selectedContract","contract-units","formatCurrency","steps","item","step","navigate","icon","Number","tabindex","open","selected","itemSelected","clearSelect","option","Array","required","String","Function","computed","contract-unit","checked","handleCheck","contractUnit","nextAmountDue","checkPrepay","dateUnitPaidThrough","label","Checkbox","selectedContractUnits","removeSelectedContract","CheckSelect","StepNav","MultiSelect","UnitGroup","error","find","replace","keys","card-number","cardNumber","security-code","securityCode","expiration","expirationDate","card-style","cardStyle","flipped","savedCards","accountNumber","onSelectSavedCard","pattern","inputmode","onAcceptCardNumber","onCompleteCardNumber","cardNumberMask","width","height","viewBox","version","xmlns","xmlns:xlink","svg","onAcceptExpirationDate","expirationDateMask","onAcceptSecurityCode","securityCodeMask","savePayment","onSaveCardCheckboxSelected","allowAutopay","addAutopay","onAddAutopaySelected","totalPayment","loading","header","autoPayUnits","footer","CardTypeDisplay","svgSingle","lightColor","darkColor","x","y","xml:space","transform","points","x1","y1","x2","y2","payments","savedPaymentMethods","cardInfo","userFullName","acceptAutopay","selectedContracts","updateCardInfo","submitPayment","getSavedPaymentMethods","getPaymentMethodsDto","savePaymentMethod","savePaymentMethodsDto","updateAutoPay","autopayDto","CreditCard","regex","cardtype","appended","dynamicMasked","number","compiledMasks","re","RegExp","match","blocks","YY","MaskedRange","from","MM","cardType","expirationArr","nameOnCard","creditCardNumber","cardSecurityCode","Promise","all","u","contractCustomers","customerContractsDto","paymentMethodDto","$log","info","masked","currentMask","created","isGuest","savedUnitIds","flatMap","card","flat","months-ahead","onSelect","monthsSelectorData","Months","formatContract","paymentData","breakdownRent","breakdownFees","breakdownTax","UnitBreakdown","prepayList","ContractBreakdown","months","breakdownBalancePaidNextDueDate","balanceDue","print","startAgain","receipts","receipt","receiptData","theReceipt","close","receiptIds","resetAll","$htmlToPaper","opener","receiptNumbers","receiptNumber","getReceipts","lockout","events","eventTickRate","handleLockout","username","password","rememberCheck","RouterLink","hasAutoPayUnits","setUsername","authenticateCustomer","loginDto","fetchLockout","lockoutDto","updateLockout","time","addEventListener","handleUnload","lockoutTimer","lockoutCounter","console","log","email","beforeUnmount","removeEventListener","validator","$errors","index","$message","$model","confirmPassword","checkValidation","verification","verificationType","hasLowerCase","hasUpperCase","hasNumber","currentLogin","setLogin","createCustomerAccount","$lazy","validations","withMessage","minLength","sameAs","$validate","verificationCode","resendCode","API_ROOT","LOGIN_ENDPOINT","Axios","defaults","timeout","loginCustomer","post","logoutCustomer","verifyCustomerAccount","verificationDto","sendCustomerPasswordReset","resetCustomerPassword","passwordResetDto","pin","passwordConfirm","data-label","ref","loadingContracts","getContractUnitList","convertCurrency","roomRate","convertDate","hasAutoPay","showCard","onRemoveCareClick","isEdit","submitCard","showCardForm","selectedContractUnit","onConfirmRemoveCard","customerFullName","v$","accepted","acceptedPaymentTypes","$error","clearSelectedCard","CardForm","removeAutoPay","selectedSavedCard","selectedRemoveUnit","padStart","day","year","rate","cards","contractUnitList","unitID","some","unitId","findIndex","undefined","cardForm","$refs","cardFormRef","$nextTick","element","ccWrapper","scrollIntoView","behavior","block","reload","script","routes","component","Login","CreateAccount","VerifyAccount","UserInfo","locationQuery","entityIdQuery","customerIdQuery","centralCustomerQuery","monthsIntoFutureQuery","contractUnitIdsQuery","guestQuery","ResetUsername","ResetVerify","PaymentSelection","ContractSelect","AutoPay","PaymentBreakdown","Payment","Confirmation","Receipt","router","createRouter","history","createWebHistory","currentUser","currentCustomer","login","getUsername","getCustomerFullName","getLockout","lockoutRemaining","CUSTOMER_ENDPOINT","getCustomer","params","getCustomerLockout","createUser","commit","Customer","fetchCustomerLockout","setLoginInfo","reset","setUser","setCustomer","setLockout","lockOutTimeRemaining","setLoginData","address","namespaced","actions","mutations","getSelectedContractUnits","getSelectedContractUnitsFlat","getContracts","getContractsForPayment","contractUnitNumbers","JSON","stringify","getTotalCost","rootState","getLongestUnitPayListWithoutZeros","leastZeros","breakdown","CONTRACT_ENDPOINT","getCustomerContracts","addSelectedContract","fetchContractsForCustomer","Contract","addUnitToSelectedContract","toString","units","Set","removeUnitFromSelectedContract","setContracts","contractsForPayment","getLocation","getEntity","getLocationId","getLocationAutopayRule","getLocationAcceptedPaymentTypes","LOCATION_ENDPOINT","getLocationByEntityAsync","Location","setLocation","getMonthsAhead","getMonthsAheadDisplay","getPaymentTotal","paymentTotal","getPayments","getCardInfo","getReceiptIds","getReceiptNumbers","PAYMENT_ENDPOINT","paymentDto","getPaymentMethods","savePaymentMethods","savePaymentMethodDto","contractUnitID","delete","RECEIPT_ENDPOINT","getReceipt","receiptId","stringReceipts","f","updatePaymentInfo","contractIds","_","receiptID","fetchReceipts","updateReceipts","updateSavedPaymentMethods","updateReceiptIds","getStepNavData","nav","debug","process","createStore","navigation","strict","plugins","createLogger","createPersistedState","library","add","faFileContract","faWarehouse","faCheck","faAngleDown","faLock","faCalendarCheck","faTimes","faSpinner","faInfoCircle","faEdit","faPlus","faTrash","faArrowLeft","faSave","config","autoAddCss","plugin","install","Vue","FontAwesomeIcon","defineComponent","loop","wait","display","timer","start","counter","diff","minutes","seconds","setTimeout","now","setDisplay","setTimer","clearTimer","shouldRemind","minute","second","remind","countdown","idle","setInterval","clearInterval","render","h","IIdleDirective","addStyles","win","styles","link","createElement","setAttribute","getElementsByTagName","appendChild","VueHtmlToPaper","app","globalProperties","localOptions","cb","defaultName","defaultSpecs","defaultReplace","defaultStyles","specs","hasOptions","join","getElementById","url","write","title","innerHTML","focus","alert","isProduction","isEnabled","logLevel","stringifyLevel","showMethodName","separator","showConsoleColors","createApp","App","use","fontAwesome","VueNotificationList","mount","VueLogger"],"mappings":"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","file":"js/app.d4f7cb90.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&id=01684299&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Login.vue?vue&type=style&index=0&id=b7028ed4&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./AutoPay.vue?vue&type=style&index=2&id=19b1cfce&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./CardForm.vue?vue&type=style&index=0&id=7edc19e8&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MultiSelect.vue?vue&type=style&index=0&id=1e3de471&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./CreditCard.vue?vue&type=style&index=0&id=2450aac0&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Payment.vue?vue&type=style&index=0&id=7aa9a9e3&lang=scss&scoped=true\"","<template>\r\n <router-view v-slot=\"{ Component, route }\">\r\n <teleport to=\"#modal-area\">\r\n <modal @close-modal=\"closeModal\" :disabled=\"shouldClose\" v-if=\"!shouldClose\" :show-modal=\"shouldOpen\">\r\n <template v-slot:body>\r\n For your security, your session has expired. Click\r\n <a :href=\"$router.resolve(`/?locationId=${locationId}`).href\" @click=\"closeModal\">here</a>\r\n to try again.\r\n </template>\r\n </modal>\r\n </teleport>\r\n <v-idle @idle=\"handleIdle\" :duration=\"900\" />\r\n <the-header />\r\n <vue-notification-list position=\"top-right\"></vue-notification-list>\r\n <transition :name=\"route.meta.transition || 'fade'\" :mode=\"route.meta.mode || 'out-in'\">\r\n <component :is=\"Component\" />\r\n </transition>\r\n </router-view>\r\n</template>\r\n\r\n<script>\r\nimport { useStore } from 'vuex';\r\nimport { computed } from 'vue';\r\nimport '@dafcoe/vue-notification/dist/vue-notification.css';\r\nimport TheHeader from '@/components/SingleTime/TheHeader';\r\nimport TheFooter from \"@/components/SingleTime/TheFooter\";\r\nimport Modal from \"@/components/Modal/Modal\";\r\n\r\nexport default {\r\n name: \"App\",\r\n components: {\r\n TheHeader,\r\n TheFooter,\r\n Modal\r\n },\r\n setup() {\r\n const store = useStore();\r\n const locationId = computed(() => store.getters['location/getLocationId']);\r\n const clearAll = () => store.dispatch('clearAll');\r\n\r\n return {\r\n locationId,\r\n clearAll\r\n }\r\n },\r\n data() {\r\n return {\r\n shouldOpen: false,\r\n shouldClose: false\r\n }\r\n },\r\n methods: {\r\n handleIdle() {\r\n if (!this.shouldOpen) {\r\n this.clearAll();\r\n localStorage.clear();\r\n this.$router.push({ path: '/', query: { locationId: this.locationId } });\r\n }\r\n this.shouldOpen = true;\r\n this.shouldClose = false;\r\n },\r\n closeModal() {\r\n this.shouldClose = true;\r\n this.shouldOpen = false;\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\">\r\nbody {\r\n margin: 0;\r\n padding: 0;\r\n background-color: $body-background;\r\n display: flex;\r\n align-content: center;\r\n align-items: center;\r\n justify-content: center;\r\n min-height: 100vh;\r\n flex-wrap: wrap;\r\n font-family: \"Roboto\";\r\n}\r\n\r\n#app {\r\n width: 100%;\r\n margin: 115px 200px 0 200px;\r\n}\r\n\r\nlabel {\r\n font-size: 14px;\r\n line-height: 18px;\r\n letter-spacing: 0;\r\n color: $black;\r\n padding-bottom: 5px;\r\n}\r\n\r\ninput {\r\n margin-top: 3px;\r\n padding: 15px;\r\n font-size: 16px;\r\n width: 100%;\r\n border: 1px solid $light-grey;\r\n}\r\n\r\ninput:focus-visible {\r\n outline: 1px solid $dark-grey;\r\n border-radius: 0;\r\n}\r\n\r\n.form-container__field-container input {\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n}\r\n\r\n.form-container__field-container {\r\n position: relative;\r\n}\r\n.verification__field-container {\r\n position: relative;\r\n}\r\n\r\n// fancy button css\r\n@mixin poscenter($m: 50%, $n: $m, $tf1: null, $tf2: null) {\r\n position: absolute;\r\n left: $m;\r\n top: $n;\r\n transform: $tf1 translate(-$m, -$n) $tf2;\r\n}\r\n\r\nbutton.btn-primary {\r\n @include poscenter();\r\n color: $white;\r\n background: $primary-color;\r\n border: 2px solid $primary-color;\r\n text-decoration: none;\r\n font: normal normal 500 22px/25px \"Roboto\";\r\n display: inline-block;\r\n padding: 20px 20px;\r\n width: 100%;\r\n\r\n &:hover {\r\n cursor: pointer;\r\n border: 2px solid $primary-color;\r\n background-color: #0DB952;\r\n }\r\n}\r\n\r\nbutton.btn-secondary {\r\n @include poscenter();\r\n color: $primary-color;\r\n background: $white;\r\n border: 2px solid $primary-color;\r\n text-decoration: none;\r\n font: normal normal 500 22px/25px \"Roboto\";\r\n display: inline-block;\r\n padding: 20px 20px;\r\n width: 100%;\r\n\r\n &:hover {\r\n cursor: pointer;\r\n color: $white;\r\n border: 2px solid $primary-color;\r\n background-color: $primary-color;\r\n }\r\n}\r\n.fade-enter-active,\r\n.fade-leave-active {\r\n transition: opacity 0.35s ease;\r\n}\r\n\r\n.fade-enter-from,\r\n.fade-leave-active {\r\n opacity: 0;\r\n}\r\n\r\n.v-idle {\r\n // display this to see idle timer\r\n display: none;\r\n}\r\n\r\nstrong {\r\n color: $error;\r\n}\r\n\r\n@media(max-width: $media-large) {\r\n #app {\r\n width: auto;\r\n margin: 115px 0 0 0;\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"location-container\" v-if=\"location.entityLogoImage\">\r\n <div class=\"location-container__address\" :class=\"loadError ? 'location-container__address--no-image': ''\">\r\n <div class=\"address__location-name\">\r\n {{ location.name }}\r\n </div>\r\n <div class=\"address__line-one\">\r\n {{ location.address1 }}\r\n </div>\r\n <div class=\"address__line-two\">\r\n {{ `${location.city}, ${location.state} ${location.zip}` }}\r\n </div>\r\n </div>\r\n <div class=\"location-container__logo\" :class=\"loadError ? 'location-container__logo--no-image': ''\">\r\n <img :src=\"location.entityLogoImage.imageUrlMain\" alt=\"entity logo\" @error=\"loadError = true\" />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { computed } from 'vue';\r\nimport { useStore } from 'vuex';\r\n\r\nexport default {\r\n name: 'TheHeader',\r\n setup() {\r\n const store = useStore();\r\n const location = computed(() => store.getters['location/getLocation']);\r\n\r\n return {\r\n location\r\n }\r\n },\r\n data() {\r\n return {\r\n loadError: false\r\n }\r\n },\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.location-container {\r\n background: $lightest-grey 0% 0% no-repeat padding-box;\r\n display: flex;\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n\r\n &__logo {\r\n padding: 18px 221px 18px 21px;\r\n\r\n & img {\r\n height: 69px;\r\n width: 69px;\r\n }\r\n\r\n &--no-image {\r\n display: none;\r\n }\r\n }\r\n}\r\n\r\n.location-container__address {\r\n width: 100%;\r\n align-self: center;\r\n margin-left: 221px;\r\n text-align: left;\r\n\r\n &--no-image {\r\n margin-left: 0;\r\n padding: 18px 21px;\r\n text-align: center;\r\n }\r\n}\r\n\r\n.address__location-name {\r\n font-weight: bold;\r\n font-size: 18px;\r\n color: $dark-grey;\r\n line-height: 22px;\r\n letter-spacing: 0;\r\n}\r\n\r\n.address__line-one,\r\n.address__line-two {\r\n font-size: 14px;\r\n line-height: 18px;\r\n letter-spacing: 0;\r\n color: $black;\r\n}\r\n\r\n@media(max-width: $media-large) {\r\n .location-container {\r\n &__logo {\r\n padding: 18px 21px;\r\n }\r\n\r\n &__address {\r\n margin-left: 21px;\r\n }\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./TheHeader.vue?vue&type=template&id=7c49593a&scoped=true\"\nimport script from \"./TheHeader.vue?vue&type=script&lang=js\"\nexport * from \"./TheHeader.vue?vue&type=script&lang=js\"\n\nimport \"./TheHeader.vue?vue&type=style&index=0&id=7c49593a&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7c49593a\"]])\n\nexport default __exports__","<template>\r\n <div class=\"footer-container\">\r\n <div class=\"footer-container__logo\">\r\n <img src=\"/USSAN.png\" alt=\"Powered By USSAN\"/>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"TheFooter\"\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.footer-container {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 100%;\r\n\r\n &__logo {\r\n margin-bottom: 20px;\r\n }\r\n\r\n &__logo img {\r\n width: 86px;\r\n height: 50px;\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./TheFooter.vue?vue&type=template&id=75fe7c02&scoped=true\"\nimport script from \"./TheFooter.vue?vue&type=script&lang=js\"\nexport * from \"./TheFooter.vue?vue&type=script&lang=js\"\n\nimport \"./TheFooter.vue?vue&type=style&index=0&id=75fe7c02&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-75fe7c02\"]])\n\nexport default __exports__","<template>\r\n <div class=\"modal\" role=\"dialog\" id=\"modal\" v-if=\"showModal\">\r\n\r\n <div class=\"modal__content\">\r\n <header class=\"modal__header\">\r\n <slot name=\"header\" />\r\n </header>\r\n\r\n <section class=\"modal__body\">\r\n <slot name=\"body\" />\r\n </section>\r\n\r\n <footer class=\"modal__footer\">\r\n <slot name=\"footer\" />\r\n </footer>\r\n\r\n <a href=\"#\" class=\"modal__close\" click.prevent=\"closeModal\">×</a>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"Modal\",\r\n props: {\r\n showModal: Boolean,\r\n },\r\n methods: {\r\n closeModal() {\r\n this.$emit(\"close-modal\");\r\n },\r\n },\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.modal {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n background: rgba(77, 77, 77, .7);\r\n transition: all .4s;\r\n z-index: 1000;\r\n\r\n &__content {\r\n display: flex;\r\n flex-direction: column;\r\n align-content: center;\r\n border-radius: 4px;\r\n position: relative;\r\n width: 500px;\r\n max-width: 90%;\r\n background: #fff;\r\n padding: 1em 2em;\r\n min-height: 200px;\r\n }\r\n\r\n &__footer {\r\n text-align: right;\r\n a {\r\n color: #585858;\r\n }\r\n i {\r\n color: #d02d2c;\r\n }\r\n }\r\n\r\n &__close {\r\n position: absolute;\r\n top: 10px;\r\n right: 10px;\r\n color: #585858;\r\n text-decoration: none;\r\n }\r\n}\r\n\r\n</style>\r\n","import { render } from \"./Modal.vue?vue&type=template&id=f6d6a942&scoped=true\"\nimport script from \"./Modal.vue?vue&type=script&lang=js\"\nexport * from \"./Modal.vue?vue&type=script&lang=js\"\n\nimport \"./Modal.vue?vue&type=style&index=0&id=f6d6a942&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f6d6a942\"]])\n\nexport default __exports__","import { render } from \"./App.vue?vue&type=template&id=01684299\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=01684299&lang=scss\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n <div class=\"form-container\">\r\n <div class=\"form-container__field-container form-container__header\">\r\n Bill Pay\r\n </div>\r\n <div class=\"form-container__field-container form-container__message\">\r\n Please fill out all fields below to continue.\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"firstName\">First Name</label>\r\n <input id=\"firstName\" maxlength=\"100\" type=\"text\" v-model=\"form.firstName\"/>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"lastName\">Last Name</label>\r\n <input id=\"lastName\" maxlength=\"100\" type=\"text\" v-model=\"form.lastName\"/>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"phoneNumber\">Phone Number</label>\r\n <input\r\n id=\"phoneNumber\"\r\n maxlength=\"15\"\r\n type=\"text\"\r\n :value=\"form.phoneNumber\"\r\n @accept=\"event => form.phoneNumber = event.detail.value\"\r\n v-imask=\"phoneNumberMask\"\r\n />\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"emailAddress\">Email Address</label>\r\n <input id=\"emailAddress\" maxlength=\"256\" type=\"email\" v-model=\"form.emailAddress\"/>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"unitNumber\">Your Storage Unit Number (enter any one of the units)</label>\r\n <input id=\"unitNumber\" maxlength=\"100\" type=\"text\" v-model=\"form.unitNumber\"/>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <button id=\"submitBtn\" class=\"btn-primary\" @click=\"submitForm\">Next</button>\r\n </div>\r\n <the-footer class=\"form-container__field-container\"/>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport {computed} from 'vue';\r\nimport {useStore} from 'vuex';\r\nimport IMaskDirective from '@/directives/IMaskDirective';\r\nimport {useNotificationStore} from '@dafcoe/vue-notification';\r\nimport {ErrorAlerts} from \"@/constants/ErrorAlerts\";\r\nimport {hasEmptyValues} from \"@/global/Helpers\";\r\nimport TheFooter from \"@/components/SingleTime/TheFooter\";\r\nimport {formatDateString} from \"@/global/Helpers\";\r\n\r\nexport default {\r\n name: \"UserInfo\",\r\n setup() {\r\n const store = useStore();\r\n const {setNotification} = useNotificationStore();\r\n const user = computed(() => store.getters['user/currentUser']);\r\n const location = computed(() => store.getters['location/getLocation']);\r\n const entity = computed(() => store.getters['location/getEntity']);\r\n const locationId = computed(() => store.getters[\"location/getLocationId\"]);\r\n const checkCustomerFetch = computed(() => store.getters['user/checkCustomerFetch']);\r\n const aggregateTotal = computed(() => store.getters['contracts/getTotalCost']);\r\n const contracts = computed(() => store.getters['contracts/getContracts']);\r\n const customer = computed(() => store.getters['user/currentCustomer']);\r\n const contractsToPay = computed(() => store.getters['contracts/getContractsForPayment']);\r\n const clearAll = () => store.dispatch('clearAll');\r\n const updateUser = (user) => store.dispatch('user/createUser', user);\r\n const updateLocationId = (locationId) => store.dispatch('location/updateLocationId', locationId);\r\n const fetchLocation = (locationId) => store.dispatch('location/fetchLocation', locationId);\r\n const fetchCustomer = (customerDto) => store.dispatch('user/fetchCustomer', customerDto);\r\n const fetchContracts = (contractDto) => store.dispatch('contracts/fetchContractsForCustomer', contractDto);\r\n const fetchLocationByEntity = (entityId) => store.dispatch('location/fetchLocationByEntity', entityId);\r\n const updateSelectedContracts = (contractInfo) => store.dispatch('contracts/addSelectedContract', contractInfo);\r\n const updateMonthsAhead = (monthsAhead) => store.dispatch('payment/updateMonthsAhead', monthsAhead);\r\n const updateMonthsAheadDisplay = (monthsAheadDisplay) => store.dispatch('payment/updateMonthsAheadDisplay', monthsAheadDisplay);\r\n const updatePayment = (payment) => store.dispatch('payment/updatePaymentInfo', payment);\r\n const updateTotal = (total) => store.dispatch('payment/updateTotal', total);\r\n\r\n return {\r\n user,\r\n location,\r\n locationId,\r\n entity,\r\n checkCustomerFetch,\r\n setNotification,\r\n contracts,\r\n customer,\r\n aggregateTotal,\r\n contractsToPay,\r\n clearAll,\r\n updateUser,\r\n updateLocationId,\r\n fetchLocation,\r\n fetchCustomer,\r\n fetchContracts,\r\n fetchLocationByEntity,\r\n updateSelectedContracts,\r\n updateMonthsAhead,\r\n updateMonthsAheadDisplay,\r\n updatePayment,\r\n updateTotal\r\n }\r\n },\r\n mounted() {\r\n const id = this.$route.query.locationId;\r\n const entityId = this.$route.query.entityId;\r\n const guest = this.$route.query.guest;\r\n\r\n if (id) {\r\n if (id !== this.locationId) {\r\n this.clearAll();\r\n localStorage.clear();\r\n }\r\n\r\n this.fetchLocation(id);\r\n this.updateLocationId(id);\r\n\r\n } else if (entityId) {\r\n this.clearAll();\r\n localStorage.clear();\r\n\r\n this.fetchLocationByEntity(entityId);\r\n this.processAmsCustomer(entityId);\r\n this.$router.push({path: '/payment'});\r\n } else {\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: 'Error: Location ID was not found in the URL'\r\n });\r\n }\r\n\r\n if(!guest && !this.customer.customerId) {\r\n this.$router.push({ path: '/login' });\r\n }\r\n },\r\n components: {\r\n TheFooter\r\n },\r\n data() {\r\n return {\r\n form: {...this.user},\r\n phoneNumberMask: {\r\n mask: \"(000) 000-0000\"\r\n },\r\n };\r\n },\r\n methods: {\r\n async submitForm(event) {\r\n try {\r\n event.preventDefault();\r\n if (hasEmptyValues(this.form)) {\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: 'You must fill out all of the fields.'\r\n });\r\n return;\r\n }\r\n await this.updateUser(this.form);\r\n await this.fetchCustomer({\r\n unitNumber: this.form.unitNumber,\r\n entityId: this.entity,\r\n firstName: this.form.firstName,\r\n lastName: this.form.lastName,\r\n phoneNumber: this.form.phoneNumber,\r\n emailAddress: this.form.emailAddress});\r\n if (this.checkCustomerFetch) {\r\n await this.$router.push({path: '/contract'});\r\n } else {\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: 'Error: Retrieved customer doesn\\'t match the information provided'\r\n });\r\n localStorage.clear();\r\n }\r\n } catch (error) {\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: error.response.data.errorMessage\r\n });\r\n }\r\n },\r\n async processAmsCustomer(entityId) {\r\n let contractUnitIds = this.$route.query.contractUnitIds.split(\",\");\r\n let customerId = this.$route.query.customerId;\r\n let centralCustomerId = this.$route.query.centralCustomerId;\r\n let monthsAhead = this.$route.query.monthsIntoFuture;\r\n\r\n await this.fetchCustomer({unitNumber: contractUnitIds[0], entityId: entityId});\r\n await this.fetchContracts({\r\n customerId: customerId, centralCustomerId: centralCustomerId,\r\n entityId: entityId\r\n });\r\n const contracts = Object.values(this.contracts);\r\n\r\n contracts.forEach((contract) => {\r\n contract.contractUnits.filter((unit) => contractUnitIds.includes(unit.unitNumber))\r\n .forEach((unit) => this.updateSelectedContracts({\r\n contractNumber: contract.contractNumber,\r\n contractUnitNumber: unit.unitNumber\r\n }));\r\n });\r\n\r\n //Build Payment\r\n await this.updateMonthsAhead(monthsAhead);\r\n\r\n const dueDate = contracts.reduce((newest, current) =>\r\n new Date(newest.dueDate).getTime() < new Date(current.dueDate).getTime() ? newest : current).dueDate;\r\n\r\n let month = new Date(Date.parse(dueDate));\r\n month.setMonth(month.getMonth() + parseInt(monthsAhead))\r\n const monthsAheadDisplay = `${monthsAhead} Month(s) through ${formatDateString(month)}`;\r\n await this.updateMonthsAheadDisplay(monthsAheadDisplay);\r\n\r\n this.contractsToPay.forEach(contract => {\r\n const contractTotal = contract.contractUnits.map(unit =>\r\n unit.unitPaymentBreakdowns[monthsAhead].breakdownBalance)\r\n .reduce((a, b) => a + b, 0);\r\n this.updatePayment({\r\n contractId: contract.contractId,\r\n customerId: contract.customerId,\r\n entityId: contract.entityId,\r\n contractUnitIds: contract.contractUnits.map(unit => unit.contractUnitId),\r\n paymentAmount: contractTotal,\r\n monthsIntoFuture: monthsAhead,\r\n onAutoPay: false,\r\n autopay: false\r\n });\r\n });\r\n\r\n await this.updateTotal(this.aggregateTotal);\r\n }\r\n },\r\n directives: {\r\n imask: IMaskDirective,\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.form-container {\r\n display: grid;\r\n grid-column-gap: 10px;\r\n grid-template-columns: auto auto;\r\n grid-template-rows: 45px 45px 90px 90px 90px 90px 90px 90px;\r\n grid-template-areas: \"header header\" \"message message\" \"firstName lastName\" \"phoneNumber phoneNumber\" \"emailAddress emailAddress\" \"unitNumber unitNumber\" \"submitBtn submitBtn\" \"footerLogo footerLogo\";\r\n justify-content: center;\r\n padding: 36px 36px 10px 36px;\r\n color: $black;\r\n\r\n &__header {\r\n text-align: center;\r\n letter-spacing: 0;\r\n line-height: 30px;\r\n font-weight: 600;\r\n font-size: 26px;\r\n }\r\n\r\n &__message {\r\n text-align: center;\r\n line-height: 20px;\r\n font-size: 16px;\r\n letter-spacing: 0;\r\n }\r\n}\r\n\r\n.form-container__field-container:first-of-type {\r\n grid-area: header;\r\n}\r\n\r\n.form-container__field-container:nth-of-type(2) {\r\n grid-area: message;\r\n}\r\n\r\n.form-container__field-container:nth-of-type(3) {\r\n grid-area: firstName;\r\n}\r\n\r\n.form-container__field-container:nth-of-type(4) {\r\n grid-area: lastName;\r\n}\r\n\r\n.form-container__field-container:nth-of-type(5) {\r\n grid-area: phoneNumber;\r\n}\r\n\r\n.form-container__field-container:nth-of-type(6) {\r\n grid-area: emailAddress;\r\n}\r\n\r\n.form-container__field-container:nth-of-type(7) {\r\n grid-area: unitNumber;\r\n}\r\n\r\n.form-container__field-container:nth-of-type(8) {\r\n grid-area: submitBtn;\r\n}\r\n\r\n.form-container__field-container:nth-of-type(9) {\r\n grid-area: footerLogo;\r\n}\r\n\r\n@media(max-width: $media-large) {\r\n .form-container {\r\n max-width: 350px;\r\n }\r\n}\r\n</style>\r\n","import IMask from 'imask';\r\n\r\n\r\nconst IMaskDirective = {\r\n name: 'imask',\r\n\r\n beforeMount (el, {value: options}) {\r\n if (!options) return;\r\n\r\n initMask(el, options);\r\n },\r\n\r\n updated (el, {value: options}) {\r\n if (options) {\r\n if (el.maskRef) {\r\n el.maskRef.updateOptions(options);\r\n if (el.value !== el.maskRef.value) el.maskRef._onChange();\r\n }\r\n else initMask(el, options);\r\n } else {\r\n destroyMask(el);\r\n }\r\n },\r\n\r\n unmounted (el) {\r\n destroyMask(el);\r\n }\r\n};\r\n\r\nfunction fireEvent (el, eventName, data) {\r\n var e = document.createEvent('CustomEvent');\r\n e.initCustomEvent(eventName, true, true, data);\r\n el.dispatchEvent(e);\r\n}\r\n\r\nfunction initMask (el, opts) {\r\n el.maskRef = IMask(el, opts)\r\n .on('accept', () => fireEvent(el, 'accept', el.maskRef))\r\n .on('complete', () => fireEvent(el, 'complete', el.maskRef));\r\n}\r\n\r\nfunction destroyMask (el) {\r\n if (el.maskRef) {\r\n el.maskRef.destroy();\r\n delete el.maskRef;\r\n }\r\n}\r\n\r\n\r\nexport default IMaskDirective;\r\n","export const ErrorAlerts = {\r\n type: 'alert',\r\n showIcon: false,\r\n dismiss: {\r\n manually: false,\r\n automatically: true\r\n },\r\n appearance: 'light'\r\n}\r\n","export const toCurrency = (value) => {\r\n if (typeof value !== \"number\") {\r\n return value;\r\n }\r\n const formatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2\r\n });\r\n return formatter.format(value);\r\n}\r\n\r\nexport const isPrepaid = (dueDate) => {\r\n const date = new Date(dueDate);\r\n date.setMonth(date.getMonth() - 1);\r\n const currentDate = new Date();\r\n return date.getMonth() > currentDate.getMonth();\r\n}\r\n\r\nexport const formatDateString = (dateString) => {\r\n const date = new Date(dateString);\r\n return `${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`;\r\n}\r\n\r\nexport const hasEmptyValues = (obj) => {\r\n return Object.values(obj).filter((v) => !v).length > 0;\r\n}\r\n\r\nexport const isEmail = (emailAddress) =>\r\n{\r\n const regexEmail = /^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(\\.\\w{2,3})+$/;\r\n return regexEmail.test(emailAddress);\r\n}\r\n","import { render } from \"./UserInfo.vue?vue&type=template&id=7037b99a&scoped=true\"\nimport script from \"./UserInfo.vue?vue&type=script&lang=js\"\nexport * from \"./UserInfo.vue?vue&type=script&lang=js\"\n\nimport \"./UserInfo.vue?vue&type=style&index=0&id=7037b99a&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7037b99a\"]])\n\nexport default __exports__","<template>\r\n <div class=\"storage-unit-container\">\r\n <div class=\"form-container\">\r\n <div class=\"form-container__field-container form-container__title\">Select Storage Unit</div>\r\n <step-nav class=\"form-container__field-container\" :active=\"1\" />\r\n <div class=\"form-container__field-container\">\r\n <div id=\"contractSelect\" class=\"contract-select-container\">\r\n <div class=\"contract-select-container__label\">Choose Your Contract Number:</div>\r\n <multi-select v-if=\"contractNumbers.length\" @input=\"handleContractSelect\" :options=\"contractNumbers\" :default=\"defaultSelect\" />\r\n </div>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <unit-group v-if=\"contract\"\r\n :contract-number=\"selectedContract\"\r\n :contract-units=\"contract.contractUnits\" />\r\n </div>\r\n </div>\r\n <div class=\"total-container\">\r\n <div class=\"total-container__subtotal\">\r\n <div class=\"subtotal__label\">Subtotal:</div>\r\n <div class=\"subtotal__price\">{{ formatCurrency(total) }}</div>\r\n </div>\r\n <div class=\"total-container__disclaimer\">\r\n Prepayment option is available on next screen.\r\n </div>\r\n <div class=\"total-container__button\">\r\n <button id=\"submitBtn\" class=\"btn btn-primary\" @click=\"submitForm\">Continue to Summary</button>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { computed } from 'vue';\r\nimport { useStore } from 'vuex';\r\nimport { useNotificationStore } from '@dafcoe/vue-notification';\r\nimport { ErrorAlerts } from \"@/constants/ErrorAlerts\";\r\nimport { toCurrency } from \"@/global/Helpers\";\r\nimport StepNav from \"@/components/StepNav/StepNav\";\r\nimport MultiSelect from '@/components/Select/MultiSelect';\r\nimport UnitGroup from \"@/components/Select/UnitSelect/UnitGroup\";\r\n\r\nexport default {\r\n name: \"ContractSelect\",\r\n components: {\r\n StepNav,\r\n MultiSelect,\r\n UnitGroup\r\n },\r\n setup() {\r\n const store = useStore();\r\n const { setNotification } = useNotificationStore();\r\n const selectedContractUnits = computed(() =>\r\n store.getters['contracts/getSelectedContractUnitsFlat']);\r\n const customer = computed(() => store.getters['user/currentCustomer']);\r\n const entity = computed(() => store.getters['location/getEntity']);\r\n const contracts = computed(() => store.getters['contracts/getContracts']);\r\n const total = computed(() => store.getters['contracts/getTotalCost']);\r\n const fetchContracts = (contractDto) => store.dispatch('contracts/fetchContractsForCustomer', contractDto);\r\n\r\n return {\r\n selectedContractUnits,\r\n customer,\r\n entity,\r\n contracts,\r\n total,\r\n setNotification,\r\n fetchContracts\r\n }\r\n },\r\n mounted() {\r\n try {\r\n this.fetchContracts({ customerId: this.customer.customerId, centralCustomerId: this.customer.centralCustomerId,\r\n entityId: this.entity });\r\n } catch(error) {\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: error.response.data.errorMessage\r\n });\r\n }\r\n },\r\n data() {\r\n return {\r\n selectedContract: '',\r\n }\r\n },\r\n computed: {\r\n contractNumbers() {\r\n return Object.values(this.contracts).map(contract => `#${this.entity}-${contract.contractNumber}`);\r\n },\r\n contract() {\r\n return Object.values(this.contracts).find(contract => contract.contractNumber === this.selectedContract);\r\n },\r\n defaultSelect() {\r\n return this.contractNumbers.length >= 1 ? this.contractNumbers[0] : 'Select';\r\n }\r\n },\r\n methods: {\r\n handleContractSelect(data) {\r\n this.selectedContract = data.replace(/^.+-/, '');\r\n },\r\n formatCurrency(value) {\r\n return toCurrency(value);\r\n },\r\n submitForm(event) {\r\n event.preventDefault();\r\n if(Object.keys(this.selectedContractUnits).length === 0) {\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: 'You must select at least one unit to continue.'\r\n })\r\n } else {\r\n this.$router.push({ path: '/paymentBreakdown' });\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.form-container {\r\n display: grid;\r\n grid-column-gap: 10px;\r\n grid-template-columns: 600px;\r\n grid-template-rows: 45px 80px 80px auto 100px;\r\n grid-template-areas: \"title\" \"stepNav\" \"contractSelect\" \"unitSelect\" \"submitBtn\";\r\n padding: 36px 36px 10px 36px;\r\n justify-content: center;\r\n color: $black;\r\n\r\n &__title {\r\n font-size: 26px;\r\n font-weight: 600;\r\n line-height: 30px;\r\n color: $black;\r\n text-align: center;\r\n }\r\n}\r\n\r\n.form-container__field-container:first-of-type {\r\n grid-area: title;\r\n}\r\n\r\n.form-container__field-container:nth-of-type(2) {\r\n grid-area: stepNav;\r\n}\r\n\r\n.form-container__field-container:nth-of-type(3) {\r\n grid-area: contractSelect;\r\n}\r\n\r\n.form-container__field-container:nth-of-type(4) {\r\n min-height: 200px;\r\n grid-area: unitSelect;\r\n}\r\n\r\n.form-container__field-container:nth-of-type(5) {\r\n grid-area: submitBtn;\r\n}\r\n\r\n.total-container {\r\n display: grid;\r\n grid-column-gap: 10px;\r\n grid-template-columns: 600px;\r\n grid-template-rows: auto auto 70px;\r\n padding: 20px 36px 40px 36px;\r\n background-color: $lightest-grey;\r\n justify-content: center;\r\n\r\n &__button {\r\n position: relative;\r\n }\r\n\r\n &__subtotal {\r\n display: flex;\r\n justify-content: space-between;\r\n margin-bottom: 14px;\r\n }\r\n}\r\n\r\n.subtotal__label {\r\n font-size: 22px;\r\n line-height: 25px;\r\n font-weight: 600;\r\n color: $black;\r\n}\r\n\r\n.subtotal__price {\r\n font-size: 22px;\r\n line-height: 25px;\r\n font-weight: bold;\r\n color: $primary-color;\r\n}\r\n\r\n.total-container__disclaimer {\r\n font-size: 16px;\r\n line-height: 20px;\r\n color: $black;\r\n margin-bottom: 20px;\r\n}\r\n\r\n.contract-select-container {\r\n height: 100%;\r\n\r\n &__label {\r\n font-size: 16px;\r\n line-height: 20px;\r\n color: $black;\r\n text-align: center;\r\n margin-bottom: 10px;\r\n }\r\n}\r\n\r\n@media(max-width: $media-large) {\r\n .form-container {\r\n grid-template-columns: 350px;\r\n }\r\n\r\n .total-container {\r\n grid-template-columns: auto;\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"progressbar-container\">\r\n <ul class=\"progressbar-container__progressbar\">\r\n <li v-for=\"(item, key) in steps\"\r\n :key=\"key\"\r\n :class=\"{active: item.step === active, completed: item.step < active}\"\r\n @click=\"navigate(item.path)\">\r\n <font-awesome-icon v-if=\"item.step < active\" icon=\"check\" />\r\n </li>\r\n </ul>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { useStore } from 'vuex';\r\nimport { computed } from 'vue';\r\n\r\nexport default {\r\n name: \"StepNav\",\r\n props: {\r\n active: Number\r\n },\r\n setup() {\r\n const store = useStore();\r\n const steps = computed(() => store.getters['navigation/getStepNavData']);\r\n\r\n return {\r\n steps\r\n }\r\n },\r\n methods: {\r\n navigate(path) {\r\n this.$router.push({ path });\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.progressbar-container {\r\n position: relative;\r\n z-index: 1;\r\n\r\n &__progressbar {\r\n counter-reset: step;\r\n display:flex;\r\n justify-content: center;\r\n padding: 0;\r\n }\r\n\r\n &__progressbar li {\r\n float: left;\r\n width: 30%;\r\n position: relative;\r\n text-align: center;\r\n list-style-type: none;\r\n }\r\n\r\n &__progressbar li:before {\r\n content:counter(step);\r\n counter-increment: step;\r\n width: 24px;\r\n height: 24px;\r\n border: 1px solid $medium-grey;\r\n display: block;\r\n margin: 0 auto 10px auto;\r\n border-radius: 50%;\r\n line-height: 23px;\r\n font-size: 16px;\r\n background: white;\r\n color: $medium-grey;\r\n text-align: center;\r\n cursor: pointer;\r\n }\r\n\r\n &__progressbar li:after {\r\n content: '';\r\n position: absolute;\r\n width: 99%;\r\n height: 2px;\r\n background: $light-grey;\r\n top: 12px;\r\n left: -50%;\r\n z-index: -1;\r\n }\r\n\r\n &__progressbar li.active:before {\r\n border-color: $primary-color;\r\n background: white;\r\n color: $primary-color;\r\n font-weight: bold;\r\n }\r\n\r\n &__progressbar li.active:after {\r\n background: $primary-color;\r\n }\r\n\r\n &__progressbar li.completed:before {\r\n border-color: $primary-color;\r\n background: $primary-color;\r\n color: white;\r\n content: \"\"\r\n }\r\n\r\n &__progressbar li.completed:after {\r\n background: $primary-color;\r\n }\r\n\r\n &__progressbar li:first-child:after {\r\n content: none;\r\n }\r\n}\r\n\r\n.fa-check {\r\n position: absolute;\r\n top: 15%;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n color: white;\r\n cursor: pointer;\r\n}\r\n</style>\r\n","import { render } from \"./StepNav.vue?vue&type=template&id=b908e56e&scoped=true\"\nimport script from \"./StepNav.vue?vue&type=script&lang=js\"\nexport * from \"./StepNav.vue?vue&type=script&lang=js\"\n\nimport \"./StepNav.vue?vue&type=style&index=0&id=b908e56e&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b908e56e\"]])\n\nexport default __exports__","<template>\r\n <div class=\"custom-select\" :tabindex=\"tabindex\" @blur=\"open = false\">\r\n <div class=\"custom-select__selected\" :class=\"{ open: open }\" @click.self=\"open = !open\">\r\n {{ selected }}\r\n <font-awesome-icon v-if=\"itemSelected\" icon=\"times\" @click.stop=\"clearSelect\"/>\r\n <font-awesome-icon icon=\"angle-down\" class=\"fa-lg\" :class=\"{ 'fa-rotate-180': open }\" @click=\"open = !open\"/>\r\n </div>\r\n <div class=\"custom-select__items\" :class=\"{ 'custom-select__items--hide': !open }\">\r\n <div\r\n v-for=\"(option, i) of options\"\r\n :key=\"i\"\r\n :disabled=\"disabled(option)\"\r\n class=\"custom-select__option\"\r\n :class=\"{ 'custom-select__option--disabled': disabled(option) }\"\r\n @click=\"\r\n selected = option;\r\n open = false;\r\n $emit('input', option);\r\n \">\r\n {{ option }}\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: 'Multiselect',\r\n props: {\r\n options: {\r\n type: Array,\r\n required: true,\r\n },\r\n default: {\r\n type: String,\r\n required: false,\r\n default: null,\r\n },\r\n tabindex: {\r\n type: Number,\r\n required: false,\r\n default: 0,\r\n },\r\n // allow parent to define disabled logic\r\n disabled: {\r\n type: Function,\r\n required: false,\r\n default: () => false\r\n }\r\n },\r\n computed: {\r\n itemSelected() {\r\n return this.default !== this.selected;\r\n }\r\n },\r\n data() {\r\n return {\r\n selected: this.default\r\n ? this.default\r\n : this.options.length > 0\r\n ? this.options[0]\r\n : null,\r\n open: false,\r\n };\r\n },\r\n methods: {\r\n clearSelect() {\r\n this.selected = this.default;\r\n this.open = false;\r\n this.$emit(\"input\", this.selected);\r\n }\r\n },\r\n mounted() {\r\n this.$emit(\"input\", this.selected);\r\n },\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.custom-select {\r\n position: relative;\r\n width: 100%;\r\n text-align: left;\r\n outline: none;\r\n height: 50px;\r\n line-height: 50px;\r\n\r\n &__selected {\r\n background-color: $white;\r\n border-radius: 0;\r\n border: 1px solid $light-grey;\r\n color: $black;\r\n padding-left: 1em;\r\n cursor: pointer;\r\n user-select: none;\r\n }\r\n\r\n &__items {\r\n color: $black;\r\n border-radius: 0;\r\n overflow: hidden;\r\n border-right: 1px solid $light-grey;\r\n border-left: 1px solid $light-grey;\r\n border-bottom: 1px solid $light-grey;\r\n position: absolute;\r\n background-color: $white;\r\n left: 0;\r\n right: 0;\r\n z-index: 1;\r\n\r\n &--hide {\r\n display: none;\r\n }\r\n }\r\n\r\n &__option {\r\n color: $black;\r\n padding-left: 1em;\r\n cursor: pointer;\r\n user-select: none;\r\n\r\n &:hover {\r\n background-color: $lightest-grey;\r\n }\r\n\r\n &--disabled {\r\n pointer-events: none;\r\n color: $light-grey;\r\n }\r\n }\r\n}\r\n\r\n.fa-angle-down {\r\n position: absolute;\r\n content: \"\";\r\n top: 16px;\r\n right: 1em;\r\n color: $black;\r\n transition: .4s;\r\n}\r\n\r\n.fa-times {\r\n position: absolute;\r\n content: \"\";\r\n top: 19px;\r\n right: 3em;\r\n}\r\n</style>\r\n","import { render } from \"./MultiSelect.vue?vue&type=template&id=1e3de471&scoped=true\"\nimport script from \"./MultiSelect.vue?vue&type=script&lang=js\"\nexport * from \"./MultiSelect.vue?vue&type=script&lang=js\"\n\nimport \"./MultiSelect.vue?vue&type=style&index=0&id=1e3de471&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1e3de471\"]])\n\nexport default __exports__","<template>\r\n <div class=\"unit-group-container\">\r\n <div class=\"unit-group-container__label\">Select Storage Unit:</div>\r\n <div class=\"unit-group-container__no-balance\" v-if=\"contractUnits.length === 0\">There is no balance due for any units under this contract.</div>\r\n <check-select v-for=\"unit in contractUnits\"\r\n :key=\"unit.contractUnitId\"\r\n :contract-number=\"contractNumber\"\r\n :contract-unit=\"unit\" />\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport CheckSelect from \"@/components/Select/UnitSelect/CheckSelect\";\r\nexport default {\r\n name: \"UnitGroup\",\r\n props: {\r\n contractNumber: String,\r\n contractUnits: Array\r\n },\r\n components: {\r\n CheckSelect\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.unit-group-container {\r\n margin: 15px 0;\r\n\r\n &__label {\r\n font-size: 16px;\r\n line-height: 20px;\r\n color: $black;\r\n text-align: center;\r\n }\r\n &__no-balance{\r\n text-align: center;\r\n margin-top: 15px;\r\n color: $error;\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"unit-container\" :class=\"{ 'unit-container--checked': checked }\">\r\n <div class=\"unit-container__check\">\r\n <checkbox @check-clicked=\"handleCheck\" :checked=\"checked\"/>\r\n <div class=\"unit-container__unit-number\">{{ contractUnit.unitNumber }}</div>\r\n </div>\r\n <div class=\"unit-container__pricing\">\r\n <div class=\"pricing__balance\">Balance: {{ formatCurrency(contractUnit.nextAmountDue) }}</div>\r\n <div class=\"pricing__due-date\">\r\n <span v-if=\"checkPrepay(contractUnit.dateUnitPaidThrough)\">Paid Through</span>\r\n <span v-else>Due on</span>\r\n {{ contractUnit.dueDate }}\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { useStore } from 'vuex';\r\nimport { computed } from 'vue';\r\nimport { toCurrency, isPrepaid } from \"@/global/Helpers\";\r\nimport Checkbox from \"@/components/Select/UnitSelect/Checkbox\";\r\n\r\nexport default {\r\n name: \"CheckSelect\",\r\n components: {\r\n Checkbox\r\n },\r\n props: {\r\n contractNumber: String,\r\n contractUnit: Object\r\n },\r\n setup() {\r\n const store = useStore();\r\n const selectedContractUnits = computed(() => store.getters['contracts/getSelectedContractUnitsFlat']);\r\n const updateSelectedContracts = (contractInfo) => store.dispatch('contracts/addSelectedContract', contractInfo);\r\n const removeSelectedContract = (contractInfo) => store.dispatch('contracts/removeSelectedContract', contractInfo);\r\n return {\r\n selectedContractUnits,\r\n updateSelectedContracts,\r\n removeSelectedContract\r\n }\r\n },\r\n data() {\r\n return {\r\n checked: this.selectedContractUnits.includes(this.contractUnit.unitNumber)\r\n }\r\n },\r\n methods: {\r\n handleCheck(data) {\r\n this.checked = data;\r\n const contractInfo = {\r\n contractNumber: this.contractNumber,\r\n contractUnitNumber: this.contractUnit.unitNumber\r\n };\r\n\r\n if(this.checked) {\r\n this.updateSelectedContracts(contractInfo);\r\n } else {\r\n this.removeSelectedContract(contractInfo);\r\n }\r\n },\r\n formatCurrency(value) {\r\n return toCurrency(value);\r\n },\r\n checkPrepay(date) {\r\n return isPrepaid(date);\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.unit-container {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n border: 1px solid $light-grey;\r\n padding: 12px 15px;\r\n margin: 10px 0;\r\n\r\n &__check {\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n &__unit-number {\r\n color: $black;\r\n font-size: 16px;\r\n line-height: 20px;\r\n }\r\n\r\n &--checked {\r\n border: 2px solid $primary-color;\r\n background-color: $secondary-color;\r\n }\r\n}\r\n\r\n.pricing__balance {\r\n font-size: 14px;\r\n font-weight: 600;\r\n line-height: 18px;\r\n color: $black;\r\n text-align: right;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.pricing__due-date {\r\n font-size: 14px;\r\n line-height: 18px;\r\n color: $black;\r\n text-align: right;\r\n}\r\n</style>\r\n","<template>\r\n <label class=\"check-container\">\r\n <input type=\"checkbox\"\r\n :checked=\"checked\"\r\n @click=\"$emit('checkClicked', !checked);\">\r\n <span class=\"check-container__checkmark\"></span>\r\n <label class=\"check-container__label\">{{label}}</label>\r\n </label>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"Checkbox\",\r\n props: {\r\n checked: Boolean,\r\n label: String\r\n },\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.check-container {\r\n display: block;\r\n position: relative;\r\n padding-left: 35px;\r\n margin-bottom: 19px;\r\n cursor: pointer;\r\n font-size: 22px;\r\n line-height: 26px;\r\n user-select: none;\r\n\r\n & input {\r\n position: absolute;\r\n opacity: 0;\r\n cursor: pointer;\r\n height: 0;\r\n width: 0;\r\n }\r\n\r\n &__checkmark {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n height: 19px;\r\n width: 19px;\r\n background-color: $white;\r\n border: 2px solid $light-grey;\r\n }\r\n\r\n & input:checked ~ &__checkmark {\r\n background-color: $primary-color;\r\n border-color: $primary-color;\r\n }\r\n\r\n &__checkmark:after {\r\n content: \"\";\r\n position: absolute;\r\n display: none;\r\n }\r\n\r\n & input:checked ~ &__checkmark:after {\r\n display: block;\r\n }\r\n\r\n &__label{\r\n vertical-align: middle;\r\n }\r\n\r\n &__checkmark:after {\r\n left: 6px;\r\n top: 1px;\r\n width: 5px;\r\n height: 10px;\r\n border: solid white;\r\n border-width: 0 3px 3px 0;\r\n transform: rotate(45deg);\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./Checkbox.vue?vue&type=template&id=1a4ef7dc&scoped=true\"\nimport script from \"./Checkbox.vue?vue&type=script&lang=js\"\nexport * from \"./Checkbox.vue?vue&type=script&lang=js\"\n\nimport \"./Checkbox.vue?vue&type=style&index=0&id=1a4ef7dc&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1a4ef7dc\"]])\n\nexport default __exports__","import { render } from \"./CheckSelect.vue?vue&type=template&id=3fdd1405&scoped=true\"\nimport script from \"./CheckSelect.vue?vue&type=script&lang=js\"\nexport * from \"./CheckSelect.vue?vue&type=script&lang=js\"\n\nimport \"./CheckSelect.vue?vue&type=style&index=0&id=3fdd1405&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3fdd1405\"]])\n\nexport default __exports__","import { render } from \"./UnitGroup.vue?vue&type=template&id=1c59ad94&scoped=true\"\nimport script from \"./UnitGroup.vue?vue&type=script&lang=js\"\nexport * from \"./UnitGroup.vue?vue&type=script&lang=js\"\n\nimport \"./UnitGroup.vue?vue&type=style&index=0&id=1c59ad94&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1c59ad94\"]])\n\nexport default __exports__","import { render } from \"./ContractSelect.vue?vue&type=template&id=a5203e4e&scoped=true\"\nimport script from \"./ContractSelect.vue?vue&type=script&lang=js\"\nexport * from \"./ContractSelect.vue?vue&type=script&lang=js\"\n\nimport \"./ContractSelect.vue?vue&type=style&index=0&id=a5203e4e&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a5203e4e\"]])\n\nexport default __exports__","<template>\r\n <div class=\"view-container\">\r\n <div class=\"payment-container\">\r\n <div class=\"payment-container__title\">Enter Payment Information</div>\r\n <step-nav :active=\"3\" />\r\n <credit-card class=\"credit-card\"\r\n :name=\"name\"\r\n :card-number=\"cardNumber\"\r\n :security-code=\"securityCode\"\r\n :expiration=\"expirationDate\"\r\n :card-style=\"cardStyle\"\r\n :flipped=\"flipped\" />\r\n <div class=\"form-container\">\r\n <div class=\"form-container__field-container form-container__encrypted\">\r\n <font-awesome-icon icon=\"lock\" />\r\n Encrypted Payment\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label>Saved Cards</label>\r\n <MultiSelect :options=\"savedCards.map(c => c.accountNumber)\" @input=\"onSelectSavedCard\" default=\"Select\"></MultiSelect>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"name\">Full Name</label>\r\n <input id=\"name\" maxlength=\"20\" type=\"text\" v-model=\"name\" />\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"cardnumber\">Card Number</label>\r\n <input\r\n id=\"cardnumber\"\r\n type=\"text\"\r\n pattern=\"[0-9]*\"\r\n inputmode=\"numeric\"\r\n :value=\"cardNumber\"\r\n v-imask=\"cardNumberMask\"\r\n @accept=\"onAcceptCardNumber\"\r\n @complete=\"onCompleteCardNumber\"\r\n />\r\n <svg\r\n id=\"ccicon\"\r\n class=\"ccicon\"\r\n width=\"750\"\r\n height=\"471\"\r\n viewBox=\"0 0 750 471\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n v-html=\"cardStyle.svg\"\r\n ></svg>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"expirationdate\">Expiration (mm/yy)</label>\r\n <input\r\n id=\"expirationdate\"\r\n type=\"text\"\r\n pattern=\"[0-9]*\"\r\n inputmode=\"numeric\"\r\n :value=\"expirationDate\"\r\n v-imask=\"expirationDateMask\"\r\n @accept=\"onAcceptExpirationDate\"\r\n />\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"securitycode\">Security Code</label>\r\n <input\r\n id=\"securitycode\"\r\n type=\"password\"\r\n pattern=\"[0-9]*\"\r\n inputmode=\"numeric\"\r\n v-on:focusin=\"flipped = true\"\r\n v-on:focusout=\"flipped = false\"\r\n :value=\"securityCode\"\r\n v-imask=\"securityCodeMask\"\r\n @accept=\"onAcceptSecurityCode\" />\r\n </div>\r\n <div class=\"form-container__field-container checkbox-container\">\r\n <Checkbox :checked=\"savePayment\" @checkClicked=\"onSaveCardCheckboxSelected\" label=\"Save Card For Future Use?\"></Checkbox>\r\n <Checkbox v-if=\"allowAutopay\" :checked=\"addAutopay\" @checkClicked=\"onAddAutopaySelected\" label=\"Enroll into Autopay?\"></Checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"total-container\" :class=\"[monthsAheadDisplay ? '' : 'total-container--hide-row']\">\r\n <div class=\"total-container__total\">\r\n <div class=\"total-container__label\">Total Balance Due:</div>\r\n <div class=\"total-container__value\">{{ formatCurrency(totalPayment) }}</div>\r\n </div>\r\n <div class=\"total-container__prepay\" :class=\"[monthsAheadDisplay ? '' : 'total-container__hide-row']\">\r\n <font-awesome-icon :icon=\"['far', 'calendar-check']\" />\r\n Prepay for {{ monthsAheadDisplay }}\r\n </div>\r\n <div class=\"total-container__button\">\r\n <button id=\"submitBtn\" class=\"btn btn-primary\" @click=\"submitForm\" :disabled=\"loading\">\r\n <font-awesome-icon v-if=\"loading\" icon=\"spinner\" class=\"fa-spin\" />\r\n <span v-if=\"!loading\">Confirm & Pay {{ formatCurrency(totalPayment) }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n <modal :show-modal=\"showModal\" @close-modal=\"showModal = false\">\r\n <template v-slot:header>\r\n <h3>Adding the below units to Autopay</h3>\r\n </template>\r\n <template v-slot:body>\r\n <p v-for=\"unit in autoPayUnits\" :key=\"unit.contractUnitId\">{{unit.unitNumber}}</p>\r\n </template>\r\n <template v-slot:footer>\r\n <div class=\"modal-container__btn-group\">\r\n <button class=\"modal-container__btn-group-cancel\" @click=\"addAutopay = false; showModal = false\">Cancel</button>\r\n <button class=\"modal-container__btn-group-confirm\" @click=\"addAutopay = true; showModal = false\">Confirm</button>\r\n </div>\r\n </template>\r\n </modal>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { useStore } from 'vuex';\r\nimport { computed } from 'vue';\r\nimport { toCurrency } from \"@/global/Helpers\";\r\nimport { useNotificationStore } from '@dafcoe/vue-notification';\r\nimport { ErrorAlerts } from \"@/constants/ErrorAlerts\";\r\nimport IMask from 'imask';\r\nimport IMaskDirective from '@/directives/IMaskDirective';\r\nimport CardTypeDisplay from '@/constants/CardTypeDisplay';\r\nimport StepNav from \"@/components/StepNav/StepNav\";\r\nimport CreditCard from \"@/components/CreditCard/CreditCard\";\r\nimport MultiSelect from \"@/components/Select/MultiSelect\";\r\nimport Modal from \"@/components/Modal/Modal.vue\";\r\nimport Checkbox from \"@/components/Select/UnitSelect/Checkbox\";\r\n\r\nexport default {\r\n name: \"Payment\",\r\n setup() {\r\n const store = useStore();\r\n const { setNotification } = useNotificationStore();\r\n const totalPayment = computed(() => store.getters['payment/getPaymentTotal']);\r\n const payments = computed(() => store.getters['payment/getPayments']);\r\n const savedPaymentMethods = computed(() => store.getters['payment/getSavedPaymentMethods']);\r\n const cardInfo = computed(() => store.getters['payment/getCardInfo']);\r\n const userFullName = computed(() => store.getters['user/userFullName']);\r\n const monthsAheadDisplay = computed(() => store.getters['payment/getMonthsAheadDisplay']);\r\n const contracts = computed(() => store.getters['contracts/getContracts']);\r\n const customer = computed(()=> store.getters['user/currentCustomer'])\r\n const entity = computed(() => store.getters['location/getEntity'])\r\n const acceptAutopay = computed(() => store.getters['location/getLocationAutopayRule']);\r\n const selectedContracts = computed(() => store.getters['contracts/getContractsForPayment']);\r\n const updateCardInfo = (cardInfo) => store.dispatch('payment/updateCardInfo', cardInfo);\r\n const submitPayment = (payment) => store.dispatch('payment/submitPayment', payment);\r\n const getSavedPaymentMethods = (getPaymentMethodsDto) => store.dispatch('payment/getPaymentMethods', getPaymentMethodsDto);\r\n const savePaymentMethod = (savePaymentMethodsDto) => store.dispatch('payment/savePaymentMethod', savePaymentMethodsDto);\r\n const updateAutoPay = (autopayDto) => store.dispatch('payment/updateAutoPay', autopayDto);\r\n\r\n\r\n return {\r\n setNotification,\r\n totalPayment,\r\n payments,\r\n savedPaymentMethods,\r\n cardInfo,\r\n userFullName,\r\n monthsAheadDisplay,\r\n contracts,\r\n customer,\r\n entity,\r\n acceptAutopay,\r\n selectedContracts,\r\n updateCardInfo,\r\n submitPayment,\r\n getSavedPaymentMethods,\r\n savePaymentMethod,\r\n updateAutoPay\r\n }\r\n },\r\n components: {\r\n CreditCard,\r\n StepNav,\r\n MultiSelect,\r\n Modal,\r\n Checkbox\r\n },\r\n data() {\r\n return {\r\n loading: false,\r\n name: this.userFullName,\r\n cardNumber: \"\",\r\n cardNumberMask: {\r\n mask: [\r\n {\r\n mask: \"0000 000000 00000\",\r\n regex: /^3[47]\\d{0,13}$/,\r\n cardtype: \"american express\",\r\n },\r\n {\r\n mask: \"0000 00aaaaaaaaa 0000\",\r\n regex: /^3[47]\\d{0,4}[A-Z]{0,9}\\d{0,4}$/,\r\n cardtype: \"american express\",\r\n },\r\n {\r\n mask: \"0000 0000 0000 0000\",\r\n regex: /^6(?:011|5\\d{0,2})\\d{0,12}$/,\r\n cardtype: \"discover\",\r\n },\r\n {\r\n mask: \"0000 00aaaaaaaaa 0000\",\r\n regex: /^6(?:011|5\\d{0,2})\\d{0,2}[A-Z]{0,9}\\d{0,4}$/,\r\n cardtype: \"discover\",\r\n },\r\n {\r\n mask: \"0000 0000 0000 0000\",\r\n regex: /^(5[1-5]\\d{0,2}|22[2-9]\\d{0,1}|2[3-7]\\d{0,2})\\d{0,12}$/,\r\n cardtype: \"mastercard\",\r\n },\r\n {\r\n mask: \"0000 00aaaaaaaaa 0000\",\r\n regex: /^(5[1-5]\\d{0,2}|22[2-9]\\d{0,1}|2[3-7]\\d{0,2})\\d{0,2}[A-Z]{0,9}\\d{0,4}$/,\r\n cardtype: \"mastercard\",\r\n },\r\n {\r\n mask: \"0000 0000 0000 0000\",\r\n regex: /^4\\d{0,15}$/,\r\n cardtype: \"visa\",\r\n },\r\n {\r\n mask: \"0000 00aaaaaaaaa 0000\",\r\n regex: \"^4\\\\d{0,5}[A-Z]{0,9}\\\\d{0,4}$\",\r\n cardtype: \"visa\",\r\n },\r\n {\r\n mask: \"0000 0000 0000 0000\",\r\n cardtype: \"Unknown\",\r\n },\r\n ],\r\n dispatch(appended, dynamicMasked) {\r\n let number = (dynamicMasked.value + appended).replace(/[^0-9A-Z]/g, \"\");\r\n\r\n for (let i = 0; i < dynamicMasked.compiledMasks.length; i++) {\r\n let re = new RegExp(dynamicMasked.compiledMasks[i].regex);\r\n if (number.match(re) != null) {\r\n return dynamicMasked.compiledMasks[i];\r\n }\r\n }\r\n }\r\n },\r\n expirationDate: \"\",\r\n expirationDateMask: {\r\n mask: \"MM{/}YY\",\r\n blocks: {\r\n YY: {\r\n mask: IMask.MaskedRange,\r\n from: 0,\r\n to: 99,\r\n },\r\n MM: {\r\n mask: IMask.MaskedRange,\r\n from: 0,\r\n to: 12,\r\n },\r\n },\r\n },\r\n securityCode: null,\r\n securityCodeMask: {\r\n mask: \"0000\",\r\n },\r\n savedCards: this.savedPaymentMethods,\r\n savePayment: false,\r\n cardType: '',\r\n cardStyle: CardTypeDisplay['Unknown'],\r\n flipped: false,\r\n addAutopay: false,\r\n showModal: false,\r\n autoPayUnits: [],\r\n allowAutopay: false,\r\n };\r\n },\r\n methods: {\r\n formatCurrency(value) {\r\n return toCurrency(value);\r\n },\r\n async submitForm(event) {\r\n try {\r\n this.loading = true;\r\n event.preventDefault();\r\n const expirationArr = this.expirationDate.split('/');\r\n const expiration = `20${expirationArr[1]}-${expirationArr[0]}-01`;\r\n\r\n await this.updateCardInfo({\r\n nameOnCard: this.name,\r\n creditCardNumber: this.cardNumber.replace(/\\s+/g, ''),\r\n cardSecurityCode: this.securityCode,\r\n expirationDate: expiration,\r\n cardType: this.cardType\r\n });\r\n await Promise.all(Object.values(this.payments)\r\n .map(x => this.submitPayment({ ...x, ...this.cardInfo })));\r\n\r\n if (this.addAutopay){\r\n let contractUnitIds = this.autoPayUnits.map(u => u.contractUnitId);\r\n await this.updateAutoPay({\r\n contractUnitIds: contractUnitIds,\r\n ...this.cardInfo\r\n });\r\n }\r\n else if(this.savePayment){\r\n let contracts = Object.values(this.contracts);\r\n let contractCustomers = [];\r\n contracts.forEach((value) => {\r\n contractCustomers.push({\r\n contractId: value.contractId,\r\n customerId: value.customerId\r\n })\r\n });\r\n await this.savePaymentMethod({\r\n customerContractsDto: contractCustomers,\r\n paymentMethodDto: {...this.cardInfo}\r\n });\r\n }\r\n\r\n await this.$router.push({ path: '/confirmation' });\r\n } catch (error) {\r\n this.loading = false;\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: error.response ? error.response.data.errorMessage : \"A form field was not filled out\"\r\n });\r\n }\r\n },\r\n onAcceptCardNumber(event) {\r\n const maskRef = event.detail;\r\n this.cardNumber = maskRef.value;\r\n this.$log.info(`card number accepted: ${this.cardNumber}`);\r\n },\r\n onCompleteCardNumber(event) {\r\n const maskRef = event.detail;\r\n const cardType = maskRef.masked.currentMask.cardtype;\r\n\r\n this.cardStyle = CardTypeDisplay[cardType];\r\n this.cardType = cardType;\r\n },\r\n onAcceptExpirationDate(event) {\r\n const maskRef = event.detail;\r\n this.expirationDate = maskRef.value;\r\n this.$log.info(`expiration date accepted: ${this.expirationDate}`);\r\n },\r\n onAcceptSecurityCode(event) {\r\n const maskRef = event.detail;\r\n this.securityCode = maskRef.value;\r\n this.$log.info(`security code accepted: ${this.securityCode}`)\r\n },\r\n onSelectSavedCard(data){\r\n if(data === \"Select\"){\r\n this.cardNumber = \"\";\r\n this.expirationDate = \"\";\r\n this.securityCode = \"\";\r\n this.cardStyle = CardTypeDisplay['Unknown'];\r\n } else {\r\n this.cardNumber = data;\r\n this.expirationDate = this.savedCards.find(c => c.accountNumber === data).expirationDate;\r\n }\r\n },\r\n onSaveCardCheckboxSelected(data){\r\n this.savePayment = data;\r\n },\r\n onAddAutopaySelected(data){\r\n this.addAutopay = data;\r\n this.showModal = data;\r\n }\r\n },\r\n directives: {\r\n imask: IMaskDirective,\r\n },\r\n async created() {\r\n if (!this.customer.isGuest) {\r\n let savedUnitIds = this.savedPaymentMethods.flatMap(card => card.contractUnitIds);\r\n this.autoPayUnits = Object.values(this.selectedContracts).map(c => c.contractUnits).flat();\r\n this.autoPayUnits = this.autoPayUnits.filter(unit => !savedUnitIds.includes(unit.contractUnitId));\r\n\r\n this.allowAutopay = this.acceptAutopay && this.autoPayUnits.length !== 0;\r\n }\r\n\r\n await this.getSavedPaymentMethods({\"centralCustomerId\": this.customer.centralCustomerId, \"entity\": this.entity})\r\n this.savedCards = this.savedPaymentMethods;\r\n\r\n }\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.payment-container {\r\n display: grid;\r\n grid-column-gap: 10px;\r\n grid-template-columns: 600px;\r\n grid-template-rows: 30px 70px auto auto;\r\n padding: 20px 36px 40px 36px;\r\n justify-content: center;\r\n\r\n &__title {\r\n font-size: 26px;\r\n font-weight: 600;\r\n line-height: 30px;\r\n text-align: center;\r\n }\r\n}\r\n\r\n.credit-card {\r\n width: 100%;\r\n}\r\n\r\n.form-container {\r\n display: grid;\r\n grid-column-gap: 15px;\r\n grid-row-gap: 10px;\r\n grid-template-columns: 66% 33%;\r\n grid-template-rows: auto auto auto auto auto;\r\n grid-template-areas:\r\n \"encrypted encrypted\"\r\n \"cards cards\"\r\n \"name name\"\r\n \"number number\"\r\n \"expiration security\"\r\n \"checkbox checkbox\";\r\n justify-content: center;\r\n\r\n &__encrypted {\r\n font-size: 14px;\r\n line-height: 18px;\r\n text-align: center;\r\n }\r\n\r\n &__field-container:nth-of-type(1) {\r\n grid-area: encrypted;\r\n }\r\n\r\n &__field-container:nth-of-type(2) {\r\n grid-area: cards;\r\n }\r\n\r\n &__field-container:nth-of-type(3) {\r\n grid-area: name;\r\n }\r\n\r\n &__field-container:nth-of-type(4) {\r\n grid-area: number;\r\n }\r\n\r\n &__field-container:nth-of-type(5) {\r\n grid-area: expiration;\r\n }\r\n\r\n &__field-container:nth-of-type(6) {\r\n grid-area: security;\r\n }\r\n\r\n &__field-container:nth-of-type(7) {\r\n grid-area: checkbox;\r\n }\r\n\r\n &__field-container:nth-of-type(8) {\r\n grid-area: submitBtn;\r\n }\r\n}\r\n\r\n.ccicon {\r\n height: 38px;\r\n position: absolute;\r\n right: 6px;\r\n top: calc(50% - 8px);\r\n width: 60px;\r\n}\r\n\r\n.total-container {\r\n display: grid;\r\n grid-column-gap: 15px;\r\n grid-template-columns: 600px;\r\n grid-template-rows: auto auto 70px;\r\n padding: 20px 36px 40px 36px;\r\n background-color: $lightest-grey;\r\n justify-content: center;\r\n\r\n &__button {\r\n position: relative;\r\n }\r\n\r\n &__total {\r\n display: flex;\r\n justify-content: space-between;\r\n margin-bottom: 20px;\r\n }\r\n\r\n &__label {\r\n font-size: 22px;\r\n font-weight: 600;\r\n line-height: 25px;\r\n }\r\n\r\n &__value {\r\n font-size: 22px;\r\n font-weight: bold;\r\n line-height: 25px;\r\n color: $primary-color;\r\n }\r\n\r\n &__prepay {\r\n font-size: 16px;\r\n line-height: 20px;\r\n text-align: center;\r\n margin-bottom: 25px;\r\n }\r\n\r\n .total-container:nth-child(2) &__hide-row {\r\n visibility: hidden;\r\n }\r\n\r\n &--hide-row {\r\n grid-template-rows: auto 0 70px;\r\n }\r\n}\r\n\r\n.checkbox-container{\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n}\r\n\r\n.modal-container__unitList{\r\n list-style-type: none;\r\n padding: 0;\r\n}\r\n\r\n.modal-container__btn-group{\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 12px;\r\n\r\n &-cancel {\r\n font-size: 16px;\r\n background: #eee;\r\n color: $black;\r\n padding: 0.5em 1em;\r\n border-radius: 2px;\r\n cursor: pointer;\r\n border: 1px solid #cdcdcd;\r\n\r\n &:hover {\r\n background: $light-grey;\r\n border: 1px solid $medium-grey;\r\n }\r\n }\r\n\r\n &-confirm {\r\n font-size: 16px;\r\n background: $primary-color;\r\n color: $white;\r\n padding: 0.5em 1em;\r\n border-radius: 2px;\r\n cursor: pointer;\r\n border: 1px solid #cdcdcd;\r\n\r\n &:hover {\r\n background: $light-grey;\r\n border: 1px solid $medium-grey;\r\n color: $black;\r\n }\r\n }\r\n}\r\n\r\n@media(max-width: $media-large) {\r\n .payment-container {\r\n grid-template-columns: 350px;\r\n }\r\n\r\n .total-container {\r\n grid-template-columns: 350px;\r\n }\r\n}\r\n</style>\r\n","/**\r\n * Test card numbers\r\n * Visa - 4000056655665556\r\n * Mastercard - 5200828282828210\r\n * Amex - 371449635398431\r\n * Discover - 6011000990139424\r\n */\r\n\r\nconst CardTypeDisplay = {\r\n 'american express': {\r\n svg: `<g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"> <g id=\"amex\" fill-rule=\"nonzero\"> <rect id=\"Rectangle-1\" fill=\"#2557D6\" x=\"0\" y=\"0\" width=\"750\" height=\"471\" rx=\"40\"></rect> <path d=\"M0.002688,221.18508 L36.026849,221.18508 L44.149579,201.67506 L62.334596,201.67506 L70.436042,221.18508 L141.31637,221.18508 L141.31637,206.26909 L147.64322,221.24866 L184.43894,221.24866 L190.76579,206.04654 L190.76579,221.18508 L366.91701,221.18508 L366.83451,189.15941 L370.2427,189.15941 C372.62924,189.24161 373.3263,189.46144 373.3263,193.38516 L373.3263,221.18508 L464.43232,221.18508 L464.43232,213.72973 C471.78082,217.6508 483.21064,221.18508 498.25086,221.18508 L536.57908,221.18508 L544.78163,201.67506 L562.96664,201.67506 L570.98828,221.18508 L644.84844,221.18508 L644.84844,202.65269 L656.0335,221.18508 L715.22061,221.18508 L715.22061,98.67789 L656.64543,98.67789 L656.64543,113.14614 L648.44288,98.67789 L588.33787,98.67789 L588.33787,113.14614 L580.80579,98.67789 L499.61839,98.67789 C486.02818,98.67789 474.08221,100.5669 464.43232,105.83121 L464.43232,98.67789 L408.40596,98.67789 L408.40596,105.83121 C402.26536,100.40529 393.89786,98.67789 384.59383,98.67789 L179.90796,98.67789 L166.17407,130.3194 L152.07037,98.67789 L87.59937,98.67789 L87.59937,113.14614 L80.516924,98.67789 L25.533518,98.67789 L-2.99999999e-06,156.92445 L-2.99999999e-06,221.18508 L0.002597,221.18508 L0.002688,221.18508 Z M227.39957,203.51436 L205.78472,203.51436 L205.70492,134.72064 L175.13228,203.51436 L156.62,203.51436 L125.96754,134.6597 L125.96754,203.51436 L83.084427,203.51436 L74.982981,183.92222 L31.083524,183.92222 L22.8996,203.51436 L4.7e-05,203.51436 L37.756241,115.67692 L69.08183,115.67692 L104.94103,198.84086 L104.94103,115.67692 L139.35289,115.67692 L166.94569,175.26406 L192.29297,115.67692 L227.39657,115.67692 L227.39657,203.51436 L227.39957,203.51436 Z M67.777214,165.69287 L53.346265,130.67606 L38.997794,165.69287 L67.777214,165.69287 Z M313.41947,203.51436 L242.98611,203.51436 L242.98611,115.67692 L313.41947,115.67692 L313.41947,133.96821 L264.07116,133.96821 L264.07116,149.8009 L312.23551,149.8009 L312.23551,167.80606 L264.07116,167.80606 L264.07116,185.34759 L313.41947,185.34759 L313.41947,203.51436 Z M412.67528,139.33321 C412.67528,153.33782 403.28877,160.57326 397.81863,162.74575 C402.43206,164.49434 406.37237,167.58351 408.24808,170.14281 C411.22525,174.51164 411.73875,178.41416 411.73875,186.25897 L411.73875,203.51436 L390.47278,203.51436 L390.39298,192.43732 C390.39298,187.1518 390.90115,179.55074 387.0646,175.32499 C383.98366,172.23581 379.28774,171.56552 371.69714,171.56552 L349.06363,171.56552 L349.06363,203.51436 L327.98125,203.51436 L327.98125,115.67692 L376.47552,115.67692 C387.25084,115.67692 395.18999,115.9604 402.00639,119.88413 C408.67644,123.80786 412.67529,129.53581 412.67529,139.33321 L412.67528,139.33321 Z M386.02277,152.37632 C383.1254,154.12756 379.69859,154.18584 375.59333,154.18584 L349.97998,154.18584 L349.97998,134.67583 L375.94186,134.67583 C379.61611,134.67583 383.44999,134.8401 385.94029,136.26016 C388.67536,137.53981 390.36749,140.26337 390.36749,144.02548 C390.36749,147.86443 388.75784,150.95361 386.02277,152.37632 Z M446.48908,203.51436 L424.97569,203.51436 L424.97569,115.67692 L446.48908,115.67692 L446.48908,203.51436 Z M696.22856,203.51436 L666.35032,203.51436 L626.38585,137.58727 L626.38585,203.51436 L583.44687,203.51436 L575.24166,183.92222 L531.44331,183.92222 L523.48287,203.51436 L498.81137,203.51436 C488.56284,203.51436 475.58722,201.25709 468.23872,193.79909 C460.82903,186.3411 456.97386,176.23903 456.97386,160.26593 C456.97386,147.23895 459.27791,135.33 468.33983,125.91941 C475.15621,118.90916 485.83044,115.67692 500.35982,115.67692 L520.77174,115.67692 L520.77174,134.49809 L500.78818,134.49809 C493.0938,134.49809 488.74909,135.63733 484.564,139.70147 C480.96957,143.4 478.50322,150.39171 478.50322,159.59829 C478.50322,169.00887 480.38158,175.79393 484.30061,180.22633 C487.5465,183.70232 493.445,184.75677 498.99495,184.75677 L508.46393,184.75677 L538.17987,115.67957 L569.77152,115.67957 L605.46843,198.76138 L605.46843,115.67957 L637.5709,115.67957 L674.6327,176.85368 L674.6327,115.67957 L696.22856,115.67957 L696.22856,203.51436 Z M568.07051,165.69287 L553.47993,130.67606 L538.96916,165.69287 L568.07051,165.69287 Z\" id=\"Path\" fill=\"#FFFFFF\"></path> <path d=\"M749.95644,343.76716 C744.83485,351.22516 734.85504,355.00582 721.34464,355.00582 L680.62723,355.00582 L680.62723,336.1661 L721.17969,336.1661 C725.20248,336.1661 728.01736,335.63887 729.71215,333.99096 C731.18079,332.63183 732.2051,330.65804 732.2051,328.26036 C732.2051,325.70107 731.18079,323.66899 729.62967,322.45028 C728.09984,321.10969 725.87294,320.50033 722.20135,320.50033 C702.40402,319.83005 677.70592,321.10969 677.70592,293.30714 C677.70592,280.56363 685.83131,267.14983 707.95664,267.14983 L749.95379,267.14983 L749.95644,249.66925 L710.93382,249.66925 C699.15812,249.66925 690.60438,252.47759 684.54626,256.84375 L684.54626,249.66925 L626.83044,249.66925 C617.60091,249.66925 606.76706,251.94771 601.64279,256.84375 L601.64279,249.66925 L498.57751,249.66925 L498.57751,256.84375 C490.37496,250.95154 476.53466,249.66925 470.14663,249.66925 L402.16366,249.66925 L402.16366,256.84375 C395.67452,250.58593 381.24357,249.66925 372.44772,249.66925 L296.3633,249.66925 L278.95252,268.43213 L262.64586,249.66925 L148.99149,249.66925 L148.99149,372.26121 L260.50676,372.26121 L278.447,353.20159 L295.34697,372.26121 L364.08554,372.32211 L364.08554,343.48364 L370.84339,343.48364 C379.96384,343.62405 390.72054,343.25845 400.21079,339.17311 L400.21079,372.25852 L456.90762,372.25852 L456.90762,340.30704 L459.64268,340.30704 C463.13336,340.30704 463.47657,340.45011 463.47657,343.92344 L463.47657,372.25587 L635.71144,372.25587 C646.64639,372.25587 658.07621,369.46873 664.40571,364.41107 L664.40571,372.25587 L719.03792,372.25587 C730.40656,372.25587 741.50913,370.66889 749.95644,366.60475 L749.95644,343.76712 L749.95644,343.76716 Z M408.45301,296.61266 C408.45301,321.01872 390.16689,326.05784 371.7371,326.05784 L345.42935,326.05784 L345.42935,355.52685 L304.44855,355.52685 L278.48667,326.44199 L251.5058,355.52685 L167.9904,355.52685 L167.9904,267.66822 L252.79086,267.66822 L278.73144,296.46694 L305.55002,267.66822 L372.92106,267.66822 C389.6534,267.66822 408.45301,272.28078 408.45301,296.61266 Z M240.82781,337.04655 L188.9892,337.04655 L188.9892,319.56596 L235.27785,319.56596 L235.27785,301.64028 L188.9892,301.64028 L188.9892,285.66718 L241.84947,285.66718 L264.91132,311.27077 L240.82781,337.04655 Z M324.3545,347.10668 L291.9833,311.3189 L324.3545,276.6677 L324.3545,347.10668 Z M372.2272,308.04117 L344.98027,308.04117 L344.98027,285.66718 L372.47197,285.66718 C380.08388,285.66718 385.36777,288.75636 385.36777,296.43956 C385.36777,304.03796 380.32865,308.04117 372.2272,308.04117 Z M514.97053,267.66815 L585.34004,267.66815 L585.34004,285.83764 L535.96778,285.83764 L535.96778,301.81074 L584.1348,301.81074 L584.1348,319.73642 L535.96778,319.73642 L535.96778,337.21701 L585.34004,337.29641 L585.34004,355.52678 L514.97053,355.52678 L514.97053,267.66815 Z M487.91724,314.6973 C492.61049,316.42205 496.44703,319.51387 498.24559,322.07317 C501.22276,326.36251 501.65378,330.36571 501.73891,338.10985 L501.73891,355.52685 L480.5714,355.52685 L480.5714,344.53458 C480.5714,339.24908 481.08223,331.42282 477.1632,327.33748 C474.08226,324.19002 469.38635,323.4376 461.69463,323.4376 L439.16223,323.4376 L439.16223,355.52685 L417.97609,355.52685 L417.97609,267.66822 L466.65393,267.66822 C477.32816,267.66822 485.10236,268.13716 492.02251,271.81449 C498.6766,275.8177 502.86168,281.30191 502.86168,291.3245 C502.85868,305.34765 493.46719,312.50362 487.91724,314.6973 Z M475.99899,303.59022 C473.17879,305.25668 469.69077,305.39975 465.58817,305.39975 L439.97483,305.39975 L439.97483,285.66718 L465.9367,285.66718 C469.69077,285.66718 473.4475,285.74658 475.99899,287.25416 C478.7314,288.67687 480.36499,291.39779 480.36499,295.15725 C480.36499,298.91672 478.7314,301.94496 475.99899,303.59022 Z M666.33539,309.1866 C670.44067,313.41766 672.64095,318.7588 672.64095,327.80112 C672.64095,346.70178 660.78278,355.5242 639.51948,355.5242 L598.45353,355.5242 L598.45353,336.68449 L639.35453,336.68449 C643.35337,336.68449 646.18954,336.15726 647.9668,334.50934 C649.41681,333.15021 650.45709,331.17643 650.45709,328.77875 C650.45709,326.21944 649.33167,324.18738 647.88433,322.96866 C646.27201,321.62807 644.04778,321.01872 640.37619,321.01872 C620.65868,320.34843 595.9659,321.62807 595.9659,293.82551 C595.9659,281.08201 604.00615,267.66822 626.11019,267.66822 L668.37872,267.66822 L668.37872,286.36752 L629.70196,286.36752 C625.86809,286.36752 623.37512,286.51059 621.25464,287.9545 C618.94527,289.37721 618.08856,291.48876 618.08856,294.2759 C618.08856,297.59028 620.04941,299.8449 622.702,300.81987 C624.92624,301.59084 627.31543,301.81603 630.9072,301.81603 L642.25722,302.12071 C653.703,302.39889 661.55967,304.37003 666.33539,309.1866 Z M750,285.66718 L711.57335,285.66718 C707.7368,285.66718 705.18797,285.81025 703.04088,287.25416 C700.81665,288.67687 699.95995,290.78843 699.95995,293.57558 C699.95995,296.88994 701.83831,299.14456 704.57071,300.11953 C706.79495,300.8905 709.18415,301.1157 712.6961,301.1157 L724.12327,301.42038 C735.65419,301.70387 743.35123,303.67765 748.04448,308.49157 C748.89852,309.16186 749.41202,309.91428 750,310.6667 L750,285.66718 Z\" id=\"path13\" fill=\"#FFFFFF\"></path> </g> </g>`,\r\n svgSingle: `<svg version=\"1.1\" id=\"Layer_1\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"750\" height=\"471\" viewBox=\"0 0 750 471\" enable-background=\"new 0 0 752 471\" xml:space=\"preserve\"><title>Slice 1</title><desc>Created with Sketch.</desc><g><g><path fill=\"#2557D6\" d=\"M554.594,130.608l-14.521,35.039h29.121L554.594,130.608z M387.03,152.321c2.738-1.422,4.349-4.515,4.349-8.356c0-3.764-1.693-6.49-4.431-7.771c-2.492-1.42-6.328-1.584-10.006-1.584h-25.978v19.523h25.63C380.7,154.134,384.131,154.074,387.03,152.321z M54.142,130.608l-14.357,35.039h28.8L54.142,130.608z M722.565,355.08h-40.742v-18.852h40.578c4.023,0,6.84-0.525,8.537-2.177c1.471-1.358,2.494-3.336,2.494-5.733c0-2.562-1.023-4.596-2.578-5.813c-1.529-1.342-3.76-1.953-7.434-1.953c-19.81-0.67-44.523,0.609-44.523-27.211c0-12.75,8.131-26.172,30.27-26.172h42.025v-17.492h-39.045c-11.783,0-20.344,2.81-26.406,7.181v-7.181h-57.752c-9.233,0-20.074,2.279-25.201,7.181v-7.181H499.655v7.181c-8.207-5.898-22.057-7.181-28.447-7.181H403.18v7.181c-6.492-6.262-20.935-7.181-29.734-7.181h-76.134l-17.42,18.775l-16.318-18.775H149.847v122.675h111.586l17.95-19.076l16.91,19.076l68.78,0.059v-28.859h6.764c9.125,0.145,19.889-0.223,29.387-4.311v33.107h56.731v-31.976h2.736c3.492,0,3.838,0.146,3.838,3.621v28.348h172.344c10.941,0,22.38-2.786,28.712-7.853v7.853h54.668c11.375,0,22.485-1.588,30.938-5.653v-22.853C746.069,351.297,736.079,355.08,722.565,355.08z M372.734,326.113h-26.325v29.488h-41.006L279.425,326.5l-26.997,29.102h-83.569v-87.914h84.855l25.955,28.818l26.835-28.818h67.414c16.743,0,35.555,4.617,35.555,28.963C409.473,321.072,391.176,326.113,372.734,326.113z M499.323,322.127c2.98,4.291,3.41,8.297,3.496,16.047v17.428h-21.182v-10.998c0-5.289,0.512-13.121-3.41-17.209c-3.08-3.149-7.781-3.901-15.48-3.901h-22.545v32.108h-21.198v-87.914h48.706c10.685,0,18.462,0.472,25.386,4.148c6.658,4.006,10.848,9.494,10.848,19.523c-0.002,14.031-9.399,21.19-14.953,23.389C493.684,316.473,497.522,319.566,499.323,322.127z M586.473,285.869h-49.404v15.982h48.197v17.938h-48.197v17.492l49.404,0.078v18.242h-70.414v-87.914h70.414V285.869z M640.686,355.6h-41.09v-18.852h40.926c4.002,0,6.84-0.527,8.619-2.178c1.449-1.359,2.492-3.336,2.492-5.73c0-2.564-1.129-4.598-2.574-5.818c-1.615-1.34-3.842-1.948-7.514-1.948c-19.73-0.673-44.439,0.606-44.439-27.212c0-12.752,8.047-26.174,30.164-26.174h42.297v18.709h-38.703c-3.836,0-6.33,0.146-8.451,1.592c-2.313,1.423-3.17,3.535-3.17,6.322c0,3.316,1.963,5.574,4.615,6.549c2.228,0.771,4.617,0.996,8.211,0.996l11.359,0.308c11.449,0.274,19.313,2.25,24.092,7.069c4.105,4.232,6.311,9.578,6.311,18.625C673.829,346.771,661.963,355.6,640.686,355.6z M751.192,343.838L751.192,343.838L751.192,343.838L751.192,343.838z M477.061,287.287c-2.549-1.508-6.311-1.588-10.066-1.588h-25.979v19.744h25.631c4.104,0,7.594-0.144,10.414-1.812c2.734-1.646,4.371-4.678,4.371-8.438C481.432,291.434,479.795,288.711,477.061,287.287z M712.784,285.697c-3.838,0-6.389,0.145-8.537,1.588c-2.227,1.426-3.081,3.537-3.081,6.326c0,3.315,1.879,5.572,4.612,6.549c2.228,0.771,4.615,0.996,8.129,0.996l11.437,0.303c11.537,0.285,19.242,2.262,23.938,7.08c0.855,0.668,1.369,1.42,1.957,2.174v-25.014h-38.453L712.784,285.697L712.784,285.697z M373.47,285.697h-27.509v22.391h27.265c8.105,0,13.146-4.006,13.149-11.611C386.372,288.789,381.086,285.697,373.47,285.697z M189.872,285.697v15.984h46.315v17.938h-46.315v17.49h51.87l24.1-25.791l-23.076-25.621H189.872L189.872,285.697z M325.321,347.176v-70.482l-32.391,34.673L325.321,347.176z M191.649,206.025v15.148h176.263l-0.082-32.046h3.411c2.39,0.083,3.084,0.302,3.084,4.229v27.818h91.164v-7.461c7.353,3.924,18.789,7.461,33.838,7.461h38.353l8.209-19.522h18.197l8.026,19.522h73.906V202.63l11.189,18.543h59.227V98.59h-58.611v14.477l-8.207-14.477h-60.143v14.477l-7.537-14.477h-81.24c-13.6,0-25.551,1.89-35.207,7.158V98.59h-56.063v7.158c-6.146-5.43-14.519-7.158-23.826-7.158H180.784l-13.742,31.662L152.928,98.59H88.417v14.477L81.329,98.59H26.312L0.763,156.874v46.621l37.779-87.894h31.346l35.88,83.217v-83.217h34.435l27.61,59.625l25.365-59.625h35.126v87.894h-21.625l-0.079-68.837l-30.593,68.837h-18.524l-30.671-68.898v68.898H83.899l-8.106-19.605H31.865l-8.19,19.605H0.762v17.682h36.049l8.128-19.523h18.198l8.106,19.523h70.925V206.25l6.33,14.989h36.819L191.649,206.025z M469.401,125.849c6.818-7.015,17.5-10.25,32.039-10.25h20.424v18.833h-19.996c-7.696,0-12.047,1.14-16.233,5.208c-3.599,3.7-6.066,10.696-6.066,19.908c0,9.417,1.881,16.206,5.801,20.641c3.248,3.478,9.152,4.533,14.705,4.533h9.478l29.733-69.12h31.611l35.719,83.134v-83.133h32.123l37.086,61.213v-61.213h21.611v87.891h-29.898l-39.989-65.968v65.968h-42.968l-8.209-19.605h-43.827l-7.966,19.605h-24.688c-10.254,0-23.238-2.258-30.59-9.722c-7.416-7.462-11.271-17.571-11.271-33.553C458.026,147.182,460.329,135.266,469.401,125.849z M426.006,115.6h21.526v87.894h-21.526V115.6z M328.951,115.6h48.525c10.779,0,18.727,0.285,25.547,4.21c6.674,3.926,10.676,9.658,10.676,19.46c0,14.015-9.393,21.254-14.864,23.429c4.614,1.75,8.559,4.841,10.438,7.401c2.979,4.372,3.492,8.277,3.492,16.126v17.267h-21.279l-0.08-11.084c0-5.29,0.508-12.896-3.33-17.122c-3.082-3.09-7.782-3.763-15.379-3.763H350.05v31.97h-21.098L328.951,115.6L328.951,115.6z M243.902,115.6h70.479v18.303h-49.379v15.843h48.193v18.017h-48.193v17.553h49.379v18.177h-70.479V115.6L243.902,115.6z\"/></g></g></svg>`,\r\n lightColor: 'green',\r\n darkColor: `greendark`\r\n },\r\n 'visa': {\r\n svg: `<g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"> <g id=\"visa\" fill-rule=\"nonzero\"> <rect id=\"Rectangle-1\" fill=\"#0E4595\" x=\"0\" y=\"0\" width=\"750\" height=\"471\" rx=\"40\"></rect> <polygon id=\"Shape\" fill=\"#FFFFFF\" points=\"278.1975 334.2275 311.5585 138.4655 364.9175 138.4655 331.5335 334.2275\"></polygon> <path d=\"M524.3075,142.6875 C513.7355,138.7215 497.1715,134.4655 476.4845,134.4655 C423.7605,134.4655 386.6205,161.0165 386.3045,199.0695 C386.0075,227.1985 412.8185,242.8905 433.0585,252.2545 C453.8275,261.8495 460.8105,267.9695 460.7115,276.5375 C460.5795,289.6595 444.1255,295.6545 428.7885,295.6545 C407.4315,295.6545 396.0855,292.6875 378.5625,285.3785 L371.6865,282.2665 L364.1975,326.0905 C376.6605,331.5545 399.7065,336.2895 423.6355,336.5345 C479.7245,336.5345 516.1365,310.2875 516.5505,269.6525 C516.7515,247.3835 502.5355,230.4355 471.7515,216.4645 C453.1005,207.4085 441.6785,201.3655 441.7995,192.1955 C441.7995,184.0585 451.4675,175.3575 472.3565,175.3575 C489.8055,175.0865 502.4445,178.8915 512.2925,182.8575 L517.0745,185.1165 L524.3075,142.6875\" id=\"path13\" fill=\"#FFFFFF\"></path> <path d=\"M661.6145,138.4655 L620.3835,138.4655 C607.6105,138.4655 598.0525,141.9515 592.4425,154.6995 L513.1975,334.1025 L569.2285,334.1025 C569.2285,334.1025 578.3905,309.9805 580.4625,304.6845 C586.5855,304.6845 641.0165,304.7685 648.7985,304.7685 C650.3945,311.6215 655.2905,334.1025 655.2905,334.1025 L704.8025,334.1025 L661.6145,138.4655 Z M596.1975,264.8725 C600.6105,253.5935 617.4565,210.1495 617.4565,210.1495 C617.1415,210.6705 621.8365,198.8155 624.5315,191.4655 L628.1385,208.3435 C628.1385,208.3435 638.3555,255.0725 640.4905,264.8715 L596.1975,264.8715 L596.1975,264.8725 Z\" id=\"Path\" fill=\"#FFFFFF\"></path> <path d=\"M232.9025,138.4655 L180.6625,271.9605 L175.0965,244.8315 C165.3715,213.5575 135.0715,179.6755 101.1975,162.7125 L148.9645,333.9155 L205.4195,333.8505 L289.4235,138.4655 L232.9025,138.4655\" id=\"path16\" fill=\"#FFFFFF\"></path> <path d=\"M131.9195,138.4655 L45.8785,138.4655 L45.1975,142.5385 C112.1365,158.7425 156.4295,197.9015 174.8155,244.9525 L156.1065,154.9925 C152.8765,142.5965 143.5085,138.8975 131.9195,138.4655\" id=\"path18\" fill=\"#F2AE14\"></path> </g> </g>`,\r\n svgSingle: `<svg version=\"1.1\" id=\"Layer_1\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"750px\" height=\"471px\" viewBox=\"0 0 750 471\" enable-background=\"new 0 0 750 471\" xml:space=\"preserve\"><title>Slice 1</title><desc>Created with Sketch.</desc><g id=\"visa\" sketch:type=\"MSLayerGroup\"><path id=\"Shape\" sketch:type=\"MSShapeGroup\" fill=\"#0E4595\" d=\"M278.198,334.228l33.36-195.763h53.358l-33.384,195.763H278.198L278.198,334.228z\"/><path id=\"path13\" sketch:type=\"MSShapeGroup\" fill=\"#0E4595\" d=\"M524.307,142.687c-10.57-3.966-27.135-8.222-47.822-8.222c-52.725,0-89.863,26.551-90.18,64.604c-0.297,28.129,26.514,43.821,46.754,53.185c20.77,9.597,27.752,15.716,27.652,24.283c-0.133,13.123-16.586,19.116-31.924,19.116c-21.355,0-32.701-2.967-50.225-10.274l-6.877-3.112l-7.488,43.823c12.463,5.466,35.508,10.199,59.438,10.445c56.09,0,92.502-26.248,92.916-66.884c0.199-22.27-14.016-39.216-44.801-53.188c-18.65-9.056-30.072-15.099-29.951-24.269c0-8.137,9.668-16.838,30.559-16.838c17.447-0.271,30.088,3.534,39.936,7.5l4.781,2.259L524.307,142.687\"/><path id=\"Path\" sketch:type=\"MSShapeGroup\" fill=\"#0E4595\" d=\"M661.615,138.464h-41.23c-12.773,0-22.332,3.486-27.941,16.234l-79.244,179.402h56.031c0,0,9.16-24.121,11.232-29.418c6.123,0,60.555,0.084,68.336,0.084c1.596,6.854,6.492,29.334,6.492,29.334h49.512L661.615,138.464L661.615,138.464z M596.198,264.872c4.414-11.279,21.26-54.724,21.26-54.724c-0.314,0.521,4.381-11.334,7.074-18.684l3.607,16.878c0,0,10.217,46.729,12.352,56.527h-44.293V264.872L596.198,264.872z\"/><path id=\"path16\" sketch:type=\"MSShapeGroup\" fill=\"#0E4595\" d=\"M232.903,138.464L180.664,271.96l-5.565-27.129c-9.726-31.274-40.025-65.157-73.898-82.12l47.767,171.204l56.455-0.064l84.004-195.386L232.903,138.464\"/><path id=\"path18\" sketch:type=\"MSShapeGroup\" fill=\"#F2AE14\" d=\"M131.92,138.464H45.879l-0.682,4.073c66.939,16.204,111.232,55.363,129.618,102.415l-18.709-89.96C152.877,142.596,143.509,138.896,131.92,138.464\"/></g></svg>`,\r\n lightColor: 'lime',\r\n darkColor: `limedark`\r\n },\r\n 'discover': {\r\n svg: `<g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"> <g id=\"discover\" fill-rule=\"nonzero\"> <path d=\"M52.8771038,0 C23.6793894,0 -4.55476115e-15,23.1545612 0,51.7102589 L0,419.289737 C0,447.850829 23.671801,471 52.8771038,471 L697.122894,471 C726.320615,471 750,447.845433 750,419.289737 L750,252.475404 L750,51.7102589 C750,23.1491677 726.328202,-4.4533018e-15 697.122894,0 L52.8771038,0 Z\" id=\"Shape\" fill=\"#4D4D4D\"></path> <path d=\"M314.569558,152.198414 C323.06625,152.198414 330.192577,153.9309 338.865308,158.110254 L338.865308,180.197198 C330.650269,172.563549 323.523875,169.368926 314.100058,169.368926 C295.577115,169.368926 281.009615,183.944539 281.009615,202.424438 C281.009615,221.911997 295.126279,235.620254 315.018404,235.620254 C323.972798,235.620254 330.967135,232.591128 338.865308,225.080186 L338.865308,247.178497 C329.883538,251.197965 322.604577,252.785079 314.100058,252.785079 C284.025202,252.785079 260.655798,230.849701 260.655798,202.560947 C260.655798,174.577103 284.647269,152.198414 314.569558,152.198414 Z M221.191404,152.807038 C232.293048,152.807038 242.451462,156.418802 250.944635,163.479831 L240.609981,176.340655 C235.465019,170.859895 230.599394,168.547945 224.682615,168.547945 C216.169885,168.547936 209.970327,173.154235 209.970327,179.215049 C209.970327,184.413218 213.450798,187.164422 225.302356,191.332621 C247.768529,199.141028 254.426462,206.064868 254.426462,221.354473 C254.426462,239.986821 240.026981,252.955721 219.503077,252.955721 C204.47426,252.955721 193.548154,247.330452 184.44824,234.636213 L197.205529,222.956624 C201.754702,231.315341 209.342452,235.792799 218.763144,235.792799 C227.573971,235.792799 234.097058,230.014421 234.097058,222.217168 C234.097058,218.175392 232.121269,214.709536 228.175702,212.259183 C226.189231,211.099073 222.254519,209.369382 214.522615,206.777734 C195.973058,200.43062 189.609,193.646221 189.609,180.386799 C189.609,164.636126 203.275981,152.807038 221.191404,152.807038 Z M446.886269,154.485036 L468.460788,154.485036 L495.464615,219.130417 L522.815885,154.485036 L544.22701,154.485036 L500.482644,253.198414 L489.855019,253.198414 L446.886269,154.485036 Z M64.8212135,154.632923 L93.811974,154.632923 C125.842394,154.632923 148.170827,174.418596 148.170827,202.822609 C148.170827,216.985567 141.340038,230.679389 129.788913,239.766893 C120.068962,247.437722 108.994192,250.877669 93.6598558,250.877669 L64.8212135,250.877669 L64.8212135,154.632923 Z M157.25849,154.632923 L177.009462,154.632923 L177.009462,250.877669 L157.25849,250.877669 L157.25849,154.632923 Z M553.156923,154.632923 L609.168423,154.632923 L609.168423,170.940741 L572.892875,170.940741 L572.892875,192.303392 L607.831279,192.303392 L607.831279,208.603619 L572.892875,208.603619 L572.892875,234.583122 L609.168423,234.583122 L609.168423,250.877669 L553.156923,250.877669 L553.156923,154.632923 Z M622.250596,154.632923 L651.534327,154.632923 C674.313452,154.632923 687.366663,165.030007 687.366663,183.048838 C687.366663,197.784414 679.179923,207.454847 664.302885,210.332805 L696.176385,250.877669 L671.888144,250.877669 L644.551904,212.213673 L641.977163,212.213673 L641.977163,250.877669 L622.250596,250.877669 L622.250596,154.632923 Z M641.977163,169.791736 L641.977163,198.939525 L647.748269,198.939525 C660.360308,198.939525 667.044769,193.734406 667.044769,184.05942 C667.044769,174.693052 660.359106,169.791736 648.060019,169.791736 L641.977163,169.791736 Z M84.5571663,170.940741 L84.5571663,234.583122 L89.8568962,234.583122 C102.619538,234.583122 110.679663,232.259105 116.885144,226.934514 C123.71575,221.152572 127.824519,211.920423 127.824519,202.684197 C127.824519,193.462833 123.71575,184.505917 116.885144,178.723975 C110.361615,173.113074 102.619538,170.940741 89.8568962,170.940741 L84.5571663,170.940741 Z\" id=\"Shape\" fill=\"#FFFFFF\"></path> <path d=\"M399.164288,151.559424 C428.914452,151.559424 453.031096,173.727429 453.031096,201.112187 L453.031096,201.143399 C453.031096,228.528147 428.914452,250.727374 399.164288,250.727374 C369.414125,250.727374 345.297481,228.528147 345.297481,201.143399 L345.297481,201.112187 C345.297481,173.727429 369.414125,151.559424 399.164288,151.559424 Z M749.982612,271.093939 C724.934651,288.327133 537.408564,411.490963 212.719237,470.985071 L697.105507,470.985071 C726.303228,470.985071 749.982612,447.830504 749.982612,419.274807 L749.982612,271.093939 Z\" id=\"Shape\" fill=\"#F47216\"></path> </g> </g>`,\r\n svgSingle: `<svg version=\"1.1\" id=\"Layer_1\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"780px\" height=\"501px\" viewBox=\"0 0 780 501\" enable-background=\"new 0 0 780 501\" xml:space=\"preserve\"><title>discover</title><desc>Created with Sketch.</desc><g id=\"Page-1\" sketch:type=\"MSPage\"><g id=\"discover\" sketch:type=\"MSLayerGroup\"><path fill=\"#F47216\" d=\"M409.412,197.758c30.938,0,56.02,23.58,56.02,52.709v0.033c0,29.129-25.082,52.742-56.02,52.742c-30.941,0-56.022-23.613-56.022-52.742v-0.033C353.39,221.338,378.471,197.758,409.412,197.758L409.412,197.758z\"/><path d=\"M321.433,198.438c8.836,0,16.247,1.785,25.269,6.09v22.752c-8.544-7.863-15.955-11.154-25.757-11.154c-19.265,0-34.413,15.015-34.413,34.051c0,20.074,14.681,34.195,35.368,34.195c9.313,0,16.586-3.12,24.802-10.856v22.764c-9.343,4.141-16.912,5.775-25.757,5.775c-31.277,0-55.581-22.597-55.581-51.737C265.363,221.49,290.314,198.438,321.433,198.438L321.433,198.438z\"/><path d=\"M224.32,199.064c11.546,0,22.109,3.721,30.942,10.994l-10.748,13.248c-5.351-5.646-10.411-8.027-16.563-8.027c-8.854,0-15.301,4.745-15.301,10.988c0,5.354,3.618,8.188,15.944,12.482c23.364,8.043,30.289,15.176,30.289,30.926c0,19.193-14.976,32.554-36.319,32.554c-15.631,0-26.993-5.795-36.457-18.871l13.268-12.031c4.73,8.609,12.622,13.223,22.42,13.223c9.163,0,15.947-5.951,15.947-13.984c0-4.164-2.056-7.733-6.158-10.258c-2.066-1.195-6.158-2.977-14.199-5.646c-19.292-6.538-25.91-13.527-25.91-27.186C191.474,211.25,205.688,199.064,224.32,199.064L224.32,199.064z\"/><polygon points=\"459.043,200.793 481.479,200.793 509.563,267.385 538.01,200.793 560.276,200.793 514.783,302.479 503.729,302.479 \"/><polygon points=\"157.83,200.945 178.371,200.945 178.371,300.088 157.83,300.088 \"/><polygon points=\"569.563,200.945 627.815,200.945 627.815,217.744 590.09,217.744 590.09,239.75 626.426,239.75 626.426,256.541 590.09,256.541 590.09,283.303 627.815,283.303 627.815,300.088 569.563,300.088 \"/><path d=\"M685.156,258.322c15.471-2.965,23.984-12.926,23.984-28.105c0-18.562-13.576-29.271-37.266-29.271H641.42v99.143h20.516V260.26h2.68l28.43,39.828h25.26L685.156,258.322z M667.938,246.586h-6.002v-30.025h6.326c12.791,0,19.744,5.049,19.744,14.697C688.008,241.224,681.055,246.586,667.938,246.586z\"/><path d=\"M91.845,200.945H61.696v99.143h29.992c15.946,0,27.465-3.543,37.573-11.445c12.014-9.36,19.117-23.467,19.117-38.057C148.379,221.327,125.157,200.945,91.845,200.945z M115.842,275.424c-6.454,5.484-14.837,7.879-28.108,7.879H82.22v-65.559h5.513c13.271,0,21.323,2.238,28.108,8.018c7.104,5.956,11.377,15.183,11.377,24.682C127.219,259.957,122.945,269.468,115.842,275.424z\"/></g></g></svg>`,\r\n lightColor: 'purple',\r\n darkColor: `purpledark`\r\n },\r\n 'mastercard': {\r\n svg: `<g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"> <g id=\"mastercard\" fill-rule=\"nonzero\"> <rect id=\"Rectangle-1\" fill=\"#000000\" x=\"0\" y=\"0\" width=\"750\" height=\"471\" rx=\"40\"></rect> <g id=\"Group\" transform=\"translate(133.000000, 48.000000)\"> <path d=\"M88.13,373.67 L88.13,348.82 C88.13,339.29 82.33,333.08 72.81,333.08 C67.81,333.08 62.46,334.74 58.73,340.08 C55.83,335.52 51.73,333.08 45.48,333.08 C40.7599149,332.876008 36.2525337,335.054575 33.48,338.88 L33.48,333.88 L25.61,333.88 L25.61,373.64 L33.48,373.64 L33.48,350.89 C33.48,343.89 37.62,340.54 43.42,340.54 C49.22,340.54 52.53,344.27 52.53,350.89 L52.53,373.67 L60.4,373.67 L60.4,350.89 C60.4,343.89 64.54,340.54 70.34,340.54 C76.14,340.54 79.45,344.27 79.45,350.89 L79.45,373.67 L88.13,373.67 Z M217.35,334.32 L202.85,334.32 L202.85,322.32 L195,322.32 L195,334.32 L186.72,334.32 L186.72,341.32 L195,341.32 L195,360 C195,369.11 198.31,374.5 208.25,374.5 C212.015784,374.421483 215.705651,373.426077 219,371.6 L216.51,364.6 C214.275685,365.996557 211.684475,366.715565 209.05,366.67 C204.91,366.67 202.84,364.18 202.84,360.04 L202.84,341 L217.34,341 L217.34,334.37 L217.35,334.32 Z M291.07,333.08 C286.709355,332.982846 282.618836,335.185726 280.3,338.88 L280.3,333.88 L272.43,333.88 L272.43,373.64 L280.3,373.64 L280.3,351.31 C280.3,344.68 283.61,340.54 289,340.54 C290.818809,340.613783 292.62352,340.892205 294.38,341.37 L296.87,333.91 C294.971013,333.43126 293.02704,333.153071 291.07,333.08 Z M179.66,337.22 C175.52,334.32 169.72,333.08 163.51,333.08 C153.57,333.08 147.36,337.64 147.36,345.51 C147.36,352.14 151.92,355.86 160.61,357.11 L164.75,357.52 C169.31,358.35 172.21,360.01 172.21,362.08 C172.21,364.98 168.9,367.08 162.68,367.08 C157.930627,367.177716 153.278889,365.724267 149.43,362.94 L145.29,369.15 C151.09,373.29 158.13,374.15 162.29,374.15 C173.89,374.15 180.1,368.77 180.1,361.31 C180.1,354.31 175.1,350.96 166.43,349.71 L162.29,349.3 C158.56,348.89 155.29,347.64 155.29,345.16 C155.29,342.26 158.6,340.16 163.16,340.16 C168.16,340.16 173.1,342.23 175.59,343.47 L179.66,337.22 Z M299.77,353.79 C299.77,365.79 307.64,374.5 320.48,374.5 C326.28,374.5 330.42,373.26 334.56,369.94 L330.42,363.73 C327.488758,366.10388 323.841703,367.41823 320.07,367.46 C313.07,367.46 307.64,362.08 307.64,354.21 C307.64,346.34 313,341 320.07,341 C323.841703,341.04177 327.488758,342.35612 330.42,344.73 L334.56,338.52 C330.42,335.21 326.28,333.96 320.48,333.96 C308.05,333.13 299.77,341.83 299.77,353.84 L299.77,353.79 Z M244.27,333.08 C232.67,333.08 224.8,341.36 224.8,353.79 C224.8,366.22 233.08,374.5 245.09,374.5 C250.932775,374.623408 256.638486,372.722682 261.24,369.12 L257.1,363.32 C253.772132,365.898743 249.708598,367.349004 245.5,367.46 C240.12,367.46 234.32,364.15 233.5,357.11 L262.91,357.11 L262.91,353.8 C262.91,341.37 255.45,333.09 244.27,333.09 L244.27,333.08 Z M243.86,340.54 C249.66,340.54 253.8,344.27 254.21,350.48 L232.68,350.48 C233.92,344.68 237.68,340.54 243.86,340.54 Z M136.59,353.79 L136.59,333.91 L128.72,333.91 L128.72,338.91 C125.82,335.18 121.72,333.11 115.88,333.11 C104.7,333.11 96.41,341.81 96.41,353.82 C96.41,365.83 104.69,374.53 115.88,374.53 C121.68,374.53 125.82,372.46 128.72,368.73 L128.72,373.73 L136.59,373.73 L136.59,353.79 Z M104.7,353.79 C104.7,346.33 109.26,340.54 117.13,340.54 C124.59,340.54 129.13,346.34 129.13,353.79 C129.13,361.66 124.13,367.04 117.13,367.04 C109.26,367.45 104.7,361.24 104.7,353.79 Z M410.78,333.08 C406.419355,332.982846 402.328836,335.185726 400.01,338.88 L400.01,333.88 L392.14,333.88 L392.14,373.64 L400,373.64 L400,351.31 C400,344.68 403.31,340.54 408.7,340.54 C410.518809,340.613783 412.32352,340.892205 414.08,341.37 L416.57,333.91 C414.671013,333.43126 412.72704,333.153071 410.77,333.08 L410.78,333.08 Z M380.13,353.79 L380.13,333.91 L372.26,333.91 L372.26,338.91 C369.36,335.18 365.26,333.11 359.42,333.11 C348.24,333.11 339.95,341.81 339.95,353.82 C339.95,365.83 348.23,374.53 359.42,374.53 C365.22,374.53 369.36,372.46 372.26,368.73 L372.26,373.73 L380.13,373.73 L380.13,353.79 Z M348.24,353.79 C348.24,346.33 352.8,340.54 360.67,340.54 C368.13,340.54 372.67,346.34 372.67,353.79 C372.67,361.66 367.67,367.04 360.67,367.04 C352.8,367.45 348.24,361.24 348.24,353.79 Z M460.07,353.79 L460.07,318.17 L452.2,318.17 L452.2,338.88 C449.3,335.15 445.2,333.08 439.36,333.08 C428.18,333.08 419.89,341.78 419.89,353.79 C419.89,365.8 428.17,374.5 439.36,374.5 C445.16,374.5 449.3,372.43 452.2,368.7 L452.2,373.7 L460.07,373.7 L460.07,353.79 Z M428.18,353.79 C428.18,346.33 432.74,340.54 440.61,340.54 C448.07,340.54 452.61,346.34 452.61,353.79 C452.61,361.66 447.61,367.04 440.61,367.04 C432.73,367.46 428.17,361.25 428.17,353.79 L428.18,353.79 Z\" id=\"Shape\" fill=\"#FFFFFF\"></path> <g> <rect id=\"Rectangle-path\" fill=\"#FF5F00\" x=\"170.55\" y=\"32.39\" width=\"143.72\" height=\"234.42\"></rect> <path d=\"M185.05,149.6 C185.05997,103.912554 205.96046,60.7376085 241.79,32.39 C180.662018,-15.6713968 92.8620037,-8.68523415 40.103462,48.4380037 C-12.6550796,105.561241 -12.6550796,193.638759 40.103462,250.761996 C92.8620037,307.885234 180.662018,314.871397 241.79,266.81 C205.96046,238.462391 185.05997,195.287446 185.05,149.6 Z\" id=\"Shape\" fill=\"#EB001B\"></path> <path d=\"M483.26,149.6 C483.30134,206.646679 450.756789,258.706022 399.455617,283.656273 C348.154445,308.606523 287.109181,302.064451 242.26,266.81 C278.098424,238.46936 299.001593,195.290092 299.001593,149.6 C299.001593,103.909908 278.098424,60.7306402 242.26,32.39 C287.109181,-2.86445052 348.154445,-9.40652324 399.455617,15.5437274 C450.756789,40.493978 483.30134,92.5533211 483.26,149.6 Z\" id=\"Shape\" fill=\"#F79E1B\"></path> </g> </g> </g> </g>`,\r\n svgSingle: `<svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"482.51\" height=\"374\" viewBox=\"0 0 482.51 374\"> <title>mastercard</title> <g> <path d=\"M220.13,421.67V396.82c0-9.53-5.8-15.74-15.32-15.74-5,0-10.35,1.66-14.08,7-2.9-4.56-7-7-13.25-7a14.07,14.07,0,0,0-12,5.8v-5h-7.87v39.76h7.87V398.89c0-7,4.14-10.35,9.94-10.35s9.11,3.73,9.11,10.35v22.78h7.87V398.89c0-7,4.14-10.35,9.94-10.35s9.11,3.73,9.11,10.35v22.78Zm129.22-39.35h-14.5v-12H327v12h-8.28v7H327V408c0,9.11,3.31,14.5,13.25,14.5A23.17,23.17,0,0,0,351,419.6l-2.49-7a13.63,13.63,0,0,1-7.46,2.07c-4.14,0-6.21-2.49-6.21-6.63V389h14.5v-6.63Zm73.72-1.24a12.39,12.39,0,0,0-10.77,5.8v-5h-7.87v39.76h7.87V399.31c0-6.63,3.31-10.77,8.7-10.77a24.24,24.24,0,0,1,5.38.83l2.49-7.46a28,28,0,0,0-5.8-.83Zm-111.41,4.14c-4.14-2.9-9.94-4.14-16.15-4.14-9.94,0-16.15,4.56-16.15,12.43,0,6.63,4.56,10.35,13.25,11.6l4.14.41c4.56.83,7.46,2.49,7.46,4.56,0,2.9-3.31,5-9.53,5a21.84,21.84,0,0,1-13.25-4.14l-4.14,6.21c5.8,4.14,12.84,5,17,5,11.6,0,17.81-5.38,17.81-12.84,0-7-5-10.35-13.67-11.6l-4.14-.41c-3.73-.41-7-1.66-7-4.14,0-2.9,3.31-5,7.87-5,5,0,9.94,2.07,12.43,3.31Zm120.11,16.57c0,12,7.87,20.71,20.71,20.71,5.8,0,9.94-1.24,14.08-4.56l-4.14-6.21a16.74,16.74,0,0,1-10.35,3.73c-7,0-12.43-5.38-12.43-13.25S445,389,452.07,389a16.74,16.74,0,0,1,10.35,3.73l4.14-6.21c-4.14-3.31-8.28-4.56-14.08-4.56-12.43-.83-20.71,7.87-20.71,19.88h0Zm-55.5-20.71c-11.6,0-19.47,8.28-19.47,20.71s8.28,20.71,20.29,20.71a25.33,25.33,0,0,0,16.15-5.38l-4.14-5.8a19.79,19.79,0,0,1-11.6,4.14c-5.38,0-11.18-3.31-12-10.35h29.41v-3.31c0-12.43-7.46-20.71-18.64-20.71h0Zm-.41,7.46c5.8,0,9.94,3.73,10.35,9.94H364.68c1.24-5.8,5-9.94,11.18-9.94ZM268.59,401.79V381.91h-7.87v5c-2.9-3.73-7-5.8-12.84-5.8-11.18,0-19.47,8.7-19.47,20.71s8.28,20.71,19.47,20.71c5.8,0,9.94-2.07,12.84-5.8v5h7.87V401.79Zm-31.89,0c0-7.46,4.56-13.25,12.43-13.25,7.46,0,12,5.8,12,13.25,0,7.87-5,13.25-12,13.25-7.87.41-12.43-5.8-12.43-13.25Zm306.08-20.71a12.39,12.39,0,0,0-10.77,5.8v-5h-7.87v39.76H532V399.31c0-6.63,3.31-10.77,8.7-10.77a24.24,24.24,0,0,1,5.38.83l2.49-7.46a28,28,0,0,0-5.8-.83Zm-30.65,20.71V381.91h-7.87v5c-2.9-3.73-7-5.8-12.84-5.8-11.18,0-19.47,8.7-19.47,20.71s8.28,20.71,19.47,20.71c5.8,0,9.94-2.07,12.84-5.8v5h7.87V401.79Zm-31.89,0c0-7.46,4.56-13.25,12.43-13.25,7.46,0,12,5.8,12,13.25,0,7.87-5,13.25-12,13.25-7.87.41-12.43-5.8-12.43-13.25Zm111.83,0V366.17h-7.87v20.71c-2.9-3.73-7-5.8-12.84-5.8-11.18,0-19.47,8.7-19.47,20.71s8.28,20.71,19.47,20.71c5.8,0,9.94-2.07,12.84-5.8v5h7.87V401.79Zm-31.89,0c0-7.46,4.56-13.25,12.43-13.25,7.46,0,12,5.8,12,13.25,0,7.87-5,13.25-12,13.25C564.73,415.46,560.17,409.25,560.17,401.79Z\" transform=\"translate(-132.74 -48.5)\"/> <g> <rect x=\"169.81\" y=\"31.89\" width=\"143.72\" height=\"234.42\" fill=\"#ff5f00\"/> <path d=\"M317.05,197.6A149.5,149.5,0,0,1,373.79,80.39a149.1,149.1,0,1,0,0,234.42A149.5,149.5,0,0,1,317.05,197.6Z\" transform=\"translate(-132.74 -48.5)\" fill=\"#eb001b\"/> <path d=\"M615.26,197.6a148.95,148.95,0,0,1-241,117.21,149.43,149.43,0,0,0,0-234.42,148.95,148.95,0,0,1,241,117.21Z\" transform=\"translate(-132.74 -48.5)\" fill=\"#f79e1b\"/> </g> </g></svg>`,\r\n lightColor: 'lightblue',\r\n darkColor: `lightbluedark`\r\n },\r\n 'Unknown': {\r\n svg: '',\r\n svgSingle: '',\r\n lightColor: 'grey',\r\n darkColor: `greydark`\r\n }\r\n}\r\n\r\nexport default CardTypeDisplay;\r\n","<template>\r\n <div class=\"positioning\">\r\n <div class=\"card-container\">\r\n <div class=\"card-container__creditcard\" :class=\"[ flipped ? 'flipped' : '']\">\r\n <div class=\"creditcard__front\">\r\n <div class=\"front__ccsingle\" v-html=\"cardStyle.svgSingle\"></div>\r\n <svg\r\n version=\"1.1\"\r\n id=\"cardfront\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 750 471\"\r\n style=\"enable-background: new 0 0 750 471\"\r\n xml:space=\"preserve\"\r\n >\r\n <g id=\"Front\">\r\n <g id=\"CardBackground\">\r\n <g id=\"Page-1_1_\">\r\n <g id=\"amex_1_\">\r\n <path\r\n id=\"Rectangle-1_1_\"\r\n class=\"lightcolor\"\r\n :class=\"[cardStyle.lightColor]\"\r\n d=\"M40,0h670c22.1,0,40,17.9,40,40v391c0,22.1-17.9,40-40,40H40c-22.1,0-40-17.9-40-40V40\r\n C0,17.9,17.9,0,40,0z\"\r\n />\r\n </g>\r\n </g>\r\n <path\r\n class=\"darkcolor\"\r\n :class=\"[cardStyle.darkColor]\"\r\n d=\"M750,431V193.2c-217.6-57.5-556.4-13.5-750,24.9V431c0,22.1,17.9,40,40,40h670C732.1,471,750,453.1,750,431z\"\r\n />\r\n </g>\r\n <text\r\n transform=\"matrix(1 0 0 1 60.106 295.0121)\"\r\n id=\"svgnumber\"\r\n class=\"st2 st3 st4\"\r\n >\r\n {{ cardNumber }}\r\n </text>\r\n <text\r\n transform=\"matrix(1 0 0 1 54.1064 428.1723)\"\r\n id=\"svgname\"\r\n class=\"st2 st5 st6\"\r\n >\r\n {{ name }}\r\n </text>\r\n <text\r\n transform=\"matrix(1 0 0 1 54.1074 389.8793)\"\r\n class=\"st7 st5 st8\"\r\n >\r\n cardholder name\r\n </text>\r\n <text\r\n transform=\"matrix(1 0 0 1 479.7754 388.8793)\"\r\n class=\"st7 st5 st8\"\r\n >\r\n expiration\r\n </text>\r\n <text transform=\"matrix(1 0 0 1 65.1054 241.5)\" class=\"st7 st5 st8\">\r\n card number\r\n </text>\r\n <g>\r\n <text\r\n transform=\"matrix(1 0 0 1 574.4219 433.8095)\"\r\n id=\"svgexpire\"\r\n class=\"st2 st5 st9\"\r\n >\r\n {{ expiration }}\r\n </text>\r\n <text\r\n transform=\"matrix(1 0 0 1 479.3848 417.0097)\"\r\n class=\"st2 st10 st11\"\r\n >\r\n VALID\r\n </text>\r\n <text\r\n transform=\"matrix(1 0 0 1 479.3848 435.6762)\"\r\n class=\"st2 st10 st11\"\r\n >\r\n THRU\r\n </text>\r\n <polygon\r\n class=\"st2\"\r\n points=\"554.5,421 540.4,414.2 540.4,427.9 \t\t\"\r\n />\r\n </g>\r\n <g id=\"cchip\">\r\n <g>\r\n <path\r\n class=\"st2\"\r\n d=\"M168.1,143.6H82.9c-10.2,0-18.5-8.3-18.5-18.5V74.9c0-10.2,8.3-18.5,18.5-18.5h85.3\r\n c10.2,0,18.5,8.3,18.5,18.5v50.2C186.6,135.3,178.3,143.6,168.1,143.6z\"\r\n />\r\n </g>\r\n <g>\r\n <g>\r\n <rect x=\"82\" y=\"70\" class=\"st12\" width=\"1.5\" height=\"60\" />\r\n </g>\r\n <g>\r\n <rect x=\"167.4\" y=\"70\" class=\"st12\" width=\"1.5\" height=\"60\" />\r\n </g>\r\n <g>\r\n <path\r\n class=\"st12\"\r\n d=\"M125.5,130.8c-10.2,0-18.5-8.3-18.5-18.5c0-4.6,1.7-8.9,4.7-12.3c-3-3.4-4.7-7.7-4.7-12.3\r\n c0-10.2,8.3-18.5,18.5-18.5s18.5,8.3,18.5,18.5c0,4.6-1.7,8.9-4.7,12.3c3,3.4,4.7,7.7,4.7,12.3\r\n C143.9,122.5,135.7,130.8,125.5,130.8z M125.5,70.8c-9.3,0-16.9,7.6-16.9,16.9c0,4.4,1.7,8.6,4.8,11.8l0.5,0.5l-0.5,0.5\r\n c-3.1,3.2-4.8,7.4-4.8,11.8c0,9.3,7.6,16.9,16.9,16.9s16.9-7.6,16.9-16.9c0-4.4-1.7-8.6-4.8-11.8l-0.5-0.5l0.5-0.5\r\n c3.1-3.2,4.8-7.4,4.8-11.8C142.4,78.4,134.8,70.8,125.5,70.8z\"\r\n />\r\n </g>\r\n <g>\r\n <rect\r\n x=\"82.8\"\r\n y=\"82.1\"\r\n class=\"st12\"\r\n width=\"25.8\"\r\n height=\"1.5\"\r\n />\r\n </g>\r\n <g>\r\n <rect\r\n x=\"82.8\"\r\n y=\"117.9\"\r\n class=\"st12\"\r\n width=\"26.1\"\r\n height=\"1.5\"\r\n />\r\n </g>\r\n <g>\r\n <rect\r\n x=\"142.4\"\r\n y=\"82.1\"\r\n class=\"st12\"\r\n width=\"25.8\"\r\n height=\"1.5\"\r\n />\r\n </g>\r\n <g>\r\n <rect\r\n x=\"142\"\r\n y=\"117.9\"\r\n class=\"st12\"\r\n width=\"26.2\"\r\n height=\"1.5\"\r\n />\r\n </g>\r\n </g>\r\n </g>\r\n </g>\r\n <g id=\"Back\"></g>\r\n </svg>\r\n </div>\r\n <div class=\"creditcard__back\">\r\n <svg\r\n version=\"1.1\"\r\n id=\"cardback\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 750 471\"\r\n style=\"enable-background: new 0 0 750 471\"\r\n xml:space=\"preserve\"\r\n >\r\n <g id=\"Front\">\r\n <line class=\"st0\" x1=\"35.3\" y1=\"10.4\" x2=\"36.7\" y2=\"11\" />\r\n </g>\r\n <g id=\"Back\">\r\n <g id=\"Page-1_2_\">\r\n <g id=\"amex_2_\">\r\n <path\r\n id=\"Rectangle-1_2_\"\r\n class=\"darkcolor\"\r\n :class=\"[cardStyle.darkColor]\"\r\n d=\"M40,0h670c22.1,0,40,17.9,40,40v391c0,22.1-17.9,40-40,40H40c-22.1,0-40-17.9-40-40V40\r\n C0,17.9,17.9,0,40,0z\"\r\n />\r\n </g>\r\n </g>\r\n <rect y=\"61.6\" class=\"st2\" width=\"750\" height=\"78\" />\r\n <g>\r\n <path\r\n class=\"st3\"\r\n d=\"M701.1,249.1H48.9c-3.3,0-6-2.7-6-6v-52.5c0-3.3,2.7-6,6-6h652.1c3.3,0,6,2.7,6,6v52.5\r\n C707.1,246.4,704.4,249.1,701.1,249.1z\"\r\n />\r\n <rect\r\n x=\"42.9\"\r\n y=\"198.6\"\r\n class=\"st4\"\r\n width=\"664.1\"\r\n height=\"10.5\"\r\n />\r\n <rect\r\n x=\"42.9\"\r\n y=\"224.5\"\r\n class=\"st4\"\r\n width=\"664.1\"\r\n height=\"10.5\"\r\n />\r\n <path\r\n class=\"st5\"\r\n d=\"M701.1,184.6H618h-8h-10v64.5h10h8h83.1c3.3,0,6-2.7,6-6v-52.5C707.1,187.3,704.4,184.6,701.1,184.6z\"\r\n />\r\n </g>\r\n <text\r\n transform=\"matrix(1 0 0 1 621.999 227.2734)\"\r\n id=\"svgsecurity\"\r\n class=\"st6 st7\"\r\n >\r\n {{ securityCode }}\r\n </text>\r\n <g class=\"st8\">\r\n <text\r\n transform=\"matrix(1 0 0 1 518.083 280.0879)\"\r\n class=\"st9 st6 st10\"\r\n >\r\n security code\r\n </text>\r\n </g>\r\n <rect x=\"58.1\" y=\"378.6\" class=\"st11\" width=\"375.5\" height=\"13.5\" />\r\n <rect x=\"58.1\" y=\"405.6\" class=\"st11\" width=\"421.7\" height=\"13.5\" />\r\n <text\r\n transform=\"matrix(1 0 0 1 59.5073 228.6099)\"\r\n id=\"svgnameback\"\r\n class=\"st12 st13\"\r\n >\r\n {{ name }}\r\n </text>\r\n </g>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"CreditCard\",\r\n props: {\r\n flipped: Boolean,\r\n cardStyle: Object,\r\n cardNumber: String,\r\n name: String,\r\n expiration: String,\r\n securityCode: String\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.positioning {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-around;\r\n}\r\n\r\n.card-container {\r\n width: 100%;\r\n max-width: 342px;\r\n max-height: 217px;\r\n height: 50vw;\r\n perspective: 1000px;\r\n margin-bottom: 15px;\r\n\r\n &__creditcard {\r\n width: 100%;\r\n max-width: 400px;\r\n transform-style: preserve-3d;\r\n transition: transform 0.6s;\r\n cursor: pointer;\r\n }\r\n\r\n &__creditcard .creditcard__front,\r\n &__creditcard .creditcard__back {\r\n position: absolute;\r\n width: 100%;\r\n max-width: 400px;\r\n -webkit-backface-visibility: hidden;\r\n backface-visibility: hidden;\r\n -webkit-font-smoothing: antialiased;\r\n color: #47525d;\r\n }\r\n\r\n &__creditcard .creditcard__back {\r\n transform: rotateY(180deg);\r\n }\r\n\r\n &__creditcard.flipped {\r\n transform: rotateY(180deg);\r\n }\r\n\r\n &__creditcard svg#cardfront,\r\n &__creditcard svg#cardback {\r\n width: 100%;\r\n box-shadow: 1px 3px 4px 0px grey;\r\n border-radius: 22px;\r\n }\r\n\r\n &__creditcard .lightcolor,\r\n &__creditcard .darkcolor {\r\n transition: fill 0.5s;\r\n }\r\n\r\n &__creditcard .greydark {\r\n fill: #616161;\r\n }\r\n\r\n &__creditcard .grey {\r\n fill: #bdbdbd;\r\n }\r\n\r\n &__creditcard .orangedark {\r\n fill: #ef6c00;\r\n }\r\n\r\n &__creditcard .orange {\r\n fill: #ff9800;\r\n }\r\n\r\n &__creditcard .yellowdark {\r\n fill: #f9a825;\r\n }\r\n\r\n &__creditcard .yellow {\r\n fill: #ffeb3b;\r\n }\r\n\r\n &__creditcard .limedark {\r\n fill: #afb42b;\r\n }\r\n\r\n &__creditcard .lime {\r\n fill: #d4e157;\r\n }\r\n\r\n &__creditcard .greendark {\r\n fill: #388e3c;\r\n }\r\n\r\n &__creditcard .green {\r\n fill: #66bb6a;\r\n }\r\n\r\n &__creditcard .cyandark {\r\n fill: #0097a7;\r\n }\r\n\r\n &__creditcard .cyan {\r\n fill: #26c6da;\r\n }\r\n\r\n &__creditcard .purpledark {\r\n fill: #7b1fa2;\r\n }\r\n\r\n &__creditcard .purple {\r\n fill: #ab47bc;\r\n }\r\n\r\n &__creditcard .reddark {\r\n fill: #d32f2f;\r\n }\r\n\r\n &__creditcard .red {\r\n fill: #ef5350;\r\n }\r\n\r\n &__creditcard .lightbluedark {\r\n fill: #0288d1;\r\n }\r\n\r\n &__creditcard .lightblue {\r\n fill: #03a9f4;\r\n }\r\n}\r\n\r\n.front__ccsingle {\r\n position: absolute;\r\n right: 15px;\r\n top: 20px;\r\n\r\n &::v-deep svg {\r\n width: 100px;\r\n max-height: 60px;\r\n }\r\n}\r\n\r\n#generatecard {\r\n cursor: pointer;\r\n float: right;\r\n font-size: 12px;\r\n color: #fff;\r\n padding: 2px 4px;\r\n background-color: #909090;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n float: right;\r\n}\r\n\r\n#svgname {\r\n text-transform: uppercase;\r\n}\r\n\r\n#cardfront {\r\n & .st2 {\r\n fill: $white;\r\n }\r\n\r\n & .st3 {\r\n font-family: \"Source Code Pro\", monospace;\r\n font-weight: 600;\r\n }\r\n\r\n & .st4 {\r\n font-size: 54.7817px;\r\n }\r\n\r\n & .st5 {\r\n font-family: \"Source Code Pro\", monospace;\r\n font-weight: 400;\r\n }\r\n\r\n & .st6 {\r\n font-size: 33.1112px;\r\n }\r\n\r\n & .st7 {\r\n opacity: 0.6;\r\n fill: $white;\r\n }\r\n\r\n & .st8 {\r\n font-size: 24px;\r\n }\r\n\r\n & .st9 {\r\n font-size: 36.5498px;\r\n }\r\n\r\n & .st10 {\r\n font-family: \"Source Code Pro\", monospace;\r\n font-weight: 300;\r\n }\r\n\r\n & .st11 {\r\n font-size: 16.1716px;\r\n }\r\n\r\n & .st12 {\r\n fill: #4c4c4c;\r\n }\r\n}\r\n\r\n/* BACK OF CARD */\r\n#cardback {\r\n & .st0 {\r\n fill: none;\r\n stroke: #0f0f0f;\r\n stroke-miterlimit: 10;\r\n }\r\n\r\n & .st2 {\r\n fill: #111111;\r\n }\r\n\r\n & .st3 {\r\n fill: #f2f2f2;\r\n }\r\n\r\n & .st4 {\r\n fill: #d8d2db;\r\n }\r\n\r\n & .st5 {\r\n fill: #c4c4c4;\r\n }\r\n\r\n & .st6 {\r\n font-family: \"Source Code Pro\", monospace;\r\n font-weight: 400;\r\n }\r\n\r\n & .st7 {\r\n font-size: 27px;\r\n }\r\n\r\n & .st8 {\r\n opacity: 0.6;\r\n }\r\n\r\n & .st9 {\r\n fill: $white;\r\n }\r\n\r\n & .st10 {\r\n font-size: 24px;\r\n }\r\n\r\n & .st11 {\r\n fill: #eaeaea;\r\n }\r\n\r\n & .st12 {\r\n font-family: \"Rock Salt\", cursive;\r\n }\r\n\r\n & .st13 {\r\n font-size: 37.769px;\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./CreditCard.vue?vue&type=template&id=2450aac0&scoped=true\"\nimport script from \"./CreditCard.vue?vue&type=script&lang=js\"\nexport * from \"./CreditCard.vue?vue&type=script&lang=js\"\n\nimport \"./CreditCard.vue?vue&type=style&index=0&id=2450aac0&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2450aac0\"]])\n\nexport default __exports__","import { render } from \"./Payment.vue?vue&type=template&id=7aa9a9e3&scoped=true\"\nimport script from \"./Payment.vue?vue&type=script&lang=js\"\nexport * from \"./Payment.vue?vue&type=script&lang=js\"\n\nimport \"./Payment.vue?vue&type=style&index=0&id=7aa9a9e3&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7aa9a9e3\"]])\n\nexport default __exports__","<template>\r\n <div class=\"payment-summary-container\">\r\n <div class=\"breakdown-container\">\r\n <div class=\"grid-row breakdown-container__title\">\r\n Payment Summary\r\n </div>\r\n <div class=\"grid-row\">\r\n <step-nav :active=\"2\" />\r\n </div>\r\n <div class=\"grid-row breakdown-container__contract\">\r\n <contract-breakdown v-for=\"(contract) in contractsToPay\"\r\n :months-ahead=\"monthsAhead\"\r\n :contract=\"contract\"\r\n :key=\"contract.contractId\" />\r\n </div>\r\n </div>\r\n <div class=\"total-container\">\r\n <div class=\"total-container__months-selector\">\r\n <span class=\"total-container__prepay-label\">Prepay Rent Through: </span>\r\n <multi-select @input=\"onSelect\" :options=\"monthsSelectorData\" :disabled=\"disabled\" default=\"Prepay\" />\r\n </div>\r\n <div class=\"total-container__total\">\r\n <div class=\"total-container__label\">Total Balance Due:</div>\r\n <div class=\"total-container__value\">{{ formatCurrency(aggregateTotal) }}</div>\r\n </div>\r\n <div class=\"total-container__button\">\r\n <button id=\"submitBtn\" class=\"btn btn-primary\" @click=\"submitForm\">Continue to Payment</button>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { computed } from 'vue';\r\nimport { useStore } from 'vuex';\r\nimport { Months } from \"@/constants/Months\";\r\nimport { toCurrency, formatDateString } from \"@/global/Helpers\";\r\nimport { useNotificationStore } from '@dafcoe/vue-notification';\r\nimport { ErrorAlerts } from \"@/constants/ErrorAlerts\";\r\nimport StepNav from \"@/components/StepNav/StepNav\";\r\nimport ContractBreakdown from \"@/components/Breakdown/ContractBreakdown\";\r\nimport MultiSelect from \"@/components/Select/MultiSelect\";\r\n\r\nexport default {\r\n name: \"PaymentBreakdown\",\r\n setup() {\r\n const store = useStore();\r\n const { setNotification } = useNotificationStore();\r\n const contractsToPay = computed(() => store.getters['contracts/getContractsForPayment']);\r\n const monthsAhead = computed(() => store.getters['payment/getMonthsAhead']);\r\n const aggregateTotal = computed(() => store.getters['contracts/getTotalCost']);\r\n const prepayList = computed(() => store.getters['contracts/getLongestUnitPayListWithoutZeros']);\r\n const updateMonthsAhead = (monthsAhead) => store.dispatch('payment/updateMonthsAhead', monthsAhead);\r\n const updateMonthsAheadDisplay = (monthsAheadDisplay) => store.dispatch('payment/updateMonthsAheadDisplay', monthsAheadDisplay);\r\n const updatePayment = (payment) => store.dispatch('payment/updatePaymentInfo', payment);\r\n const updateTotal = (total) => store.dispatch('payment/updateTotal', total);\r\n\r\n return {\r\n setNotification,\r\n contractsToPay,\r\n monthsAhead,\r\n aggregateTotal,\r\n prepayList,\r\n updateMonthsAhead,\r\n updateMonthsAheadDisplay,\r\n updatePayment,\r\n updateTotal\r\n }\r\n },\r\n components: {\r\n StepNav,\r\n ContractBreakdown,\r\n MultiSelect\r\n },\r\n computed: {\r\n monthsSelectorData() {\r\n let months = [];\r\n\r\n for(let i = 0; i < this.prepayList.length; i++) {\r\n months.push(`${i} Month(s) (through ${formatDateString(this.prepayList[i].breakdownBalancePaidNextDueDate)})`);\r\n }\r\n return months;\r\n }\r\n },\r\n data() {\r\n return {\r\n months: Months\r\n }\r\n },\r\n methods: {\r\n formatCurrency(value) {\r\n return toCurrency(value);\r\n },\r\n submitForm(event) {\r\n event.preventDefault();\r\n this.contractsToPay.forEach(contract => {\r\n const contractTotal = contract.contractUnits.map(unit =>\r\n unit.unitPaymentBreakdowns[this.monthsAhead].breakdownBalance)\r\n .reduce((a, b) => a + b, 0);\r\n this.updatePayment({\r\n contractId: contract.contractId,\r\n customerId: contract.customerId,\r\n entityId: contract.entityId,\r\n contractUnitIds: contract.contractUnits.map(unit => unit.contractUnitId),\r\n paymentAmount: contractTotal,\r\n monthsIntoFuture: this.monthsAhead,\r\n onAutoPay: false,\r\n autopay: false\r\n });\r\n });\r\n this.updateTotal(this.aggregateTotal);\r\n if (this.aggregateTotal === 0) {\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: \"Please select options with a balance to pay in order to proceed.\"\r\n });\r\n } else {\r\n this.$router.push({ path: '/payment' });\r\n }\r\n },\r\n onSelect(data) {\r\n if(data !== 'Prepay') {\r\n this.updateMonthsAheadDisplay(data);\r\n this.updateMonthsAhead(parseInt(data.replace(/\\s.*$/, '')));\r\n } else {\r\n this.updateMonthsAheadDisplay('');\r\n this.updateMonthsAhead(0);\r\n }\r\n },\r\n disabled(option) {\r\n return this.prepayList[parseInt(option.replace(/\\s.*$/, ''))].balanceDue === 0;\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.breakdown-container {\r\n display: grid;\r\n grid-column-gap: 10px;\r\n grid-template-columns: 600px;\r\n grid-template-rows: 35px 70px auto;\r\n grid-template-areas: \"title\" \"stepNav\" \"breakdown\";\r\n padding: 36px 36px 10px 36px;\r\n justify-content: center;\r\n\r\n &__title {\r\n font-size: 26px;\r\n font-weight: 600;\r\n line-height: 30px;\r\n text-align: center;\r\n }\r\n}\r\n\r\n.grid-row {\r\n position: relative;\r\n}\r\n\r\n.grid-row:first-of-type {\r\n grid-area: title;\r\n}\r\n\r\n.grid-row:nth-of-type(2) {\r\n grid-area: stepNav;\r\n}\r\n\r\n.grid-row:nth-of-type(3) {\r\n grid-area: breakdown;\r\n}\r\n\r\n.total-container {\r\n display: grid;\r\n grid-column-gap: 10px;\r\n grid-template-columns: 600px;\r\n grid-template-rows: auto auto 70px;\r\n padding: 20px 36px 40px 36px;\r\n background-color: $lightest-grey;\r\n justify-content: center;\r\n\r\n &__prepay-label {\r\n font-size: 14px;\r\n line-height: 18px;\r\n margin-bottom: 10px;\r\n }\r\n\r\n &__total {\r\n display: flex;\r\n justify-content: space-between;\r\n margin: 20px 0;\r\n }\r\n\r\n &__label {\r\n font-size: 22px;\r\n font-weight: 600;\r\n line-height: 25px;\r\n }\r\n\r\n &__value {\r\n font-size: 22px;\r\n font-weight: bold;\r\n line-height: 25px;\r\n color: $primary-color;\r\n }\r\n\r\n &__button {\r\n position: relative;\r\n }\r\n}\r\n\r\n@media(max-width: $media-large) {\r\n .breakdown-container {\r\n grid-template-columns: 350px;\r\n }\r\n\r\n .total-container {\r\n grid-template-columns: 350px;\r\n }\r\n}\r\n</style>\r\n","export const Months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\r\n","<template>\r\n <div class=\"contract-breakdown-container\">\r\n <div class=\"contract-breakdown-container__title\">Contract Number: {{ formatContract }}</div>\r\n <unit-breakdown v-for=\"(unit) in contract.contractUnits\"\r\n :unit=\"unit\"\r\n :months-ahead=\"monthsAhead\"\r\n :key=\"unit.contractUnitId\" />\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport UnitBreakdown from \"@/components/Breakdown/UnitBreakdown\";\r\n\r\nexport default {\r\n name: \"ContractBreakdown\",\r\n props: {\r\n contract: Object,\r\n monthsAhead: Number\r\n },\r\n components: {\r\n UnitBreakdown\r\n },\r\n computed: {\r\n formatContract() {\r\n return `#${this.contract.entityId}-${this.contract.contractNumber}`\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.contract-breakdown-container {\r\n margin-bottom: 30px;\r\n\r\n &__title {\r\n text-align: center;\r\n color: $black;\r\n font-size: 16px;\r\n line-height: 18px;\r\n margin-bottom: 30px;\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"unit-breakdown-container\">\r\n <div class=\"unit-breakdown-container__title\">Unit {{unit.unitNumber}}</div>\r\n <div class=\"breakdown-box\">\r\n <div class=\"breakdown-box__row\">\r\n <div class=\"breakdown-box__label\">\r\n <span v-if=\"monthsAhead > 0\">Prepay {{monthsAhead}}</span>\r\n <span v-else>Current</span>\r\n Month(s) Rent:\r\n </div>\r\n <div class=\"breakdown-box__value\">{{ formatCurrency(paymentData.breakdownRent) }}</div>\r\n </div>\r\n <div class=\"breakdown-box__row\">\r\n <div class=\"breakdown-box__label\">Services:</div>\r\n <div class=\"breakdown-box__value\">{{ formatCurrency(paymentData.breakdownFees) }}</div>\r\n </div>\r\n <div class=\"breakdown-box__row\">\r\n <div class=\"breakdown-box__label\">Tax:</div>\r\n <div class=\"breakdown-box__value\">{{ formatCurrency(paymentData.breakdownTax) }}</div>\r\n </div>\r\n <div class=\"breakdown-box__row breakdown-box__row--bold\">\r\n <div class=\"breakdown-box__label\">Balance Due:</div>\r\n <div class=\"breakdown-box__value\">{{ formatCurrency(paymentData.breakdownBalance) }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport {toCurrency} from \"@/global/Helpers\";\r\nexport default {\r\n name: \"UnitBreakdown\",\r\n props: {\r\n unit: Object,\r\n monthsAhead: Number\r\n },\r\n computed: {\r\n paymentData() {\r\n return this.unit.unitPaymentBreakdowns[this.monthsAhead];\r\n }\r\n },\r\n methods: {\r\n formatCurrency(value) {\r\n return toCurrency(value);\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.unit-breakdown-container {\r\n &__title {\r\n text-align: center;\r\n color: $dark-grey;\r\n font-size: 18px;\r\n font-weight: bold;\r\n line-height: 22px;\r\n margin-top: 15px;\r\n }\r\n}\r\n\r\n.breakdown-box {\r\n background-color: $lightest-grey;\r\n padding: 8px 15px 13px 15px;\r\n &__row {\r\n display: flex;\r\n justify-content: space-between;\r\n margin-top: 10px;\r\n\r\n &--bold {\r\n font-weight: bold;\r\n line-height: 16px;\r\n }\r\n }\r\n\r\n &__row:first-of-type {\r\n margin-top: 0;\r\n }\r\n\r\n &__label,\r\n &__value {\r\n font-size: 14px;\r\n line-height: 18px;\r\n color: $black;\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./UnitBreakdown.vue?vue&type=template&id=317b2afc&scoped=true\"\nimport script from \"./UnitBreakdown.vue?vue&type=script&lang=js\"\nexport * from \"./UnitBreakdown.vue?vue&type=script&lang=js\"\n\nimport \"./UnitBreakdown.vue?vue&type=style&index=0&id=317b2afc&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-317b2afc\"]])\n\nexport default __exports__","import { render } from \"./ContractBreakdown.vue?vue&type=template&id=1ab2c5c3&scoped=true\"\nimport script from \"./ContractBreakdown.vue?vue&type=script&lang=js\"\nexport * from \"./ContractBreakdown.vue?vue&type=script&lang=js\"\n\nimport \"./ContractBreakdown.vue?vue&type=style&index=0&id=1ab2c5c3&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1ab2c5c3\"]])\n\nexport default __exports__","import { render } from \"./PaymentBreakdown.vue?vue&type=template&id=56562e24&scoped=true\"\nimport script from \"./PaymentBreakdown.vue?vue&type=script&lang=js\"\nexport * from \"./PaymentBreakdown.vue?vue&type=script&lang=js\"\n\nimport \"./PaymentBreakdown.vue?vue&type=style&index=0&id=56562e24&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-56562e24\"]])\n\nexport default __exports__","<template>\r\n <div class=\"receipt-container\">\r\n <div class=\"receipt-container__button-container\">\r\n <button class=\"btn btn-primary\" @click=\"print\">Print</button>\r\n </div>\r\n <div class=\"receipt-container__button-container\">\r\n <button class=\"btn btn-primary\" @click=\"startAgain\">New Payment</button>\r\n </div>\r\n <div id=\"receipts\">\r\n <div v-for=\"(receipt, i) in receipts\" :key=\"i\">\r\n <div v-html=\"receipt.receiptData.theReceipt\"></div>\r\n </div>\r\n </div>\r\n <div class=\"receipt-container__button-container\">\r\n <button class=\"btn btn-primary\" @click=\"close\">Finish</button>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { useStore } from 'vuex';\r\nimport { computed } from 'vue';\r\n\r\nexport default {\r\n name: \"Receipt\",\r\n setup() {\r\n const store = useStore();\r\n const locationId = computed(() => store.getters['location/getLocationId']);\r\n const receiptIds = computed(() => store.getters['payment/getReceiptIds']);\r\n const receipts = computed(() => store.getters['payment/getReceipts']);\r\n const resetAll = () => store.dispatch('clearAll');\r\n\r\n return {\r\n locationId,\r\n receiptIds,\r\n receipts,\r\n resetAll\r\n }\r\n },\r\n methods: {\r\n print() {\r\n this.$htmlToPaper('receipts');\r\n },\r\n startAgain() {\r\n const locationId = this.locationId;\r\n localStorage.clear();\r\n this.resetAll();\r\n this.$router.push({path: '/', query: { locationId }});\r\n },\r\n close() {\r\n const locationId = this.locationId;\r\n localStorage.clear();\r\n this.resetAll();\r\n if(window.opener === null) {\r\n this.$router.push({path: '/', query: { locationId }});\r\n } else {\r\n window.close();\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.receipt-container {\r\n display: grid;\r\n grid-column-gap: 15px;\r\n grid-row-gap: 10px;\r\n grid-template-columns: 300px 300px;\r\n grid-template-rows: 70px auto 70px;\r\n grid-template-areas: \"print anotherPayment\" \"receipts receipts\" \"finish finish\";\r\n justify-content: center;\r\n\r\n &__button-container {\r\n position: relative;\r\n }\r\n\r\n &__button-container:first-of-type {\r\n grid-area: print;\r\n }\r\n\r\n &__button-container:nth-of-type(2) {\r\n grid-area: anotherPayment;\r\n }\r\n\r\n &__button-container:nth-of-type(4) {\r\n grid-area: finish;\r\n }\r\n}\r\n\r\n#receipts {\r\n grid-area: receipts;\r\n}\r\n\r\n@media(max-width: $media-large) {\r\n .receipt-container {\r\n grid-template-columns: 175px 175px;\r\n\r\n &__button-container:nth-of-type(2) button.btn-primary {\r\n font-size: 21px;\r\n }\r\n }\r\n\r\n\r\n}\r\n</style>\r\n","import { render } from \"./Receipt.vue?vue&type=template&id=6c106e4e&scoped=true\"\nimport script from \"./Receipt.vue?vue&type=script&lang=js\"\nexport * from \"./Receipt.vue?vue&type=script&lang=js\"\n\nimport \"./Receipt.vue?vue&type=style&index=0&id=6c106e4e&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6c106e4e\"]])\n\nexport default __exports__","<template>\r\n<div class=\"thank-you-container\">\r\n <div class=\"thank-you-container__check\">\r\n <font-awesome-icon icon=\"check\" />\r\n </div>\r\n <div class=\"thank-you-container__label\">\r\n Thank You!\r\n </div>\r\n <div class=\"thank-you-container__payment-message\">\r\n Payment of\r\n <span class=\"thank-you-container__amount\">{{ formatCurrency(total) }}</span>\r\n has been made for your storage units\r\n </div>\r\n <div class=\"thank-you-container__receipt\">\r\n <div v-for=\"(receiptNumber, i) in receiptNumbers\" :key=\"i\">\r\n <span class=\"thank-you-container__receipt-label\">Receipt No. </span>\r\n <span class=\"thank-you-container__receipt-value\">{{ receiptNumber }}</span>\r\n </div>\r\n </div>\r\n <div class=\"thank-you-container__button\">\r\n <button id=\"submitBtn\" class=\"btn btn-primary\" @click=\"submitForm\">View Receipt</button>\r\n </div>\r\n <the-footer />\r\n</div>\r\n</template>\r\n\r\n<script>\r\nimport { useStore } from 'vuex';\r\nimport { computed } from 'vue';\r\nimport TheFooter from \"@/components/SingleTime/TheFooter\";\r\nimport { toCurrency } from \"@/global/Helpers\";\r\n\r\nexport default {\r\n name: \"Confirmation\",\r\n setup() {\r\n const store = useStore();\r\n const total = computed(() => store.getters['payment/getPaymentTotal']);\r\n const receiptIds = computed(() => store.getters['payment/getReceiptIds']);\r\n const receiptNumbers = computed(() => store.getters['payment/getReceiptNumbers']);\r\n const getReceipts = (receiptIds) => store.dispatch('payment/fetchReceipts', receiptIds);\r\n\r\n return {\r\n total,\r\n receiptIds,\r\n receiptNumbers,\r\n getReceipts\r\n }\r\n },\r\n async mounted() {\r\n await this.getReceipts(this.receiptIds)\r\n },\r\n components: {\r\n TheFooter\r\n },\r\n methods: {\r\n submitForm() {\r\n this.$router.push({ path: '/receipts' });\r\n },\r\n formatCurrency(value) {\r\n return toCurrency(value);\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.thank-you-container {\r\n display: grid;\r\n grid-column-gap: 15px;\r\n grid-row-gap: 30px;\r\n grid-template-columns: 600px;\r\n grid-template-rows: auto auto auto auto 70px auto;\r\n padding: 36px 36px 10px 36px;\r\n justify-content: center;\r\n\r\n &__check {\r\n text-align: center;\r\n }\r\n\r\n &__label {\r\n font-size: 26px;\r\n font-weight: 600;\r\n line-height: 30px;\r\n text-align: center;\r\n }\r\n\r\n &__payment-message {\r\n font-size: 18px;\r\n font-weight: bold;\r\n line-height: 22px;\r\n color: $dark-grey;\r\n text-align: center;\r\n }\r\n\r\n &__amount {\r\n color: $primary-color;\r\n }\r\n\r\n &__receipt {\r\n font-size: 16px;\r\n font-weight: 600;\r\n line-height: 20px;\r\n text-align: center;\r\n }\r\n &__button {\r\n position: relative;\r\n }\r\n}\r\n\r\n.fa-check {\r\n border-radius: 50%;\r\n background-color: $primary-color;\r\n color: $white;\r\n font-size: 54px;\r\n line-height: 22px;\r\n padding: 10px 10px;\r\n margin-top: 95px;\r\n}\r\n\r\n@media(max-width: $media-large) {\r\n .thank-you-container {\r\n grid-template-columns: 350px;\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./Confirmation.vue?vue&type=template&id=15d8100a&scoped=true\"\nimport script from \"./Confirmation.vue?vue&type=script&lang=js\"\nexport * from \"./Confirmation.vue?vue&type=script&lang=js\"\n\nimport \"./Confirmation.vue?vue&type=style&index=0&id=15d8100a&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-15d8100a\"]])\n\nexport default __exports__","<template>\r\n <div class=\"form-container\">\r\n <div class=\"form-container__field-container form-container__header\">\r\n Login\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <div v-if=\"this.lockout > 0\" class=\"form-container__lockout\">\r\n You have been locked out. Time Remaining:\r\n <v-idle :duration=\"this.lockout\" :events=\"[]\" :eventTickRate=\"1\" @idle=\"handleIdle\" @remind=\"handleLockout\" />\r\n </div>\r\n <label for=\"username\">Email Address or Phone Number</label>\r\n <input id=\"username\" v-model=\"form.username\" />\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"password\">Password</label>\r\n <input id=\"password\" type=\"password\" v-model=\"form.password\" />\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <router-link class=\"form-container__forgot-password\" to=\"/reset\">Forgot Password?</router-link>\r\n <div class=\"form-container__remember\">\r\n <checkbox :checked=\"checked\" @check-clicked=\"rememberCheck\" />\r\n <div class=\"form-container__remember-me\">Remember Me</div>\r\n </div>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <button id=\"submitBtn\" class=\"btn-primary\" @click=\"submitForm\">\r\n <font-awesome-icon v-if=\"loading\" icon=\"spinner\" class=\"fa-spin\" />\r\n <span v-if=\"!loading\">Login</span>\r\n </button>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <span class=\"form-container__or\">or</span>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <router-link class=\"form-container__create-account\" to=\"/register\"><button class=\"btn-secondary\">Create Account</button></router-link>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <router-link class=\"form-container__guest\" :to=\"{ path: '/', query: { guest: true, locationId } }\">Continue as Guest</router-link>\r\n </div>\r\n <the-footer class=\"form-container__field-container\"/>\r\n </div>\r\n</template>\r\n<script>\r\nimport Checkbox from \"@/components/Select/UnitSelect/Checkbox\";\r\nimport RouterLink from 'vue-router';\r\nimport TheFooter from \"@/components/SingleTime/TheFooter\";\r\nimport { useStore } from 'vuex';\r\nimport { computed } from 'vue';\r\nimport { useNotificationStore } from '@dafcoe/vue-notification';\r\nimport { isEmail } from '@/global/Helpers';\r\nimport { ErrorAlerts } from '@/constants/ErrorAlerts';\r\n\r\nexport default {\r\n name: \"Login\",\r\n components: {\r\n Checkbox,\r\n RouterLink,\r\n TheFooter\r\n },\r\n setup() {\r\n const store = useStore();\r\n const { setNotification } = useNotificationStore();\r\n const location = computed(() => store.getters['location/getLocationId']);\r\n const entity = computed(() => store.getters['location/getEntity']);\r\n const username = computed(() => store.getters['user/getUsername']);\r\n const lockout = computed(() => store.getters['user/getLockout']);\r\n const allowAutopay = computed(() => store.getters['location/getLocationAutopayRule']);\r\n const customer = computed(() => store.getters['user/currentCustomer']);\r\n const hasAutoPayUnits = computed(() => store.getters['payment/hasAutoPayUnits']);\r\n const setUsername = (username) => store.dispatch('user/setUsername', username);\r\n const authenticateCustomer = (loginDto) => store.dispatch('user/authenticateCustomer', loginDto);\r\n const clearAll = () => store.dispatch('clearAll');\r\n const fetchLocation = (locationId) => store.dispatch('location/fetchLocation', locationId);\r\n const updateLocationId = (locationId) => store.dispatch('location/updateLocationId', locationId);\r\n const fetchLockout = (lockoutDto) => store.dispatch('user/fetchCustomerLockout', lockoutDto);\r\n const updateLockout = (time) => store.dispatch('user/updateLockout', time);\r\n const getSavedPaymentMethods = (getPaymentMethodsDto) => store.dispatch('payment/getPaymentMethods', getPaymentMethodsDto);\r\n\r\n return {\r\n location,\r\n entity,\r\n username,\r\n lockout,\r\n allowAutopay,\r\n customer,\r\n hasAutoPayUnits,\r\n clearAll,\r\n setUsername,\r\n setNotification,\r\n authenticateCustomer,\r\n fetchLocation,\r\n updateLocationId,\r\n fetchLockout,\r\n updateLockout,\r\n getSavedPaymentMethods\r\n }\r\n },\r\n created() {\r\n window.addEventListener('beforeunload', this.handleUnload);\r\n },\r\n computed: {\r\n lockoutTimer() {\r\n return this.lockoutCounter;\r\n }\r\n },\r\n data() {\r\n return {\r\n locationId: this.location,\r\n form: {\r\n username: this.username,\r\n password: ''\r\n },\r\n checked: this.username !== '',\r\n loading: false,\r\n lockoutCounter: this.lockout\r\n }\r\n },\r\n methods: {\r\n rememberCheck(data) {\r\n this.checked = data;\r\n },\r\n handleLockout(time) {\r\n this.lockoutCounter = time;\r\n },\r\n handleIdle() {\r\n this.updateLockout(0);\r\n },\r\n async submitForm() {\r\n try {\r\n this.loading = true;\r\n const username = this.checked ? this.form.username : '';\r\n await this.setUsername(username);\r\n await this.authenticateCustomer(this.form);\r\n\r\n if (this.allowAutopay) {\r\n await this.getSavedPaymentMethods({\"centralCustomerId\": this.customer.centralCustomerId, \"entity\": this.entity});\r\n\r\n if (this.hasAutoPayUnits) {\r\n await this.$router.push(\"/dashboard\");\r\n }else{\r\n await this.$router.push(\"/contract\");\r\n }\r\n\r\n } else{\r\n await this.$router.push(\"/contract\");\r\n }\r\n } catch (error) {\r\n this.loading = false;\r\n let message = error.response.data.errorMessage.includes('PasswordNotSet') ? 'Email or phone number not registered'\r\n : error.response.data.errorMessage.includes('InvalidEmail') ? 'Invalid email address or phone number.'\r\n : error.response.data.errorMessage.includes('InvalidPassword') ? 'Invalid password.'\r\n : error.response.data.errorMessage.includes('AccountLocked') ? 'Account locked. Please try again later.'\r\n : error.response.data.errorMessage;\r\n\r\n\r\n console.log(error.response.data.errorMessage);\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: message\r\n });\r\n if (error.response.data.errorMessage.includes('InvalidPassword') || error.response.data.errorMessage.includes('AccountLocked')) {\r\n const lockoutDto = isEmail(this.form.username) ? { email: this.form.username } : { phoneNumber: this.form.username };\r\n await this.fetchLockout(lockoutDto);\r\n }\r\n this.$log.error(error);\r\n }\r\n },\r\n handleUnload() {\r\n this.updateLockout(this.lockoutTimer);\r\n }\r\n },\r\n mounted() {\r\n this.clearAll();\r\n this.fetchLocation(this.location);\r\n this.updateLocationId(this.location);\r\n },\r\n beforeUnmount() {\r\n window.removeEventListener('beforeunload', this.handleUnload);\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.form-container {\r\n display: grid;\r\n grid-column-gap: 10px;\r\n grid-template-columns: auto;\r\n grid-template-rows: 45px 90px 90px 35px 90px min-content 90px 25px 100px;\r\n grid-template-areas: \"header\" \"username\" \"password\" \"rememberMe\" \"loginButton\" \"or\" \"createAccount\" \"guest\" \"footer\";\r\n justify-content: center;\r\n padding: 36px 36px 10px 36px;\r\n color: $black;\r\n\r\n &__header {\r\n text-align: center;\r\n letter-spacing: 0;\r\n line-height: 30px;\r\n font-weight: 600;\r\n font-size: 26px;\r\n }\r\n\r\n &__message {\r\n text-align: center;\r\n line-height: 20px;\r\n font-size: 16px;\r\n letter-spacing: 0;\r\n }\r\n\r\n &__remember {\r\n display: flex;\r\n justify-content: end;\r\n align-items: center;\r\n }\r\n\r\n &__or {\r\n &::before,\r\n &::after {\r\n display: inline-block;\r\n content: \"\";\r\n border-top: 1px solid $light-grey;\r\n width: 35%;\r\n margin: 0 1rem;\r\n transform: translateY(-.4rem);\r\n }\r\n }\r\n\r\n &__field-container:first-of-type {\r\n grid-area: header;\r\n }\r\n\r\n &__field-container:nth-of-type(2) {\r\n grid-area: username;\r\n }\r\n\r\n &__field-container:nth-of-type(3) {\r\n grid-area: password;\r\n }\r\n\r\n &__field-container:nth-of-type(4) {\r\n grid-area: rememberMe;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n }\r\n\r\n &__field-container:nth-of-type(5) {\r\n position: relative;\r\n grid-area: loginButton;\r\n }\r\n\r\n &__field-container:nth-of-type(6) {\r\n grid-area: or;\r\n text-align: center;\r\n }\r\n\r\n &__field-container:nth-of-type(7) {\r\n position: relative;\r\n grid-area: createAccount;\r\n }\r\n\r\n &__field-container:nth-of-type(8) {\r\n grid-area: guest;\r\n text-align: center;\r\n }\r\n\r\n &__field-container:nth-of-type(9) {\r\n grid-area: footer;\r\n }\r\n\r\n &__lockout {\r\n color: $error;\r\n }\r\n}\r\n\r\n@media(max-width: $media-large) {\r\n .form-container {\r\n max-width: 350px;\r\n }\r\n}\r\n\r\n.v-idle {\r\n display: inline-block;\r\n}\r\n</style>\r\n","import { render } from \"./Login.vue?vue&type=template&id=b7028ed4&scoped=true\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\n\nimport \"./Login.vue?vue&type=style&index=0&id=b7028ed4&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b7028ed4\"]])\n\nexport default __exports__","<template>\r\n <div>\r\n <div class=\"form-container\" v-show=\"!verification\">\r\n <div class=\"form-container__field-container form-container__header\">\r\n Create Account\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"phoneNumber\">Phone Number</label>\r\n <input\r\n id=\"phoneNumber\"\r\n maxlength=\"15\"\r\n type=\"text\"\r\n :value=\"form.phoneNumber\"\r\n @accept=\"event => form.phoneNumber = event.detail.value\"\r\n v-imask=\"phoneNumberMask\"\r\n />\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"email\">Email Address</label>\r\n <div v-for=\"(error, index) of validator.form.email.$errors\" :key=\"index\">\r\n <strong>{{ error.$message }}</strong>\r\n </div>\r\n <input id=\"email\" v-model=\"validator.form.email.$model\" />\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"password\">Password</label>\r\n <div v-for=\"(error, index) of validator.form.password.$errors\" :key=\"index\">\r\n <strong>{{ error.$message }}</strong>\r\n </div>\r\n <input id=\"password\" type=\"password\" v-model=\"validator.form.password.$model\"/>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"confirmPassword\">Confirm Password</label>\r\n <div v-for=\"(error, index) of validator.confirmPassword.$errors\" :key=\"index\">\r\n <strong>{{ error.$message }}</strong>\r\n </div>\r\n <input id=\"confirmPassword\" type=\"password\" v-model=\"confirmPassword\" />\r\n <i class=\"fa fa-info-circle\"></i>\r\n <div>\r\n <font-awesome-icon icon=\"info-circle\"/>\r\n Password must be at least 8 characters, contain a number, a lowercase, and an uppercase character.\r\n </div>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <button id=\"validationBtn\" class=\"btn-primary\" @click=\"checkValidation\" :disabled=\"loading\">\r\n <font-awesome-icon v-if=\"loading\" icon=\"spinner\" class=\"fa-spin\" />\r\n <span v-if=\"!loading\">Continue</span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"verification-container\" v-show=\"verification\">\r\n <div class=\"verification__field-container verification-container__header\">\r\n Create Account\r\n </div>\r\n <div class=\"verification__field-container\">\r\n We will send a verification code to the option you select:\r\n </div>\r\n <div class=\"verification-container__field-container\">\r\n <input id=\"phoneNumberRadio\" type=\"radio\" value=\"phone\" v-model=\"form.verificationType\" />\r\n <label for=\"phoneNumberRadio\"><b>Phone Number</b>: {{form.phoneNumber}}</label>\r\n </div>\r\n <div class=\"verification-container__field-container\">\r\n <input id=\"emailRadio\" type=\"radio\" value=\"email\" v-model=\"form.verificationType\" />\r\n <label for=\"emailRadio\"><b>Email Address</b>: {{form.email}}</label>\r\n </div>\r\n <div class=\"verification-container__field-container\">\r\n <button id=\"verificationBtn\" class=\"btn-primary\" @click=\"submitForm\" :disabled=\"loading\">\r\n <font-awesome-icon v-if=\"loading\" icon=\"spinner\" class=\"fa-spin\" />\r\n <span v-if=\"!loading\">Verify Account</span>\r\n </button>\r\n </div>\r\n </div>\r\n <the-footer class=\"form-container__field-container\"/>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport useVuelidate from '@vuelidate/core'\r\nimport IMaskDirective from '@/directives/IMaskDirective';\r\nimport TheFooter from \"@/components/SingleTime/TheFooter\";\r\nimport { required, minLength, helpers, email, sameAs } from '@vuelidate/validators'\r\nimport { useStore } from \"vuex\";\r\nimport { computed } from \"vue\";\r\nimport { useNotificationStore } from '@dafcoe/vue-notification';\r\nimport { ErrorAlerts } from '@/global/Helpers';\r\n\r\nconst hasLowerCase = helpers.regex(/[a-z]/);\r\nconst hasUpperCase = helpers.regex(/[A-Z]/);\r\nconst hasNumber = helpers.regex(/\\d/);\r\n\r\nexport default {\r\n name: \"CreateAccount\",\r\n components: {\r\n TheFooter\r\n },\r\n directives: {\r\n imask: IMaskDirective,\r\n },\r\n setup () {\r\n const store = useStore();\r\n const { setNotification } = useNotificationStore();\r\n const currentLogin = computed(() => store.getters['user/currentLogin']);\r\n const setLogin = (loginDto) => store.dispatch('user/setLoginInfo', loginDto);\r\n const createCustomerAccount = (loginDto) => store.dispatch('user/createCustomerAccount', loginDto);\r\n return {\r\n currentLogin,\r\n setNotification,\r\n setLogin,\r\n createCustomerAccount,\r\n validator: useVuelidate({ $lazy: true })\r\n }\r\n },\r\n data() {\r\n return {\r\n form: { ...this.currentLogin },\r\n confirmPassword: '',\r\n phoneNumberMask: {\r\n mask: \"(000) 000-0000\"\r\n },\r\n verification: false,\r\n loading: false\r\n }\r\n },\r\n validations() {\r\n return {\r\n form: {\r\n email: {\r\n required: helpers.withMessage(\"Email is required\", required),\r\n email: helpers.withMessage(\"Not a Valid Email Address\", email)\r\n },\r\n password: {\r\n required: helpers.withMessage(\"Password is required\", required),\r\n minLength: helpers.withMessage(\"Password must have more than 8 characters\", minLength(8)),\r\n hasLowerCase: helpers.withMessage(\"Password must have a lowercase letter\", hasLowerCase),\r\n hasUpperCase: helpers.withMessage(\"Password must have an uppercase letter\", hasUpperCase),\r\n hasNumber: helpers.withMessage(\"Password must have a number\", hasNumber)\r\n },\r\n },\r\n confirmPassword: {\r\n required: helpers.withMessage(\"Password Confirmation is required\", required),\r\n sameAs: helpers.withMessage(\"Passwords must match\", sameAs(this.form.password))\r\n }\r\n }\r\n },\r\n methods: {\r\n async submitForm() {\r\n try {\r\n this.loading = true;\r\n this.setLogin(this.form);\r\n await this.createCustomerAccount(this.form);\r\n await this.$router.push({ path: '/verification' });\r\n } catch (error) {\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: error.response.data.errorMessage\r\n });\r\n this.$log.error(error)\r\n this.loading = false;\r\n }\r\n },\r\n async checkValidation() {\r\n this.loading = true;\r\n await this.validator.$validate();\r\n if(this.validator.$errors.length === 0){\r\n this.verification = true;\r\n }\r\n this.loading = false;\r\n },\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.form-container {\r\n display: grid;\r\n grid-column-gap: 10px;\r\n grid-template-columns: auto;\r\n grid-template-rows: 45px min-content min-content min-content 145px 60px 100px;\r\n grid-template-areas:\r\n \"header\"\r\n \"phoneNumber\"\r\n \"email\"\r\n \"password\"\r\n \"confirmPassword\"\r\n \"registerButton\"\r\n \"footer\";\r\n justify-content: center;\r\n padding: 36px 36px 10px 36px;\r\n color: $black;\r\n\r\n &__header {\r\n text-align: center;\r\n letter-spacing: 0;\r\n line-height: 30px;\r\n font-weight: 600;\r\n font-size: 26px;\r\n }\r\n\r\n &__field-container:first-of-type {\r\n grid-area: header;\r\n }\r\n\r\n &__field-container:nth-of-type(2) {\r\n grid-area: phoneNumber;\r\n }\r\n\r\n &__field-container:nth-of-type(3) {\r\n grid-area: email;\r\n }\r\n\r\n &__field-container:nth-of-type(4) {\r\n grid-area: password;\r\n }\r\n\r\n &__field-container:nth-of-type(5) {\r\n grid-area: confirmPassword;\r\n }\r\n\r\n &__field-container:nth-of-type(6) {\r\n grid-area: registerButton;\r\n }\r\n\r\n &__field-container:nth-of-type(7) {\r\n grid-area: footer;\r\n }\r\n}\r\n\r\n.verification-container {\r\n display: grid;\r\n grid-column-gap: 10px;\r\n grid-template-columns: auto;\r\n grid-template-rows: 45px 45px 30px 30px 90px;\r\n grid-template-areas: \"header\" \"optionMessage\" \"phoneNumber\" \"email\" \"verificationButton\";\r\n justify-content: center;\r\n padding: 36px 36px 10px 36px;\r\n color: $black;\r\n\r\n &__header {\r\n text-align: center;\r\n letter-spacing: 0;\r\n line-height: 30px;\r\n font-weight: 600;\r\n font-size: 26px;\r\n }\r\n\r\n &__field-container:first-of-type {\r\n grid-area: header;\r\n }\r\n\r\n &__field-container:first-of-type(2) {\r\n grid-area: optionMessage;\r\n }\r\n\r\n &__field-container:nth-of-type(3) {\r\n grid-area: phoneNumber;\r\n }\r\n\r\n &__field-container:nth-of-type(4) {\r\n grid-area: email;\r\n }\r\n\r\n &__field-container:nth-of-type(5) {\r\n position: relative;\r\n grid-area: verificationButton;\r\n }\r\n\r\n input {\r\n width: auto;\r\n }\r\n}\r\n\r\n@media(max-width: $media-large) {\r\n .form-container {\r\n max-width: 350px;\r\n }\r\n .verification-container{\r\n max-width: 350px;\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./CreateAccount.vue?vue&type=template&id=26c83da4&scoped=true\"\nimport script from \"./CreateAccount.vue?vue&type=script&lang=js\"\nexport * from \"./CreateAccount.vue?vue&type=script&lang=js\"\n\nimport \"./CreateAccount.vue?vue&type=style&index=0&id=26c83da4&scoped=true&lang=scss\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-26c83da4\"]])\n\nexport default __exports__","<template>\r\n <div class=\"form-container\">\r\n <div class=\"form-container__field-container form-container__header\">\r\n Create Account\r\n </div>\r\n <div class=\"form-container__field-container form-container__sub-header\">\r\n Verify Security Code\r\n </div>\r\n <div class=\"form-container__field-container form-container__verify-text\" v-if=\"currentLogin.verificationType === 'phone'\">\r\n Enter the verification code that we sent to {{currentLogin.phoneNumber}}. If you did not receive the text message, please resend the code.\r\n </div>\r\n <div class=\"form-container__field-container form-container__verify-email\" v-else>\r\n Enter the verification code that we sent to {{currentLogin.email}}. If you did not receive the email, please check your spam folder or resend the code.\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"verify\">Verification Code</label>\r\n <input id=\"verify\" v-model=\"form.verificationCode\" />\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <button id=\"submitBtn\" class=\"btn-primary\" @click=\"submitForm\" :disabled=\"loading\">\r\n <font-awesome-icon v-if=\"loading\" icon=\"spinner\" class=\"fa-spin\" />\r\n <span v-if=\"!loading\">Verify Code</span>\r\n </button>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <a class=\"form-container__forgot-password\" href=\"#\" @click=\"resendCode\">Resend Code</a>\r\n </div>\r\n <the-footer class=\"form-container__field-container\"/>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { useStore } from 'vuex';\r\nimport { computed } from 'vue';\r\nimport Login from \"@/api/Login\";\r\nimport TheFooter from \"@/components/SingleTime/TheFooter\";\r\nimport { useNotificationStore } from '@dafcoe/vue-notification';\r\nimport { ErrorAlerts } from '@/global/Helpers';\r\n\r\nexport default {\r\n name: \"VerifyAccount\",\r\n components: {\r\n TheFooter\r\n },\r\n setup() {\r\n const store = useStore();\r\n const { setNotification } = useNotificationStore();\r\n const currentLogin = computed(() => store.getters['user/currentLogin']);\r\n\r\n return {\r\n setNotification,\r\n currentLogin\r\n }\r\n },\r\n data() {\r\n return {\r\n form: {\r\n verificationCode: ''\r\n },\r\n username: this.currentLogin.verificationType === 'phone' ?\r\n this.currentLogin.phoneNumber : this.currentLogin.email,\r\n loading: false\r\n }\r\n },\r\n methods: {\r\n resendCode() {\r\n this.$router.push({path: '/register'});\r\n },\r\n async submitForm() {\r\n try {\r\n this.loading = true;\r\n await Login.verifyCustomerAccount({ username: this.username, pin: this.form.verificationCode });\r\n await this.$router.push({path: '/login'});\r\n } catch (error) {\r\n this.loading = false;\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: error.response.data.errorMessage\r\n });\r\n this.$log.error(error);\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.form-container {\r\n display: grid;\r\n grid-column-gap: 10px;\r\n grid-template-columns: auto;\r\n grid-template-rows: 45px 35px 45px min-content 90px 45px 100px;\r\n grid-template-areas:\r\n \"header\"\r\n \"subHeader\"\r\n \"emailOrPhoneMessage\"\r\n \"verificationCode\"\r\n \"verifyButton\"\r\n \"resendLink\"\r\n \"footer\";\r\n justify-content: center;\r\n padding: 36px 36px 10px 36px;\r\n color: $black;\r\n\r\n &__header {\r\n text-align: center;\r\n letter-spacing: 0;\r\n line-height: 30px;\r\n font-weight: 600;\r\n font-size: 26px;\r\n }\r\n\r\n &__sub-header {\r\n text-align: center;\r\n line-height: 27px;\r\n font-weight: 500;\r\n font-size: 21px;\r\n }\r\n\r\n &__field-container:first-of-type {\r\n grid-area: header;\r\n }\r\n\r\n &__field-container:nth-of-type(2) {\r\n grid-area: subHeader;\r\n }\r\n\r\n &__field-container:nth-of-type(3) {\r\n grid-area: emailOrPhoneMessage;\r\n }\r\n\r\n &__field-container:nth-of-type(4) {\r\n grid-area: verificationCode;\r\n }\r\n\r\n &__field-container:nth-of-type(5) {\r\n grid-area: verifyButton;\r\n }\r\n\r\n &__field-container:nth-of-type(6) {\r\n grid-area: resendLink;\r\n }\r\n\r\n &__field-container:nth-of-type(7) {\r\n grid-area: footer;\r\n }\r\n}\r\n</style>\r\n","export const API_ROOT = '/api/v1';\r\n","import Axios from \"axios\";\r\nimport {API_ROOT} from \"@/constants/ApiRoot\";\r\n\r\nconst LOGIN_ENDPOINT = `${API_ROOT}/login`;\r\n\r\n// we only need the timeout here since the ccp services suck\r\nAxios.defaults.timeout = 1000 * 60 * 5;\r\n\r\nexport default {\r\n async loginCustomer(loginDto) {\r\n return await Axios.post(`${LOGIN_ENDPOINT}`, loginDto);\r\n },\r\n async logoutCustomer(username) {\r\n return await Axios.post(`${LOGIN_ENDPOINT}/${username}`);\r\n },\r\n\r\n async createCustomerAccount(loginDto) {\r\n return await Axios.post(`${LOGIN_ENDPOINT}/register`, loginDto);\r\n },\r\n async verifyCustomerAccount(verificationDto) {\r\n return await Axios.post(`${LOGIN_ENDPOINT}/verify`, verificationDto);\r\n },\r\n\r\n async sendCustomerPasswordReset(username) {\r\n return await Axios.post(`${LOGIN_ENDPOINT}/${username}/reset`);\r\n },\r\n async resetCustomerPassword(passwordResetDto) {\r\n return await Axios.post(`${LOGIN_ENDPOINT}/reset`, passwordResetDto);\r\n },\r\n}\r\n","import { render } from \"./VerifyAccount.vue?vue&type=template&id=090d0fa8&scoped=true\"\nimport script from \"./VerifyAccount.vue?vue&type=script&lang=js\"\nexport * from \"./VerifyAccount.vue?vue&type=script&lang=js\"\n\nimport \"./VerifyAccount.vue?vue&type=style&index=0&id=090d0fa8&scoped=true&lang=scss\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-090d0fa8\"]])\n\nexport default __exports__","<template>\r\n <div class=\"form-container\">\r\n <div class=\"form-container__field-container form-container__header\">\r\n Password Reset\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <span>A verification pin will be sent to your Email or Phone Number</span>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"username\">Email or Phone Number</label>\r\n <input id=\"username\" maxlength=\"100\" type=\"text\" v-model=\"form.username\"/>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <button id=\"submitBtn\" class=\"btn-primary\" @click=\"submitForm\" :disabled=\"loading\">\r\n <font-awesome-icon v-if=\"loading\" icon=\"spinner\" class=\"fa-spin\" />\r\n <span v-if=\"!loading\">Send Pin</span>\r\n </button>\r\n </div>\r\n <the-footer class=\"form-container__field-container\"/>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport Login from '@/api/Login';\r\nimport TheFooter from \"@/components/SingleTime/TheFooter\";\r\nimport { useStore } from 'vuex';\r\nimport { useNotificationStore } from '@dafcoe/vue-notification';\r\nimport { ErrorAlerts } from \"@/constants/ErrorAlerts\";\r\n\r\nexport default {\r\n name: \"ResetUsername\",\r\n components: {\r\n TheFooter\r\n },\r\n setup() {\r\n const store = useStore();\r\n const setUsername = (username) => store.dispatch('user/setUsername', username);\r\n const {setNotification} = useNotificationStore();\r\n\r\n return {\r\n setUsername,\r\n setNotification\r\n }\r\n },\r\n data() {\r\n return {\r\n form: {\r\n username: ''\r\n },\r\n loading: false\r\n }\r\n },\r\n methods: {\r\n async submitForm() {\r\n try {\r\n this.loading = true;\r\n await this.setUsername(this.form.username);\r\n await Login.sendCustomerPasswordReset(this.form.username);\r\n await this.$router.push({path: '/reset/verify'});\r\n } catch(error) {\r\n this.loading = false;\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: error.response.data.errorMessage\r\n });\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.form-container {\r\n display: grid;\r\n grid-column-gap: 10px;\r\n grid-template-columns: auto;\r\n grid-template-rows: 45px 45px 90px 90px 100px;\r\n grid-template-areas:\r\n \"header\"\r\n \"subHeader\"\r\n \"username\"\r\n \"submitBtn\"\r\n \"footer\";\r\n justify-content: center;\r\n padding: 36px 36px 10px 36px;\r\n color: $black;\r\n\r\n &__header {\r\n text-align: center;\r\n letter-spacing: 0;\r\n line-height: 30px;\r\n font-weight: 600;\r\n font-size: 26px;\r\n }\r\n\r\n &__field-container:first-of-type {\r\n grid-area: header;\r\n }\r\n\r\n &__field-container:nth-of-type(2) {\r\n grid-area: subHeader;\r\n }\r\n\r\n &__field-container:nth-of-type(3) {\r\n grid-area: username;\r\n }\r\n\r\n &__field-container:nth-of-type(4) {\r\n grid-area: submitBtn;\r\n }\r\n\r\n &__field-container:nth-of-type(5) {\r\n grid-area: footer;\r\n }\r\n}\r\n\r\n@media(max-width: $media-large) {\r\n .form-container {\r\n max-width: 350px;\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./ResetUsername.vue?vue&type=template&id=c1e64f4e&scoped=true\"\nimport script from \"./ResetUsername.vue?vue&type=script&lang=js\"\nexport * from \"./ResetUsername.vue?vue&type=script&lang=js\"\n\nimport \"./ResetUsername.vue?vue&type=style&index=0&id=c1e64f4e&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c1e64f4e\"]])\n\nexport default __exports__","<template>\r\n <div class=\"form-container\">\r\n <div class=\"form-container__field-container form-container__header\">\r\n Password Reset\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <div v-for=\"(error, index) of validator.form.username.$errors\" :key=\"index\">\r\n <strong>{{ error.$message }}</strong>\r\n </div>\r\n <label for=\"username\">Email or Phone Number</label>\r\n <input id=\"username\" maxlength=\"100\" type=\"text\" v-model=\"validator.form.username.$model\"/>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <div v-for=\"(error, index) of validator.form.pin.$errors\" :key=\"index\">\r\n <strong>{{ error.$message }}</strong>\r\n </div>\r\n <label for=\"pin\">Verification Code</label>\r\n <input id=\"pin\" maxlength=\"100\" type=\"text\" v-model=\"validator.form.pin.$model\"/>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <div v-for=\"(error, index) of validator.form.password.$errors\" :key=\"index\">\r\n <strong>{{ error.$message }}</strong>\r\n </div>\r\n <label for=\"password\">Password</label>\r\n <input id=\"password\" maxlength=\"100\" type=\"password\" v-model=\"validator.form.password.$model\"/>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <div v-for=\"(error, index) of validator.passwordConfirm.$errors\" :key=\"index\">\r\n <strong>{{ error.$message }}</strong>\r\n </div>\r\n <label for=\"passwordConfirm\">Password Confirm</label>\r\n <input id=\"passwordConfirm\" maxlength=\"100\" type=\"password\" v-model=\"validator.passwordConfirm.$model\"/>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <button id=\"submitBtn\" class=\"btn-primary\" @click=\"submitForm\" :disabled=\"loading\">\r\n <font-awesome-icon v-if=\"loading\" icon=\"spinner\" class=\"fa-spin\" />\r\n <span v-if=\"!loading\">Reset</span>\r\n </button>\r\n </div>\r\n <the-footer class=\"form-container__field-container\"/>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport useVuelidate from '@vuelidate/core';\r\nimport Login from '@/api/Login';\r\nimport TheFooter from \"@/components/SingleTime/TheFooter\";\r\nimport { useStore } from 'vuex';\r\nimport { computed } from 'vue';\r\nimport { useNotificationStore } from '@dafcoe/vue-notification';\r\nimport { ErrorAlerts } from '@/constants/ErrorAlerts';\r\nimport { required, minLength, helpers, sameAs } from '@vuelidate/validators';\r\n\r\nconst hasLowerCase = helpers.regex(/[a-z]/);\r\nconst hasUpperCase = helpers.regex(/[A-Z]/);\r\nconst hasNumber = helpers.regex(/\\d/);\r\n\r\nexport default {\r\n name: \"ResetVerify\",\r\n components: {\r\n TheFooter\r\n },\r\n setup() {\r\n const store = useStore();\r\n const { setNotification } = useNotificationStore();\r\n const username = computed(() => store.getters['user/getUsername']);\r\n\r\n return {\r\n username,\r\n setNotification,\r\n validator: useVuelidate({ $lazy: true })\r\n }\r\n\r\n },\r\n data() {\r\n return {\r\n form: {\r\n username: this.username,\r\n pin: '',\r\n password: ''\r\n },\r\n passwordConfirm: '',\r\n loading: false,\r\n }\r\n },\r\n methods: {\r\n async submitForm() {\r\n try {\r\n this.loading = true;\r\n await Login.resetCustomerPassword(this.form);\r\n await this.$router.push({ path: '/login'});\r\n } catch(error) {\r\n this.loading = false;\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: error.response.data.errorMessage\r\n });\r\n }\r\n }\r\n },\r\n validations() {\r\n return {\r\n form: {\r\n username: {\r\n required: helpers.withMessage(\"Email or Phone Number is required\", required),\r\n },\r\n pin: {\r\n required: helpers.withMessage('Verification code required', required)\r\n },\r\n password: {\r\n required: helpers.withMessage(\"Password is required\", required),\r\n minLength: helpers.withMessage(\"Password must have more than 8 characters\", minLength(8)),\r\n hasLowerCase: helpers.withMessage(\"Password must have a lowercase letter\", hasLowerCase),\r\n hasUpperCase: helpers.withMessage(\"Password must have an uppercase letter\", hasUpperCase),\r\n hasNumber: helpers.withMessage(\"Password must have a number\", hasNumber)\r\n },\r\n },\r\n passwordConfirm: {\r\n required: helpers.withMessage(\"Password Confirmation is required\", required),\r\n sameAs: helpers.withMessage(\"Passwords must match\", sameAs(this.form.password))\r\n }\r\n }\r\n },\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.form-container {\r\n display: grid;\r\n grid-column-gap: 10px;\r\n grid-template-columns: auto;\r\n grid-template-rows: 45px min-content min-content min-content min-content 90px 100px;\r\n grid-template-areas:\r\n \"header\"\r\n \"username\"\r\n \"pin\"\r\n \"password\"\r\n \"passwordConfirm\"\r\n \"submitBtn\"\r\n \"footer\";\r\n justify-content: center;\r\n padding: 36px 36px 10px 36px;\r\n color: $black;\r\n\r\n &__header {\r\n text-align: center;\r\n letter-spacing: 0;\r\n line-height: 30px;\r\n font-weight: 600;\r\n font-size: 26px;\r\n }\r\n\r\n &__field-container:first-of-type {\r\n grid-area: header;\r\n }\r\n\r\n &__field-container:nth-of-type(2) {\r\n grid-area: username;\r\n }\r\n\r\n &__field-container:nth-of-type(3) {\r\n grid-area: pin;\r\n }\r\n\r\n &__field-container:nth-of-type(4) {\r\n grid-area: password;\r\n }\r\n\r\n &__field-container:nth-of-type(5) {\r\n grid-area: passwordConfirm;\r\n }\r\n\r\n &__field-container:nth-of-type(6) {\r\n grid-area: submitBtn;\r\n }\r\n\r\n &__field-container:nth-of-type(7) {\r\n grid-area: footer;\r\n }\r\n}\r\n\r\n@media(max-width: $media-large) {\r\n .form-container {\r\n max-width: 350px;\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./ResetVerify.vue?vue&type=template&id=19803fd8&scoped=true\"\nimport script from \"./ResetVerify.vue?vue&type=script&lang=js\"\nexport * from \"./ResetVerify.vue?vue&type=script&lang=js\"\n\nimport \"./ResetVerify.vue?vue&type=style&index=0&id=19803fd8&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-19803fd8\"]])\n\nexport default __exports__","<template>\r\n <div class=\"autopay-container\">\r\n\r\n <div class=\"contract-container\">\r\n <div class=\"contract-container__header\">\r\n\r\n <div class=\"nav-container\">\r\n <router-link to=\"/dashboard\">\r\n <button class=\"nav-container__back-button\">\r\n <font-awesome-icon :icon=\"['fas', 'arrow-left']\" />\r\n </button>\r\n </router-link>\r\n </div>\r\n\r\n <h1 class=\"contract-container__title\">Available Contracts</h1>\r\n\r\n <span></span>\r\n </div>\r\n <div class=\"contract-container__contractList\">\r\n <div class=\"contract-container__spinner\" v-if=\"loadingContracts\">\r\n <font-awesome-icon v-if=\"loadingContracts\" icon=\"spinner\" class=\"fa-spin\" />\r\n </div>\r\n <table v-else class=\"contract-container__table\">\r\n <thead>\r\n <tr>\r\n <th>Contract Number</th>\r\n <th>Unit Number</th>\r\n <th>Room Rate</th>\r\n <th>Due Date</th>\r\n <th class=\"align-text-right col-autopay\">Autopay Card</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tr v-for=\"unit in getContractUnitList()\" :key=\"unit.unitNumber\">\r\n <td data-label=\"Contract Number\">{{ `${this.entity}-${unit.contractNumber}`}}</td>\r\n <td data-label=\"Unit Number\">{{ unit.unitNumber }}</td>\r\n <td data-label=\"Room Rate\">{{ convertCurrency(unit.roomRate) }}</td>\r\n <td data-label=\"Due Date\">{{ convertDate(unit.dueDate) }}</td>\r\n <td data-label=\"Autopay Card\" class=\"align-text-right\">{{unit.cardNumber}}</td>\r\n <td data-label=\"Actions\">\r\n <div class=\"contract-container__table-btn-group\" v-if=\"hasAutoPay(unit.contractUnitId)\">\r\n <button class=\"btn btn-widget\" v-if=\"hasAutoPay(unit.contractUnitId)\" @click=\"showCard(unit.contractUnitId, unit.contractId, true)\">\r\n <font-awesome-icon :icon=\"['fas', 'edit']\" /> Edit Card\r\n </button>\r\n <button class=\"btn btn-widget\" @click=\"onRemoveCareClick(unit.contractUnitId)\">\r\n <font-awesome-icon icon=\"trash\" /> Remove Card\r\n </button>\r\n </div>\r\n <div class=\"contract-container__table-btn-group\" v-else>\r\n <button class=\"btn btn-widget\" @click=\"showCard(unit.contractUnitId, unit.contractId, false)\">\r\n <font-awesome-icon :icon=\"['fas', 'plus']\" /> Add A Card\r\n </button>\r\n </div>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"card-container\" v-show=\"showCardForm\" ref=\"ccWrapper\">\r\n <h3 class=\"card-container__editWarning\" v-if=\"isEdit\">Updating card information will update all units that are currently assigned to this card.</h3>\r\n <CardForm ref=\"cardFormRef\"/>\r\n <button class=\"btn card-container__save-button btn-primary\" @click=\"submitCard()\" :disabled=\"loading\">\r\n <font-awesome-icon v-if=\"loading\" icon=\"spinner\" class=\"fa-spin\" />\r\n <font-awesome-icon v-if=\"!loading\" :icon=\"['fas', 'save']\" /> Save Payment\r\n </button>\r\n </div>\r\n\r\n <modal :show-modal=\"showModal\" @close-modal=\"showModal = false\">\r\n <template v-slot:header>\r\n <h3>Remove Card</h3>\r\n </template>\r\n <template v-slot:body>\r\n <p>Are you sure you want to remove autopay from this unit?</p>\r\n </template>\r\n <template v-slot:footer>\r\n <div class=\"modal-container__btn-group\">\r\n <button class=\"btn modal-container__btn-group-cancel\" @click=\"selectedContractUnit = null; showModal = false\">Cancel</button>\r\n <button class=\"btn modal-container__btn-group-confirm\" @click=\"onConfirmRemoveCard(this.selectedContractUnit); showModal = false\">Confirm</button>\r\n </div>\r\n </template>\r\n </modal>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport {computed} from 'vue';\r\nimport {useStore} from 'vuex';\r\nimport CardForm from \"@/components/Card/CardForm.vue\";\r\nimport { toCurrency } from \"@/global/Helpers\";\r\nimport {ErrorAlerts} from \"@/constants/ErrorAlerts\";\r\nimport Modal from \"@/components/Modal/Modal.vue\";\r\n\r\n\r\nexport default {\r\n name: \"AutoPay\",\r\n components: {Modal, CardForm},\r\n setup() {\r\n const store = useStore();\r\n const contracts = computed(() => store.getters['contracts/getContracts']);\r\n const customer = computed(()=> store.getters['user/currentCustomer']);\r\n const cardInfo = computed(() => store.getters['payment/getCardInfo']);\r\n const entity = computed(() => store.getters['location/getEntity']);\r\n const savedPaymentMethods = computed(() => store.getters['payment/getSavedPaymentMethods']);\r\n const fetchContracts = (contractDto) => store.dispatch('contracts/fetchContractsForCustomer', contractDto);\r\n const getSavedPaymentMethods = (getPaymentMethodsDto) => store.dispatch('payment/getPaymentMethods', getPaymentMethodsDto);\r\n const removeAutoPay = (contractUnitId) => store.dispatch('payment/removeAutoPay', contractUnitId);\r\n const updateAutoPay = (autopayDto) => store.dispatch('payment/updateAutoPay', autopayDto);\r\n const savePaymentMethod = (savePaymentMethodsDto) => store.dispatch('payment/savePaymentMethod', savePaymentMethodsDto);\r\n\r\n return {\r\n contracts,\r\n customer,\r\n cardInfo,\r\n entity,\r\n savedPaymentMethods,\r\n fetchContracts,\r\n getSavedPaymentMethods,\r\n removeAutoPay,\r\n updateAutoPay,\r\n savePaymentMethod\r\n };\r\n },\r\n data() {\r\n return {\r\n showCardForm: false,\r\n savedCards: this.savedPaymentMethods,\r\n selectedContractUnit: null,\r\n selectedContract: null,\r\n selectedSavedCard: null,\r\n isEdit: false,\r\n loading: false,\r\n loadingContracts: false,\r\n selectedRemoveUnit: null,\r\n showModal: false,\r\n };\r\n },\r\n methods: {\r\n convertDate(dateString) {\r\n const date = new Date(dateString);\r\n const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are zero-based\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const year = date.getFullYear();\r\n\r\n return `${month}/${day}/${year}`;\r\n },\r\n convertCurrency(rate) {\r\n return toCurrency(rate)\r\n },\r\n getContractUnitList() {\r\n let cards = this.savedCards;\r\n let contractUnitList = [];\r\n contractUnitList.push(Object.values(this.contracts).flatMap(contract =>\r\n contract.contractUnits.map(unit => ({\r\n contractNumber: contract.contractNumber,\r\n unitNumber: unit.unitNumber,\r\n roomRate: unit.roomRate,\r\n dueDate: unit.dueDate,\r\n contractUnitId: unit.contractUnitId,\r\n contractId: contract.contractId,\r\n cardNumber: cards.find(card => Object.values(card.contractUnitIds).includes(unit.contractUnitId))?.accountNumber?.slice(-4) ?? \"No Card On File\"\r\n }))\r\n ));\r\n\r\n return contractUnitList.flat();\r\n },\r\n hasAutoPay(unitID) {\r\n return this.savedPaymentMethods.some(card => Object.values(card.contractUnitIds).includes(unitID));\r\n },\r\n showCard(unitId, contractId, isEdit) {\r\n this.selectedContractUnit = unitId;\r\n this.selectedContract = contractId;\r\n\r\n this.isEdit = isEdit;\r\n this.showCardForm = true;\r\n\r\n this.selectedSavedCard = isEdit\r\n ? this.savedCards.findIndex(card => Object.values(card.contractUnitIds).includes(unitId))\r\n : -1;\r\n\r\n let cardNumber = this.selectedSavedCard !== -1\r\n ? this.savedCards[this.selectedSavedCard]?.accountNumber\r\n : undefined;\r\n\r\n if(cardNumber !== undefined) {\r\n let cardForm = this.$refs.cardFormRef;\r\n\r\n if (cardForm !== undefined) {\r\n cardForm.onSelectSavedCard(cardNumber);\r\n }\r\n }else{\r\n let cardForm = this.$refs.cardFormRef;\r\n\r\n if (cardForm !== undefined) {\r\n cardForm.clearSelectedCard();\r\n }\r\n }\r\n\r\n this.$nextTick(() => {\r\n const element = this.$refs.ccWrapper;\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n });\r\n },\r\n onRemoveCareClick(contractUnitId) {\r\n this.selectedContractUnit = contractUnitId;\r\n this.showModal = true;\r\n },\r\n onConfirmRemoveCard() {\r\n this.removeAutoPay(this.selectedContractUnit);\r\n this.showModal = false;\r\n window.location.reload();\r\n },\r\n async submitCard() {\r\n this.loading = true;\r\n let cardForm = this.$refs.cardFormRef;\r\n\r\n if (cardForm !== undefined) {\r\n try{\r\n if (cardForm.submitForm()){\r\n let contractUnitIds = [this.selectedContractUnit];\r\n\r\n if(this.isEdit) {\r\n let card = this.savedCards[this.selectedSavedCard];\r\n contractUnitIds = card.contractUnitIds;\r\n }\r\n\r\n await this.updateAutoPay({\r\n contractUnitIds: contractUnitIds,\r\n ...this.cardInfo\r\n });\r\n\r\n this.loading = false;\r\n window.location.reload();\r\n }else{\r\n this.loading = false;\r\n }\r\n }catch (error) {\r\n this.loading = false;\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: error.response.data.errorMessage\r\n });\r\n }\r\n }\r\n }\r\n },\r\n async mounted() {\r\n if (Object.values(this.contracts).length === 0) {\r\n try {\r\n this.loadingContracts = true;\r\n await this.fetchContracts({ customerId: this.customer.customerId, centralCustomerId: this.customer.centralCustomerId,\r\n entityId: this.entity });\r\n this.loadingContracts = false;\r\n } catch(error) {\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: error.response.data.errorMessage\r\n });\r\n }\r\n }\r\n },\r\n async created() {\r\n await this.getSavedPaymentMethods({\"centralCustomerId\": this.customer.centralCustomerId, \"entity\": this.entity})\r\n this.savedCards = this.savedPaymentMethods;\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n .autopay-container,\r\n .contract-container {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 1rem;\r\n justify-content: center;\r\n }\r\n\r\n .autopay-container {\r\n margin-bottom: 2rem;\r\n }\r\n\r\n .contract-container {\r\n &__spinner {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100px;\r\n }\r\n &__header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: baseline;\r\n }\r\n\r\n &__title {\r\n font-size: 26px;\r\n font-weight: 600;\r\n line-height: 30px;\r\n text-align: center;\r\n }\r\n\r\n &__table-btn-group {\r\n display: flex;\r\n gap: 12px;\r\n padding: 4px 0;\r\n\r\n .btn-widget {\r\n font-size: 16px;\r\n background: #eee;\r\n color: #204d6c;\r\n padding: 0.5em 1em;\r\n border-radius: 2px;\r\n cursor: pointer;\r\n border: 1px solid #cdcdcd;\r\n\r\n &:hover {\r\n background: #204d6c;\r\n color: white;\r\n border: 1px solid #204d6c;\r\n }\r\n }\r\n }\r\n }\r\n\r\n .nav-container {\r\n &__back-button {\r\n font-size: 24px;\r\n padding: 8px;\r\n background: none;\r\n color: $primary-color;\r\n border: none;\r\n cursor: pointer;\r\n\r\n &:hover {\r\n background: #eee;\r\n }\r\n }\r\n }\r\n\r\n .card-container {\r\n &__editWarning {\r\n color: $error;\r\n text-align: center;\r\n }\r\n &__save-button {\r\n position: unset;\r\n width: 275px;\r\n margin-left: 50%;\r\n transform: translateX(-50%);\r\n }\r\n }\r\n\r\n .modal-container__btn-group{\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 12px;\r\n\r\n &-cancel {\r\n font-size: 16px;\r\n background: #eee;\r\n color: $black;\r\n padding: 0.5em 1em;\r\n border-radius: 2px;\r\n cursor: pointer;\r\n border: 1px solid #cdcdcd;\r\n\r\n &:hover {\r\n background: $light-grey;\r\n border: 1px solid $medium-grey;\r\n }\r\n }\r\n\r\n &-confirm {\r\n font-size: 16px;\r\n background: $primary-color;\r\n color: $white;\r\n padding: 0.5em 1em;\r\n border-radius: 2px;\r\n cursor: pointer;\r\n border: 1px solid #cdcdcd;\r\n\r\n &:hover {\r\n background: $light-grey;\r\n border: 1px solid $medium-grey;\r\n color: $black;\r\n }\r\n }\r\n }\r\n\r\n /* Text Align */\r\n .align-text-right {\r\n text-align: right;\r\n }\r\n\r\n</style>\r\n\r\n\r\n<style scoped lang=\"scss\">\r\n // Custom tables\r\n table {\r\n width: 100%;\r\n border-collapse: collapse;\r\n margin: 1rem 0;\r\n }\r\n\r\n th,\r\n td {\r\n padding: 0.25em 0.75em;\r\n border: 1px solid #ddd;\r\n text-align: left;\r\n }\r\n\r\n th {\r\n background-color: #f2f2f2;\r\n padding: 0.75em;\r\n }\r\n\r\n tr {\r\n margin-bottom: 10px;\r\n\r\n &:nth-child(even) {\r\n background-color: #f9f9f9;\r\n }\r\n\r\n &:nth-child(odd) {\r\n background-color: #fff;\r\n }\r\n }\r\n\r\n /* Autopay table specifics*/\r\n .col-autopay {\r\n width: 150px;\r\n }\r\n\r\n @media (max-width: 1440px) {\r\n table {\r\n font-size: 0.875rem;\r\n }\r\n }\r\n\r\n @media screen and (max-width: 980px) {\r\n //Shrink tables (Can be improved later)\r\n\r\n table {\r\n font-size: 1rem;\r\n\r\n caption {\r\n font-size: 1rem;\r\n }\r\n\r\n thead {\r\n border: none;\r\n clip: rect(0 0 0 0);\r\n height: 1px;\r\n margin: -1px;\r\n overflow: hidden;\r\n padding: 0;\r\n position: absolute;\r\n width: 1px;\r\n }\r\n\r\n tr {\r\n border-bottom: 3px solid #ddd;\r\n display: block;\r\n margin-bottom: 0.625em;\r\n }\r\n\r\n td {\r\n border-bottom: 1px solid #ddd;\r\n display: block;\r\n font-size: 1rem;\r\n text-align: right;\r\n padding: 8px;\r\n\r\n &::before {\r\n content: attr(data-label);\r\n float: left;\r\n font-weight: bold;\r\n }\r\n\r\n &:last-child {\r\n border-bottom: 0;\r\n }\r\n }\r\n }\r\n\r\n .contract-container {\r\n &__table-btn-group {\r\n justify-content: flex-end;\r\n }\r\n\r\n .btn-widget {\r\n font-size: 14px;\r\n }\r\n }\r\n }\r\n\r\n</style>\r\n\r\n<style>\r\n @media(max-width: 1440px) {\r\n #app:has(.autopay-container) {\r\n width: 100%;\r\n margin: 115px 2rem 0 2rem;\r\n }\r\n }\r\n</style>\r\n","<template>\r\n <div class=\"cardform-container\">\r\n <credit-card class=\"credit-card\"\r\n :name=\"name\"\r\n :card-number=\"cardNumber\"\r\n :security-code=\"securityCode\"\r\n :expiration=\"expirationDate\"\r\n :card-style=\"cardStyle\"\r\n :flipped=\"flipped\"/>\r\n <div class=\"form-container\">\r\n <div class=\"form-container__field-container form-container__encrypted\">\r\n <font-awesome-icon icon=\"lock\"/>\r\n Encrypted Payment\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label>Saved Cards</label>\r\n <MultiSelect :options=\"savedCards.map(c => c.accountNumber)\" @input=\"onSelectSavedCard\" default=\"Select\"></MultiSelect>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"name\">Full Name</label>\r\n <input id=\"name\" maxlength=\"20\" type=\"text\" v-model=\"name\"/>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"cardnumber\">Card Number</label>\r\n <input\r\n id=\"cardnumber\"\r\n type=\"text\"\r\n pattern=\"[0-9]*\"\r\n inputmode=\"numeric\"\r\n :value=\"cardNumber\"\r\n v-imask=\"cardNumberMask\"\r\n @accept=\"onAcceptCardNumber\"\r\n @complete=\"onCompleteCardNumber\"\r\n />\r\n <svg\r\n id=\"ccicon\"\r\n class=\"ccicon\"\r\n width=\"750\"\r\n height=\"471\"\r\n viewBox=\"0 0 750 471\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n v-html=\"cardStyle.svg\"\r\n ></svg>\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"expirationdate\">Expiration (mm/yy)</label>\r\n <input\r\n id=\"expirationdate\"\r\n type=\"text\"\r\n pattern=\"[0-9]*\"\r\n inputmode=\"numeric\"\r\n :value=\"expirationDate\"\r\n v-imask=\"expirationDateMask\"\r\n @accept=\"onAcceptExpirationDate\"\r\n />\r\n </div>\r\n <div class=\"form-container__field-container\">\r\n <label for=\"securitycode\">Security Code</label>\r\n <input\r\n id=\"securitycode\"\r\n type=\"password\"\r\n pattern=\"[0-9]*\"\r\n inputmode=\"numeric\"\r\n v-on:focusin=\"flipped = true\"\r\n v-on:focusout=\"flipped = false\"\r\n :value=\"securityCode\"\r\n v-imask=\"securityCodeMask\"\r\n @accept=\"onAcceptSecurityCode\"/>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { useStore } from 'vuex';\r\nimport { computed } from 'vue';\r\nimport useVuelidate from \"@vuelidate/core\";\r\nimport { required } from '@vuelidate/validators'\r\nimport { useNotificationStore } from '@dafcoe/vue-notification';\r\nimport { ErrorAlerts } from \"@/constants/ErrorAlerts\";\r\nimport IMask from 'imask';\r\nimport IMaskDirective from '@/directives/IMaskDirective';\r\nimport CardTypeDisplay from '@/constants/CardTypeDisplay';\r\nimport CreditCard from \"@/components/CreditCard/CreditCard\";\r\nimport MultiSelect from \"@/components/Select/MultiSelect.vue\";\r\n\r\n\r\n\r\nexport default {\r\n name: \"CardForm\",\r\n setup() {\r\n const store = useStore();\r\n const { setNotification } = useNotificationStore();\r\n const savedPaymentMethods = computed(() => store.getters['payment/getSavedPaymentMethods']);\r\n const cardInfo = computed(() => store.getters['payment/getCardInfo']);\r\n const userFullName = computed(() => store.getters['user/userFullName']);\r\n const customerFullName = computed(() => store.getters['user/getCustomerFullName']);\r\n const contracts = computed(() => store.getters['contracts/getContracts']);\r\n const customer = computed(()=> store.getters['user/currentCustomer'])\r\n const entity = computed(() => store.getters['location/getEntity'])\r\n const location = computed(() => store.getters['location/getLocation']);\r\n const updateCardInfo = (cardInfo) => store.dispatch('payment/updateCardInfo', cardInfo);\r\n const submitPayment = (payment) => store.dispatch('payment/submitPayment', payment);\r\n const getSavedPaymentMethods = (getPaymentMethodsDto) => store.dispatch('payment/getPaymentMethods', getPaymentMethodsDto);\r\n\r\n\r\n return {\r\n setNotification,\r\n savedPaymentMethods,\r\n cardInfo,\r\n userFullName,\r\n customerFullName,\r\n contracts,\r\n customer,\r\n entity,\r\n location,\r\n updateCardInfo,\r\n submitPayment,\r\n getSavedPaymentMethods,\r\n }\r\n },\r\n components: {\r\n MultiSelect,\r\n CreditCard,\r\n },\r\n data() {\r\n return {\r\n v$: useVuelidate(),\r\n loading: false,\r\n name: this.customer.isGuest ? this.userFullName : this.customerFullName,\r\n cardNumber: \"\",\r\n cardNumberMask: {\r\n mask: [\r\n {\r\n mask: \"0000 000000 00000\",\r\n regex: /^3[47]\\d{0,13}$/,\r\n cardtype: \"american express\",\r\n },\r\n {\r\n mask: \"0000 00aaaaaaaaa 0000\",\r\n regex: /^3[47]\\d{0,4}[A-Z]{0,9}\\d{0,4}$/,\r\n cardtype: \"american express\",\r\n },\r\n {\r\n mask: \"0000 0000 0000 0000\",\r\n regex: /^6(?:011|5\\d{0,2})\\d{0,12}$/,\r\n cardtype: \"discover\",\r\n },\r\n {\r\n mask: \"0000 00aaaaaaaaa 0000\",\r\n regex: /^6(?:011|5\\d{0,2})\\d{0,2}[A-Z]{0,9}\\d{0,4}$/,\r\n cardtype: \"discover\",\r\n },\r\n {\r\n mask: \"0000 0000 0000 0000\",\r\n regex: /^(5[1-5]\\d{0,2}|22[2-9]\\d{0,1}|2[3-7]\\d{0,2})\\d{0,12}$/,\r\n cardtype: \"mastercard\",\r\n },\r\n {\r\n mask: \"0000 00aaaaaaaaa 0000\",\r\n regex: /^(5[1-5]\\d{0,2}|22[2-9]\\d{0,1}|2[3-7]\\d{0,2})\\d{0,2}[A-Z]{0,9}\\d{0,4}$/,\r\n cardtype: \"mastercard\",\r\n },\r\n {\r\n mask: \"0000 0000 0000 0000\",\r\n regex: /^4\\d{0,15}$/,\r\n cardtype: \"visa\",\r\n },\r\n {\r\n mask: \"0000 00aaaaaaaaa 0000\",\r\n regex: \"^4\\\\d{0,5}[A-Z]{0,9}\\\\d{0,4}$\",\r\n cardtype: \"visa\",\r\n },\r\n {\r\n mask: \"0000 0000 0000 0000\",\r\n cardtype: \"Unknown\",\r\n },\r\n ],\r\n dispatch(appended, dynamicMasked) {\r\n let number = (dynamicMasked.value + appended).replace(/[^0-9A-Z]/g, \"\");\r\n\r\n for (let i = 0; i < dynamicMasked.compiledMasks.length; i++) {\r\n let re = new RegExp(dynamicMasked.compiledMasks[i].regex);\r\n if (number.match(re) != null) {\r\n return dynamicMasked.compiledMasks[i];\r\n }\r\n }\r\n }\r\n },\r\n expirationDate: \"\",\r\n expirationDateMask: {\r\n mask: \"MM{/}YY\",\r\n blocks: {\r\n YY: {\r\n mask: IMask.MaskedRange,\r\n from: 0,\r\n to: 99,\r\n },\r\n MM: {\r\n mask: IMask.MaskedRange,\r\n from: 0,\r\n to: 12,\r\n },\r\n },\r\n },\r\n securityCode: null,\r\n securityCodeMask: {\r\n mask: \"0000\",\r\n },\r\n savedCards: this.savedPaymentMethods,\r\n savePayment: false,\r\n cardType: '',\r\n cardStyle: CardTypeDisplay['Unknown'],\r\n flipped: false,\r\n };\r\n },\r\n validations() {\r\n return {\r\n name: { required },\r\n cardNumber: { required },\r\n expirationDate: { required },\r\n securityCode: { required },\r\n };\r\n },\r\n methods: {\r\n submitForm() {\r\n try {\r\n this.loading = true;\r\n let accepted = Object.values(this.location.acceptedPaymentTypes);\r\n this.v$.$validate();\r\n if (this.v$.$error) {\r\n this.loading = false;\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: \"A form field was not filled out\"\r\n });\r\n return false;\r\n }\r\n\r\n if (!accepted.includes(this.cardType)) {\r\n this.loading = false;\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: `This location does not accept ${this.cardType} cards`\r\n });\r\n return false;\r\n }\r\n\r\n const expirationArr = this.expirationDate.split('/');\r\n const expiration = `20${expirationArr[1]}-${expirationArr[0]}-01`;\r\n\r\n this.updateCardInfo({\r\n nameOnCard: this.name,\r\n creditCardNumber: this.cardNumber.replace(/\\s+/g, ''),\r\n cardSecurityCode: this.securityCode,\r\n expirationDate: expiration,\r\n cardType: this.cardType\r\n });\r\n\r\n return true;\r\n } catch (error) {\r\n this.loading = false;\r\n this.setNotification({\r\n ...ErrorAlerts,\r\n message: error.response ? error.response.data.errorMessage : \"A form field was not filled out\"\r\n });\r\n return false;\r\n }\r\n },\r\n onAcceptCardNumber(event) {\r\n const maskRef = event.detail;\r\n this.cardNumber = maskRef.value;\r\n this.$log.info(`card number accepted: ${this.cardNumber}`);\r\n },\r\n onCompleteCardNumber(event) {\r\n const maskRef = event.detail;\r\n const cardType = maskRef.masked.currentMask.cardtype;\r\n\r\n this.cardStyle = CardTypeDisplay[cardType];\r\n this.cardType = cardType;\r\n },\r\n onAcceptExpirationDate(event) {\r\n const maskRef = event.detail;\r\n this.expirationDate = maskRef.value;\r\n this.$log.info(`expiration date accepted: ${this.expirationDate}`);\r\n },\r\n onAcceptSecurityCode(event) {\r\n const maskRef = event.detail;\r\n this.securityCode = maskRef.value;\r\n this.$log.info(`security code accepted: ${this.securityCode}`)\r\n },\r\n onSelectSavedCard(data){\r\n if(data === \"Select\"){\r\n this.clearSelectedCard();\r\n } else {\r\n this.cardNumber = data;\r\n this.expirationDate = this.savedCards.find(c => c.accountNumber === data).expirationDate;\r\n }\r\n },\r\n clearSelectedCard(){\r\n this.cardNumber = \"\";\r\n this.expirationDate = \"\";\r\n this.securityCode = \"\";\r\n this.cardStyle = CardTypeDisplay['Unknown'];\r\n }\r\n },\r\n directives: {\r\n imask: IMaskDirective,\r\n },\r\n async created() {\r\n await this.getSavedPaymentMethods({\"centralCustomerId\": this.customer.centralCustomerId, \"entity\": this.entity})\r\n this.savedCards = this.savedPaymentMethods;\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.cardform-container {\r\n display: grid;\r\n grid-column-gap: 10px;\r\n grid-template-columns: 600px;\r\n grid-template-rows: auto;\r\n padding: 20px 36px 40px 36px;\r\n justify-content: center;\r\n}\r\n\r\n.credit-card {\r\n width: 100%;\r\n}\r\n\r\n.form-container {\r\n display: grid;\r\n grid-column-gap: 15px;\r\n grid-row-gap: 10px;\r\n grid-template-columns: 66% 33%;\r\n grid-template-rows: auto auto auto auto auto;\r\n grid-template-areas:\r\n \"encrypted encrypted\"\r\n \"cards cards\"\r\n \"name name\"\r\n \"number number\"\r\n \"expiration security\"\r\n \"checkbox checkbox\";\r\n justify-content: center;\r\n\r\n &__encrypted {\r\n font-size: 14px;\r\n line-height: 18px;\r\n text-align: center;\r\n }\r\n\r\n &__field-container:nth-of-type(1) {\r\n grid-area: encrypted;\r\n }\r\n\r\n &__field-container:nth-of-type(2) {\r\n grid-area: cards;\r\n }\r\n\r\n &__field-container:nth-of-type(3) {\r\n grid-area: name;\r\n }\r\n\r\n &__field-container:nth-of-type(4) {\r\n grid-area: number;\r\n }\r\n\r\n &__field-container:nth-of-type(5) {\r\n grid-area: expiration;\r\n }\r\n\r\n &__field-container:nth-of-type(6) {\r\n grid-area: security;\r\n }\r\n\r\n &__field-container:nth-of-type(7) {\r\n grid-area: checkbox;\r\n }\r\n\r\n &__field-container:nth-of-type(8) {\r\n grid-area: submitBtn;\r\n }\r\n}\r\n.ccicon {\r\n height: 38px;\r\n position: absolute;\r\n right: 6px;\r\n top: calc(50% - 8px);\r\n width: 60px;\r\n}\r\n\r\n@media(max-width: $media-large) {\r\n .cardform-container {\r\n grid-template-columns: 350px;\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./CardForm.vue?vue&type=template&id=7edc19e8&scoped=true\"\nimport script from \"./CardForm.vue?vue&type=script&lang=js\"\nexport * from \"./CardForm.vue?vue&type=script&lang=js\"\n\nimport \"./CardForm.vue?vue&type=style&index=0&id=7edc19e8&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7edc19e8\"]])\n\nexport default __exports__","import { render } from \"./AutoPay.vue?vue&type=template&id=19b1cfce&scoped=true\"\nimport script from \"./AutoPay.vue?vue&type=script&lang=js\"\nexport * from \"./AutoPay.vue?vue&type=script&lang=js\"\n\nimport \"./AutoPay.vue?vue&type=style&index=0&id=19b1cfce&scoped=true&lang=scss\"\nimport \"./AutoPay.vue?vue&type=style&index=1&id=19b1cfce&scoped=true&lang=scss\"\nimport \"./AutoPay.vue?vue&type=style&index=2&id=19b1cfce&lang=css\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-19b1cfce\"]])\n\nexport default __exports__","<template>\r\n <div class=\"paymentSelection-container\">\r\n <div class=\"paymentSelection-container__title\">Select Payment Method</div>\r\n <div class=\"paymentSelection-container__button-manual\">\r\n <router-link to=\"/contract\">\r\n <button class=\"btn btn-primary\">\r\n <span>Make One Time Payment</span>\r\n </button>\r\n </router-link>\r\n </div>\r\n <div class=\"paymentSelection-container__button-autopay\">\r\n <router-link to=\"/autopay\">\r\n <button class=\"btn btn-secondary\">\r\n <span>Manage Autopay</span>\r\n </button>\r\n </router-link>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.paymentSelection-container {\r\n display: grid;\r\n grid-template-columns: 500px;\r\n grid-template-rows: 90px 90px 90px min-content 90px 25px 100px;\r\n grid-template-areas:\r\n \"title title title\"\r\n \"manual manual manual\"\r\n \"autopay autopay autopay\";\r\n justify-content: center;\r\n padding: 36px 36px 10px 36px;\r\n color: $black;\r\n\r\n &__title {\r\n font-size: 26px;\r\n font-weight: 600;\r\n line-height: 30px;\r\n text-align: center;\r\n grid-area: title;\r\n }\r\n\r\n &__button-manual {\r\n grid-area: manual;\r\n position: relative;\r\n }\r\n\r\n &__button-autopay {\r\n grid-area: autopay;\r\n position: relative;\r\n }\r\n\r\n @media(max-width: $media-large) {\r\n .paymentSelection-container {\r\n grid-template-columns: 350px;\r\n }\r\n }\r\n}\r\n</style>\r\n","import { render } from \"./PaymentSelection.vue?vue&type=template&id=5c9785ad&scoped=true\"\nconst script = {}\n\nimport \"./PaymentSelection.vue?vue&type=style&index=0&id=5c9785ad&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\agent\\\\_work\\\\1035\\\\s\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5c9785ad\"]])\n\nexport default __exports__","import { createWebHistory, createRouter } from \"vue-router\";\r\nimport UserInfo from \"@/view/UserInfo\";\r\nimport ContractSelect from \"@/view/ContractSelect\";\r\nimport Payment from \"@/view/Payment\";\r\nimport PaymentBreakdown from \"@/view/PaymentBreakdown\";\r\nimport Receipt from \"@/view/Receipt\";\r\nimport Confirmation from \"@/view/Confirmation\";\r\nimport Login from \"@/view/Login\";\r\nimport CreateAccount from \"@/view/CreateAccount\"\r\nimport VerifyAccount from \"@/view/VerifyAccount\"\r\nimport ResetUsername from \"@/view/ResetUsername\";\r\nimport ResetVerify from \"@/view/ResetVerify\";\r\nimport AutoPay from \"@/view/AutoPay.vue\";\r\nimport PaymentSelection from \"@/view/PaymentSelection.vue\";\r\n\r\nconst routes = [\r\n {\r\n path: '/login',\r\n name: 'Login',\r\n component: Login,\r\n },\r\n {\r\n path: '/register',\r\n name: 'Create Account',\r\n component: CreateAccount,\r\n },\r\n {\r\n path: '/verification',\r\n name: 'Verify Account Login',\r\n component: VerifyAccount,\r\n },\r\n {\r\n path: '/',\r\n name: 'UserInfo',\r\n component: UserInfo,\r\n props: {\r\n locationQuery: route => ({ query: route.query.locationId }),\r\n entityIdQuery: route => ({query: route.query.entityId}),\r\n customerIdQuery: route => ({ query: route.query.customerId }),\r\n centralCustomerQuery: route => ({ query: route.query.centralCustomerId }),\r\n monthsIntoFutureQuery: route => ({ query: route.query.monthsIntoFuture }),\r\n contractUnitIdsQuery: route => ({ query: route.query.contractUnitIds }),\r\n guestQuery: route => ({ query: route.query.guest })\r\n }\r\n },\r\n {\r\n path: '/reset',\r\n name: 'ResetUsername',\r\n component: ResetUsername,\r\n },\r\n {\r\n path: '/reset/verify',\r\n name: 'ResetVerify',\r\n component: ResetVerify\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'PaymentSelection',\r\n component: PaymentSelection\r\n },\r\n {\r\n path: '/contract',\r\n name: 'ContractSelect',\r\n component: ContractSelect,\r\n },\r\n {\r\n path: '/autopay',\r\n name: 'AutoPay',\r\n component: AutoPay,\r\n },\r\n {\r\n path: '/paymentBreakdown',\r\n name: 'PaymentBreakdown',\r\n component: PaymentBreakdown,\r\n },\r\n {\r\n path: '/payment',\r\n name: 'Payment',\r\n component: Payment,\r\n },\r\n {\r\n path: '/confirmation',\r\n name: 'Confirmation',\r\n component: Confirmation\r\n },\r\n {\r\n path: '/receipts',\r\n name: 'Receipt',\r\n component: Receipt\r\n }\r\n];\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(),\r\n routes\r\n});\r\n\r\nexport default router;\r\n","export const currentUser = state => {\r\n return state.user;\r\n}\r\n\r\nexport const checkCustomerFetch = state => {\r\n return state.customer.firstName != null &&\r\n state.customer.lastName != null &&\r\n state.customer.emailAddress != null;\r\n}\r\nexport const currentCustomer = state => {\r\n return state.customer;\r\n}\r\n\r\nexport const currentLogin = state => {\r\n return state.login;\r\n}\r\n\r\nexport const getUsername = state => {\r\n return state.username;\r\n}\r\n\r\nexport const userFullName = state => {\r\n return `${state.user.firstName} ${state.user.lastName}`;\r\n}\r\n\r\nexport const getCustomerFullName = state => {\r\n return `${state.customer.firstName} ${state.customer.lastName}`;\r\n}\r\n\r\nexport const getLockout = state => {\r\n return state.lockoutRemaining;\r\n}\r\n","import Axios from \"axios\";\r\nimport {API_ROOT} from \"@/constants/ApiRoot\";\r\n\r\nconst CUSTOMER_ENDPOINT = `${API_ROOT}/customer`;\r\n\r\nexport default {\r\n async getCustomer(customerDto) {\r\n return await Axios.get(`${CUSTOMER_ENDPOINT}`, {\r\n params: customerDto\r\n });\r\n },\r\n\r\n async getCustomerLockout(lockoutDto) {\r\n return await Axios.get(`${CUSTOMER_ENDPOINT}/lockout`, {\r\n params: lockoutDto\r\n });\r\n }\r\n}\r\n","import Customer from \"@/api/Customer\";\r\nimport Login from \"@/api/Login\";\r\n\r\nexport const createUser = ({ commit }, user) => {\r\n commit('setUser', user);\r\n}\r\n\r\nexport const fetchCustomer = async ({ commit }, customerDto) => {\r\n const data = await Customer.getCustomer(customerDto);\r\n commit('setCustomer', data.data);\r\n}\r\n\r\nexport const authenticateCustomer = async ({ commit }, loginDto) => {\r\n const data = await Login.loginCustomer(loginDto);\r\n commit('setCustomer', data.data);\r\n}\r\n\r\nexport const fetchCustomerLockout = async ({ commit }, lockoutDto) => {\r\n const data = await Customer.getCustomerLockout(lockoutDto);\r\n commit('setLockout', data.data);\r\n}\r\n\r\nexport const updateLockout = ({ commit }, time) => {\r\n commit('updateLockout', time);\r\n}\r\n\r\n\r\nexport const createCustomerAccount = async ({ commit }, loginDto) => {\r\n await Login.createCustomerAccount(loginDto);\r\n commit('setLoginData', loginDto);\r\n}\r\n\r\nexport const setLoginInfo = ({ commit }, loginDto) => {\r\n commit('setLoginData', loginDto);\r\n}\r\n\r\nexport const setUsername = ({ commit }, username) => {\r\n commit('setUsername', username);\r\n}\r\n\r\nexport const reset = ({ commit }) => {\r\n commit('reset');\r\n}\r\n","export default {\r\n setUser(state, user) {\r\n state.user = {\r\n ...state.user,\r\n ...user\r\n }\r\n },\r\n\r\n setCustomer(state, customer) {\r\n state.customer = {\r\n ...state.customer,\r\n ...customer\r\n }\r\n },\r\n\r\n setLockout(state, lockoutDto) {\r\n state.lockout = {...lockoutDto};\r\n state.lockoutRemaining = lockoutDto.lockOutTimeRemaining\r\n },\r\n\r\n updateLockout(state, time) {\r\n state.lockoutRemaining = time;\r\n },\r\n\r\n setLoginData(state, loginDto) {\r\n state.login = {...loginDto};\r\n },\r\n\r\n setUsername(state, username) {\r\n state.username = username;\r\n },\r\n\r\n reset(state) {\r\n const s = {\r\n user: {\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: null,\r\n emailAddress: '',\r\n unitNumber: null\r\n },\r\n customer: {\r\n address: '',\r\n centralCustomerId: '',\r\n customerId: '',\r\n emailAddress: '',\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: null\r\n },\r\n login: {\r\n phoneNumber: '',\r\n email: '',\r\n password: '',\r\n verificationType: ''\r\n }\r\n }\r\n\r\n Object.keys(s).forEach(key => {\r\n state[key] = s[key]\r\n });\r\n }\r\n}\r\n","import * as getters from './getters';\r\nimport * as actions from './actions';\r\nimport mutations from './mutations';\r\n\r\nconst state = {\r\n user: {\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: null,\r\n emailAddress: '',\r\n unitNumber: null\r\n },\r\n customer: {\r\n address: '',\r\n centralCustomerId: '',\r\n customerId: '',\r\n emailAddress: '',\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: null,\r\n isGuest: true,\r\n },\r\n login: {\r\n phoneNumber: '',\r\n email: '',\r\n password: '',\r\n verificationType: ''\r\n },\r\n lockout: {},\r\n lockoutRemaining: 0,\r\n // this state shouldn't be cleared by session timeout\r\n username: ''\r\n};\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n};\r\n","export const getSelectedContractUnits = state => {\r\n return state.selectedContractUnits;\r\n}\r\n\r\nexport const getSelectedContractUnitsFlat = state => {\r\n return Object.values(state.selectedContractUnits).flat();\r\n}\r\n\r\nexport const getContracts = state => {\r\n return state.contracts;\r\n}\r\n\r\nexport const getContractsForPayment = state => {\r\n const contractNumbers = Object.keys(state.selectedContractUnits);\r\n const contractUnitNumbers = Object.values(state.selectedContractUnits).flat();\r\n\r\n let contracts = Object.values(JSON.parse(JSON.stringify(state.contracts))) // the only way to deep copy an object\r\n .filter(contract => contractNumbers.includes(contract.contractNumber));\r\n\r\n contracts.forEach(contract => contract.contractUnits =\r\n contract.contractUnits.filter(contractUnit => contractUnitNumbers.includes(contractUnit.unitNumber)));\r\n\r\n return contracts;\r\n}\r\n\r\nexport const getTotalCost = (state, getters, rootState) => {\r\n const contracts = getContractsForPayment(state);\r\n return contracts.map(contract =>\r\n contract.contractUnits.map(unit =>\r\n unit.unitPaymentBreakdowns[rootState.payment.monthsAhead].breakdownBalance)\r\n .reduce((a, b) => a + b, 0))\r\n .reduce((a, b) => a + b, 0);\r\n}\r\n\r\n// This is ass, but here we are\r\nexport const getLongestUnitPayListWithoutZeros = state => {\r\n const contractsToPay = getContractsForPayment(state);\r\n return contractsToPay.map(contract =>\r\n contract.contractUnits.map(unit =>\r\n unit.unitPaymentBreakdowns).flat()).reduce((leastZeros, current) =>\r\n leastZeros.filter(breakdown =>\r\n breakdown.balanceDue === 0).length <\r\n current.filter(breakdown =>\r\n breakdown.balanceDue === 0).length ?\r\n leastZeros : current);\r\n}\r\n","import Axios from \"axios\";\r\nimport {API_ROOT} from \"@/constants/ApiRoot\";\r\n\r\nconst CONTRACT_ENDPOINT = `${API_ROOT}/contract`;\r\n\r\nexport default {\r\n async getCustomerContracts(contractDto) {\r\n return await Axios.get(`${CONTRACT_ENDPOINT}`, {\r\n params: contractDto\r\n });\r\n }\r\n}\r\n","import Contract from '@/api/Contract';\r\n\r\nexport const addSelectedContract = ({ commit }, contractInfo) => {\r\n commit('addUnitToSelectedContract', contractInfo);\r\n};\r\n\r\nexport const removeSelectedContract = ({ commit }, contractInfo) => {\r\n commit('removeUnitFromSelectedContract', contractInfo);\r\n};\r\n\r\nexport const fetchContractsForCustomer = async ({ commit }, contractDto) => {\r\n const data = await Contract.getCustomerContracts(contractDto);\r\n commit('setContracts', data.data.contracts);\r\n};\r\n\r\nexport const reset = ({commit}) => {\r\n commit('reset');\r\n};\r\n","export default {\r\n addUnitToSelectedContract(state, contractInfo) {\r\n const { contractNumber, contractUnitNumber } = contractInfo;\r\n\r\n if (Object.keys(state.selectedContractUnits).includes(contractNumber.toString())) {\r\n let units = [...state.selectedContractUnits[contractNumber]];\r\n units.push(contractUnitNumber);\r\n units = [...new Set(units)];\r\n state.selectedContractUnits[contractNumber] = units;\r\n } else {\r\n state.selectedContractUnits[contractNumber] = [contractUnitNumber];\r\n }\r\n },\r\n removeUnitFromSelectedContract(state, contractInfo) {\r\n const { contractNumber, contractUnitNumber } = contractInfo;\r\n state.selectedContractUnits[contractNumber] =\r\n state.selectedContractUnits[contractNumber].filter(unit => unit !== contractUnitNumber);\r\n if(state.selectedContractUnits[contractNumber].length === 0) {\r\n delete state.selectedContractUnits[contractNumber];\r\n }\r\n },\r\n setContracts(state, contracts) {\r\n state.contracts = {\r\n ...state.contracts,\r\n ...contracts\r\n }\r\n },\r\n reset(state) {\r\n const s = {\r\n selectedContractUnits: {},\r\n contracts: {},\r\n contractsForPayment: {}\r\n }\r\n\r\n Object.keys(s).forEach(key => {\r\n state[key] = s[key]\r\n });\r\n }\r\n}\r\n","import * as getters from './getters';\r\nimport * as actions from './actions';\r\nimport mutations from './mutations';\r\n\r\nconst state = {\r\n selectedContractUnits: {},\r\n contracts: {},\r\n contractsForPayment: {}\r\n};\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n};\r\n","export const getLocation = state => {\r\n return state.location;\r\n};\r\n\r\nexport const getEntity = state => {\r\n return state.location.entity;\r\n};\r\n\r\nexport const getLocationId = state => {\r\n return state.locationId;\r\n};\r\n\r\nexport const getLocationAutopayRule = state => {\r\n return state.location.allowAutopay;\r\n}\r\n\r\nexport const getLocationAcceptedPaymentTypes = state => {\r\n return state.location.acceptedPaymentTypes;\r\n}\r\n","import Axios from 'axios';\r\nimport {API_ROOT} from \"@/constants/ApiRoot\";\r\n\r\nconst LOCATION_ENDPOINT = `${API_ROOT}/location`;\r\n\r\nexport default {\r\n async getLocation(locationId) {\r\n return await Axios.get(`${LOCATION_ENDPOINT}/${locationId}`);\r\n },\r\n async getLocationByEntityAsync(entityId){\r\n return await Axios.get(`${LOCATION_ENDPOINT}/entity/${entityId}`);\r\n }\r\n}\r\n","import Location from \"@/api/Location\";\r\n\r\nexport const fetchLocation = async ({ commit }, locationId) => {\r\n const location = await Location.getLocation(locationId);\r\n commit('setLocation', location.data);\r\n}\r\n\r\nexport const fetchLocationByEntity = async ({ commit }, entityId) => {\r\n const data = await Location.getLocationByEntityAsync(entityId);\r\n commit('setLocation', data.data.location);\r\n}\r\n\r\nexport const updateLocationId = ({ commit }, locationId) => {\r\n commit('updateLocationId', locationId);\r\n}\r\n\r\nexport const reset = ({commit}) => {\r\n commit('reset');\r\n}\r\n","export default {\r\n setLocation(state, location) {\r\n state.location = {\r\n ...state.location,\r\n ...location\r\n };\r\n },\r\n updateLocationId(state, locationId) {\r\n state.locationId = locationId;\r\n },\r\n reset(state) {\r\n const s = {\r\n location: {}\r\n }\r\n\r\n Object.keys(s).forEach(key => {\r\n state[key] = s[key]\r\n });\r\n }\r\n}\r\n","import * as getters from './getters';\r\nimport * as actions from './actions';\r\nimport mutations from './mutations';\r\n\r\nconst state = {\r\n location: {},\r\n locationId: ''\r\n};\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n};\r\n","export const getMonthsAhead = store => {\r\n return store.monthsAhead;\r\n};\r\n\r\nexport const getMonthsAheadDisplay = store => {\r\n return store.monthsAheadDisplay;\r\n};\r\n\r\nexport const getPaymentTotal = store => {\r\n return store.paymentTotal;\r\n};\r\n\r\nexport const getPayments = store => {\r\n return store.payments;\r\n};\r\n\r\nexport const getSavedPaymentMethods = store => {\r\n return store.savedPaymentMethods;\r\n};\r\n\r\nexport const getCardInfo = store => {\r\n return store.cardInfo;\r\n};\r\n\r\nexport const getReceipts = store => {\r\n return store.receipts;\r\n};\r\n\r\nexport const getReceiptIds = store => {\r\n return store.receiptIds;\r\n};\r\n\r\nexport const getReceiptNumbers = store => {\r\n const receipts = Object.values(store.receipts);\r\n return receipts.map(receipt => receipt.receiptNumber);\r\n};\r\n\r\nexport const hasAutoPayUnits = store => {\r\n const cards = Object.values(store.savedPaymentMethods);\r\n return cards.some(card => Object.values(card.contractUnitIds).length > 0);\r\n}\r\n","import Axios from \"axios\";\r\nimport {API_ROOT} from \"@/constants/ApiRoot\";\r\n\r\nconst PAYMENT_ENDPOINT = `${API_ROOT}/payment`;\r\n\r\nexport default {\r\n async submitPayment(paymentDto) {\r\n return await Axios.post(`${PAYMENT_ENDPOINT}`, paymentDto);\r\n },\r\n async getPaymentMethods(getPaymentMethodsDto) {\r\n return await Axios.get(`${PAYMENT_ENDPOINT}`, {params: getPaymentMethodsDto});\r\n },\r\n async savePaymentMethods(savePaymentMethodDto) {\r\n return await Axios.post(`${PAYMENT_ENDPOINT}/save`, savePaymentMethodDto);\r\n },\r\n async removeAutoPay(contractUnitID) {\r\n return await Axios.delete(`${PAYMENT_ENDPOINT}/autopay/${contractUnitID}`);\r\n },\r\n async updateAutoPay(autopayDto) {\r\n return await Axios.post(`${PAYMENT_ENDPOINT}/autopay`, autopayDto);\r\n },\r\n}\r\n","import Axios from \"axios\";\r\nimport {API_ROOT} from \"@/constants/ApiRoot\";\r\n\r\nconst RECEIPT_ENDPOINT = `${API_ROOT}/receipt`\r\n\r\nexport default {\r\n async getReceipt(receiptId) {\r\n return await Axios.get(`${RECEIPT_ENDPOINT}/${receiptId}`);\r\n },\r\n async getReceipts(receipts) {\r\n const stringReceipts = receipts.reduce((f, s) => `${f},${s}`);\r\n return await Axios.get(`${RECEIPT_ENDPOINT}`, { params: { receipts: stringReceipts } });\r\n }\r\n}\r\n","import Payment from \"@/api/Payment\";\r\nimport Receipt from \"@/api/Receipt\";\r\n\r\nexport const updatePaymentInfo = ({ commit }, payment) => {\r\n commit('updatePayment', payment);\r\n};\r\n\r\nexport const updateCardInfo = ({ commit }, card) => {\r\n commit('updateCardInfo', card);\r\n};\r\n\r\nexport const updateMonthsAhead = ({ commit }, monthsAhead) => {\r\n commit('updateMonthsAhead', monthsAhead);\r\n}\r\n\r\nexport const updateMonthsAheadDisplay = ({ commit }, monthsAheadDisplay) => {\r\n commit('updateMonthsAheadDisplay', monthsAheadDisplay);\r\n};\r\n\r\nexport const updateTotal = ({ commit }, total) => {\r\n commit('updateTotal', total);\r\n}\r\n\r\nexport const getPaymentMethods = async ({ commit }, contractIds) => {\r\n const data = await Payment.getPaymentMethods(contractIds);\r\n commit('updateSavedPaymentMethods', data.data);\r\n};\r\n\r\nexport const savePaymentMethod = async (_, savePaymentMethodDto) => {\r\n await Payment.savePaymentMethods(savePaymentMethodDto);\r\n};\r\n\r\nexport const submitPayment = async ({ commit }, payment) => {\r\n const data = await Payment.submitPayment(payment);\r\n commit('updateReceiptIds', data.data.receiptID);\r\n};\r\n\r\nexport const fetchReceipts = async ({ commit }, receipts) => {\r\n const data = await Receipt.getReceipts(receipts);\r\n commit('updateReceipts', data.data.map(response => response.receipt));\r\n};\r\n\r\nexport const reset = ({ commit }) => {\r\n commit('reset');\r\n};\r\n\r\nexport const removeAutoPay = async (_, contractUnitID) => {\r\n await Payment.removeAutoPay(contractUnitID);\r\n};\r\n\r\nexport const updateAutoPay = async (_, autopayDto) => {\r\n await Payment.updateAutoPay(autopayDto);\r\n};\r\n\r\n","export default {\r\n updatePayment(state, payment) {\r\n state.payments = {\r\n ...state.payments,\r\n [payment.contractId]: { ...payment }\r\n }\r\n },\r\n updateCardInfo(state, card) {\r\n state.cardInfo = {\r\n ...state.cardInfo,\r\n ...card\r\n }\r\n },\r\n updateMonthsAhead(state, monthsAhead) {\r\n state.monthsAhead = monthsAhead;\r\n },\r\n updateMonthsAheadDisplay(state, monthsAheadDisplay) {\r\n state.monthsAheadDisplay = monthsAheadDisplay;\r\n },\r\n updateTotal(state, total) {\r\n state.paymentTotal = total;\r\n },\r\n updateReceipts(state, receipts) {\r\n state.receipts = {\r\n ...state.receipts,\r\n ...receipts\r\n }\r\n },\r\n\r\n updateSavedPaymentMethods(state, savedPaymentMethods){\r\n state.savedPaymentMethods = savedPaymentMethods\r\n },\r\n\r\n updateReceiptIds(state, receiptId) {\r\n state.receiptIds.push(receiptId);\r\n },\r\n reset(state) {\r\n const s = {\r\n payments: {},\r\n cardInfo: {\r\n nameOnCard: '',\r\n creditCardNumber: '',\r\n cardSecurityCode: '',\r\n expirationDate: '',\r\n cardType: ''\r\n },\r\n monthsAhead: 0,\r\n monthsAheadDisplay: '',\r\n paymentTotal: 0,\r\n receiptIds: [],\r\n receipts: [],\r\n savedPaymentMethods: []\r\n }\r\n\r\n Object.keys(s).forEach(key => {\r\n state[key] = s[key]\r\n });\r\n }\r\n}\r\n","import * as getters from './getters';\r\nimport * as actions from './actions';\r\nimport mutations from './mutations';\r\n\r\nconst state = {\r\n payments: {\r\n /*\r\n [contractId]: {\r\n contractId: '',\r\n customerId: '',\r\n entityId: '',\r\n ContractUnitIds: [],\r\n paymentAmount: 0,\r\n monthsIntoFuture: 0,\r\n onAutopay: false,\r\n autopay: false,\r\n }\r\n */\r\n },\r\n cardInfo: {\r\n nameOnCard: '',\r\n creditCardNumber: '',\r\n cardSecurityCode: '',\r\n expirationDate: '',\r\n cardType: ''\r\n },\r\n monthsAhead: 0,\r\n monthsAheadDisplay: '',\r\n paymentTotal: 0,\r\n receiptIds: [],\r\n receipts: [],\r\n savedPaymentMethods: []\r\n};\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n getters,\r\n actions,\r\n mutations,\r\n};\r\n","export const getStepNavData = store => {\r\n return store.nav;\r\n}\r\n","import * as getters from './getters';\r\n\r\nconst state = {\r\n nav: [\r\n {\r\n step: 1,\r\n path: '/contract'\r\n },\r\n {\r\n step: 2,\r\n path: '/paymentBreakdown'\r\n },\r\n {\r\n step: 3,\r\n path: '/payment'\r\n }\r\n ]\r\n};\r\n\r\nexport default {\r\n namespaced: true,\r\n state,\r\n getters,\r\n};\r\n","import { createLogger, createStore } from \"vuex\";\r\nimport createPersistedState from \"vuex-persistedstate\";\r\nimport user from './User';\r\nimport contracts from './Contracts';\r\nimport location from './Location';\r\nimport payment from './Payment';\r\nimport navigation from './Nav';\r\n\r\nconst debug = process.env.NODE_ENV !== 'production';\r\n\r\nexport default createStore({\r\n actions: {\r\n clearAll({dispatch}) {\r\n dispatch('user/reset');\r\n dispatch('location/reset');\r\n dispatch('contracts/reset');\r\n dispatch('payment/reset');\r\n }\r\n },\r\n modules: {\r\n user,\r\n contracts,\r\n location,\r\n payment,\r\n navigation\r\n },\r\n strict: debug,\r\n plugins: debug\r\n ? [createLogger(), createPersistedState()]\r\n : [createPersistedState()]\r\n});\r\n","import { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\r\nimport { library, config } from \"@fortawesome/fontawesome-svg-core\";\r\nimport {\r\n faFileContract,\r\n faWarehouse,\r\n faCheck,\r\n faAngleDown,\r\n faLock,\r\n faTimes,\r\n faSpinner,\r\n faInfoCircle,\r\n faEdit,\r\n faPlus,\r\n faTrash,\r\n faArrowLeft,\r\n faSave\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nimport {\r\n faCalendarCheck,\r\n} from \"@fortawesome/free-regular-svg-icons\"\r\n\r\n\r\nlibrary.add(\r\n faFileContract,\r\n faWarehouse,\r\n faCheck,\r\n faAngleDown,\r\n faLock,\r\n faCalendarCheck,\r\n faTimes,\r\n faSpinner,\r\n faInfoCircle,\r\n faEdit,\r\n faPlus,\r\n faTrash,\r\n faArrowLeft,\r\n faSave\r\n);\r\nconfig.autoAddCss = false;\r\n\r\nconst plugin = {\r\n install: (Vue) => {\r\n Vue.component('font-awesome-icon', FontAwesomeIcon);\r\n }\r\n}\r\n\r\nFontAwesomeIcon.install = plugin.install;\r\n\r\nexport default FontAwesomeIcon;\r\n","import { defineComponent, h } from 'vue'\r\n\r\nexport default defineComponent({\r\n name: 'IIdleDirective',\r\n props: {\r\n duration: {\r\n type: Number,\r\n // default 5 minutes\r\n default: 60 * 5,\r\n },\r\n events: {\r\n type: Array,\r\n default: () => ['mousemove', 'keypress'],\r\n },\r\n loop: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n eventTickRate: {\r\n type: Number,\r\n // emit remind event with remaining time every n seconds\r\n // default 0 means no events\r\n default: 0,\r\n },\r\n wait: {\r\n type: Number,\r\n default: 0,\r\n },\r\n },\r\n data() {\r\n return {\r\n display: '',\r\n timer: undefined,\r\n start: 0,\r\n counter: undefined,\r\n diff: 0,\r\n minutes: '',\r\n seconds: '',\r\n }\r\n },\r\n mounted() {\r\n setTimeout(() => {\r\n this.start = Date.now()\r\n this.setDisplay()\r\n this.$nextTick(() => {\r\n this.setTimer()\r\n for (let i = this.events.length - 1; i >= 0; i -= 1) {\r\n window.addEventListener(this.events[i], this.clearTimer)\r\n }\r\n })\r\n }, this.wait * 1000)\r\n },\r\n methods: {\r\n setDisplay() {\r\n // seconds since start\r\n this.diff = this.duration - (((Date.now() - this.start) / 1000) | 0)\r\n if (this.diff < 0 && !this.loop) {\r\n return\r\n }\r\n this.shouldRemind()\r\n\r\n // bitwise OR to handle parseInt\r\n const minute = (this.diff / 60) | 0\r\n const second = this.diff % 60 | 0\r\n\r\n this.minutes = `${minute < 10 ? '0' + minute : minute}`\r\n this.seconds = `${second < 10 ? '0' + second : second}`\r\n\r\n this.display = `${this.minutes}:${this.seconds}`\r\n },\r\n shouldRemind() {\r\n if (this.eventTickRate > 0 && (this.diff % this.eventTickRate === 0)) {\r\n this.remind();\r\n }\r\n },\r\n countdown() {\r\n this.setDisplay()\r\n\r\n if (this.diff <= 0 && this.loop) {\r\n // add second to start at the full duration\r\n // for instance 05:00, not 04:59\r\n this.start = Date.now() + 1000\r\n }\r\n },\r\n idle() {\r\n this.$emit('idle')\r\n },\r\n remind() {\r\n this.$emit('remind', this.diff)\r\n },\r\n setTimer() {\r\n this.timer = window.setInterval(this.idle, this.duration * 1000)\r\n this.counter = window.setInterval(this.countdown, 1000)\r\n },\r\n clearTimer() {\r\n clearInterval(this.timer)\r\n clearInterval(this.counter)\r\n this.setDisplay()\r\n this.start = Date.now()\r\n this.diff = 0\r\n this.setTimer()\r\n },\r\n },\r\n render() {\r\n return h('div', { class: 'v-idle' }, this.display);\r\n },\r\n beforeUnmount() {\r\n clearInterval(this.timer)\r\n clearInterval(this.counter)\r\n for (let i = this.events.length - 1; i >= 0; i -= 1) {\r\n window.removeEventListener(this.events[i], this.clearTimer)\r\n }\r\n },\r\n});\r\n","import IIdleDirective from '@/directives/IIdleDirective';\r\n\r\n\r\nconst plugin = {\r\n install: (Vue) => {\r\n Vue.component('v-idle', IIdleDirective);\r\n }\r\n}\r\n\r\nIIdleDirective.install = plugin.install;\r\n\r\nexport default IIdleDirective;\r\n","function addStyles(win, styles) {\r\n styles.forEach((style) => {\r\n let link = win.document.createElement(\"link\");\r\n link.setAttribute(\"rel\", \"stylesheet\");\r\n link.setAttribute(\"type\", \"text/css\");\r\n link.setAttribute(\"href\", style);\r\n win.document.getElementsByTagName(\"head\")[0].appendChild(link);\r\n });\r\n}\r\n\r\nconst VueHtmlToPaper = {\r\n install(app, options = {}) {\r\n app.config.globalProperties.$htmlToPaper = (\r\n el,\r\n localOptions,\r\n cb = () => true\r\n ) => {\r\n let defaultName = \"_blank\",\r\n defaultSpecs = [\"fullscreen=yes\", \"titlebar=yes\", \"scrollbars=yes\"],\r\n defaultReplace = true,\r\n defaultStyles = [];\r\n let {\r\n name = defaultName,\r\n specs = defaultSpecs,\r\n replace = defaultReplace,\r\n styles = defaultStyles\r\n } = options;\r\n\r\n const hasOptions = !!localOptions;\r\n if (hasOptions) {\r\n if (localOptions.name) name = localOptions.name;\r\n if (localOptions.specs) specs = localOptions.specs;\r\n if (localOptions.replace) replace = localOptions.replace;\r\n if (localOptions.styles) styles = localOptions.styles;\r\n }\r\n\r\n specs = !specs.length ? specs.join(\",\") : \"\";\r\n\r\n const element = window.document.getElementById(el);\r\n\r\n if (!element) {\r\n alert(`Element to print #${el} not found!`);\r\n return;\r\n }\r\n\r\n const url = \"\";\r\n const win = window.open(url, name, specs, replace);\r\n\r\n win.document.write(`\r\n <html>\r\n <head>\r\n <title>${window.document.title}</title>\r\n </head>\r\n <body>\r\n ${element.innerHTML}\r\n </body>\r\n </html>\r\n `);\r\n\r\n addStyles(win, styles);\r\n\r\n setTimeout(() => {\r\n win.document.close();\r\n win.focus();\r\n win.print();\r\n win.close();\r\n cb();\r\n }, 1000);\r\n\r\n return true;\r\n };\r\n }\r\n};\r\n\r\nexport default VueHtmlToPaper;\r\n","import { createApp } from 'vue'\r\nimport VueLogger from 'vuejs3-logger';\r\nimport App from './App.vue';\r\nimport router from './router/Routes';\r\nimport store from './store';\r\nimport { fontAwesome, idle } from './global';\r\nimport VueNotificationList from '@dafcoe/vue-notification'\r\nimport VueHtmlToPaper from \"@/global/VueHtmlToPaper\";\r\n\r\nimport '@fortawesome/fontawesome-svg-core/styles.css';\r\nimport '@fortawesome/fontawesome-svg-core/index';\r\n\r\nconst isProduction = process.env.NODE_ENV === 'production';\r\n\r\nconst options = {\r\n isEnabled: true,\r\n logLevel: isProduction ? 'error' : 'debug',\r\n stringifyLevel: true,\r\n showMethodName: true,\r\n separator: '|',\r\n showConsoleColors: true\r\n};\r\n\r\nconst app = createApp(App);\r\napp.use(store);\r\napp.use(router);\r\napp.use(fontAwesome);\r\napp.use(idle);\r\napp.use(VueNotificationList);\r\napp.use(VueHtmlToPaper);\r\napp.mount('#app');\r\napp.use(VueLogger, options);\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./UserInfo.vue?vue&type=style&index=0&id=7037b99a&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./VerifyAccount.vue?vue&type=style&index=0&id=090d0fa8&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./TheHeader.vue?vue&type=style&index=0&id=7c49593a&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./PaymentBreakdown.vue?vue&type=style&index=0&id=56562e24&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./TheFooter.vue?vue&type=style&index=0&id=75fe7c02&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ResetVerify.vue?vue&type=style&index=0&id=19803fd8&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Receipt.vue?vue&type=style&index=0&id=6c106e4e&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./AutoPay.vue?vue&type=style&index=0&id=19b1cfce&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./PaymentSelection.vue?vue&type=style&index=0&id=5c9785ad&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ContractSelect.vue?vue&type=style&index=0&id=a5203e4e&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./StepNav.vue?vue&type=style&index=0&id=b908e56e&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ContractBreakdown.vue?vue&type=style&index=0&id=1ab2c5c3&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Checkbox.vue?vue&type=style&index=0&id=1a4ef7dc&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./CheckSelect.vue?vue&type=style&index=0&id=3fdd1405&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Confirmation.vue?vue&type=style&index=0&id=15d8100a&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./UnitGroup.vue?vue&type=style&index=0&id=1c59ad94&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./UnitBreakdown.vue?vue&type=style&index=0&id=317b2afc&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./CreateAccount.vue?vue&type=style&index=0&id=26c83da4&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Modal.vue?vue&type=style&index=0&id=f6d6a942&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ResetUsername.vue?vue&type=style&index=0&id=c1e64f4e&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./AutoPay.vue?vue&type=style&index=1&id=19b1cfce&scoped=true&lang=scss\""],"sourceRoot":""}