{"version":3,"sources":["webpack:///../../../src/mixins/transitionable/index.ts","webpack:///../../../src/components/VAlert/VAlert.ts","webpack:///./src/components/VerificationForm.vue?48a2","webpack:///../../../src/components/VBtn/index.ts","webpack:///./src/components/VerificationForm.vue","webpack:///./src/components/VerificationForm.vue?5911","webpack:///./src/components/VerificationForm.vue?f637","webpack:///./src/components/VerificationForm.vue?e5d4"],"names":["Vue","extend","name","props","mode","String","origin","transition","mixins","VSheet","Toggleable","Transitionable","border","type","validator","val","includes","closeLabel","default","coloredBorder","Boolean","dense","dismissible","closeIcon","icon","outlined","prominent","text","value","computed","__cachedBorder","this","data","staticClass","class","setBackgroundColor","computedColor","$createElement","__cachedDismissible","color","iconColor","VBtn","small","attrs","$vuetify","lang","t","on","click","isActive","VIcon","__cachedIcon","computedIcon","classes","options","call","hasColoredIcon","hasText","undefined","isDark","Themeable","created","$attrs","hasOwnProperty","breaking","methods","genWrapper","children","$slots","prepend","genContent","append","$scopedSlots","close","toggle","genAlert","role","listeners$","style","styles","directives","setColor","setTextColor","render","h","ref","_vm","addStrictLengthRule","emailVerificationCode","callback","expression","smsVerificationCode","statusResendingCodes","_c","staticRenderFns","loading","hasEmailBlurred","hasSmsBlurred","emailVerificationCodeRules","v","test","length","smsVerificationCodeRules","isResendingCodes","isResendingEmailCode","$store","dispatch","ActionTypes","resetVerificationCodes","resetValidationCodeErrors","watch","replace","isFormValid","_this$$refs","_form$validate","form","$refs","verificationForm","validate","getPhoneNumber","_this$$store$getters$","getters","getContext","onboarding","phoneNumber","getEmail","_this$$store$getters$2","email","getStoreCodeValidationResponse","_this$$store$getters$3","validationCodeErrors","inputName","strictRule","push","updateFormValidity","validateEmailVerification","validatedCodesResponse","_validatedCodesRespon","errors","EmailVerificationCode","setVerificationFormValidity","validateSmsVerification","_validatedCodesRespon2","SmsVerificationCode","isValid","validatedSteps","setValidatedSteps","verificationCodes","setVerificationCodes","updateOnboardingSupplements","onboardingSupplements","setOnboardingSupplementInfo","requestNewCodes","getTime","date","Date","getHours","toString","padStart","getMinutes","component"],"mappings":"wMAEeA,SAAIC,OAAO,CACxBC,KAAM,iBAENC,MAAO,CACLC,KAAMC,OACNC,OAAQD,OACRE,WAAYF,U,wBCgBDG,sBACbC,OACAC,OACAC,GACAV,OAAO,CACPC,KAAM,UAENC,MAAO,CACLS,OAAQ,CACNC,KAAMR,OACNS,UAAWC,GACT,MAAO,CACL,MACA,QACA,SACA,QACAC,SAASD,KAGfE,WAAY,CACVJ,KAAMR,OACNa,QAAS,kBAEXC,cAAeC,QACfC,MAAOD,QACPE,YAAaF,QACbG,UAAW,CACTV,KAAMR,OACNa,QAAS,WAEXM,KAAM,CACJN,QAAS,GACTL,KAAM,CAACO,QAASf,QAChBS,UAAWC,GACT,MAAsB,kBAARA,IAA4B,IAARA,IAGtCU,SAAUL,QACVM,UAAWN,QACXO,KAAMP,QACNP,KAAM,CACJA,KAAMR,OACNS,UAAWC,GACT,MAAO,CACL,OACA,QACA,UACA,WACAC,SAASD,KAGfa,MAAO,CACLf,KAAMO,QACNF,SAAS,IAIbW,SAAU,CACRC,iBACE,IAAKC,KAAKnB,OAAQ,OAAO,KAEzB,IAAIoB,EAAkB,CACpBC,YAAa,kBACbC,MAAO,CACL,CAAC,oBAAoBH,KAAKnB,SAAW,IASzC,OALImB,KAAKZ,gBACPa,EAAOD,KAAKI,mBAAmBJ,KAAKK,cAAeJ,GACnDA,EAAKE,MAAM,+BAAgC,GAGtCH,KAAKM,eAAe,MAAOL,IAEpCM,sBACE,IAAKP,KAAKT,YAAa,OAAO,KAE9B,MAAMiB,EAAQR,KAAKS,UAEnB,OAAOT,KAAKM,eAAeI,OAAM,CAC/BR,YAAa,uBACb9B,MAAO,CACLoC,QACAf,MAAM,EACNkB,OAAO,GAETC,MAAO,CACL,aAAcZ,KAAKa,SAASC,KAAKC,EAAEf,KAAKd,aAE1C8B,GAAI,CACFC,MAAOA,IAAOjB,KAAKkB,UAAW,IAE/B,CACDlB,KAAKM,eAAea,OAAO,CACzB/C,MAAO,CAAEoC,UACRR,KAAKR,cAGZ4B,eACE,OAAKpB,KAAKqB,aAEHrB,KAAKM,eAAea,OAAO,CAChCjB,YAAa,gBACb9B,MAAO,CAAEoC,MAAOR,KAAKS,YACpBT,KAAKqB,cALuB,MAOjCC,UACE,MAAMA,EAAmC,IACpC5C,OAAO6C,QAAQzB,SAASwB,QAAQE,KAAKxB,MACxC,kBAAmBX,QAAQW,KAAKnB,QAChC,iBAAkBmB,KAAKV,MACvB,oBAAqBU,KAAKN,SAC1B,qBAAsBM,KAAKL,UAC3B,gBAAiBK,KAAKJ,MAOxB,OAJII,KAAKnB,SACPyC,EAAQ,mBAAmBtB,KAAKnB,SAAY,GAGvCyC,GAETjB,gBACE,OAAOL,KAAKQ,OAASR,KAAKlB,MAE5BuC,eACE,OAAkB,IAAdrB,KAAKP,OACgB,kBAAdO,KAAKP,MAAqBO,KAAKP,KAAaO,KAAKP,OACvD,CAAC,QAAS,OAAQ,UAAW,WAAWR,SAASe,KAAKlB,OAEpD,IAAIkB,KAAKlB,OAElB2C,iBACE,OACEzB,KAAK0B,SACJrC,QAAQW,KAAKnB,SAAWmB,KAAKZ,eAGlCsC,UACE,OAAO1B,KAAKJ,MAAQI,KAAKN,UAE3Be,YACE,OAAOT,KAAKyB,eAAiBzB,KAAKK,mBAAgBsB,GAEpDC,SACE,SACE5B,KAAKlB,MACJkB,KAAKZ,eACLY,KAAKN,WAGDmC,OAAUN,QAAQzB,SAAS8B,OAAOJ,KAAKxB,QAIlD8B,UAEM9B,KAAK+B,OAAOC,eAAe,YAC7BC,eAAS,UAAW,WAAYjC,OAIpCkC,QAAS,CACPC,aACE,MAAMC,EAAW,CACfpC,KAAKqC,OAAOC,SAAWtC,KAAKoB,aAC5BpB,KAAKuC,aACLvC,KAAKD,eACLC,KAAKqC,OAAOG,OACZxC,KAAKyC,aAAaC,MACd1C,KAAKyC,aAAaC,MAAM,CAAEC,OAAQ3C,KAAK2C,SACvC3C,KAAKO,qBAGLN,EAAkB,CACtBC,YAAa,oBAGf,OAAOF,KAAKM,eAAe,MAAOL,EAAMmC,IAE1CG,aACE,OAAOvC,KAAKM,eAAe,MAAO,CAChCJ,YAAa,oBACZF,KAAKqC,OAAOlD,UAEjByD,WACE,IAAI3C,EAAkB,CACpBC,YAAa,UACbU,MAAO,CACLiC,KAAM,SAER7B,GAAIhB,KAAK8C,WACT3C,MAAOH,KAAKsB,QACZyB,MAAO/C,KAAKgD,OACZC,WAAY,CAAC,CACX9E,KAAM,OACN0B,MAAOG,KAAKkB,YAIhB,IAAKlB,KAAKZ,cAAe,CACvB,MAAM8D,EAAWlD,KAAK0B,QAAU1B,KAAKmD,aAAenD,KAAKI,mBACzDH,EAAOiD,EAASlD,KAAKK,cAAeJ,GAGtC,OAAOD,KAAKM,eAAe,MAAOL,EAAM,CAACD,KAAKmC,gBAGhDQ,SACE3C,KAAKkB,UAAYlB,KAAKkB,WAI1BkC,OAAQC,GACN,MAAMD,EAASpD,KAAK4C,WAEpB,OAAK5C,KAAKxB,WAEH6E,EAAE,aAAc,CACrBjF,MAAO,CACLD,KAAM6B,KAAKxB,WACXD,OAAQyB,KAAKzB,OACbF,KAAM2B,KAAK3B,OAEZ,CAAC+E,IARyBA,M,6DCjPjC,W,yDCAA,gBAGe1C,e,6FCH8F4C,EAAI,W,IAAmBpD,OAA6D,EAAK,QAAM,GAACA,EAAY,kBAAe,OAAM,SAAK,CAACA,uBAAmB,YAAS,kDAAiDoD,GAAI,OAAoB1C,YAAM,iB,CAAC,Q,YAAyB,Q,CAAI,KAAM,8BAAG,U,IAAC,oB,MAAU,CAAmE,UAAQ,GAAqC,SAAW,GAAsG,QAAa,QAAG,YAAC,qDAAC,MAAO,qC,MAAwB2C,EAAIC,2BAA2B,OAAC,uEAAC,I,GAA0B,CAA+B,KAAC,YAAC,OAAQ,sBAAgB,UAAmC,kBAAE,+BAAQ3D,MAAO0D,SAAIE,GAAuBC,OAAQ,EAAC,0B,MAAsFC,CAAkC,8BAAI,SAAO,SAAM,GAACzD,wBAAY,gCAA2BA,WAAY,4BAAmE,GAAC,SAAkBU,YAAM,iB,CAAC,Q,YAAyB,Q,CAAI,KAAM,6BAAG,U,IAAC,kB,MAAU,CAA8D,UAAQ,GAAkC,SAAW,GAAkG,QAAY,QAAG,YAAC,gDAAC,MAAO,kC,MAAwB2C,EAAIC,yBAAyB,OAAC,qEAAC,G,GAA0B,CAA+B,KAAC,YAAC,OAAQ,sBAAgB,QAAmC,kBAAE,+BAAQ3D,MAAO0D,SAAIK,GAAqBF,OAAQ,EAAC,0B,MAAoFC,CAAgC,4BAAKJ,SAAIM,YAA4CjD,EAAM,oDAAY,WAAW,yBAAoB,MAAP,uBAAO,UAAS,OAAIkD,MAAQ,GAA2blD,SAAM,GAAC,KAAO,GAAI,iB,CAAwB,OAAO,4YAAO,OAAIkD,MAAQ,GAAsT,SAAC,GAAC,KAAO,G,KAAkB,UAAqC,2SAAE,GAAEP,CAAiFrD,MAAW,SAAO,GAACU,OAAM,+BAAqC,4DAAG,YAAU,OAC14F,OACGmD,cAAkB,GAEtB,MAAe,a,2DCEA9F,aAAIC,OAAO,CACtBC,KAAM,mBACN8B,OAYI,MAAO,CACH+D,SAAS,EACTP,sBAAuB,GACvBG,oBAAqB,GACrBK,iBAAiB,EACjBC,eAAe,EACfC,2BAA4B,CAC3BC,KAAYA,GAAK,+BACjBA,GAAU,QAAQC,KAAKD,IAAM,6CAC7BA,GAAUA,EAAEE,QAAU,IAAM,yCAE7BC,yBAA0B,CACzBH,KAAYA,GAAK,+BACjBA,GAAU,QAAQC,KAAKD,IAAM,6CAC7BA,GAAUA,EAAEE,QAAU,GAAK,yCAE5BE,kBAAkB,EAClBC,sBAAsB,EACtBZ,qBAAsB,OAG9B,sBAEU7D,KAAK0E,OAAOC,SAASC,OAAYC,8BACjC7E,KAAK0E,OAAOC,SAASC,OAAYE,4BAE3CC,MAAO,CACHtB,sBAAuBzE,GACnBgB,KAAKyD,sBAAwBzE,EAAIgG,QAAQ,SAAU,KAEvDpB,oBAAqB5E,GACjBgB,KAAK4D,oBAAsB5E,EAAIgG,QAAQ,SAAU,MAGzDlF,SAAU,CACNmF,cAAW,IAAAC,EAAAC,EACP,IAAIC,EAEJ,OADAA,EAAW,OAAJpF,WAAI,IAAJA,MAAW,QAAPkF,EAAJlF,KAAMqF,aAAK,IAAAH,OAAA,EAAXA,EAAaI,iBACE,QAAtBH,EAAOC,EAAKG,kBAAU,IAAAJ,MAE1BK,iBAAc,IAAAC,EACV,OAA4D,QAA5DA,EAAOzF,KAAK0E,OAAOgB,QAAQC,WAAWC,WAAWC,mBAAW,IAAAJ,IAAI,IAEpEK,WAAQ,IAAAC,EACJ,OAAsD,QAAtDA,EAAO/F,KAAK0E,OAAOgB,QAAQC,WAAWC,WAAWI,aAAK,IAAAD,IAAI,IAE9DE,iCAA8B,IAAAC,EAC1B,OAA0D,QAA1DA,EAAOlG,KAAK0E,OAAOgB,QAAQC,WAAWQ,4BAAoB,IAAAD,OAGlEhE,QAAS,CAOL,0BAA0BkE,GAEtB,GAAiB,UAAdA,GAA0BpG,KAAKiE,iBAK5B,GAAiB,QAAdmC,IAAwBpG,KAAKkE,cAAc,CAChD,MAAMmC,EAAcjC,GAAuB,IAAbA,EAAEE,QAAgB,wCAChDtE,KAAKuE,yBAAyB+B,KAAKD,QAPW,CAC9C,MAAMA,EAAcjC,GAAuB,KAAbA,EAAEE,QAAiB,yCACjDtE,KAAKiE,iBAAkB,EACvBjE,KAAKmE,2BAA2BmC,KAAKD,GAMzCrG,KAAKuG,sBAOTC,0BAA0BC,GAAgE,IAAAC,EACtF,OAAGD,GAAgD,OAAtBA,QAAsB,IAAtBA,GAA8B,QAARC,EAAtBD,EAAwBE,cAAM,IAAAD,GAA9BA,EAAgCE,uBACzD5G,KAAK6G,6BAA4B,GAC1B,CAAC,gHAEL,EAAC,IAOZC,wBAAwBL,GAAgE,IAAAM,EACpF,OAAGN,GAAgD,OAAtBA,QAAsB,IAAtBA,GAA8B,QAARM,EAAtBN,EAAwBE,cAAM,IAAAI,GAA9BA,EAAgCC,qBACzDhH,KAAK6G,6BAA4B,GAC1B,CAAC,4HAEL,EAAC,IAKZ,oCACU7G,KAAK0E,OAAOC,SAASC,OAAYE,4BAM3C,kCAAkCmC,GAC9B,IAAIC,QAAuClH,KAAK0E,OAAOgB,QAAQC,WAAWuB,eAC1EA,EAAe5B,iBAAmB2B,QAC5BjH,KAAK0E,OAAOC,SAASC,OAAYuC,kBAAmBD,IAQ9D,2BACI,IAAIA,EAAiBlH,KAAK0E,OAAOgB,QAAQC,WAAWuB,eAEpD,GAAGlH,KAAKiF,YAAY,CAChB,MAAMmC,EAAuC,CACzC3D,sBAAuBzD,KAAKyD,sBAC5BG,oBAAqB5D,KAAK4D,2BAExB5D,KAAK0E,OAAOC,SAASC,OAAYyC,qBAAsBD,SAEvDpH,KAAKsH,4BAA4BF,GACvCF,EAAe5B,kBAAmB,QAC5BtF,KAAK6G,6BAA4B,QAEvCK,EAAe5B,kBAAmB,QAC5BtF,KAAK6G,6BAA4B,IAO/C,kCAAkCO,GAC9B,IAAIG,QAAqDvH,KAAK0E,OAAOgB,QAAQC,WAAW4B,sBACxFA,EAAsB9D,sBAAwB2D,EAAkB3D,sBAChE8D,EAAsB3D,oBAAsBwD,EAAkBxD,oBAC9D5D,KAAK0E,OAAOC,SAASC,OAAY4C,4BAA6BD,IAKlE,gCACIvH,KAAKwE,kBAAmB,EAExBxE,KAAK6D,2BAA6B7D,KAAK0E,OAAOC,SAASC,OAAY6C,iBAEnEzH,KAAKwE,kBAAmB,GAM5BkD,UACI,MAAMC,EAAO,IAAIC,KACjB,OAAOD,EAAKE,WAAWC,WAAWC,SAAS,EAAG,KAAK,IAAIJ,EAAKK,aAAaF,WAAWC,SAAS,EAAG,SCnL+R,I,wBCQvYE,EAAY,eACd,EACA,EACAlE,GACA,EACA,KACA,WACA,MAIa,aAAAkE,E","file":"js/chunk-73039b06.173eff44.js","sourcesContent":["import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'transitionable',\n\n props: {\n mode: String,\n origin: String,\n transition: String,\n },\n})\n","// Styles\nimport './VAlert.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Toggleable from '../../mixins/toggleable'\nimport Themeable from '../../mixins/themeable'\nimport Transitionable from '../../mixins/transitionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNodeData } from 'vue'\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Toggleable,\n Transitionable\n).extend({\n name: 'v-alert',\n\n props: {\n border: {\n type: String,\n validator (val: string) {\n return [\n 'top',\n 'right',\n 'bottom',\n 'left',\n ].includes(val)\n },\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n coloredBorder: Boolean,\n dense: Boolean,\n dismissible: Boolean,\n closeIcon: {\n type: String,\n default: '$cancel',\n },\n icon: {\n default: '',\n type: [Boolean, String],\n validator (val: boolean | string) {\n return typeof val === 'string' || val === false\n },\n },\n outlined: Boolean,\n prominent: Boolean,\n text: Boolean,\n type: {\n type: String,\n validator (val: string) {\n return [\n 'info',\n 'error',\n 'success',\n 'warning',\n ].includes(val)\n },\n },\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n computed: {\n __cachedBorder (): VNode | null {\n if (!this.border) return null\n\n let data: VNodeData = {\n staticClass: 'v-alert__border',\n class: {\n [`v-alert__border--${this.border}`]: true,\n },\n }\n\n if (this.coloredBorder) {\n data = this.setBackgroundColor(this.computedColor, data)\n data.class['v-alert__border--has-color'] = true\n }\n\n return this.$createElement('div', data)\n },\n __cachedDismissible (): VNode | null {\n if (!this.dismissible) return null\n\n const color = this.iconColor\n\n return this.$createElement(VBtn, {\n staticClass: 'v-alert__dismissible',\n props: {\n color,\n icon: true,\n small: true,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: () => (this.isActive = false),\n },\n }, [\n this.$createElement(VIcon, {\n props: { color },\n }, this.closeIcon),\n ])\n },\n __cachedIcon (): VNode | null {\n if (!this.computedIcon) return null\n\n return this.$createElement(VIcon, {\n staticClass: 'v-alert__icon',\n props: { color: this.iconColor },\n }, this.computedIcon)\n },\n classes (): object {\n const classes: Record = {\n ...VSheet.options.computed.classes.call(this),\n 'v-alert--border': Boolean(this.border),\n 'v-alert--dense': this.dense,\n 'v-alert--outlined': this.outlined,\n 'v-alert--prominent': this.prominent,\n 'v-alert--text': this.text,\n }\n\n if (this.border) {\n classes[`v-alert--border-${this.border}`] = true\n }\n\n return classes\n },\n computedColor (): string {\n return this.color || this.type\n },\n computedIcon (): string | boolean {\n if (this.icon === false) return false\n if (typeof this.icon === 'string' && this.icon) return this.icon\n if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false\n\n return `$${this.type}`\n },\n hasColoredIcon (): boolean {\n return (\n this.hasText ||\n (Boolean(this.border) && this.coloredBorder)\n )\n },\n hasText (): boolean {\n return this.text || this.outlined\n },\n iconColor (): string | undefined {\n return this.hasColoredIcon ? this.computedColor : undefined\n },\n isDark (): boolean {\n if (\n this.type &&\n !this.coloredBorder &&\n !this.outlined\n ) return true\n\n return Themeable.options.computed.isDark.call(this)\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('outline')) {\n breaking('outline', 'outlined', this)\n }\n },\n\n methods: {\n genWrapper (): VNode {\n const children = [\n this.$slots.prepend || this.__cachedIcon,\n this.genContent(),\n this.__cachedBorder,\n this.$slots.append,\n this.$scopedSlots.close\n ? this.$scopedSlots.close({ toggle: this.toggle })\n : this.__cachedDismissible,\n ]\n\n const data: VNodeData = {\n staticClass: 'v-alert__wrapper',\n }\n\n return this.$createElement('div', data, children)\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-alert__content',\n }, this.$slots.default)\n },\n genAlert (): VNode {\n let data: VNodeData = {\n staticClass: 'v-alert',\n attrs: {\n role: 'alert',\n },\n on: this.listeners$,\n class: this.classes,\n style: this.styles,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }\n\n if (!this.coloredBorder) {\n const setColor = this.hasText ? this.setTextColor : this.setBackgroundColor\n data = setColor(this.computedColor, data)\n }\n\n return this.$createElement('div', data, [this.genWrapper()])\n },\n /** @public */\n toggle () {\n this.isActive = !this.isActive\n },\n },\n\n render (h): VNode {\n const render = this.genAlert()\n\n if (!this.transition) return render\n\n return h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode,\n },\n }, [render])\n },\n})\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VerificationForm.vue?vue&type=style&index=0&id=c59c5f64&prod&scoped=true&lang=css&\"","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"verificationForm\",staticClass:\"stepper-form d-flex justify-center flex-column\"},[_c('div',{staticClass:\"input-wrapper\"},[_c('h3',{staticClass:\"mb-1\"},[_vm._v(\"E-post verifiseringskode\")]),_c('v-text-field',{ref:\"emailVerification\",attrs:{\"clearable\":\"\",\"outlined\":\"\",\"solo\":\"\",\"flat\":\"\",\"placeholder\":\"Skriv inn verifiseringskoden du mottok på e-posten\",\"label\":\"Verfiseringskode mottatt på e-post\",\"rules\":_vm.emailVerificationCodeRules.concat(_vm.validateEmailVerification(_vm.getStoreCodeValidationResponse)),\"counter\":12},on:{\"blur\":function($event){return _vm.addStrictLengthRule('email')},\"input\":function($event){return _vm.updateFormValidity()},\"focus\":function($event){return _vm.resetValidationErrors()}},model:{value:(_vm.emailVerificationCode),callback:function ($$v) {_vm.emailVerificationCode=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"emailVerificationCode\"}})],1),_c('div',{staticClass:\"input-wrapper\"},[_c('h3',{staticClass:\"my-2\"},[_vm._v(\"Mobil verifiseringskode\")]),_c('v-text-field',{ref:\"smsVerification\",attrs:{\"clearable\":\"\",\"outlined\":\"\",\"solo\":\"\",\"flat\":\"\",\"placeholder\":\"Skriv inn verifiseringskoden du mottok på SMS\",\"label\":\"Verfiseringskode mottatt på SMS\",\"rules\":_vm.smsVerificationCodeRules.concat(_vm.validateSmsVerification(_vm.getStoreCodeValidationResponse)),\"counter\":6},on:{\"blur\":function($event){return _vm.addStrictLengthRule('sms')},\"input\":function($event){return _vm.updateFormValidity()},\"focus\":function($event){return _vm.resetValidationErrors()}},model:{value:(_vm.smsVerificationCode),callback:function ($$v) {_vm.smsVerificationCode=(typeof $$v === 'string'? $$v.trim(): $$v)},expression:\"smsVerificationCode\"}}),(_vm.statusResendingCodes === 202)?_c('v-alert',{attrs:{\"dense\":\"\",\"outlined\":\"\",\"text\":\"\",\"type\":\"success\"}},[_c('h3',[_vm._v(\"Nye verifiseringskoder sendt på SMS og E-post\")]),_c('p',[_vm._v(\"[\"+_vm._s(_vm.getTime())+\"] - Vi har sendt ny verifiseringskoder til \"),_c('b',[_vm._v(_vm._s(_vm.getEmail))]),_vm._v(\" og \"),_c('b',[_vm._v(_vm._s(_vm.getPhoneNumber))])]),_c('p',[_c('b',[_vm._v(\"NB!\")]),_vm._v(\" Du må bruke de nye kodene du fikk tilsendt for begge feltene.\")])]):(_vm.statusResendingCodes !== null && _vm.statusResendingCodes !== 202)?_c('v-alert',{attrs:{\"dense\":\"\",\"outlined\":\"\",\"text\":\"\",\"type\":\"error\"}},[_c('h3',[_vm._v(\"Noe gikk galt\")]),_c('p',[_vm._v(\"[\"+_vm._s(_vm.getTime())+\"] - Noe gikk galt når vi prøvde å sende deg nye verifiseringskoder. Prøv å trykke på \\\"Send meg nye koder.\\\" igjen, eller last inn siden på nytt.\")])]):_vm._e(),_c('div',[_vm._v(\" Fikk du ikke kodene? (Husk å sjekke søppelpost) \"),_c('a',{on:{\"click\":function($event){return _vm.resendVerificationCodes()}}},[_vm._v(\"Send meg nye koder.\")]),(_vm.isResendingCodes)?_c('v-progress-circular',{staticClass:\"ml-4\",attrs:{\"indeterminate\":\"\",\"color\":\"#5b961c\"}}):_vm._e()],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nconst InvitationLinkInfo = () => import(\"@/components/InvitationLinkInfo.vue\");\n\nimport Vue from \"vue\";\nimport { OnboardingSupplements, ValidatedSteps, ValidateVerificationCodesResponse, VerificationCodes } from \"@/types/data\";\nimport { ActionTypes } from \"@/enums/vuex\";\nexport default Vue.extend({\n name: \"VerificationForm\",\n data(): {\n loading: boolean\n emailVerificationCode: string\n smsVerificationCode: string\n hasEmailBlurred: boolean\n hasSmsBlurred: boolean\n emailVerificationCodeRules: any\n smsVerificationCodeRules: any\n isResendingCodes: boolean\n isResendingEmailCode: boolean\n statusResendingCodes: number | null // 202 = Accepted\n } {\n return {\n loading: false,\n emailVerificationCode: \"\",\n smsVerificationCode: \"\",\n hasEmailBlurred: false,\n hasSmsBlurred: false,\n emailVerificationCodeRules: [\n (v:any) => !!v || 'Verifiseringskoden må oppgis',\n (v:any) => /^\\d*$/.test(v) || 'Verifiseringskoden skal bare bestå av tall',\n (v:any) => v.length <= 12 || 'Verifiseringskoden skal være 6 siffer',\n ],\n smsVerificationCodeRules: [\n (v:any) => !!v || 'Verifiseringskoden må oppgis',\n (v:any) => /^\\d*$/.test(v) || 'Verifiseringskoden skal bare bestå av tall',\n (v:any) => v.length <= 6 || 'Verifiseringskoden skal være 6 siffer',\n ],\n isResendingCodes: false,\n isResendingEmailCode: false,\n statusResendingCodes: null,\n }\n },\n async mounted() {\n // Reset verifcationCodes in store\n await this.$store.dispatch(ActionTypes.resetVerificationCodes)\n await this.$store.dispatch(ActionTypes.resetValidationCodeErrors)\n },\n watch: {\n emailVerificationCode (val) {\n this.emailVerificationCode = val.replace(/[\\s/]/g, '');\n },\n smsVerificationCode (val) {\n this.smsVerificationCode = val.replace(/[\\s/]/g, '');\n },\n },\n computed: {\n isFormValid(): boolean {\n let form: any\n form = this?.$refs?.verificationForm\n return form.validate() ?? false\n },\n getPhoneNumber(): string{\n return this.$store.getters.getContext.onboarding.phoneNumber ?? \"\"\n },\n getEmail(): string{\n return this.$store.getters.getContext.onboarding.email ?? \"\"\n },\n getStoreCodeValidationResponse(): ValidateVerificationCodesResponse {\n return this.$store.getters.getContext.validationCodeErrors ?? false\n }\n },\n methods: {\n /**\n * Adds a strict length rule to the pre-defined ruleset for email or sms validation. \n * Is excluded from default ruleset from the start as \"length\" of the input will not have to validated until \n * the user either types too many characters or, the element is blured. Only adds the rule, the first time the input is blurred.\n * @param inputName name to target which ruleset should add the strict length rule. \"email\" | \"sms\"\n */\n async addStrictLengthRule(inputName: string) {\n \n if(inputName === 'email' && !this.hasEmailBlurred){\n const strictRule = (v:any) => v.length === 12 || 'Verifiseringskoden skal være 12 siffer'\n this.hasEmailBlurred = true\n this.emailVerificationCodeRules.push(strictRule)\n\n }else if(inputName === 'sms' && !this.hasSmsBlurred){\n const strictRule = (v:any) => v.length === 6 || 'Verifiseringskoden skal være 6 siffer'\n this.smsVerificationCodeRules.push(strictRule)\n }\n this.updateFormValidity()\n },\n /**\n * Checks if there are errors in the email verification code. Based on the response from the validation endpoint \n * @param validatedCodesResponse The response to check for errors\n * @returns string[] | boolean[] - containing the validation error description string, [true] if Email Code is valid / there are no errors\n */\n validateEmailVerification(validatedCodesResponse: ValidateVerificationCodesResponse | null): string[] | boolean[]{\n if(validatedCodesResponse && validatedCodesResponse?.errors?.EmailVerificationCode ){\n this.setVerificationFormValidity(false)\n return ['E-post verifiseringskoden er ikke gyldig, dobbeltsjekk at den ble skrevet inn korrekt. \"Send meg nye koder\"']\n }\n return [true]\n },\n /**\n * Checks if there are errors in the SMS verification code. Based on the response from the validation endpoint \n * @param validatedCodesResponse The response to check for errors\n * @returns string[] containing the validation error description string, boolean[] [true] if SMS code is valid / there are no errors\n */\n validateSmsVerification(validatedCodesResponse: ValidateVerificationCodesResponse | null): string[] | boolean[] {\n if(validatedCodesResponse && validatedCodesResponse?.errors?.SmsVerificationCode ){\n this.setVerificationFormValidity(false)\n return ['SMS verifiseringskoden er ikke gyldig, dobbeltsjekk at den ble skrevet inn korrekt. Eller trykk på \"Send meg nye koder\"']\n }\n return [true]\n },\n /**\n * Resets the ValidationCodeErrors object to null in the vuex store\n */\n async resetValidationErrors(){\n await this.$store.dispatch(ActionTypes.resetValidationCodeErrors)\n },\n /**\n * Updates the validatedSteps object in the vuex store. By setting the validatedSteps.verificationForm = isValid\n * @param isValid boolean - the value to set validatedSteps.verificationForm \n */\n async setVerificationFormValidity(isValid: boolean){\n let validatedSteps: ValidatedSteps = await this.$store.getters.getContext.validatedSteps\n validatedSteps.verificationForm = isValid\n await this.$store.dispatch(ActionTypes.setValidatedSteps, validatedSteps)\n },\n /**\n * Updates the validatedSteps: ValidatedSteps object in the store, by setting the value of validatedSteps.verificationForm to true or false based on the form validity\n * If the form is valid the verificationCodes: VerificationCodes object in the store is also updated\n * By updating the validatedSteps we disable or enable the \"Next\" button\n * @return void\n */\n async updateFormValidity(){\n let validatedSteps = this.$store.getters.getContext.validatedSteps\n\n if(this.isFormValid){\n const verificationCodes: VerificationCodes = {\n emailVerificationCode: this.emailVerificationCode,\n smsVerificationCode: this.smsVerificationCode\n }\n await this.$store.dispatch(ActionTypes.setVerificationCodes, verificationCodes)\n \n await this.updateOnboardingSupplements(verificationCodes)\n validatedSteps.verificationForm = true\n await this.setVerificationFormValidity(true)\n }else{\n validatedSteps.verificationForm = false\n await this.setVerificationFormValidity(false)\n }\n },\n /**\n * Updates the onboardingSupplements object in the store, with the inputed verification codes.\n * @param verificationCodes VerificationCodes - the verification codes which should be stored in onboardingSupplements\n */\n async updateOnboardingSupplements(verificationCodes: VerificationCodes){\n let onboardingSupplements: OnboardingSupplements = await this.$store.getters.getContext.onboardingSupplements\n onboardingSupplements.emailVerificationCode = verificationCodes.emailVerificationCode\n onboardingSupplements.smsVerificationCode = verificationCodes.smsVerificationCode\n this.$store.dispatch(ActionTypes.setOnboardingSupplementInfo, onboardingSupplements)\n },\n /**\n * Resends a verificationcode\n */\n async resendVerificationCodes() {\n this.isResendingCodes = true\n \n this.statusResendingCodes = await this.$store.dispatch(ActionTypes.requestNewCodes)\n \n this.isResendingCodes = false \n },\n /**\n * Returns a string with the current time. \n * @returns string - the time now in the format [hh:ss]\n */\n getTime(): string{\n const date = new Date()\n return date.getHours().toString().padStart(2, '0')+':'+date.getMinutes().toString().padStart(2, '0')\n }\n }\n});\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VerificationForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VerificationForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VerificationForm.vue?vue&type=template&id=c59c5f64&scoped=true&\"\nimport script from \"./VerificationForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./VerificationForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./VerificationForm.vue?vue&type=style&index=0&id=c59c5f64&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c59c5f64\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}