{"version":3,"sources":["webpack:///../../../src/components/VDialog/VDialog.ts","webpack:///../../../src/components/VToolbar/index.ts","webpack:///./src/components/base/pagehead.vue?5c27","webpack:///src/components/base/pagehead.vue","webpack:///./src/components/base/pagehead.vue?4f2c","webpack:///./src/components/base/pagehead.vue","webpack:///../../../src/components/VForm/VForm.ts","webpack:///../../../src/components/VTabs/VTab.ts","webpack:///./src/helpers/validations.js","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///../../../src/components/VWindow/VWindowItem.ts","webpack:///../../../src/components/VTabs/VTabItem.ts","webpack:///../../../src/mixins/rippleable/index.ts","webpack:///../../../src/mixins/selectable/index.ts","webpack:///../../../src/components/VSlideGroup/VSlideGroup.ts","webpack:///../../../src/components/VTabs/VTabsBar.ts","webpack:///../../../src/components/VWindow/VWindow.ts","webpack:///../../../src/components/VTabs/VTabsItems.ts","webpack:///../../../src/components/VTabs/VTabsSlider.ts","webpack:///../../../src/components/VTabs/VTabs.ts"],"names":["baseMixins","name","directives","ClickOutside","props","dark","disabled","fullscreen","light","maxWidth","type","String","default","noClickAnimation","origin","persistent","retainFocus","scrollable","transition","width","data","activatedBy","animate","animateTimeout","isActive","this","stackMinZIndex","previousActiveElement","computed","classes","contentClasses","hasActivator","Boolean","$slots","$scopedSlots","watch","created","$attrs","hasOwnProperty","beforeMount","beforeDestroy","window","unbind","methods","animateClick","closeConditional","target","e","_isDestroyed","$refs","content","contains","overlay","$el","activeZIndex","hideScroll","document","show","bind","onClickOutside","onKeydown","getOpenDependents","activator","onFocusin","getOpenDependentElements","some","el","focusable","querySelectorAll","genContent","showLazyContent","root","class","attrs","role","tabindex","on","keydown","style","zIndex","ref","genTransition","$createElement","appear","genInnerContent","value","handler","include","transformOrigin","undefined","render","h","staticClass","attach","VToolbarTitle","VToolbarItems","_vm","_h","_c","_self","color","doClose","_v","_e","_s","title","_t","staticRenderFns","$emit","component","VBtn","VCard","VCardTitle","VIcon","VToolbar","provide","form","inheritAttrs","lazyValidation","readonly","inputs","watchers","errorBag","errors","Object","deep","immediate","watchInput","watcher","input","val","_uid","valid","shouldValidate","validate","filter","reset","resetErrorBag","setTimeout","resetValidation","register","unregister","found","find","i","unwatch","novalidate","attrs$","submit","ripple","proxyClass","groupClasses","to","$router","resolve","mounted","click","href","indexOf","blur","tag","required","propertyType","customErrorMessage","v","length","packageCode","toUpperCase","substring","minLength","maxLength","emailFormat","regex","test","phoneFormat","onlyNumber","customerError","loginAccount","regexE","regexP","rePassword","oldpassword","min","parseInt","replace","console","log","isTouchDevice","navigator","maxTouchPoints","msMaxTouchPoints","autoGrow","noResize","rowHeight","Number","validator","isNaN","parseFloat","rows","noResizeHandle","lazyValue","$nextTick","calculateInputHeight","height","minHeight","Math","genInput","onInput","onKeyDown","isFocused","mixins","Touch","reverseTransition","inTransition","computedTransition","windowGroup","genDefaultSlot","genWindowItem","$listeners","onAfterTransition","transitionCount","onBeforeTransition","onTransitionCancelled","onEnter","beforeEnter","afterEnter","enterCancelled","beforeLeave","afterLeave","leaveCancelled","enter","VWindowItem","id","item","genRipple","center","model","prop","event","inputValue","falseValue","trueValue","multiple","label","hasColor","computedColor","isDark","isMultiple","Array","valueComparator","isDirty","rippleState","genLabel","VInput","prevent","domProps","checked","change","focus","onBlur","onClick","onChange","onFocus","BaseSlideGroup","Resize","activeClass","centerActive","nextIcon","prevIcon","showArrows","internalItemsLength","isOverflowing","resizeTimeout","startX","isSwipingHorizontal","isSwiping","scrollOffset","widths","wrapper","canTouch","__cachedNext","__cachedPrev","hasAffixes","isMobile","hasNext","hasPrev","internalValue","beforeUpdate","$children","updated","genNext","slot","next","key","genData","onResize","genIcon","icon","$vuetify","rtl","location","upperLocation","hasAffix","genPrev","prev","genWrapper","start","move","end","calculateNewOffset","sign","newAbosluteOffset","direction","onAffixClick","onTouchStart","onTouchMove","diffX","diffY","onTouchEnd","maxScrollOffset","overflowCheck","fn","scrollIntoView","items","lastItemPosition","wrapperPosition","selectedIndex","calculateCenteredOffset","selectedItem","calculateUpdatedOffset","clientWidth","selectedElement","offsetLeft","currentScrollOffset","totalWidth","itemOffset","additionalOffset","offsetCentered","scrollTo","setWidths","slideGroup","tabsBar","themeClasses","$route","callSlider","onRouteChange","newPath","oldPath","oldVal","hasNew","hasOld","continuous","mandatory","reverse","showArrowsOnHover","touch","touchless","vertical","changedByDelimiters","internalHeight","transitionHeight","isBooted","isReverse","axis","internalReverse","hasActiveItems","internalIndex","findIndex","updateReverse","genContainer","children","lang","t","large","genControlIcons","icons","getNextIndex","nextIndex","index","getPrevIndex","prevIndex","getValue","lastIndex","itemsLength","left","right","setBackgroundColor","alignWithTitle","backgroundColor","centered","fixedTabs","grow","hideSlider","iconsAndText","mobileBreakpoint","optional","sliderColor","sliderSize","slider","top","transitionTime","isReversed","sliderStyles","selectedItems","activeTab","scrollWidth","genBar","VTabsBar","genSlider","genItems","VTabsItems","VTabsSlider","clearTimeout","parseNodes","tab","vnode","modifiers","quiet"],"mappings":"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","file":"js/chunk-710803fc.b959d6a2.js","sourcesContent":["// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\nimport Toggleable from '../../mixins/toggleable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Activatable,\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Toggleable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n directives: { ClickOutside },\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: {\n type: [String, Number],\n default: 'none',\n },\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: {\n type: [String, Number],\n default: 'auto',\n },\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n isActive: !!this.value,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$scopedSlots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeDestroy () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.options.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.content.focus()\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n // It isn't the document or the dialog body\n ![document, this.$refs.content].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.content.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.content.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled')) as HTMLElement | undefined\n el && el.focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [\n this.$createElement('div', {\n class: this.contentClasses,\n attrs: {\n role: 'document',\n tabindex: this.isActive ? 0 : undefined,\n ...this.getScopeIdAttrs(),\n },\n on: { keydown: this.onKeydown },\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n appear: true,\n },\n }, [content])\n },\n genInnerContent () {\n const data: VNodeData = {\n class: this.classes,\n ref: 'dialog',\n directives: [\n {\n name: 'click-outside',\n value: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n },\n { name: 'show', value: this.isActive },\n ],\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: this.maxWidth === 'none' ? undefined : convertToUnit(this.maxWidth),\n width: this.width === 'auto' ? undefined : convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n attrs: { role: 'dialog' },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","// Components\nimport VToolbar from './VToolbar'\n\n// Utilities\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VToolbarTitle = createSimpleFunctional('v-toolbar__title')\nconst VToolbarItems = createSimpleFunctional('v-toolbar__items')\n\nexport {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n },\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-toolbar',{attrs:{\"color\":_vm.color||'primary',\"flat\":\"\"}},[(_vm.close)?[_c('v-btn',{attrs:{\"icon\":\"\",\"dark\":\"\"},on:{\"click\":_vm.doClose}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)]:_vm._e(),_c('v-toolbar-title',[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_vm._t(\"button\")],2),_c('v-card-title',[_vm._t(\"title\")],2),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n {{ title }}\n \n \n \n \n \n \n \n \n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pagehead.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pagehead.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pagehead.vue?vue&type=template&id=2739e866&\"\nimport script from \"./pagehead.vue?vue&type=script&lang=js&\"\nexport * from \"./pagehead.vue?vue&type=script&lang=js&\"\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 null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VBtn,VCard,VCardTitle,VIcon,VToolbar,VToolbarTitle})\n","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\n\ntype ErrorBag = Record\ntype VInputInstance = InstanceType\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.$set(this.errorBag, input._uid, val)\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input._uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i._uid === input._uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found._uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n this.$delete(this.errorBag, found._uid)\n },\n },\n\n render (h): VNode {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$,\n },\n on: {\n submit: (e: Event) => this.$emit('submit', e),\n },\n }, this.$slots.default)\n },\n})\n","// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Routable from '../../mixins/routable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport mixins from '../../util/mixins'\nimport { ExtractVue } from './../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\nconst baseMixins = mixins(\n Routable,\n // Must be after routable\n // to overwrite activeClass\n GroupableFactory('tabsBar'),\n Themeable\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend(\n /* @vue/component */\n).extend({\n name: 'v-tab',\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n data: () => ({\n proxyClass: 'v-tab--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-tab': true,\n ...Routable.options.computed.classes.call(this),\n 'v-tab--disabled': this.disabled,\n ...this.groupClasses,\n }\n },\n value (): any {\n let to = this.to || this.href || ''\n\n if (this.$router &&\n this.to === Object(this.to)\n ) {\n const resolve = this.$router.resolve(\n this.to,\n this.$route,\n this.append\n )\n\n to = resolve.href\n }\n\n return to.replace('#', '')\n },\n },\n\n mounted () {\n this.onRouteChange()\n },\n\n methods: {\n click (e: KeyboardEvent | MouseEvent): void {\n // If user provides an\n // actual link, do not\n // prevent default\n if (this.href &&\n this.href.indexOf('#') > -1\n ) e.preventDefault()\n\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n 'aria-selected': String(this.isActive),\n role: 'tab',\n tabindex: 0,\n }\n data.on = {\n ...data.on,\n keydown: (e: KeyboardEvent) => {\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n return h(tag, data, this.$slots.default)\n },\n})\n","/* eslint-disable */\n const required = (propertyType, customErrorMessage) => {\n return v => (v && v.length > 0) || customErrorMessage || `Bạn phải điền dữ liệu vào ${propertyType}`\n }\n const packageCode = (propertyType) => {\n return v => (v && v.length > 3 && v.toUpperCase().substring(0,2) === 'TE') || `${propertyType} không hợp lệ`\n }\n const minLength = (propertyType, minLength) => {\n return v => {\n if (!v) { return true }\n\n return v.length >= minLength || `${propertyType} phải ít nhất ${minLength} kí tự`\n }\n }\n const maxLength = (propertyType, maxLength) => {\n return v => v && v.length <= maxLength || `${propertyType} phải ít hơn ${maxLength} kí tự`\n }\n const emailFormat = () => {\n const regex = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,24})+$/\n return v => (v && regex.test(v)) || 'Thông tin email không hợp lệ !'\n }\n\n const phoneFormat = () => {\n const regex = /((09|03|07|08|05)+([0-9]{8})\\b)/g\n return v => (v && regex.test(v)) || 'Số điện thoại không hợp lệ !'\n }\n const onlyNumber = (propertyType, customerError) =>{\n const regex = /^\\d+$/;\n return v => (v && regex.test(v)) || customerError || `${propertyType} phải là số`\n }\n const loginAccount = () =>{\n const regexE = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,24})+$/\n const regexP = /((09|03|07|08|05)+([0-9]{8})\\b)/g\n return v => (v && (regexE.test(v) || regexP.test(v))) || 'Tài khoản không hợp lệ !'\n }\n const rePassword = (oldpassword) => {\n return v => v === oldpassword || 'Mật khẩu xác thực không trùng khớp với mật khẩu !'\n }\n const min = (val) => {\n const regex = /[.,\\s]/g;\n return v => (val) => {\n const data = parseInt(v.replace(regex, ''))\n console.log(data);\n return ( data >= val) || `Giá trị ${v} phải lớn hơn ${val}`\n } \n }\nconst isTouchDevice = () =>{\n return (('ontouchstart' in window) ||\n (navigator.maxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0));\n}\n export default {\n required,\n packageCode,\n minLength,\n maxLength,\n emailFormat,\n phoneFormat,\n rePassword,\n min,\n loginAccount,\n onlyNumber,\n isTouchDevice,\n }\n","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","// Components\nimport VWindow from './VWindow'\n\n// Mixins\nimport Bootable from '../../mixins/bootable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Bootable,\n GroupableFactory('windowGroup', 'v-window-item', 'v-window')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n windowGroup: InstanceType\n}\n\nexport default baseMixins.extend().extend(\n /* @vue/component */\n).extend({\n name: 'v-window-item',\n\n directives: {\n Touch,\n },\n\n props: {\n disabled: Boolean,\n reverseTransition: {\n type: [Boolean, String],\n default: undefined,\n },\n transition: {\n type: [Boolean, String],\n default: undefined,\n },\n value: {\n required: false,\n },\n },\n\n data () {\n return {\n isActive: false,\n inTransition: false,\n }\n },\n\n computed: {\n classes (): object {\n return this.groupClasses\n },\n computedTransition (): string | boolean {\n if (!this.windowGroup.internalReverse) {\n return typeof this.transition !== 'undefined'\n ? this.transition || ''\n : this.windowGroup.computedTransition\n }\n\n return typeof this.reverseTransition !== 'undefined'\n ? this.reverseTransition || ''\n : this.windowGroup.computedTransition\n },\n },\n\n methods: {\n genDefaultSlot () {\n return this.$slots.default\n },\n genWindowItem () {\n return this.$createElement('div', {\n staticClass: 'v-window-item',\n class: this.classes,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n on: this.$listeners,\n }, this.genDefaultSlot())\n },\n onAfterTransition () {\n if (!this.inTransition) {\n return\n }\n\n // Finalize transition state.\n this.inTransition = false\n if (this.windowGroup.transitionCount > 0) {\n this.windowGroup.transitionCount--\n\n // Remove container height if we are out of transition.\n if (this.windowGroup.transitionCount === 0) {\n this.windowGroup.transitionHeight = undefined\n }\n }\n },\n onBeforeTransition () {\n if (this.inTransition) {\n return\n }\n\n // Initialize transition state here.\n this.inTransition = true\n if (this.windowGroup.transitionCount === 0) {\n // Set initial height for height transition.\n this.windowGroup.transitionHeight = convertToUnit(this.windowGroup.$el.clientHeight)\n }\n this.windowGroup.transitionCount++\n },\n onTransitionCancelled () {\n this.onAfterTransition() // This should have the same path as normal transition end.\n },\n onEnter (el: HTMLElement) {\n if (!this.inTransition) {\n return\n }\n\n this.$nextTick(() => {\n // Do not set height if no transition or cancelled.\n if (!this.computedTransition || !this.inTransition) {\n return\n }\n\n // Set transition target height.\n this.windowGroup.transitionHeight = convertToUnit(el.clientHeight)\n })\n },\n },\n\n render (h): VNode {\n return h('transition', {\n props: {\n name: this.computedTransition,\n },\n on: {\n // Handlers for enter windows.\n beforeEnter: this.onBeforeTransition,\n afterEnter: this.onAfterTransition,\n enterCancelled: this.onTransitionCancelled,\n\n // Handlers for leave windows.\n beforeLeave: this.onBeforeTransition,\n afterLeave: this.onAfterTransition,\n leaveCancelled: this.onTransitionCancelled,\n\n // Enter handler for height transition.\n enter: this.onEnter,\n },\n }, this.showLazyContent(() => [this.genWindowItem()]))\n },\n})\n","// Extensions\nimport VWindowItem from '../VWindow/VWindowItem'\n\n/* @vue/component */\nexport default VWindowItem.extend({\n name: 'v-tab-item',\n\n props: {\n id: String,\n },\n\n methods: {\n genWindowItem () {\n const item = VWindowItem.options.methods.genWindowItem.call(this)\n\n item.data!.domProps = item.data!.domProps || {}\n item.data!.domProps.id = this.id || this.value\n\n return item\n },\n },\n})\n","// Directives\nimport ripple from '../../directives/ripple'\n\n// Types\nimport Vue, { VNode, VNodeData, VNodeDirective } from 'vue'\n\nexport default Vue.extend({\n name: 'rippleable',\n\n directives: { ripple },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n methods: {\n genRipple (data: VNodeData = {}): VNode | null {\n if (!this.ripple) return null\n\n data.staticClass = 'v-input--selection-controls__ripple'\n\n data.directives = data.directives || []\n data.directives.push({\n name: 'ripple',\n value: { center: true },\n } as VNodeDirective)\n\n return this.$createElement('div', data)\n },\n },\n})\n","// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n model: {\n prop: 'inputValue',\n event: 'change',\n },\n\n props: {\n id: String,\n inputValue: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.inputValue,\n lazyValue: this.inputValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n inputValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return label\n\n label!.data!.on = {\n // Label shouldn't cause the input to focus\n click: prevent,\n }\n\n return label\n },\n genInput (type: string, attrs: object) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive,\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown,\n click: prevent,\n },\n ref: 'input',\n })\n },\n onBlur () {\n this.isFocused = false\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus () {\n this.isFocused = true\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n","// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\n\ninterface TouchEvent {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nexport const BaseSlideGroup = mixins\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: v => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n internalItemsLength: 0,\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n isSwipingHorizontal: false,\n isSwiping: false,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n canTouch (): boolean {\n return typeof window !== 'undefined'\n },\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing || Math.abs(this.scrollOffset) > 0\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n this.$refs.content.style.transform = `translateX(${-val}px)`\n },\n },\n\n beforeUpdate () {\n this.internalItemsLength = (this.$children || []).length\n },\n\n updated () {\n if (this.internalItemsLength === (this.$children || []).length) return\n this.setWidths()\n },\n\n methods: {\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : this.$slots.next || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n }, this.$slots.default)\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : this.$slots.prev || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n if (!this.canTouch) return\n\n if (!this.isSwiping) {\n // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n const diffX = e.touchmoveX - e.touchstartX\n const diffY = e.touchmoveY - e.touchstartY\n this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY)\n this.isSwiping = true\n }\n\n if (this.isSwipingHorizontal) {\n // sliding horizontally\n this.scrollOffset = this.startX - e.touchmoveX\n // temporarily disable window vertical scrolling\n document.documentElement.style.overflowY = 'hidden'\n }\n },\n onTouchEnd () {\n if (!this.canTouch) return\n\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n\n this.isSwiping = false\n // rollback whole page scrolling to default\n document.documentElement.style.removeProperty('overflow-y')\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem && this.items.length) {\n const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect()\n const wrapperPosition = this.$refs.wrapper.getBoundingClientRect()\n\n if (\n (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right) ||\n (!this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left)\n ) {\n this.scrollTo('prev')\n }\n }\n\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = this.calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = this.calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n calculateUpdatedOffset (selectedElement: HTMLElement, widths: Widths, rtl: boolean, currentScrollOffset: number): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n },\n calculateCenteredOffset (selectedElement: HTMLElement, widths: Widths, rtl: boolean): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths /* istanbul ignore next */ () {\n window.requestAnimationFrame(() => {\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n // https://github.com/vuetifyjs/vuetify/issues/13212\n // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n // gets calculated wrongly by the browser if using a different zoom-level.\n this.isOverflowing = this.widths.wrapper + 1 < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n","// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Components\nimport VTab from './VTab'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { Route } from 'vue-router'\nimport { VNode } from 'vue'\n\ntype VTabInstance = InstanceType\n\nexport default mixins(\n BaseSlideGroup,\n SSRBootable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-tabs-bar',\n\n provide () {\n return {\n tabsBar: this,\n }\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-tabs-bar': true,\n 'v-tabs-bar--is-mobile': this.isMobile,\n // TODO: Remove this and move to v-slide-group\n 'v-tabs-bar--show-arrows': this.showArrows,\n ...this.themeClasses,\n }\n },\n },\n\n watch: {\n items: 'callSlider',\n internalValue: 'callSlider',\n $route: 'onRouteChange',\n },\n\n methods: {\n callSlider () {\n if (!this.isBooted) return\n\n this.$emit('call:slider')\n },\n genContent () {\n const render = BaseSlideGroup.options.methods.genContent.call(this)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-tabs-bar__content'\n\n return render\n },\n onRouteChange (val: Route, oldVal: Route) {\n /* istanbul ignore next */\n if (this.mandatory) return\n\n const items = this.items as unknown as VTabInstance[]\n const newPath = val.path\n const oldPath = oldVal.path\n\n let hasNew = false\n let hasOld = false\n\n for (const item of items) {\n if (item.to === newPath) hasNew = true\n else if (item.to === oldPath) hasOld = true\n\n if (hasNew && hasOld) break\n }\n\n // If we have an old item and not a new one\n // it's assumed that the user navigated to\n // a path that is not present in the items\n if (!hasNew && hasOld) this.internalValue = undefined\n },\n },\n\n render (h): VNode {\n const render = BaseSlideGroup.options.render.call(this, h)\n\n render.data!.attrs = {\n role: 'tablist',\n }\n\n return render\n },\n})\n","// Styles\nimport './VWindow.sass'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue/types/vnode'\nimport { PropType } from 'vue'\nimport { TouchHandlers } from 'vuetify/types'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-window',\n\n directives: { Touch },\n\n provide (): object {\n return {\n windowGroup: this,\n }\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-window-item--active',\n },\n continuous: Boolean,\n mandatory: {\n type: Boolean,\n default: true,\n },\n nextIcon: {\n type: [Boolean, String],\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String],\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: Boolean,\n showArrowsOnHover: Boolean,\n touch: Object as PropType,\n touchless: Boolean,\n value: {\n required: false,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n changedByDelimiters: false,\n internalHeight: undefined as undefined | string, // This can be fixed by child class.\n transitionHeight: undefined as undefined | string, // Intermediate height during transition.\n transitionCount: 0, // Number of windows in transition state.\n isBooted: false,\n isReverse: false,\n }\n },\n\n computed: {\n isActive (): boolean {\n return this.transitionCount > 0\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-window--show-arrows-on-hover': this.showArrowsOnHover,\n }\n },\n computedTransition (): string {\n if (!this.isBooted) return ''\n\n const axis = this.vertical ? 'y' : 'x'\n const reverse = this.internalReverse ? !this.isReverse : this.isReverse\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n },\n hasActiveItems (): boolean {\n return Boolean(\n this.items.find(item => !item.disabled)\n )\n },\n hasNext (): boolean {\n return this.continuous || this.internalIndex < this.items.length - 1\n },\n hasPrev (): boolean {\n return this.continuous || this.internalIndex > 0\n },\n internalIndex (): number {\n return this.items.findIndex((item, i) => {\n return this.internalValue === this.getValue(item, i)\n })\n },\n internalReverse (): boolean {\n return this.$vuetify.rtl ? !this.reverse : this.reverse\n },\n },\n\n watch: {\n internalIndex (val, oldVal) {\n this.isReverse = this.updateReverse(val, oldVal)\n },\n },\n\n mounted () {\n window.requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n genDefaultSlot () {\n return this.$slots.default\n },\n genContainer (): VNode {\n const children = [this.genDefaultSlot()]\n\n if (this.showArrows) {\n children.push(this.genControlIcons())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-window__container',\n class: {\n 'v-window__container--is-active': this.isActive,\n },\n style: {\n height: this.internalHeight || this.transitionHeight,\n },\n }, children)\n },\n genIcon (\n direction: 'prev' | 'next',\n icon: string,\n click: () => void\n ) {\n const on = {\n click: (e: Event) => {\n e.stopPropagation()\n this.changedByDelimiters = true\n click()\n },\n }\n const attrs = {\n 'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n }\n const children = this.$scopedSlots[direction]?.({\n on,\n attrs,\n }) ?? [this.$createElement(VBtn, {\n props: { icon: true },\n attrs,\n on,\n }, [\n this.$createElement(VIcon, {\n props: { large: true },\n }, icon),\n ])]\n\n return this.$createElement('div', {\n staticClass: `v-window__${direction}`,\n }, children)\n },\n genControlIcons () {\n const icons = []\n\n const prevIcon = this.$vuetify.rtl\n ? this.nextIcon\n : this.prevIcon\n\n /* istanbul ignore else */\n if (\n this.hasPrev &&\n prevIcon &&\n typeof prevIcon === 'string'\n ) {\n const icon = this.genIcon('prev', prevIcon, this.prev)\n icon && icons.push(icon)\n }\n\n const nextIcon = this.$vuetify.rtl\n ? this.prevIcon\n : this.nextIcon\n\n /* istanbul ignore else */\n if (\n this.hasNext &&\n nextIcon &&\n typeof nextIcon === 'string'\n ) {\n const icon = this.genIcon('next', nextIcon, this.next)\n icon && icons.push(icon)\n }\n\n return icons\n },\n getNextIndex (index: number): number {\n const nextIndex = (index + 1) % this.items.length\n const item = this.items[nextIndex]\n\n if (item.disabled) return this.getNextIndex(nextIndex)\n\n return nextIndex\n },\n getPrevIndex (index: number): number {\n const prevIndex = (index + this.items.length - 1) % this.items.length\n const item = this.items[prevIndex]\n\n if (item.disabled) return this.getPrevIndex(prevIndex)\n\n return prevIndex\n },\n next () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasNext) return\n\n const nextIndex = this.getNextIndex(this.internalIndex)\n const item = this.items[nextIndex]\n\n this.internalValue = this.getValue(item, nextIndex)\n },\n prev () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasPrev) return\n\n const lastIndex = this.getPrevIndex(this.internalIndex)\n const item = this.items[lastIndex]\n\n this.internalValue = this.getValue(item, lastIndex)\n },\n updateReverse (val: number, oldVal: number) {\n const itemsLength = this.items.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) return val < oldVal\n\n if (val === lastIndex && oldVal === 0) {\n return true\n } else if (val === 0 && oldVal === lastIndex) {\n return false\n } else {\n return val < oldVal\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-window',\n class: this.classes,\n directives: [] as VNodeDirective[],\n }\n\n if (!this.touchless) {\n const value = this.touch || {\n left: () => {\n this.$vuetify.rtl ? this.prev() : this.next()\n },\n right: () => {\n this.$vuetify.rtl ? this.next() : this.prev()\n },\n end: (e: TouchEvent) => {\n e.stopPropagation()\n },\n start: (e: TouchEvent) => {\n e.stopPropagation()\n },\n }\n\n data.directives.push({\n name: 'touch',\n value,\n })\n }\n\n return h('div', data, [this.genContainer()])\n },\n})\n","// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Types & Components\nimport { BaseItemGroup, GroupableInstance } from './../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default VWindow.extend({\n name: 'v-tabs-items',\n\n props: {\n mandatory: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.options.computed.classes.call(this),\n 'v-tabs-items': true,\n }\n },\n isDark (): boolean {\n return this.rootIsDark\n },\n },\n\n methods: {\n getValue (item: GroupableInstance, i: number) {\n return item.id || BaseItemGroup.options.methods.getValue.call(this, item, i)\n },\n },\n})\n","// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(Colorable).extend({\n name: 'v-tabs-slider',\n\n render (h): VNode {\n return h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-tabs-slider',\n }))\n },\n})\n","// Styles\nimport './VTabs.sass'\n\n// Components\nimport VTabsBar from './VTabsBar'\nimport VTabsItems from './VTabsItems'\nimport VTabsSlider from './VTabsSlider'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\nconst baseMixins = mixins(\n Colorable,\n Proxyable,\n Themeable\n)\n\ninterface options extends ExtractVue {\n $refs: {\n items: InstanceType\n }\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-tabs',\n\n directives: {\n Resize,\n },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n alignWithTitle: Boolean,\n backgroundColor: String,\n centerActive: Boolean,\n centered: Boolean,\n fixedTabs: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n iconsAndText: Boolean,\n mobileBreakpoint: [String, Number],\n nextIcon: {\n type: String,\n default: '$next',\n },\n optional: Boolean,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n right: Boolean,\n showArrows: [Boolean, String],\n sliderColor: String,\n sliderSize: {\n type: [Number, String],\n default: 2,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n resizeTimeout: 0,\n slider: {\n height: null as null | number,\n left: null as null | number,\n right: null as null | number,\n top: null as null | number,\n width: null as null | number,\n },\n transitionTime: 300,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-tabs--align-with-title': this.alignWithTitle,\n 'v-tabs--centered': this.centered,\n 'v-tabs--fixed-tabs': this.fixedTabs,\n 'v-tabs--grow': this.grow,\n 'v-tabs--icons-and-text': this.iconsAndText,\n 'v-tabs--right': this.right,\n 'v-tabs--vertical': this.vertical,\n ...this.themeClasses,\n }\n },\n isReversed (): boolean {\n return this.$vuetify.rtl && this.vertical\n },\n sliderStyles (): object {\n return {\n height: convertToUnit(this.slider.height),\n left: this.isReversed ? undefined : convertToUnit(this.slider.left),\n right: this.isReversed ? convertToUnit(this.slider.right) : undefined,\n top: this.vertical ? convertToUnit(this.slider.top) : undefined,\n transition: this.slider.left != null ? null : 'none',\n width: convertToUnit(this.slider.width),\n }\n },\n computedColor (): string {\n if (this.color) return this.color\n else if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n },\n\n watch: {\n alignWithTitle: 'callSlider',\n centered: 'callSlider',\n centerActive: 'callSlider',\n fixedTabs: 'callSlider',\n grow: 'callSlider',\n iconsAndText: 'callSlider',\n right: 'callSlider',\n showArrows: 'callSlider',\n vertical: 'callSlider',\n '$vuetify.application.left': 'onResize',\n '$vuetify.application.right': 'onResize',\n '$vuetify.rtl': 'onResize',\n },\n\n mounted () {\n this.$nextTick(() => {\n window.setTimeout(this.callSlider, 30)\n })\n },\n\n methods: {\n callSlider () {\n if (\n this.hideSlider ||\n !this.$refs.items ||\n !this.$refs.items.selectedItems.length\n ) {\n this.slider.width = 0\n return false\n }\n\n this.$nextTick(() => {\n // Give screen time to paint\n const activeTab = this.$refs.items.selectedItems[0]\n /* istanbul ignore if */\n if (!activeTab || !activeTab.$el) {\n this.slider.width = 0\n this.slider.left = 0\n return\n }\n const el = activeTab.$el as HTMLElement\n\n this.slider = {\n height: !this.vertical ? Number(this.sliderSize) : el.scrollHeight,\n left: this.vertical ? 0 : el.offsetLeft,\n right: this.vertical ? 0 : el.offsetLeft + el.offsetWidth,\n top: el.offsetTop,\n width: this.vertical ? Number(this.sliderSize) : el.scrollWidth,\n }\n })\n\n return true\n },\n genBar (items: VNode[], slider: VNode | null) {\n const data = {\n style: {\n height: convertToUnit(this.height),\n },\n props: {\n activeClass: this.activeClass,\n centerActive: this.centerActive,\n dark: this.dark,\n light: this.light,\n mandatory: !this.optional,\n mobileBreakpoint: this.mobileBreakpoint,\n nextIcon: this.nextIcon,\n prevIcon: this.prevIcon,\n showArrows: this.showArrows,\n value: this.internalValue,\n },\n on: {\n 'call:slider': this.callSlider,\n change: (val: any) => {\n this.internalValue = val\n },\n },\n ref: 'items',\n }\n\n this.setTextColor(this.computedColor, data)\n this.setBackgroundColor(this.backgroundColor, data)\n\n return this.$createElement(VTabsBar, data, [\n this.genSlider(slider),\n items,\n ])\n },\n genItems (items: VNode | null, item: VNode[]) {\n // If user provides items\n // opt to use theirs\n if (items) return items\n\n // If no tabs are provided\n // render nothing\n if (!item.length) return null\n\n return this.$createElement(VTabsItems, {\n props: {\n value: this.internalValue,\n },\n on: {\n change: (val: any) => {\n this.internalValue = val\n },\n },\n }, item)\n },\n genSlider (slider: VNode | null) {\n if (this.hideSlider) return null\n\n if (!slider) {\n slider = this.$createElement(VTabsSlider, {\n props: { color: this.sliderColor },\n })\n }\n\n return this.$createElement('div', {\n staticClass: 'v-tabs-slider-wrapper',\n style: this.sliderStyles,\n }, [slider])\n },\n onResize () {\n if (this._isDestroyed) return\n\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.callSlider, 0)\n },\n parseNodes () {\n let items = null\n let slider = null\n const item = []\n const tab = []\n const slot = this.$slots.default || []\n const length = slot.length\n\n for (let i = 0; i < length; i++) {\n const vnode = slot[i]\n\n if (vnode.componentOptions) {\n switch (vnode.componentOptions.Ctor.options.name) {\n case 'v-tabs-slider': slider = vnode\n break\n case 'v-tabs-items': items = vnode\n break\n case 'v-tab-item': item.push(vnode)\n break\n // case 'v-tab' - intentionally omitted\n default: tab.push(vnode)\n }\n } else {\n tab.push(vnode)\n }\n }\n\n /**\n * tab: array of `v-tab`\n * slider: single `v-tabs-slider`\n * items: single `v-tabs-items`\n * item: array of `v-tab-item`\n */\n return { tab, slider, items, item }\n },\n },\n\n render (h): VNode {\n const { tab, slider, items, item } = this.parseNodes()\n\n return h('div', {\n staticClass: 'v-tabs',\n class: this.classes,\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n }, [\n this.genBar(tab, slider),\n this.genItems(items, item),\n ])\n },\n})\n"],"sourceRoot":""}