{"version":3,"sources":["webpack:///../../../src/components/transitions/createTransition.ts","webpack:///../../../src/components/transitions/expand-transition.ts","webpack:///../../../src/components/transitions/index.ts","webpack:///../../../src/components/VSheet/index.ts","webpack:///../../../src/components/VOverlay/VOverlay.ts","webpack:///../../../src/components/VOverlay/index.ts","webpack:///../../../src/components/VProgressCircular/index.ts","webpack:///../../../src/components/VToolbar/index.ts","webpack:///../../../src/components/VProgressLinear/VProgressLinear.ts","webpack:///../../../src/components/VProgressLinear/index.ts","webpack:///../../../src/components/VThemeProvider/VThemeProvider.ts","webpack:///../../../src/components/VProgressCircular/VProgressCircular.ts","webpack:///../../../src/components/VItemGroup/VItemGroup.ts","webpack:///../../../src/components/VTabs/VTab.ts","webpack:///../../../src/components/VToolbar/VToolbar.ts","webpack:///../../../src/components/VResponsive/VResponsive.ts","webpack:///../../../src/components/VResponsive/index.ts","webpack:///../../../src/components/VTextField/VTextField.ts","webpack:///../../../src/components/VSheet/VSheet.ts","webpack:///../../../src/components/VSwitch/VSwitch.ts","webpack:///../../../src/components/VMenu/VMenu.ts","webpack:///../../../src/components/VMenu/index.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///../../../src/components/VSubheader/index.ts","webpack:///../../../src/components/VList/VListItem.ts","webpack:///../../../src/components/VList/VListItemAction.ts","webpack:///../../../src/components/VList/VList.ts","webpack:///../../../src/components/VList/VListItemIcon.ts","webpack:///../../../src/components/VList/VListGroup.ts","webpack:///../../../src/components/VList/VListItemGroup.ts","webpack:///../../../src/components/VList/index.ts","webpack:///../../../src/components/VList/VListItemAvatar.ts","webpack:///../../../src/components/VSelect/VSelectList.ts","webpack:///../../../src/components/VSelect/VSelect.ts","webpack:///../../../src/components/VSlider/VSlider.ts","webpack:///../../../src/components/VLabel/VLabel.ts","webpack:///../../../src/components/VLabel/index.ts","webpack:///../../../src/components/VMessages/VMessages.ts","webpack:///../../../src/components/VMessages/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":["mergeTransitions","dest","Array","origin","name","functional","props","group","type","default","hideOnLeave","leaveAbsolute","mode","render","tag","context","data","on","beforeEnter","el","h","mergeData","functions","expandedParentClass","x","sizeProperty","offsetProperty","transition","overflow","enter","initialStyle","offset","requestAnimationFrame","afterEnter","enterCancelled","leave","afterLeave","leaveCancelled","resetStyles","size","VFabTransition","createSimpleTransition","VFadeTransition","VScaleTransition","VSlideXTransition","VExpandTransition","createJavascriptTransition","VExpandXTransition","mixins","absolute","color","dark","opacity","Number","value","zIndex","computed","__scrim","this","setBackgroundColor","staticClass","style","computedOpacity","$createElement","classes","themeClasses","isActive","styles","methods","genContent","$slots","children","class","VToolbarTitle","VToolbarItems","baseMixins","active","backgroundColor","backgroundOpacity","bufferValue","height","indeterminate","query","reverse","rounded","stream","striped","internalLazyValue","__cachedBackground","backgroundStyle","__cachedBar","__cachedBarType","__cachedBuffer","__cachedDeterminate","width","__cachedIndeterminate","genProgressBar","__cachedStream","setTextColor","parseFloat","isReversed","normalizedBuffer","computedTransition","$vuetify","rtl","normalize","normalizedValue","reactive","Boolean","$listeners","slot","genListeners","listeners","onClick","$el","e","attrs","role","undefined","bottom","top","root","isDark","node","button","rotate","radius","calculatedSize","circumference","Math","strokeDashArray","strokeDashOffset","strokeWidth","svgStyles","transform","viewBoxSize","genCircle","fill","cx","cy","r","genSvg","xmlns","viewBox","genInfo","BaseItemGroup","activeClass","mandatory","max","multiple","items","selectedIndex","selectedItem","indexOf","selectedItems","filter","selectedValues","internalValue","toggleMethod","v","watch","created","genData","getValue","item","i","register","index","push","unregister","valueIndex","updateInternalValue","updateItem","updateItemsState","updateMultiple","updateSingle","updateMandatory","defaultValue","val","isSame","provide","itemGroup","ripple","proxyClass","groupClasses","to","$router","Object","resolve","mounted","click","href","blur","String","tabindex","keydown","collapse","dense","extended","extensionHeight","flat","floating","prominent","short","src","isExtended","computedHeight","parseInt","isCollapsed","isNaN","computedContentHeight","isProminent","breakpoint","breakingProps","original","replacement","genBackground","image","$scopedSlots","img","genExtension","aspectRatio","computedAspectRatio","aspectStyle","paddingBottom","__cachedSizer","onVisible","dirtyTypes","directives","resize","inheritAttrs","appendOuterIcon","autofocus","clearable","clearIcon","counter","counterValue","filled","fullWidth","label","outlined","placeholder","prefix","prependInnerIcon","shaped","singleLine","solo","soloInverted","suffix","badInput","labelWidth","prefixWidth","prependWidth","initialValue","isBooted","isClearing","computedColor","computedCounterValue","hasCounter","hasDetails","get","set","isDirty","isEnclosed","isLabelActive","isSingle","isSolo","labelPosition","labelValue","left","right","showLabel","hasLabel","isFocused","$attrs","hasOwnProperty","focus","window","clearableCallback","$refs","input","genAppendSlot","genIcon","genSlot","genPrependInnerSlot","genIconSlot","genInputSlot","prepend","genClearIcon","disabled","genCounter","attrs$","light","genControl","genDefaultSlot","genFieldset","genLabel","focused","for","genLegend","span","domProps","innerHTML","genInput","lazyValue","id","readonly","onKeyDown","ref","modifiers","quiet","onResize","genMessages","messagesNode","counterNode","genTextFieldSlot","genAffix","onBlur","$nextTick","onFocus","document","$emit","onInput","target","onMouseDown","onMouseUp","setLabelWidth","scrollWidth","setPrefixWidth","setPrependWidth","tryAutofocus","updateValue","roundedClasses","listeners$","Touch","inset","loading","validationState","hasError","hasColor","switchData","genSwitch","genRipple","onSwipeRight","genProgress","progress","onSwipeLeft","onChange","onKeydown","ClickOutside","Resize","isInMenu","theme","auto","closeOnClick","closeOnContentClick","disableKeys","maxHeight","offsetX","offsetY","openOnClick","openOnHover","calculatedTopAuto","defaultOffset","hasJustFocused","listIndex","resizeTimeout","tiles","activeTile","calculatedLeft","menuWidth","dimensions","content","calcXOverflow","calcLeft","calculatedMaxHeight","calculatedMaxWidth","calculatedMinWidth","minWidth","activator","pageWidth","calculatedTop","calcYOverflow","hasClickableTiles","find","tile","maxWidth","transformOrigin","activeZIndex","isContentActive","next","prev","classList","remove","activate","calcScrollPosition","maxScrollTop","calcLeftAuto","calcTopAuto","tileDistanceFromMenuTop","firstTileOffsetTop","computedTop","changeListIndex","closeConditional","contains","genActivatorAttributes","attributes","genActivatorListeners","genTransition","genDirectives","handler","include","options","menuable__content__active","contentClass","getTiles","querySelectorAll","mouseEnterHandler","mouseLeaveHandler","nextTile","prevTile","setTimeout","clearTimeout","attach","arg","showLazyContent","Ripple","inject","isInGroup","isInList","isInNav","listItemGroup","inactive","link","selectable","threeLine","twoLine","isClickable","genAttrs","toggle","filteredChild","VNode","VSheet","list","expand","nav","subheader","groups","findIndex","g","splice","listClick","appendIcon","noAction","prependIcon","subGroup","$route","matchRoute","beforeDestroy","VIcon","genAppendIcon","icon","VListItemIcon","genHeader","inputValue","genItems","genPrependIcon","onRouteChange","_uid","VListItemContent","VAvatar","horizontal","VListItemTitle","action","hideSelected","itemDisabled","itemText","itemValue","noDataText","noFilter","searchInput","parsedItems","map","tileActiveClass","staticNoDataTile","mousedown","genTileContent","genAction","VListItemAction","VSimpleCheckbox","genDivider","VDivider","genFilteredText","text","getMaskedCharacters","end","start","genHighlight","middle","genTile","hasItem","getDisabled","length","parent","scopedSlot","needsTile","getText","itemsLength","defaultMenuProps","cacheItems","chips","deletableChips","disableLookup","eager","itemColor","menuProps","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","keyboardLookupPrefix","keyboardLookupLastTime","allItems","filterDuplicates","concat","computedItems","computedOwns","dynamicHeight","hasChips","hasSlot","listData","scopeId","$vnode","lang","t","select","selectItem","scopedSlots","staticList","console","VSelectList","virtualizedItems","$_menuProps","slice","menuCanShow","normalisedProps","split","acc","p","nudgeBottom","immediate","activateMenu","getContent","uniqueValues","arr","findExistingIndex","menu","genChipSelection","isDisabled","VChip","close","small","key","JSON","genCommaSelection","last","selections","VInput","autocomplete","keypress","onKeyPress","genHiddenInput","genList","genListWithSlot","slots","slotName","genMenu","scroll","onScroll","genSelections","genSelection","genSlotSelection","selection","selected","isInteractive","getMenuIndex","onChipInput","setValue","isAppendInner","onEscDown","KEYBOARD_LOOKUP_THRESHOLD","now","performance","isReadonly","keyCode","onUpDown","onTabDown","onSpaceDown","onMenuActiveChange","hasMouseDown","showMoreItems","scrollHeight","scrollTop","setMenuIndex","setSelectedItems","values","oldValue","appendInner","inverseLabel","min","step","thumbColor","thumbLabel","validator","thumbSize","tickLabels","ticks","tickSize","trackColor","trackFillColor","vertical","app","keyPressed","noClick","roundValue","trackTransition","minValue","maxValue","stepNumeric","inputWidth","trackFillStyles","startDir","endDir","valueDir","trackStyles","showTicks","numTicks","showThumbLabel","computedTrackColor","computedTrackFillColor","computedThumbColor","parsed","beforeMount","slider","genSlider","onSliderClick","genChildren","genThumbContainer","genTrackContainer","genSteps","range","direction","offsetDirection","thumbLabelContent","genThumbLabelContent","genThumbLabel","getThumbContainerStyles","keyup","touchstart","onDrag","genThumb","onThumbMouseDown","mouseUpOptions","passive","capture","mouseMoveOptions","onSliderMouseUp","onMouseMove","parseMouseMove","parseKeyDown","onKeyUp","thumb","track","trackLength","clickOffset","clickPos","isInsideTrack","trackStart","up","pageup","pagedown","home","down","includes","steps","increase","multiplier","trimmedStep","toString","decimals","newValue","ctx","position","genMessage","message","BaseSlideGroup","centerActive","nextIcon","prevIcon","showArrows","internalItemsLength","isOverflowing","startX","scrollOffset","widths","wrapper","__cachedNext","__cachedPrev","hasAffixes","isMobile","hasNext","hasPrev","beforeUpdate","$children","updated","genNext","location","upperLocation","hasAffix","genPrev","genWrapper","move","calculateNewOffset","sign","newAbosluteOffset","onAffixClick","onTouchStart","onTouchMove","onTouchEnd","maxScrollOffset","overflowCheck","fn","scrollIntoView","calculateCenteredOffset","calculateUpdatedOffset","clientWidth","selectedElement","offsetLeft","currentScrollOffset","totalWidth","itemOffset","additionalOffset","offsetCentered","scrollTo","setWidths","slideGroup","tabsBar","callSlider","newPath","oldPath","oldVal","hasNew","hasOld","windowGroup","continuous","showArrowsOnHover","touch","touchless","required","changedByDelimiters","internalHeight","transitionHeight","transitionCount","isReverse","axis","hasActiveItems","internalIndex","internalReverse","genContainer","VBtn","large","genControlIcons","icons","getNextIndex","nextIndex","getPrevIndex","prevIndex","lastIndex","updateReverse","alignWithTitle","centered","fixedTabs","grow","hideSlider","iconsAndText","mobileBreakpoint","optional","sliderColor","sliderSize","transitionTime","sliderStyles","activeTab","genBar","change","VTabsBar","VTabsItems","VTabsSlider","parseNodes","tab","vnode"],"mappings":"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","file":"js/chunk-vendors~793fb972.8b0f50d9.js","sourcesContent":["import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => (el.style.position = 'absolute'))\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => (el.style.display = 'none'))\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n","import { upperFirst } from '../../util/helpers'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = `offset${upperFirst(sizeProperty)}` as 'offsetHeight' | 'offsetWidth'\n\n return {\n beforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n enter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n afterEnter: resetStyles,\n enterCancelled: resetStyles,\n\n leave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n afterLeave,\n leaveCancelled: afterLeave,\n }\n\n function afterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","import {\n createSimpleTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VCarouselTransition = createSimpleTransition('carousel-transition')\nexport const VCarouselReverseTransition = createSimpleTransition('carousel-reverse-transition')\nexport const VTabTransition = createSimpleTransition('tab-transition')\nexport const VTabReverseTransition = createSimpleTransition('tab-reverse-transition')\nexport const VMenuTransition = createSimpleTransition('menu-transition')\nexport const VFabTransition = createSimpleTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogTransition = createSimpleTransition('dialog-transition')\nexport const VDialogBottomTransition = createSimpleTransition('dialog-bottom-transition')\nexport const VFadeTransition = createSimpleTransition('fade-transition')\nexport const VScaleTransition = createSimpleTransition('scale-transition')\nexport const VScrollXTransition = createSimpleTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createSimpleTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createSimpleTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createSimpleTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport default {\n $_vuetify_subcomponents: {\n VCarouselTransition,\n VCarouselReverseTransition,\n VDialogTransition,\n VDialogBottomTransition,\n VFabTransition,\n VFadeTransition,\n VMenuTransition,\n VScaleTransition,\n VScrollXTransition,\n VScrollXReverseTransition,\n VScrollYTransition,\n VScrollYReverseTransition,\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n VTabReverseTransition,\n VTabTransition,\n VExpandTransition,\n VExpandXTransition,\n },\n}\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","// Styles\nimport './VOverlay.sass'\n\n// Mixins\nimport Colorable from './../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from './../../mixins/toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Themeable,\n Toggleable\n).extend({\n name: 'v-overlay',\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: '#212121',\n },\n dark: {\n type: Boolean,\n default: true,\n },\n opacity: {\n type: [Number, String],\n default: 0.46,\n },\n value: {\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 5,\n },\n },\n\n computed: {\n __scrim (): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-overlay__scrim',\n style: {\n opacity: this.computedOpacity,\n },\n })\n\n return this.$createElement('div', data)\n },\n classes (): object {\n return {\n 'v-overlay--absolute': this.absolute,\n 'v-overlay--active': this.isActive,\n ...this.themeClasses,\n }\n },\n computedOpacity (): number {\n return Number(this.isActive ? this.opacity : 0)\n },\n styles (): object {\n return {\n zIndex: this.zIndex,\n }\n },\n },\n\n methods: {\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-overlay__content',\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n const children = [this.__scrim]\n\n if (this.isActive) children.push(this.genContent())\n\n return h('div', {\n staticClass: 'v-overlay',\n class: this.classes,\n style: this.styles,\n }, children)\n },\n})\n","import VOverlay from './VOverlay'\n\nexport { VOverlay }\n\nexport default VOverlay\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\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","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(this.normalizedBuffer - this.normalizedValue, '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\n","// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default Themeable.extend({\n name: 'v-theme-provider',\n\n props: { root: Boolean },\n\n computed: {\n isDark (): boolean {\n return this.root\n ? this.rootIsDark\n : Themeable.options.computed.isDark.call(this)\n },\n },\n\n render (): VNode {\n /* istanbul ignore next */\n return (\n this.$slots.default! &&\n this.$slots.default!.find(node => !node.isComment && node.text !== ' ')!\n )\n },\n})\n","// Styles\nimport './VProgressCircular.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Groupable from '../../mixins/groupable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue/types'\n\nexport type GroupableInstance = InstanceType & {\n id?: string\n to?: any\n value?: any\n }\n\nexport const BaseItemGroup = mixins(\n Proxyable,\n Themeable\n).extend({\n name: 'base-item-group',\n\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active',\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null,\n },\n multiple: Boolean,\n },\n\n data () {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n items: [] as GroupableInstance[],\n }\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-item-group': true,\n ...this.themeClasses,\n }\n },\n selectedIndex (): number {\n return (this.selectedItem && this.items.indexOf(this.selectedItem)) || -1\n },\n selectedItem (): GroupableInstance | undefined {\n if (this.multiple) return undefined\n\n return this.selectedItems[0]\n },\n selectedItems (): GroupableInstance[] {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index))\n })\n },\n selectedValues (): any[] {\n if (this.internalValue == null) return []\n\n return Array.isArray(this.internalValue)\n ? this.internalValue\n : [this.internalValue]\n },\n toggleMethod (): (v: any) => boolean {\n if (!this.multiple) {\n return (v: any) => this.internalValue === v\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.includes(v)\n }\n\n return () => false\n },\n },\n\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState',\n },\n\n created () {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this)\n }\n },\n\n methods: {\n\n genData (): object {\n return {\n class: this.classes,\n }\n },\n getValue (item: GroupableInstance, i: number): unknown {\n return item.value == null || item.value === ''\n ? i\n : item.value\n },\n onClick (item: GroupableInstance) {\n this.updateInternalValue(\n this.getValue(item, this.items.indexOf(item))\n )\n },\n register (item: GroupableInstance) {\n const index = this.items.push(item) - 1\n\n item.$on('change', () => this.onClick(item))\n\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory()\n }\n\n this.updateItem(item, index)\n },\n unregister (item: GroupableInstance) {\n if (this._isDestroyed) return\n\n const index = this.items.indexOf(item)\n const value = this.getValue(item, index)\n\n this.items.splice(index, 1)\n\n const valueIndex = this.selectedValues.indexOf(value)\n\n // Items is not selected, do nothing\n if (valueIndex < 0) return\n\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value)\n }\n\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value)\n } else {\n this.internalValue = undefined\n }\n\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true)\n }\n },\n updateItem (item: GroupableInstance, index: number) {\n const value = this.getValue(item, index)\n\n item.isActive = this.toggleMethod(value)\n },\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState () {\n this.$nextTick(() => {\n if (this.mandatory &&\n !this.selectedItems.length\n ) {\n return this.updateMandatory()\n }\n\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem)\n })\n },\n updateInternalValue (value: any) {\n this.multiple\n ? this.updateMultiple(value)\n : this.updateSingle(value)\n },\n updateMandatory (last?: boolean) {\n if (!this.items.length) return\n\n const items = this.items.slice()\n\n if (last) items.reverse()\n\n const item = items.find(item => !item.disabled)\n\n // If no tabs are available\n // aborts mandatory value\n if (!item) return\n\n const index = this.items.indexOf(item)\n\n this.updateInternalValue(\n this.getValue(item, index)\n )\n },\n updateMultiple (value: any) {\n const defaultValue = Array.isArray(this.internalValue)\n ? this.internalValue\n : []\n const internalValue = defaultValue.slice()\n const index = internalValue.findIndex(val => val === value)\n\n if (\n this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1\n ) return\n\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max\n ) return\n\n index > -1\n ? internalValue.splice(index, 1)\n : internalValue.push(value)\n\n this.internalValue = internalValue\n },\n updateSingle (value: any) {\n const isSame = value === this.internalValue\n\n if (this.mandatory && isSame) return\n\n this.internalValue = isSame ? undefined : value\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), this.$slots.default)\n },\n})\n\nexport default BaseItemGroup.extend({\n name: 'v-item-group',\n\n provide (): object {\n return {\n itemGroup: this,\n }\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","// Styles\nimport './VToolbar.sass'\n\n// Extensions\nimport VSheet from '../VSheet/VSheet'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\n/* @vue/component */\nexport default VSheet.extend({\n name: 'v-toolbar',\n\n props: {\n absolute: Boolean,\n bottom: Boolean,\n collapse: Boolean,\n dense: Boolean,\n extended: Boolean,\n extensionHeight: {\n default: 48,\n type: [Number, String],\n },\n flat: Boolean,\n floating: Boolean,\n prominent: Boolean,\n short: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n tag: {\n type: String,\n default: 'header',\n },\n },\n\n data: () => ({\n isExtended: false,\n }),\n\n computed: {\n computedHeight (): number {\n const height = this.computedContentHeight\n\n if (!this.isExtended) return height\n\n const extensionHeight = parseInt(this.extensionHeight)\n\n return this.isCollapsed\n ? height\n : height + (!isNaN(extensionHeight) ? extensionHeight : 0)\n },\n computedContentHeight (): number {\n if (this.height) return parseInt(this.height)\n if (this.isProminent && this.dense) return 96\n if (this.isProminent && this.short) return 112\n if (this.isProminent) return 128\n if (this.dense) return 48\n if (this.short || this.$vuetify.breakpoint.smAndDown) return 56\n return 64\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-toolbar': true,\n 'v-toolbar--absolute': this.absolute,\n 'v-toolbar--bottom': this.bottom,\n 'v-toolbar--collapse': this.collapse,\n 'v-toolbar--collapsed': this.isCollapsed,\n 'v-toolbar--dense': this.dense,\n 'v-toolbar--extended': this.isExtended,\n 'v-toolbar--flat': this.flat,\n 'v-toolbar--floating': this.floating,\n 'v-toolbar--prominent': this.isProminent,\n }\n },\n isCollapsed (): boolean {\n return this.collapse\n },\n isProminent (): boolean {\n return this.prominent\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n height: convertToUnit(this.computedHeight),\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['app', ''],\n ['manual-scroll', ''],\n ['clipped-left', ''],\n ['clipped-right', ''],\n ['inverted-scroll', ''],\n ['scroll-off-screen', ''],\n ['scroll-target', ''],\n ['scroll-threshold', ''],\n ['card', ''],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n genBackground () {\n const props = {\n height: convertToUnit(this.computedHeight),\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img({ props })\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-toolbar__image',\n }, [image])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__content',\n style: {\n height: convertToUnit(this.computedContentHeight),\n },\n }, getSlot(this))\n },\n genExtension () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__extension',\n style: {\n height: convertToUnit(this.extensionHeight),\n },\n }, getSlot(this, 'extension'))\n },\n },\n\n render (h): VNode {\n this.isExtended = this.extended || !!this.$scopedSlots.extension\n\n const children = [this.genContent()]\n const data = this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n })\n\n if (this.isExtended) children.push(this.genExtension())\n if (this.src || this.$scopedSlots.img) children.unshift(this.genBackground())\n\n return h(this.tag, data, children)\n },\n})\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VTextField.sass'\n\n// Extensions\nimport VInput from '../VInput'\n\n// Components\nimport VCounter from '../VCounter'\nimport VLabel from '../VLabel'\n\n// Mixins\nimport Intersectable from '../../mixins/intersectable'\nimport Loadable from '../../mixins/loadable'\nimport Validatable from '../../mixins/validatable'\n\n// Directives\nimport resize from '../../directives/resize'\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { convertToUnit, keyCodes } from '../../util/helpers'\nimport { breaking, consoleWarn } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType } from 'vue/types'\n\nconst baseMixins = mixins(\n VInput,\n Intersectable({\n onVisible: [\n 'onResize',\n 'tryAutofocus',\n ],\n }),\n Loadable,\n)\ninterface options extends InstanceType {\n $refs: {\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\nconst dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-text-field',\n\n directives: {\n resize,\n ripple,\n },\n\n inheritAttrs: false,\n\n props: {\n appendOuterIcon: String,\n autofocus: Boolean,\n clearable: Boolean,\n clearIcon: {\n type: String,\n default: '$clear',\n },\n counter: [Boolean, Number, String],\n counterValue: Function as PropType<(value: any) => number>,\n filled: Boolean,\n flat: Boolean,\n fullWidth: Boolean,\n label: String,\n outlined: Boolean,\n placeholder: String,\n prefix: String,\n prependInnerIcon: String,\n reverse: Boolean,\n rounded: Boolean,\n shaped: Boolean,\n singleLine: Boolean,\n solo: Boolean,\n soloInverted: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n },\n\n data: () => ({\n badInput: false,\n labelWidth: 0,\n prefixWidth: 0,\n prependWidth: 0,\n initialValue: null,\n isBooted: false,\n isClearing: false,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-text-field': true,\n 'v-text-field--full-width': this.fullWidth,\n 'v-text-field--prefix': this.prefix,\n 'v-text-field--single-line': this.isSingle,\n 'v-text-field--solo': this.isSolo,\n 'v-text-field--solo-inverted': this.soloInverted,\n 'v-text-field--solo-flat': this.flat,\n 'v-text-field--filled': this.filled,\n 'v-text-field--is-booted': this.isBooted,\n 'v-text-field--enclosed': this.isEnclosed,\n 'v-text-field--reverse': this.reverse,\n 'v-text-field--outlined': this.outlined,\n 'v-text-field--placeholder': this.placeholder,\n 'v-text-field--rounded': this.rounded,\n 'v-text-field--shaped': this.shaped,\n }\n },\n computedColor (): string | undefined {\n const computedColor = Validatable.options.computed.computedColor.call(this)\n\n if (!this.soloInverted || !this.isFocused) return computedColor\n\n return this.color || 'primary'\n },\n computedCounterValue (): number {\n if (typeof this.counterValue === 'function') {\n return this.counterValue(this.internalValue)\n }\n return [...(this.internalValue || '')].length\n },\n hasCounter (): boolean {\n return this.counter !== false && this.counter != null\n },\n hasDetails (): boolean {\n return VInput.options.computed.hasDetails.call(this) || this.hasCounter\n },\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit('input', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.lazyValue?.toString().length > 0 || this.badInput\n },\n isEnclosed (): boolean {\n return (\n this.filled ||\n this.isSolo ||\n this.outlined\n )\n },\n isLabelActive (): boolean {\n return this.isDirty || dirtyTypes.includes(this.type)\n },\n isSingle (): boolean {\n return (\n this.isSolo ||\n this.singleLine ||\n this.fullWidth ||\n // https://material.io/components/text-fields/#filled-text-field\n (this.filled && !this.hasLabel)\n )\n },\n isSolo (): boolean {\n return this.solo || this.soloInverted\n },\n labelPosition (): Record<'left' | 'right', string | number | undefined> {\n let offset = (this.prefix && !this.labelValue) ? this.prefixWidth : 0\n\n if (this.labelValue && this.prependWidth) offset -= this.prependWidth\n\n return (this.$vuetify.rtl === this.reverse) ? {\n left: offset,\n right: 'auto',\n } : {\n left: 'auto',\n right: offset,\n }\n },\n showLabel (): boolean {\n return this.hasLabel && (!this.isSingle || (!this.isLabelActive && !this.placeholder))\n },\n labelValue (): boolean {\n return !this.isSingle &&\n Boolean(this.isFocused || this.isLabelActive || this.placeholder)\n },\n },\n\n watch: {\n // labelValue: 'setLabelWidth', // moved to mounted, see #11533\n outlined: 'setLabelWidth',\n label () {\n this.$nextTick(this.setLabelWidth)\n },\n prefix () {\n this.$nextTick(this.setPrefixWidth)\n },\n isFocused: 'updateValue',\n value (val) {\n this.lazyValue = val\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('box')) {\n breaking('box', 'filled', this)\n }\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n breaking('browser-autocomplete', 'autocomplete', this)\n }\n\n /* istanbul ignore if */\n if (this.shaped && !(this.filled || this.outlined || this.isSolo)) {\n consoleWarn('shaped should be used with either filled or outlined', this)\n }\n },\n\n mounted () {\n // #11533\n this.$watch(() => this.labelValue, this.setLabelWidth)\n\n this.autofocus && this.tryAutofocus()\n\n requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n /** @public */\n focus () {\n this.onFocus()\n },\n /** @public */\n blur (e?: Event) {\n // https://github.com/vuetifyjs/vuetify/issues/5913\n // Safari tab order gets broken if called synchronous\n window.requestAnimationFrame(() => {\n this.$refs.input && this.$refs.input.blur()\n })\n },\n clearableCallback () {\n this.$refs.input && this.$refs.input.focus()\n this.$nextTick(() => this.internalValue = null)\n },\n genAppendSlot () {\n const slot = []\n\n if (this.$slots['append-outer']) {\n slot.push(this.$slots['append-outer'] as VNode[])\n } else if (this.appendOuterIcon) {\n slot.push(this.genIcon('appendOuter'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n genPrependInnerSlot () {\n const slot = []\n\n if (this.$slots['prepend-inner']) {\n slot.push(this.$slots['prepend-inner'] as VNode[])\n } else if (this.prependInnerIcon) {\n slot.push(this.genIcon('prependInner'))\n }\n\n return this.genSlot('prepend', 'inner', slot)\n },\n genIconSlot () {\n const slot = []\n\n if (this.$slots.append) {\n slot.push(this.$slots.append as VNode[])\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'inner', slot)\n },\n genInputSlot () {\n const input = VInput.options.methods.genInputSlot.call(this)\n\n const prepend = this.genPrependInnerSlot()\n\n if (prepend) {\n input.children = input.children || []\n input.children.unshift(prepend)\n }\n\n return input\n },\n genClearIcon () {\n if (!this.clearable) return null\n\n const data = this.isDirty ? undefined : { attrs: { disabled: true } }\n\n return this.genSlot('append', 'inner', [\n this.genIcon('clear', this.clearableCallback, data),\n ])\n },\n genCounter () {\n if (!this.hasCounter) return null\n\n const max = this.counter === true ? this.attrs$.maxlength : this.counter\n\n return this.$createElement(VCounter, {\n props: {\n dark: this.dark,\n light: this.light,\n max,\n value: this.computedCounterValue,\n },\n })\n },\n genControl () {\n return VInput.options.methods.genControl.call(this)\n },\n genDefaultSlot () {\n return [\n this.genFieldset(),\n this.genTextFieldSlot(),\n this.genClearIcon(),\n this.genIconSlot(),\n this.genProgress(),\n ]\n },\n genFieldset () {\n if (!this.outlined) return null\n\n return this.$createElement('fieldset', {\n attrs: {\n 'aria-hidden': true,\n },\n }, [this.genLegend()])\n },\n genLabel () {\n if (!this.showLabel) return null\n\n const data = {\n props: {\n absolute: true,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: !this.isSingle && (this.isFocused || !!this.validationState),\n for: this.computedId,\n left: this.labelPosition.left,\n light: this.light,\n right: this.labelPosition.right,\n value: this.labelValue,\n },\n }\n\n return this.$createElement(VLabel, data, this.$slots.label || this.label)\n },\n genLegend () {\n const width = !this.singleLine && (this.labelValue || this.isDirty) ? this.labelWidth : 0\n const span = this.$createElement('span', {\n domProps: { innerHTML: '​' },\n })\n\n return this.$createElement('legend', {\n style: {\n width: !this.isSingle ? convertToUnit(width) : undefined,\n },\n }, [span])\n },\n genInput () {\n const listeners = Object.assign({}, this.listeners$)\n delete listeners.change // Change should not be bound externally\n\n return this.$createElement('input', {\n style: {},\n domProps: {\n value: (this.type === 'number' && Object.is(this.lazyValue, -0)) ? '-0' : this.lazyValue,\n },\n attrs: {\n ...this.attrs$,\n autofocus: this.autofocus,\n disabled: this.isDisabled,\n id: this.computedId,\n placeholder: this.placeholder,\n readonly: this.isReadonly,\n type: this.type,\n },\n on: Object.assign(listeners, {\n blur: this.onBlur,\n input: this.onInput,\n focus: this.onFocus,\n keydown: this.onKeyDown,\n }),\n ref: 'input',\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n })\n },\n genMessages () {\n if (!this.showDetails) return null\n\n const messagesNode = VInput.options.methods.genMessages.call(this)\n const counterNode = this.genCounter()\n\n return this.$createElement('div', {\n staticClass: 'v-text-field__details',\n }, [\n messagesNode,\n counterNode,\n ])\n },\n genTextFieldSlot () {\n return this.$createElement('div', {\n staticClass: 'v-text-field__slot',\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n this.genInput(),\n this.suffix ? this.genAffix('suffix') : null,\n ])\n },\n genAffix (type: 'prefix' | 'suffix') {\n return this.$createElement('div', {\n class: `v-text-field__${type}`,\n ref: type,\n }, this[type])\n },\n onBlur (e?: Event) {\n this.isFocused = false\n e && this.$nextTick(() => this.$emit('blur', e))\n },\n onClick () {\n if (this.isFocused || this.isDisabled || !this.$refs.input) return\n\n this.$refs.input.focus()\n },\n onFocus (e?: Event) {\n if (!this.$refs.input) return\n\n if (document.activeElement !== this.$refs.input) {\n return this.$refs.input.focus()\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n e && this.$emit('focus', e)\n }\n },\n onInput (e: Event) {\n const target = e.target as HTMLInputElement\n this.internalValue = target.value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.enter) this.$emit('change', this.internalValue)\n\n this.$emit('keydown', e)\n },\n onMouseDown (e: Event) {\n // Prevent input from being blurred\n if (e.target !== this.$refs.input) {\n e.preventDefault()\n e.stopPropagation()\n }\n\n VInput.options.methods.onMouseDown.call(this, e)\n },\n onMouseUp (e: Event) {\n if (this.hasMouseDown) this.focus()\n\n VInput.options.methods.onMouseUp.call(this, e)\n },\n setLabelWidth () {\n if (!this.outlined) return\n\n this.labelWidth = this.$refs.label\n ? Math.min(this.$refs.label.scrollWidth * 0.75 + 6, (this.$el as HTMLElement).offsetWidth - 24)\n : 0\n },\n setPrefixWidth () {\n if (!this.$refs.prefix) return\n\n this.prefixWidth = this.$refs.prefix.offsetWidth\n },\n setPrependWidth () {\n if (!this.outlined || !this.$refs['prepend-inner']) return\n\n this.prependWidth = this.$refs['prepend-inner'].offsetWidth\n },\n tryAutofocus () {\n if (\n !this.autofocus ||\n typeof document === 'undefined' ||\n !this.$refs.input ||\n document.activeElement === this.$refs.input\n ) return false\n\n this.$refs.input.focus()\n\n return true\n },\n updateValue (val: boolean) {\n // Sets validationState from validatable\n this.hasColor = val\n\n if (val) {\n this.initialValue = this.lazyValue\n } else if (this.initialValue !== this.lazyValue) {\n this.$emit('change', this.lazyValue)\n }\n },\n onResize () {\n this.setLabelWidth()\n this.setPrefixWidth()\n this.setPrependWidth()\n },\n },\n})\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","// Styles\nimport '../../styles/components/_selection-controls.sass'\nimport './VSwitch.sass'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\nimport VInput from '../VInput'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport { VFabTransition } from '../transitions'\nimport VProgressCircular from '../VProgressCircular/VProgressCircular'\n\n// Helpers\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-switch',\n\n directives: { Touch },\n\n props: {\n inset: Boolean,\n loading: {\n type: [Boolean, String],\n default: false,\n },\n flat: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--switch': true,\n 'v-input--switch--flat': this.flat,\n 'v-input--switch--inset': this.inset,\n }\n },\n attrs (): object {\n return {\n 'aria-checked': String(this.isActive),\n 'aria-disabled': String(this.isDisabled),\n role: 'switch',\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n switchData (): VNodeData {\n return this.setTextColor(this.loading ? undefined : this.validationState, {\n class: this.themeClasses,\n })\n },\n },\n\n methods: {\n genDefaultSlot (): (VNode | null)[] {\n return [\n this.genSwitch(),\n this.genLabel(),\n ]\n },\n genSwitch (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.genInput('checkbox', {\n ...this.attrs,\n ...this.attrs$,\n }),\n this.genRipple(this.setTextColor(this.validationState, {\n directives: [{\n name: 'touch',\n value: {\n left: this.onSwipeLeft,\n right: this.onSwipeRight,\n },\n }],\n })),\n this.$createElement('div', {\n staticClass: 'v-input--switch__track',\n ...this.switchData,\n }),\n this.$createElement('div', {\n staticClass: 'v-input--switch__thumb',\n ...this.switchData,\n }, [this.genProgress()]),\n ])\n },\n genProgress (): VNode {\n return this.$createElement(VFabTransition, {}, [\n this.loading === false\n ? null\n : this.$slots.progress || this.$createElement(VProgressCircular, {\n props: {\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n size: 16,\n width: 2,\n indeterminate: true,\n },\n }),\n ])\n },\n onSwipeLeft () {\n if (this.isActive) this.onChange()\n },\n onSwipeRight () {\n if (!this.isActive) this.onChange()\n },\n onKeydown (e: KeyboardEvent) {\n if (\n (e.keyCode === keyCodes.left && this.isActive) ||\n (e.keyCode === keyCodes.right && !this.isActive)\n ) this.onChange()\n },\n },\n})\n","// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Menuable from '../../mixins/menuable'\nimport Returnable from '../../mixins/returnable'\nimport Roundable from '../../mixins/roundable'\nimport Toggleable from '../../mixins/toggleable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeDirective, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Delayable,\n Detachable,\n Menuable,\n Returnable,\n Roundable,\n Toggleable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-menu',\n\n directives: {\n ClickOutside,\n Resize,\n },\n\n provide (): object {\n return {\n isInMenu: true,\n // Pass theme through to default slot\n theme: this.theme,\n }\n },\n\n props: {\n auto: Boolean,\n closeOnClick: {\n type: Boolean,\n default: true,\n },\n closeOnContentClick: {\n type: Boolean,\n default: true,\n },\n disabled: Boolean,\n disableKeys: Boolean,\n maxHeight: {\n type: [Number, String],\n default: 'auto',\n },\n offsetX: Boolean,\n offsetY: Boolean,\n openOnClick: {\n type: Boolean,\n default: true,\n },\n openOnHover: Boolean,\n origin: {\n type: String,\n default: 'top left',\n },\n transition: {\n type: [Boolean, String],\n default: 'v-menu-transition',\n },\n },\n\n data () {\n return {\n calculatedTopAuto: 0,\n defaultOffset: 8,\n hasJustFocused: false,\n listIndex: -1,\n resizeTimeout: 0,\n selectedIndex: null as null | number,\n tiles: [] as HTMLElement[],\n }\n },\n\n computed: {\n activeTile (): HTMLElement | undefined {\n return this.tiles[this.listIndex]\n },\n calculatedLeft (): string {\n const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth))\n\n if (!this.auto) return this.calcLeft(menuWidth) || '0'\n\n return convertToUnit(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0'\n },\n calculatedMaxHeight (): string {\n const height = this.auto\n ? '200px'\n : convertToUnit(this.maxHeight)\n\n return height || '0'\n },\n calculatedMaxWidth (): string {\n return convertToUnit(this.maxWidth) || '0'\n },\n calculatedMinWidth (): string {\n if (this.minWidth) {\n return convertToUnit(this.minWidth) || '0'\n }\n\n const minWidth = Math.min(\n this.dimensions.activator.width +\n Number(this.nudgeWidth) +\n (this.auto ? 16 : 0),\n Math.max(this.pageWidth - 24, 0)\n )\n\n const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth))\n ? minWidth\n : parseInt(this.calculatedMaxWidth)\n\n return convertToUnit(Math.min(\n calculatedMaxWidth,\n minWidth\n )) || '0'\n },\n calculatedTop (): string {\n const top = !this.auto\n ? this.calcTop()\n : convertToUnit(this.calcYOverflow(this.calculatedTopAuto))\n\n return top || '0'\n },\n hasClickableTiles (): boolean {\n return Boolean(this.tiles.find(tile => tile.tabIndex > -1))\n },\n styles (): object {\n return {\n maxHeight: this.calculatedMaxHeight,\n minWidth: this.calculatedMinWidth,\n maxWidth: this.calculatedMaxWidth,\n top: this.calculatedTop,\n left: this.calculatedLeft,\n transformOrigin: this.origin,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n watch: {\n isActive (val) {\n if (!val) this.listIndex = -1\n },\n isContentActive (val) {\n this.hasJustFocused = val\n },\n listIndex (next, prev) {\n if (next in this.tiles) {\n const tile = this.tiles[next]\n tile.classList.add('v-list-item--highlighted')\n this.$refs.content.scrollTop = tile.offsetTop - tile.clientHeight\n }\n\n prev in this.tiles &&\n this.tiles[prev].classList.remove('v-list-item--highlighted')\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 mounted () {\n this.isActive && this.callActivate()\n },\n\n methods: {\n activate () {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions()\n // Start the transition\n requestAnimationFrame(() => {\n // Once transitioning, calculate scroll and top position\n this.startTransition().then(() => {\n if (this.$refs.content) {\n this.calculatedTopAuto = this.calcTopAuto()\n this.auto && (this.$refs.content.scrollTop = this.calcScrollPosition())\n }\n })\n })\n },\n calcScrollPosition () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement\n const maxScrollTop = $el.scrollHeight - $el.offsetHeight\n\n return activeTile\n ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2))\n : $el.scrollTop\n },\n calcLeftAuto () {\n return parseInt(this.dimensions.activator.left - this.defaultOffset * 2)\n },\n calcTopAuto () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement | null\n\n if (!activeTile) {\n this.selectedIndex = null\n }\n\n if (this.offsetY || !activeTile) {\n return this.computedTop\n }\n\n this.selectedIndex = Array.from(this.tiles).indexOf(activeTile)\n\n const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition()\n const firstTileOffsetTop = ($el.querySelector('.v-list-item') as HTMLElement).offsetTop\n\n return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1\n },\n changeListIndex (e: KeyboardEvent) {\n // For infinite scroll and autocomplete, re-evaluate children\n this.getTiles()\n\n if (!this.isActive || !this.hasClickableTiles) {\n return\n } else if (e.keyCode === keyCodes.tab) {\n this.isActive = false\n return\n } else if (e.keyCode === keyCodes.down) {\n this.nextTile()\n } else if (e.keyCode === keyCodes.up) {\n this.prevTile()\n } else if (e.keyCode === keyCodes.enter && this.listIndex !== -1) {\n this.tiles[this.listIndex].click()\n } else { return }\n // One of the conditions was met, prevent default action (#2988)\n e.preventDefault()\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n\n return this.isActive &&\n !this._isDestroyed &&\n this.closeOnClick &&\n !this.$refs.content.contains(target)\n },\n genActivatorAttributes () {\n const attributes = Activatable.options.methods.genActivatorAttributes.call(this)\n\n if (this.activeTile && this.activeTile.id) {\n return {\n ...attributes,\n 'aria-activedescendant': this.activeTile.id,\n }\n }\n\n return attributes\n },\n genActivatorListeners () {\n const listeners = Menuable.options.methods.genActivatorListeners.call(this)\n\n if (!this.disableKeys) {\n listeners.keydown = this.onKeyDown\n }\n\n return listeners\n },\n genTransition (): VNode {\n const content = this.genContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n }, [content])\n },\n genDirectives (): VNodeDirective[] {\n const directives: VNodeDirective[] = [{\n name: 'show',\n value: this.isContentActive,\n }]\n\n // Do not add click outside for hover menu\n if (!this.openOnHover && this.closeOnClick) {\n directives.push({\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: () => [this.$el, ...this.getOpenDependentElements()],\n },\n })\n }\n\n return directives\n },\n genContent (): VNode {\n const options = {\n attrs: {\n ...this.getScopeIdAttrs(),\n role: 'role' in this.$attrs ? this.$attrs.role : 'menu',\n },\n staticClass: 'v-menu__content',\n class: {\n ...this.rootThemeClasses,\n ...this.roundedClasses,\n 'v-menu__content--auto': this.auto,\n 'v-menu__content--fixed': this.activatorFixed,\n menuable__content__active: this.isActive,\n [this.contentClass.trim()]: true,\n },\n style: this.styles,\n directives: this.genDirectives(),\n ref: 'content',\n on: {\n click: (e: Event) => {\n const target = e.target as HTMLElement\n\n if (target.getAttribute('disabled')) return\n if (this.closeOnContentClick) this.isActive = false\n },\n keydown: this.onKeyDown,\n },\n } as VNodeData\n\n if (this.$listeners.scroll) {\n options.on = options.on || {}\n options.on.scroll = this.$listeners.scroll\n }\n\n if (!this.disabled && this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseenter = this.mouseEnterHandler\n }\n\n if (this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseleave = this.mouseLeaveHandler\n }\n\n return this.$createElement('div', options, this.getContentSlot())\n },\n getTiles () {\n if (!this.$refs.content) return\n\n this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item'))\n },\n mouseEnterHandler () {\n this.runDelay('open', () => {\n if (this.hasJustFocused) return\n\n this.hasJustFocused = true\n this.isActive = true\n })\n },\n mouseLeaveHandler (e: MouseEvent) {\n // Prevent accidental re-activation\n this.runDelay('close', () => {\n if (this.$refs.content.contains(e.relatedTarget as HTMLElement)) return\n\n requestAnimationFrame(() => {\n this.isActive = false\n this.callDeactivate()\n })\n })\n },\n nextTile () {\n const tile = this.tiles[this.listIndex + 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = -1\n this.nextTile()\n\n return\n }\n\n this.listIndex++\n if (tile.tabIndex === -1) this.nextTile()\n },\n prevTile () {\n const tile = this.tiles[this.listIndex - 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = this.tiles.length\n this.prevTile()\n\n return\n }\n\n this.listIndex--\n if (tile.tabIndex === -1) this.prevTile()\n },\n onKeyDown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc) {\n // Wait for dependent elements to close first\n setTimeout(() => { this.isActive = false })\n const activator = this.getActivator()\n this.$nextTick(() => activator && activator.focus())\n } else if (\n !this.isActive &&\n [keyCodes.up, keyCodes.down].includes(e.keyCode)\n ) {\n this.isActive = true\n }\n\n // Allow for isActive watcher to generate tile list\n this.$nextTick(() => this.changeListIndex(e))\n },\n onResize () {\n if (!this.isActive) return\n\n // Account for screen resize\n // and orientation change\n // eslint-disable-next-line no-unused-expressions\n this.$refs.content.offsetWidth\n this.updateDimensions()\n\n // When resizing to a smaller width\n // content width is evaluated before\n // the new activator width has been\n // set, causing it to not size properly\n // hacky but will revisit in the future\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.updateDimensions, 100)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-menu',\n class: {\n 'v-menu--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n directives: [{\n arg: '500',\n name: 'resize',\n value: this.onResize,\n }],\n }\n\n return h('div', data, [\n !this.activator && this.genActivator(),\n this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [this.genTransition()]),\n ]),\n ])\n },\n})\n","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","// Styles\nimport './VListItem.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Routable from '../../mixins/routable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\n\n// Directives\nimport Ripple from '../../directives/ripple'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport { removed } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\nimport { PropType, PropValidator } from 'vue/types/options'\n\nconst baseMixins = mixins(\n Colorable,\n Routable,\n Themeable,\n GroupableFactory('listItemGroup'),\n ToggleableFactory('inputValue')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n isInGroup: boolean\n isInList: boolean\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-list-item',\n\n directives: {\n Ripple,\n },\n\n inject: {\n isInGroup: {\n default: false,\n },\n isInList: {\n default: false,\n },\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n inheritAttrs: false,\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.listItemGroup) return ''\n\n return this.listItemGroup.activeClass\n },\n } as any as PropValidator,\n dense: Boolean,\n inactive: Boolean,\n link: Boolean,\n selectable: {\n type: Boolean,\n },\n tag: {\n type: String,\n default: 'div',\n },\n threeLine: Boolean,\n twoLine: Boolean,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-list-item--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-list-item': true,\n ...Routable.options.computed.classes.call(this),\n 'v-list-item--dense': this.dense,\n 'v-list-item--disabled': this.disabled,\n 'v-list-item--link': this.isClickable && !this.inactive,\n 'v-list-item--selectable': this.selectable,\n 'v-list-item--three-line': this.threeLine,\n 'v-list-item--two-line': this.twoLine,\n ...this.themeClasses,\n }\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.listItemGroup\n )\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('avatar')) {\n removed('avatar', this)\n }\n },\n\n methods: {\n click (e: MouseEvent | KeyboardEvent) {\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n genAttrs () {\n const attrs: Record = {\n 'aria-disabled': this.disabled ? true : undefined,\n tabindex: this.isClickable && !this.disabled ? 0 : -1,\n ...this.$attrs,\n }\n\n if (this.$attrs.hasOwnProperty('role')) {\n // do nothing, role already provided\n } else if (this.isInNav) {\n // do nothing, role is inherit\n } else if (this.isInGroup) {\n attrs.role = 'listitem'\n attrs['aria-selected'] = String(this.isActive)\n } else if (this.isInMenu) {\n attrs.role = this.isClickable ? 'menuitem' : undefined\n attrs.id = attrs.id || `list-item-${this._uid}`\n } else if (this.isInList) {\n attrs.role = 'listitem'\n }\n\n return attrs\n },\n },\n\n render (h): VNode {\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n ...this.genAttrs(),\n }\n data[this.to ? 'nativeOn' : 'on'] = {\n ...data[this.to ? 'nativeOn' : 'on'],\n keydown: (e: KeyboardEvent) => {\n /* istanbul ignore else */\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n if (this.inactive) tag = 'div'\n if (this.inactive && this.to) {\n data.on = data.nativeOn\n delete data.nativeOn\n }\n\n const children = this.$scopedSlots.default\n ? this.$scopedSlots.default({\n active: this.isActive,\n toggle: this.toggle,\n })\n : this.$slots.default\n\n return h(tag, this.setTextColor(this.color, data), children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-action',\n\n functional: true,\n\n render (h, { data, children = [] }): VNode {\n data.staticClass = data.staticClass ? `v-list-item__action ${data.staticClass}` : 'v-list-item__action'\n const filteredChild = children.filter(VNode => {\n return VNode.isComment === false && VNode.text !== ' '\n })\n if (filteredChild.length > 1) data.staticClass += ' v-list-item__action--stack'\n\n return h('div', data, children)\n },\n})\n","// Styles\nimport './VList.sass'\nimport VListGroup from './VListGroup'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VListGroupInstance = InstanceType\n\ninterface options extends InstanceType {\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default VSheet.extend().extend({\n name: 'v-list',\n\n provide (): object {\n return {\n isInList: true,\n list: this,\n }\n },\n\n inject: {\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n expand: Boolean,\n flat: Boolean,\n nav: Boolean,\n rounded: Boolean,\n subheader: Boolean,\n threeLine: Boolean,\n twoLine: Boolean,\n },\n\n data: () => ({\n groups: [] as VListGroupInstance[],\n }),\n\n computed: {\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-list--dense': this.dense,\n 'v-list--disabled': this.disabled,\n 'v-list--flat': this.flat,\n 'v-list--nav': this.nav,\n 'v-list--rounded': this.rounded,\n 'v-list--subheader': this.subheader,\n 'v-list--two-line': this.twoLine,\n 'v-list--three-line': this.threeLine,\n }\n },\n },\n\n methods: {\n register (content: VListGroupInstance) {\n this.groups.push(content)\n },\n unregister (content: VListGroupInstance) {\n const index = this.groups.findIndex(g => g._uid === content._uid)\n\n if (index > -1) this.groups.splice(index, 1)\n },\n listClick (uid: number) {\n if (this.expand) return\n\n for (const group of this.groups) {\n group.toggle(uid)\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-list',\n class: this.classes,\n style: this.styles,\n attrs: {\n role: this.isInNav || this.isInMenu ? undefined : 'list',\n ...this.attrs$,\n },\n }\n\n return h(this.tag, this.setBackgroundColor(this.color, data), [this.$slots.default])\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-icon',\n\n functional: true,\n\n render (h, { data, children }): VNode {\n data.staticClass = (`v-list-item__icon ${data.staticClass || ''}`).trim()\n\n return h('div', data, children)\n },\n})\n","// Styles\nimport './VListGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VList from './VList'\nimport VListItem from './VListItem'\nimport VListItemIcon from './VListItemIcon'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Bootable from '../../mixins/bootable'\nimport Colorable from '../../mixins/colorable'\nimport Toggleable from '../../mixins/toggleable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Transitions\nimport { VExpandTransition } from '../transitions'\n\n// Utils\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport { Route } from 'vue-router'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Bootable,\n Colorable,\n RegistrableInject('list'),\n Toggleable\n)\n\ntype VListInstance = InstanceType\n\ninterface options extends ExtractVue {\n list: VListInstance\n $refs: {\n group: HTMLElement\n }\n $route: Route\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-list-group',\n\n directives: { ripple },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n appendIcon: {\n type: String,\n default: '$expand',\n },\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n group: String,\n noAction: Boolean,\n prependIcon: String,\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n subGroup: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-group--active': this.isActive,\n 'v-list-group--disabled': this.disabled,\n 'v-list-group--no-action': this.noAction,\n 'v-list-group--sub-group': this.subGroup,\n }\n },\n },\n\n watch: {\n isActive (val: boolean) {\n /* istanbul ignore else */\n if (!this.subGroup && val) {\n this.list && this.list.listClick(this._uid)\n }\n },\n $route: 'onRouteChange',\n },\n\n created () {\n this.list && this.list.register(this)\n\n if (this.group &&\n this.$route &&\n this.value == null\n ) {\n this.isActive = this.matchRoute(this.$route.path)\n }\n },\n\n beforeDestroy () {\n this.list && this.list.unregister(this)\n },\n\n methods: {\n click (e: Event) {\n if (this.disabled) return\n\n this.isBooted = true\n\n this.$emit('click', e)\n this.$nextTick(() => (this.isActive = !this.isActive))\n },\n genIcon (icon: string | false): VNode {\n return this.$createElement(VIcon, icon)\n },\n genAppendIcon (): VNode | null {\n const icon = !this.subGroup ? this.appendIcon : false\n\n if (!icon && !this.$slots.appendIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__append-icon',\n }, [\n this.$slots.appendIcon || this.genIcon(icon),\n ])\n },\n genHeader (): VNode {\n return this.$createElement(VListItem, {\n staticClass: 'v-list-group__header',\n attrs: {\n 'aria-expanded': String(this.isActive),\n role: 'button',\n },\n class: {\n [this.activeClass]: this.isActive,\n },\n props: {\n inputValue: this.isActive,\n },\n directives: [{\n name: 'ripple',\n value: this.ripple,\n }],\n on: {\n ...this.listeners$,\n click: this.click,\n },\n }, [\n this.genPrependIcon(),\n this.$slots.activator,\n this.genAppendIcon(),\n ])\n },\n genItems (): VNode[] {\n return this.showLazyContent(() => [\n this.$createElement('div', {\n staticClass: 'v-list-group__items',\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }, getSlot(this)),\n ])\n },\n genPrependIcon (): VNode | null {\n const icon = this.subGroup && this.prependIcon == null\n ? '$subgroup'\n : this.prependIcon\n\n if (!icon && !this.$slots.prependIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__prepend-icon',\n }, [\n this.$slots.prependIcon || this.genIcon(icon),\n ])\n },\n onRouteChange (to: Route) {\n /* istanbul ignore if */\n if (!this.group) return\n\n const isActive = this.matchRoute(to.path)\n\n /* istanbul ignore else */\n if (isActive && this.isActive !== isActive) {\n this.list && this.list.listClick(this._uid)\n }\n\n this.isActive = isActive\n },\n toggle (uid: number) {\n const isActive = this._uid === uid\n\n if (isActive) this.isBooted = true\n this.$nextTick(() => (this.isActive = isActive))\n },\n matchRoute (to: string) {\n return to.match(this.group) !== null\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.isActive && this.color, {\n staticClass: 'v-list-group',\n class: this.classes,\n }), [\n this.genHeader(),\n h(VExpandTransition, this.genItems()),\n ])\n },\n})\n","// Styles\nimport './VListItemGroup.sass'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n BaseItemGroup,\n Colorable\n).extend({\n name: 'v-list-item-group',\n\n provide () {\n return {\n isInGroup: true,\n listItemGroup: this,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-list-item-group': true,\n }\n },\n },\n\n methods: {\n genData (): object {\n return this.setTextColor(this.color, {\n ...BaseItemGroup.options.methods.genData.call(this),\n attrs: {\n role: 'listbox',\n },\n })\n },\n },\n})\n","import { createSimpleFunctional } from '../../util/helpers'\n\nimport VList from './VList'\nimport VListGroup from './VListGroup'\nimport VListItem from './VListItem'\nimport VListItemGroup from './VListItemGroup'\nimport VListItemAction from './VListItemAction'\nimport VListItemAvatar from './VListItemAvatar'\nimport VListItemIcon from './VListItemIcon'\n\nexport const VListItemActionText = createSimpleFunctional('v-list-item__action-text', 'span')\nexport const VListItemContent = createSimpleFunctional('v-list-item__content', 'div')\nexport const VListItemTitle = createSimpleFunctional('v-list-item__title', 'div')\nexport const VListItemSubtitle = createSimpleFunctional('v-list-item__subtitle', 'div')\n\nexport {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemAvatar,\n VListItemIcon,\n VListItemGroup,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemActionText,\n VListItemAvatar,\n VListItemContent,\n VListItemGroup,\n VListItemIcon,\n VListItemSubtitle,\n VListItemTitle,\n },\n}\n","// Components\nimport VAvatar from '../VAvatar'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default VAvatar.extend({\n name: 'v-list-item-avatar',\n\n props: {\n horizontal: Boolean,\n size: {\n type: [Number, String],\n default: 40,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-item__avatar--horizontal': this.horizontal,\n ...VAvatar.options.computed.classes.call(this),\n 'v-avatar--tile': this.tile || this.horizontal,\n }\n },\n },\n\n render (h): VNode {\n const render = VAvatar.options.render.call(this, h)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-list-item__avatar'\n\n return render\n },\n})\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport {\n escapeHTML,\n getPropertyFromItem,\n} from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n attrs: {\n role: undefined,\n },\n on: {\n mousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n },\n }\n\n return this.$createElement(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return this.$createElement(VListItemAction, [\n this.$createElement(VSimpleCheckbox, {\n props: {\n color: this.color,\n value: inputValue,\n },\n on: {\n input: () => this.$emit('select', item),\n },\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return this.$createElement(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return escapeHTML(text)\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return `${escapeHTML(start)}${this.genHighlight(middle)}${escapeHTML(end)}`\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string): string {\n return `${escapeHTML(text)}`\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n attrs: {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n },\n on: {\n mousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n click: () => disabled || this.$emit('select', item),\n },\n props: {\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n },\n }\n\n if (!this.$scopedSlots.item) {\n return this.$createElement(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$scopedSlots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? this.$createElement(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n const innerHTML = this.genFilteredText(this.getText(item))\n\n return this.$createElement(VListItemContent,\n [this.$createElement(VListItemTitle, {\n domProps: { innerHTML },\n })]\n )\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.options.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item'])\n\n this.$slots['append-item'] && children.push(this.$slots['append-item'])\n\n return this.$createElement(VList, {\n staticClass: 'v-select-list',\n class: this.themeClasses,\n attrs: {\n role: 'listbox',\n tabindex: -1,\n },\n props: { dense: this.dense },\n }, children)\n },\n})\n","// Styles\nimport '../VTextField/VTextField.sass'\nimport './VSelect.sass'\n\n// Components\nimport VChip from '../VChip'\nimport VMenu from '../VMenu'\nimport VSelectList from './VSelectList'\n\n// Extensions\nimport VInput from '../VInput'\nimport VTextField from '../VTextField/VTextField'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Dependent from '../../mixins/dependent'\nimport Filterable from '../../mixins/filterable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { getPropertyFromItem, getObjectValueByPath, keyCodes } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, VNodeDirective, PropType, VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\nexport const defaultMenuProps = {\n closeOnClick: false,\n closeOnContentClick: false,\n disableKeys: true,\n openOnClick: false,\n maxHeight: 304,\n}\n\n// Types\nconst baseMixins = mixins(\n VTextField,\n Comparable,\n Dependent,\n Filterable\n)\n\ninterface options extends InstanceType {\n $refs: {\n menu: InstanceType\n content: HTMLElement\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n 'append-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-select',\n\n directives: {\n ClickOutside,\n },\n\n props: {\n appendIcon: {\n type: String,\n default: '$dropdown',\n },\n attach: {\n type: null as unknown as PropType,\n default: false,\n },\n cacheItems: Boolean,\n chips: Boolean,\n clearable: Boolean,\n deletableChips: Boolean,\n disableLookup: Boolean,\n eager: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemColor: {\n type: String,\n default: 'primary',\n },\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n menuProps: {\n type: [String, Array, Object],\n default: () => defaultMenuProps,\n },\n multiple: Boolean,\n openOnClear: Boolean,\n returnObject: Boolean,\n smallChips: Boolean,\n },\n\n data () {\n return {\n cachedItems: this.cacheItems ? this.items : [],\n menuIsBooted: false,\n isMenuActive: false,\n lastItem: 20,\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n lazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n selectedIndex: -1,\n selectedItems: [] as any[],\n keyboardLookupPrefix: '',\n keyboardLookupLastTime: 0,\n }\n },\n\n computed: {\n /* All items that the select has */\n allItems (): object[] {\n return this.filterDuplicates(this.cachedItems.concat(this.items))\n },\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-select': true,\n 'v-select--chips': this.hasChips,\n 'v-select--chips--small': this.smallChips,\n 'v-select--is-menu-active': this.isMenuActive,\n 'v-select--is-multi': this.multiple,\n }\n },\n /* Used by other components to overwrite */\n computedItems (): object[] {\n return this.allItems\n },\n computedOwns (): string {\n return `list-${this._uid}`\n },\n computedCounterValue (): number {\n return this.multiple\n ? this.selectedItems.length\n : (this.getText(this.selectedItems[0]) || '').toString().length\n },\n directives (): VNodeDirective[] | undefined {\n return this.isFocused ? [{\n name: 'click-outside',\n value: {\n handler: this.blur,\n closeConditional: this.closeConditional,\n include: () => this.getOpenDependentElements(),\n },\n }] : undefined\n },\n dynamicHeight () {\n return 'auto'\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n hasSlot (): boolean {\n return Boolean(this.hasChips || this.$scopedSlots.selection)\n },\n isDirty (): boolean {\n return this.selectedItems.length > 0\n },\n listData (): object {\n const scopeId = this.$vnode && (this.$vnode.context!.$options as { [key: string]: any })._scopeId\n const attrs = scopeId ? {\n [scopeId]: true,\n } : {}\n\n return {\n attrs: {\n ...attrs,\n id: this.computedOwns,\n },\n props: {\n action: this.multiple,\n color: this.itemColor,\n dense: this.dense,\n hideSelected: this.hideSelected,\n items: this.virtualizedItems,\n itemDisabled: this.itemDisabled,\n itemText: this.itemText,\n itemValue: this.itemValue,\n noDataText: this.$vuetify.lang.t(this.noDataText),\n selectedItems: this.selectedItems,\n },\n on: {\n select: this.selectItem,\n },\n scopedSlots: {\n item: this.$scopedSlots.item,\n },\n }\n },\n staticList (): VNode {\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n consoleError('assert: staticList should not be called if slots are used')\n }\n\n return this.$createElement(VSelectList, this.listData)\n },\n virtualizedItems (): object[] {\n return (this.$_menuProps as any).auto\n ? this.computedItems\n : this.computedItems.slice(0, this.lastItem)\n },\n menuCanShow: () => true,\n $_menuProps (): object {\n let normalisedProps = typeof this.menuProps === 'string'\n ? this.menuProps.split(',')\n : this.menuProps\n\n if (Array.isArray(normalisedProps)) {\n normalisedProps = normalisedProps.reduce((acc, p) => {\n acc[p.trim()] = true\n return acc\n }, {})\n }\n\n return {\n ...defaultMenuProps,\n eager: this.eager,\n value: this.menuCanShow && this.isMenuActive,\n nudgeBottom: normalisedProps.offsetY ? 1 : 0, // convert to int\n ...normalisedProps,\n }\n },\n },\n\n watch: {\n internalValue (val) {\n this.initialValue = val\n this.setSelectedItems()\n },\n isMenuActive (val) {\n window.setTimeout(() => this.onMenuActiveChange(val))\n },\n items: {\n immediate: true,\n handler (val) {\n if (this.cacheItems) {\n // Breaks vue-test-utils if\n // this isn't calculated\n // on the next tick\n this.$nextTick(() => {\n this.cachedItems = this.filterDuplicates(this.cachedItems.concat(val))\n })\n }\n\n this.setSelectedItems()\n },\n },\n },\n\n methods: {\n /** @public */\n blur (e?: Event) {\n VTextField.options.methods.blur.call(this, e)\n this.isMenuActive = false\n this.isFocused = false\n this.selectedIndex = -1\n },\n /** @public */\n activateMenu () {\n if (\n !this.isInteractive ||\n this.isMenuActive\n ) return\n\n this.isMenuActive = true\n },\n clearableCallback () {\n this.setValue(this.multiple ? [] : undefined)\n this.setMenuIndex(-1)\n this.$nextTick(() => this.$refs.input && this.$refs.input.focus())\n\n if (this.openOnClear) this.isMenuActive = true\n },\n closeConditional (e: Event) {\n if (!this.isMenuActive) return true\n\n return (\n !this._isDestroyed &&\n\n // Click originates from outside the menu content\n // Multiple selects don't close when an item is clicked\n (!this.getContent() ||\n !this.getContent().contains(e.target as Node)) &&\n\n // Click originates from outside the element\n this.$el &&\n !this.$el.contains(e.target as Node) &&\n e.target !== this.$el\n )\n },\n filterDuplicates (arr: any[]) {\n const uniqueValues = new Map()\n for (let index = 0; index < arr.length; ++index) {\n const item = arr[index]\n const val = this.getValue(item)\n\n // TODO: comparator\n !uniqueValues.has(val) && uniqueValues.set(val, item)\n }\n return Array.from(uniqueValues.values())\n },\n findExistingIndex (item: object) {\n const itemValue = this.getValue(item)\n\n return (this.internalValue || []).findIndex((i: object) => this.valueComparator(this.getValue(i), itemValue))\n },\n getContent () {\n return this.$refs.menu && this.$refs.menu.$refs.content\n },\n genChipSelection (item: object, index: number) {\n const isDisabled = (\n !this.isInteractive ||\n this.getDisabled(item)\n )\n\n return this.$createElement(VChip, {\n staticClass: 'v-chip--select',\n attrs: { tabindex: -1 },\n props: {\n close: this.deletableChips && !isDisabled,\n disabled: isDisabled,\n inputValue: index === this.selectedIndex,\n small: this.smallChips,\n },\n on: {\n click: (e: MouseEvent) => {\n if (isDisabled) return\n\n e.stopPropagation()\n\n this.selectedIndex = index\n },\n 'click:close': () => this.onChipInput(item),\n },\n key: JSON.stringify(this.getValue(item)),\n }, this.getText(item))\n },\n genCommaSelection (item: object, index: number, last: boolean) {\n const color = index === this.selectedIndex && this.computedColor\n const isDisabled = (\n !this.isInteractive ||\n this.getDisabled(item)\n )\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-select__selection v-select__selection--comma',\n class: {\n 'v-select__selection--disabled': isDisabled,\n },\n key: JSON.stringify(this.getValue(item)),\n }), `${this.getText(item)}${last ? '' : ', '}`)\n },\n genDefaultSlot (): (VNode | VNode[] | null)[] {\n const selections = this.genSelections()\n const input = this.genInput()\n\n // If the return is an empty array\n // push the input\n if (Array.isArray(selections)) {\n selections.push(input)\n // Otherwise push it into children\n } else {\n selections.children = selections.children || []\n selections.children.push(input)\n }\n\n return [\n this.genFieldset(),\n this.$createElement('div', {\n staticClass: 'v-select__slot',\n directives: this.directives,\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n selections,\n this.suffix ? this.genAffix('suffix') : null,\n this.genClearIcon(),\n this.genIconSlot(),\n this.genHiddenInput(),\n ]),\n this.genMenu(),\n this.genProgress(),\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData?: VNodeData\n ) {\n const icon = VInput.options.methods.genIcon.call(this, type, cb, extraData)\n\n if (type === 'append') {\n // Don't allow the dropdown icon to be focused\n icon.children![0].data = mergeData(icon.children![0].data!, {\n attrs: {\n tabindex: icon.children![0].componentOptions!.listeners && '-1',\n 'aria-hidden': 'true',\n 'aria-label': undefined,\n },\n })\n }\n\n return icon\n },\n genInput (): VNode {\n const input = VTextField.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n\n input.data = mergeData(input.data!, {\n domProps: { value: null },\n attrs: {\n readonly: true,\n type: 'text',\n 'aria-readonly': String(this.isReadonly),\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n },\n on: { keypress: this.onKeyPress },\n })\n\n return input\n },\n genHiddenInput (): VNode {\n return this.$createElement('input', {\n domProps: { value: this.lazyValue },\n attrs: {\n type: 'hidden',\n name: this.attrs$.name,\n },\n })\n },\n genInputSlot (): VNode {\n const render = VTextField.options.methods.genInputSlot.call(this)\n\n render.data!.attrs = {\n ...render.data!.attrs,\n role: 'button',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': String(this.isMenuActive),\n 'aria-owns': this.computedOwns,\n }\n\n return render\n },\n genList (): VNode {\n // If there's no slots, we can use a cached VNode to improve performance\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n return this.genListWithSlot()\n } else {\n return this.staticList\n }\n },\n genListWithSlot (): VNode {\n const slots = ['prepend-item', 'no-data', 'append-item']\n .filter(slotName => this.$slots[slotName])\n .map(slotName => this.$createElement('template', {\n slot: slotName,\n }, this.$slots[slotName]))\n // Requires destructuring due to Vue\n // modifying the `on` property when passed\n // as a referenced object\n return this.$createElement(VSelectList, {\n ...this.listData,\n }, slots)\n },\n genMenu (): VNode {\n const props = this.$_menuProps as any\n props.activator = this.$refs['input-slot']\n\n // Attach to root el so that\n // menu covers prepend/append icons\n if (\n // TODO: make this a computed property or helper or something\n this.attach === '' || // If used as a boolean prop ()\n this.attach === true || // If bound to a boolean ()\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) {\n props.attach = this.$el\n } else {\n props.attach = this.attach\n }\n\n return this.$createElement(VMenu, {\n attrs: { role: undefined },\n props,\n on: {\n input: (val: boolean) => {\n this.isMenuActive = val\n this.isFocused = val\n },\n scroll: this.onScroll,\n },\n ref: 'menu',\n }, [this.genList()])\n },\n genSelections (): VNode {\n let length = this.selectedItems.length\n const children = new Array(length)\n\n let genSelection\n if (this.$scopedSlots.selection) {\n genSelection = this.genSlotSelection\n } else if (this.hasChips) {\n genSelection = this.genChipSelection\n } else {\n genSelection = this.genCommaSelection\n }\n\n while (length--) {\n children[length] = genSelection(\n this.selectedItems[length],\n length,\n length === children.length - 1\n )\n }\n\n return this.$createElement('div', {\n staticClass: 'v-select__selections',\n }, children)\n },\n genSlotSelection (item: object, index: number): VNode[] | undefined {\n return this.$scopedSlots.selection!({\n attrs: {\n class: 'v-chip--select',\n },\n parent: this,\n item,\n index,\n select: (e: Event) => {\n e.stopPropagation()\n this.selectedIndex = index\n },\n selected: index === this.selectedIndex,\n disabled: !this.isInteractive,\n })\n },\n getMenuIndex () {\n return this.$refs.menu ? (this.$refs.menu as { [key: string]: any }).listIndex : -1\n },\n getDisabled (item: object) {\n return getPropertyFromItem(item, this.itemDisabled, false)\n },\n getText (item: object) {\n return getPropertyFromItem(item, this.itemText, item)\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n onBlur (e?: Event) {\n e && this.$emit('blur', e)\n },\n onChipInput (item: object) {\n if (this.multiple) this.selectItem(item)\n else this.setValue(null)\n // If all items have been deleted,\n // open `v-menu`\n if (this.selectedItems.length === 0) {\n this.isMenuActive = true\n } else {\n this.isMenuActive = false\n }\n this.selectedIndex = -1\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n if (!this.isAppendInner(e.target)) {\n this.isMenuActive = true\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n this.$emit('focus')\n }\n\n this.$emit('click', e)\n },\n onEscDown (e: Event) {\n e.preventDefault()\n if (this.isMenuActive) {\n e.stopPropagation()\n this.isMenuActive = false\n }\n },\n onKeyPress (e: KeyboardEvent) {\n if (\n this.multiple ||\n !this.isInteractive ||\n this.disableLookup\n ) return\n\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n const now = performance.now()\n if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n this.keyboardLookupPrefix = ''\n }\n this.keyboardLookupPrefix += e.key.toLowerCase()\n this.keyboardLookupLastTime = now\n\n const index = this.allItems.findIndex(item => {\n const text = (this.getText(item) || '').toString()\n\n return text.toLowerCase().startsWith(this.keyboardLookupPrefix)\n })\n const item = this.allItems[index]\n if (index !== -1) {\n this.lastItem = Math.max(this.lastItem, index + 5)\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.isReadonly && e.keyCode !== keyCodes.tab) return\n\n const keyCode = e.keyCode\n const menu = this.$refs.menu\n\n // If enter, space, open menu\n if ([\n keyCodes.enter,\n keyCodes.space,\n ].includes(keyCode)) this.activateMenu()\n\n this.$emit('keydown', e)\n\n if (!menu) return\n\n // If menu is active, allow default\n // listIndex change from menu\n if (this.isMenuActive && keyCode !== keyCodes.tab) {\n this.$nextTick(() => {\n menu.changeListIndex(e)\n this.$emit('update:list-index', menu.listIndex)\n })\n }\n\n // If menu is not active, up and down can do\n // one of 2 things. If multiple, opens the\n // menu, if not, will cycle through all\n // available options\n if (\n !this.isMenuActive &&\n [keyCodes.up, keyCodes.down].includes(keyCode)\n ) return this.onUpDown(e)\n\n // If escape deactivate the menu\n if (keyCode === keyCodes.esc) return this.onEscDown(e)\n\n // If tab - select item or close menu\n if (keyCode === keyCodes.tab) return this.onTabDown(e)\n\n // If space preventDefault\n if (keyCode === keyCodes.space) return this.onSpaceDown(e)\n },\n onMenuActiveChange (val: boolean) {\n // If menu is closing and mulitple\n // or menuIndex is already set\n // skip menu index recalculation\n if (\n (this.multiple && !val) ||\n this.getMenuIndex() > -1\n ) return\n\n const menu = this.$refs.menu\n\n if (!menu || !this.isDirty) return\n\n // When menu opens, set index of first active item\n for (let i = 0; i < menu.tiles.length; i++) {\n if (menu.tiles[i].getAttribute('aria-selected') === 'true') {\n this.setMenuIndex(i)\n break\n }\n }\n },\n onMouseUp (e: MouseEvent) {\n // eslint-disable-next-line sonarjs/no-collapsible-if\n if (\n this.hasMouseDown &&\n e.which !== 3 &&\n this.isInteractive\n ) {\n // If append inner is present\n // and the target is itself\n // or inside, toggle menu\n if (this.isAppendInner(e.target)) {\n this.$nextTick(() => (this.isMenuActive = !this.isMenuActive))\n }\n }\n\n VTextField.options.methods.onMouseUp.call(this, e)\n },\n onScroll () {\n if (!this.isMenuActive) {\n requestAnimationFrame(() => (this.getContent().scrollTop = 0))\n } else {\n if (this.lastItem > this.computedItems.length) return\n\n const showMoreItems = (\n this.getContent().scrollHeight -\n (this.getContent().scrollTop +\n this.getContent().clientHeight)\n ) < 200\n\n if (showMoreItems) {\n this.lastItem += 20\n }\n }\n },\n onSpaceDown (e: KeyboardEvent) {\n e.preventDefault()\n },\n onTabDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n const activeTile = menu.activeTile\n\n // An item that is selected by\n // menu-index should toggled\n if (\n !this.multiple &&\n activeTile &&\n this.isMenuActive\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n activeTile.click()\n } else {\n // If we make it here,\n // the user has no selected indexes\n // and is probably tabbing out\n this.blur(e)\n }\n },\n onUpDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n e.preventDefault()\n\n // Multiple selects do not cycle their value\n // when pressing up or down, instead activate\n // the menu\n if (this.multiple) return this.activateMenu()\n\n const keyCode = e.keyCode\n\n // Cycle through available values to achieve\n // select native behavior\n menu.isBooted = true\n\n window.requestAnimationFrame(() => {\n menu.getTiles()\n keyCodes.up === keyCode ? menu.prevTile() : menu.nextTile()\n menu.activeTile && menu.activeTile.click()\n })\n },\n selectItem (item: object) {\n if (!this.multiple) {\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.isMenuActive = false\n } else {\n const internalValue = (this.internalValue || []).slice()\n const i = this.findExistingIndex(item)\n\n i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item)\n this.setValue(internalValue.map((i: object) => {\n return this.returnObject ? i : this.getValue(i)\n }))\n\n // When selecting multiple\n // adjust menu after each\n // selection\n this.$nextTick(() => {\n this.$refs.menu &&\n (this.$refs.menu as { [key: string]: any }).updateDimensions()\n })\n\n // We only need to reset list index for multiple\n // to keep highlight when an item is toggled\n // on and off\n if (!this.multiple) return\n\n const listIndex = this.getMenuIndex()\n\n this.setMenuIndex(-1)\n\n // There is no item to re-highlight\n // when selections are hidden\n if (this.hideSelected) return\n\n this.$nextTick(() => this.setMenuIndex(listIndex))\n }\n },\n setMenuIndex (index: number) {\n this.$refs.menu && ((this.$refs.menu as { [key: string]: any }).listIndex = index)\n },\n setSelectedItems () {\n const selectedItems = []\n const values = !this.multiple || !Array.isArray(this.internalValue)\n ? [this.internalValue]\n : this.internalValue\n\n for (const value of values) {\n const index = this.allItems.findIndex(v => this.valueComparator(\n this.getValue(v),\n this.getValue(value)\n ))\n\n if (index > -1) {\n selectedItems.push(this.allItems[index])\n }\n }\n\n this.selectedItems = selectedItems\n },\n setValue (value: any) {\n const oldValue = this.internalValue\n this.internalValue = value\n value !== oldValue && this.$emit('change', value)\n },\n isAppendInner (target: any) {\n // return true if append inner is present\n // and the target is itself or inside\n const appendInner = this.$refs['append-inner']\n\n return appendInner && (appendInner === target || appendInner.contains(target))\n },\n },\n})\n","import './VSlider.sass'\n\n// Components\nimport VInput from '../VInput'\nimport { VScaleTransition } from '../transitions'\n\n// Mixins\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport { addOnceEventListener, deepEqual, keyCodes, createRange, convertToUnit, passiveSupported } from '../../util/helpers'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { ScopedSlotChildren } from 'vue/types/vnode'\nimport { PropValidator } from 'vue/types/options'\n\ninterface options extends Vue {\n $refs: {\n track: HTMLElement\n }\n}\n\nexport default mixins\n/* eslint-enable indent */\n>(\n VInput,\n Loadable\n/* @vue/component */\n).extend({\n name: 'v-slider',\n\n directives: {\n ClickOutside,\n },\n\n mixins: [Loadable],\n\n props: {\n disabled: Boolean,\n inverseLabel: Boolean,\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 1,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType,\n default: undefined,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 32,\n },\n tickLabels: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n ticks: {\n type: [Boolean, String] as PropType,\n default: false,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n trackColor: String,\n trackFillColor: String,\n value: [Number, String],\n vertical: Boolean,\n },\n\n data: () => ({\n app: null as any,\n oldValue: null as any,\n keyPressed: 0,\n isFocused: false,\n isActive: false,\n noClick: false, // Prevent click event if dragging took place, hack for #7915\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input__slider': true,\n 'v-input__slider--vertical': this.vertical,\n 'v-input__slider--inverse-label': this.inverseLabel,\n }\n },\n internalValue: {\n get (): number {\n return this.lazyValue\n },\n set (val: number) {\n val = isNaN(val) ? this.minValue : val\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n const value = this.roundValue(Math.min(Math.max(val, this.minValue), this.maxValue))\n\n if (value === this.lazyValue) return\n\n this.lazyValue = value\n\n this.$emit('input', value)\n },\n },\n trackTransition (): string {\n return this.keyPressed >= 2 ? 'none' : ''\n },\n minValue (): number {\n return parseFloat(this.min)\n },\n maxValue (): number {\n return parseFloat(this.max)\n },\n stepNumeric (): number {\n return this.step > 0 ? parseFloat(this.step) : 0\n },\n inputWidth (): number {\n return (this.roundValue(this.internalValue) - this.minValue) / (this.maxValue - this.minValue) * 100\n },\n trackFillStyles (): Partial {\n const startDir = this.vertical ? 'bottom' : 'left'\n const endDir = this.vertical ? 'top' : 'right'\n const valueDir = this.vertical ? 'height' : 'width'\n\n const start = this.$vuetify.rtl ? 'auto' : '0'\n const end = this.$vuetify.rtl ? '0' : 'auto'\n const value = this.isDisabled ? `calc(${this.inputWidth}% - 10px)` : `${this.inputWidth}%`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n [valueDir]: value,\n }\n },\n trackStyles (): Partial {\n const startDir = this.vertical ? this.$vuetify.rtl ? 'bottom' : 'top' : this.$vuetify.rtl ? 'left' : 'right'\n const endDir = this.vertical ? 'height' : 'width'\n\n const start = '0px'\n const end = this.isDisabled ? `calc(${100 - this.inputWidth}% - 10px)` : `calc(${100 - this.inputWidth}%)`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n }\n },\n showTicks (): boolean {\n return this.tickLabels.length > 0 ||\n !!(!this.isDisabled && this.stepNumeric && this.ticks)\n },\n numTicks (): number {\n return Math.ceil((this.maxValue - this.minValue) / this.stepNumeric)\n },\n showThumbLabel (): boolean {\n return !this.isDisabled && !!(\n this.thumbLabel ||\n this.$scopedSlots['thumb-label']\n )\n },\n computedTrackColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackColor) return this.trackColor\n if (this.isDark) return this.validationState\n return this.validationState || 'primary lighten-3'\n },\n computedTrackFillColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackFillColor) return this.trackFillColor\n return this.validationState || this.computedColor\n },\n computedThumbColor (): string | undefined {\n if (this.thumbColor) return this.thumbColor\n return this.validationState || this.computedColor\n },\n },\n\n watch: {\n min (val) {\n const parsed = parseFloat(val)\n parsed > this.internalValue && this.$emit('input', parsed)\n },\n max (val) {\n const parsed = parseFloat(val)\n parsed < this.internalValue && this.$emit('input', parsed)\n },\n value: {\n handler (v: number) {\n this.internalValue = v\n },\n },\n },\n\n // If done in as immediate in\n // value watcher, causes issues\n // with vue-test-utils\n beforeMount () {\n this.internalValue = this.value\n },\n\n mounted () {\n // Without a v-app, iOS does not work with body selectors\n this.app = document.querySelector('[data-app]') ||\n consoleWarn('Missing v-app or a non-body wrapping element with the [data-app] attribute', this)\n },\n\n methods: {\n genDefaultSlot (): VNodeChildrenArrayContents {\n const children: VNodeChildrenArrayContents = [this.genLabel()]\n const slider = this.genSlider()\n this.inverseLabel\n ? children.unshift(slider)\n : children.push(slider)\n\n children.push(this.genProgress())\n\n return children\n },\n genSlider (): VNode {\n return this.$createElement('div', {\n class: {\n 'v-slider': true,\n 'v-slider--horizontal': !this.vertical,\n 'v-slider--vertical': this.vertical,\n 'v-slider--focused': this.isFocused,\n 'v-slider--active': this.isActive,\n 'v-slider--disabled': this.isDisabled,\n 'v-slider--readonly': this.isReadonly,\n ...this.themeClasses,\n },\n directives: [{\n name: 'click-outside',\n value: this.onBlur,\n }],\n on: {\n click: this.onSliderClick,\n },\n }, this.genChildren())\n },\n genChildren (): VNodeChildrenArrayContents {\n return [\n this.genInput(),\n this.genTrackContainer(),\n this.genSteps(),\n this.genThumbContainer(\n this.internalValue,\n this.inputWidth,\n this.isActive,\n this.isFocused,\n this.onThumbMouseDown,\n this.onFocus,\n this.onBlur,\n ),\n ]\n },\n genInput (): VNode {\n return this.$createElement('input', {\n attrs: {\n value: this.internalValue,\n id: this.computedId,\n disabled: this.isDisabled,\n readonly: true,\n tabindex: -1,\n ...this.$attrs,\n },\n // on: this.genListeners(), // TODO: do we need to attach the listeners to input?\n })\n },\n genTrackContainer (): VNode {\n const children = [\n this.$createElement('div', this.setBackgroundColor(this.computedTrackColor, {\n staticClass: 'v-slider__track-background',\n style: this.trackStyles,\n })),\n this.$createElement('div', this.setBackgroundColor(this.computedTrackFillColor, {\n staticClass: 'v-slider__track-fill',\n style: this.trackFillStyles,\n })),\n ]\n\n return this.$createElement('div', {\n staticClass: 'v-slider__track-container',\n ref: 'track',\n }, children)\n },\n genSteps (): VNode | null {\n if (!this.step || !this.showTicks) return null\n\n const tickSize = parseFloat(this.tickSize)\n const range = createRange(this.numTicks + 1)\n const direction = this.vertical ? 'bottom' : (this.$vuetify.rtl ? 'right' : 'left')\n const offsetDirection = this.vertical ? (this.$vuetify.rtl ? 'left' : 'right') : 'top'\n\n if (this.vertical) range.reverse()\n\n const ticks = range.map(index => {\n const children = []\n\n if (this.tickLabels[index]) {\n children.push(this.$createElement('div', {\n staticClass: 'v-slider__tick-label',\n }, this.tickLabels[index]))\n }\n\n const width = index * (100 / this.numTicks)\n const filled = this.$vuetify.rtl ? (100 - this.inputWidth) < width : width < this.inputWidth\n\n return this.$createElement('span', {\n key: index,\n staticClass: 'v-slider__tick',\n class: {\n 'v-slider__tick--filled': filled,\n },\n style: {\n width: `${tickSize}px`,\n height: `${tickSize}px`,\n [direction]: `calc(${width}% - ${tickSize / 2}px)`,\n [offsetDirection]: `calc(50% - ${tickSize / 2}px)`,\n },\n }, children)\n })\n\n return this.$createElement('div', {\n staticClass: 'v-slider__ticks-container',\n class: {\n 'v-slider__ticks-container--always-show': this.ticks === 'always' || this.tickLabels.length > 0,\n },\n }, ticks)\n },\n genThumbContainer (\n value: number,\n valueWidth: number,\n isActive: boolean,\n isFocused: boolean,\n onDrag: Function,\n onFocus: Function,\n onBlur: Function,\n ref = 'thumb'\n ): VNode {\n const children = [this.genThumb()]\n\n const thumbLabelContent = this.genThumbLabelContent(value)\n this.showThumbLabel && children.push(this.genThumbLabel(thumbLabelContent))\n\n return this.$createElement('div', this.setTextColor(this.computedThumbColor, {\n ref,\n key: ref,\n staticClass: 'v-slider__thumb-container',\n class: {\n 'v-slider__thumb-container--active': isActive,\n 'v-slider__thumb-container--focused': isFocused,\n 'v-slider__thumb-container--show-label': this.showThumbLabel,\n },\n style: this.getThumbContainerStyles(valueWidth),\n attrs: {\n role: 'slider',\n tabindex: this.isDisabled ? -1 : this.$attrs.tabindex ? this.$attrs.tabindex : 0,\n 'aria-label': this.label,\n 'aria-valuemin': this.min,\n 'aria-valuemax': this.max,\n 'aria-valuenow': this.internalValue,\n 'aria-readonly': String(this.isReadonly),\n 'aria-orientation': this.vertical ? 'vertical' : 'horizontal',\n ...this.$attrs,\n },\n on: {\n focus: onFocus,\n blur: onBlur,\n keydown: this.onKeyDown,\n keyup: this.onKeyUp,\n touchstart: onDrag,\n mousedown: onDrag,\n },\n }), children)\n },\n genThumbLabelContent (value: number | string): ScopedSlotChildren {\n return this.$scopedSlots['thumb-label']\n ? this.$scopedSlots['thumb-label']!({ value })\n : [this.$createElement('span', [String(value)])]\n },\n genThumbLabel (content: ScopedSlotChildren): VNode {\n const size = convertToUnit(this.thumbSize)\n\n const transform = this.vertical\n ? `translateY(20%) translateY(${(Number(this.thumbSize) / 3) - 1}px) translateX(55%) rotate(135deg)`\n : `translateY(-20%) translateY(-12px) translateX(-50%) rotate(45deg)`\n\n return this.$createElement(VScaleTransition, {\n props: { origin: 'bottom center' },\n }, [\n this.$createElement('div', {\n staticClass: 'v-slider__thumb-label-container',\n directives: [{\n name: 'show',\n value: this.isFocused || this.isActive || this.thumbLabel === 'always',\n }],\n }, [\n this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb-label',\n style: {\n height: size,\n width: size,\n transform,\n },\n }), [this.$createElement('div', content)]),\n ]),\n ])\n },\n genThumb (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb',\n }))\n },\n getThumbContainerStyles (width: number): object {\n const direction = this.vertical ? 'top' : 'left'\n let value = this.$vuetify.rtl ? 100 - width : width\n value = this.vertical ? 100 - value : value\n\n return {\n transition: this.trackTransition,\n [direction]: `${value}%`,\n }\n },\n onThumbMouseDown (e: MouseEvent) {\n e.preventDefault()\n\n this.oldValue = this.internalValue\n this.keyPressed = 2\n this.isActive = true\n\n const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n if ('touches' in e) {\n this.app.addEventListener('touchmove', this.onMouseMove, mouseMoveOptions)\n addOnceEventListener(this.app, 'touchend', this.onSliderMouseUp, mouseUpOptions)\n } else {\n this.app.addEventListener('mousemove', this.onMouseMove, mouseMoveOptions)\n addOnceEventListener(this.app, 'mouseup', this.onSliderMouseUp, mouseUpOptions)\n }\n\n this.$emit('start', this.internalValue)\n },\n onSliderMouseUp (e: Event) {\n e.stopPropagation()\n this.keyPressed = 0\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n this.app.removeEventListener('touchmove', this.onMouseMove, mouseMoveOptions)\n this.app.removeEventListener('mousemove', this.onMouseMove, mouseMoveOptions)\n\n this.$emit('mouseup', e)\n this.$emit('end', this.internalValue)\n if (!deepEqual(this.oldValue, this.internalValue)) {\n this.$emit('change', this.internalValue)\n this.noClick = true\n }\n\n this.isActive = false\n },\n onMouseMove (e: MouseEvent) {\n const { value } = this.parseMouseMove(e)\n this.internalValue = value\n },\n onKeyDown (e: KeyboardEvent) {\n if (!this.isInteractive) return\n\n const value = this.parseKeyDown(e, this.internalValue)\n\n if (\n value == null ||\n value < this.minValue ||\n value > this.maxValue\n ) return\n\n this.internalValue = value\n this.$emit('change', value)\n },\n onKeyUp () {\n this.keyPressed = 0\n },\n onSliderClick (e: MouseEvent) {\n if (this.noClick) {\n this.noClick = false\n return\n }\n const thumb = this.$refs.thumb as HTMLElement\n thumb.focus()\n\n this.onMouseMove(e)\n this.$emit('change', this.internalValue)\n },\n onBlur (e: Event) {\n this.isFocused = false\n\n this.$emit('blur', e)\n },\n onFocus (e: Event) {\n this.isFocused = true\n\n this.$emit('focus', e)\n },\n parseMouseMove (e: MouseEvent) {\n const start = this.vertical ? 'top' : 'left'\n const length = this.vertical ? 'height' : 'width'\n const click = this.vertical ? 'clientY' : 'clientX'\n\n const {\n [start]: trackStart,\n [length]: trackLength,\n } = this.$refs.track.getBoundingClientRect() as any\n const clickOffset = 'touches' in e ? (e as any).touches[0][click] : e[click] // Can we get rid of any here?\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart) / trackLength, 0), 1) || 0\n\n if (this.vertical) clickPos = 1 - clickPos\n if (this.$vuetify.rtl) clickPos = 1 - clickPos\n\n const isInsideTrack = clickOffset >= trackStart && clickOffset <= trackStart + trackLength\n const value = parseFloat(this.min) + clickPos * (this.maxValue - this.minValue)\n\n return { value, isInsideTrack }\n },\n parseKeyDown (e: KeyboardEvent, value: number) {\n if (!this.isInteractive) return\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyCodes\n\n if (![pageup, pagedown, end, home, left, right, down, up].includes(e.keyCode)) return\n\n e.preventDefault()\n const step = this.stepNumeric || 1\n const steps = (this.maxValue - this.minValue) / step\n if ([left, right, down, up].includes(e.keyCode)) {\n this.keyPressed += 1\n\n const increase = this.$vuetify.rtl ? [left, up] : [right, up]\n const direction = increase.includes(e.keyCode) ? 1 : -1\n const multiplier = e.shiftKey ? 3 : (e.ctrlKey ? 2 : 1)\n\n value = value + (direction * step * multiplier)\n } else if (e.keyCode === home) {\n value = this.minValue\n } else if (e.keyCode === end) {\n value = this.maxValue\n } else {\n const direction = e.keyCode === pagedown ? 1 : -1\n value = value - (direction * step * (steps > 100 ? steps / 10 : 10))\n }\n\n return value\n },\n roundValue (value: number): number {\n if (!this.stepNumeric) return value\n // Format input value using the same number\n // of decimals places as in the step prop\n const trimmedStep = this.step.toString().trim()\n const decimals = trimmedStep.indexOf('.') > -1\n ? (trimmedStep.length - trimmedStep.indexOf('.') - 1)\n : 0\n const offset = this.minValue % this.stepNumeric\n\n const newValue = Math.round((value - offset) / this.stepNumeric) * this.stepNumeric + offset\n\n return parseFloat(Math.min(newValue, this.maxValue).toFixed(decimals))\n },\n },\n})\n","// Styles\nimport './VLabel.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-label',\n\n functional: true,\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n focused: Boolean,\n for: String,\n left: {\n type: [Number, String],\n default: 0,\n },\n right: {\n type: [Number, String],\n default: 'auto',\n },\n value: Boolean,\n },\n\n render (h, ctx): VNode {\n const { children, listeners, props } = ctx\n const data = {\n staticClass: 'v-label',\n class: {\n 'v-label--active': props.value,\n 'v-label--is-disabled': props.disabled,\n ...functionalThemeClasses(ctx),\n },\n attrs: {\n for: props.for,\n 'aria-hidden': !props.for,\n },\n on: listeners,\n style: {\n left: convertToUnit(props.left),\n right: convertToUnit(props.right),\n position: props.absolute ? 'absolute' : 'relative',\n },\n ref: 'label',\n }\n\n return h('label', Colorable.options.methods.setTextColor(props.focused && props.color, data), children)\n },\n})\n","import VLabel from './VLabel'\n\nexport { VLabel }\nexport default VLabel\n","// Styles\nimport './VMessages.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../util/mixins'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-messages',\n\n props: {\n value: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n },\n\n methods: {\n genChildren () {\n return this.$createElement('transition-group', {\n staticClass: 'v-messages__wrapper',\n attrs: {\n name: 'message-transition',\n tag: 'div',\n },\n }, this.value.map(this.genMessage))\n },\n genMessage (message: string, key: number) {\n return this.$createElement('div', {\n staticClass: 'v-messages__message',\n key,\n }, getSlot(this, 'default', { message, key }) || [message])\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-messages',\n class: this.themeClasses,\n }), [this.genChildren()])\n },\n})\n","import VMessages from './VMessages'\n\nexport { VMessages }\nexport default VMessages\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 touchmoveX: 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 scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\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\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n this.isOverflowing\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\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 this.scrollOffset = this.startX - e.touchmoveX\n },\n onTouchEnd () {\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 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) {\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 this.isOverflowing = this.widths.wrapper < 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: {\n type: Boolean,\n default: undefined,\n },\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.$vuetify.rtl && axis === 'x' ? !this.internalReverse : this.internalReverse\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.reverse ? !this.isReverse : this.isReverse\n },\n },\n\n watch: {\n internalIndex: 'updateReverse',\n },\n\n mounted () {\n window.requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n genContainer (): VNode {\n const children = [this.$slots.default]\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 fn: () => void\n ) {\n return this.$createElement('div', {\n staticClass: `v-window__${direction}`,\n }, [\n this.$createElement(VBtn, {\n props: { icon: true },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n },\n on: {\n click: () => {\n this.changedByDelimiters = true\n fn()\n },\n },\n }, [\n this.$createElement(VIcon, {\n props: { large: true },\n }, icon),\n ]),\n ])\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 this.isReverse = this.$vuetify.rtl\n\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 this.isReverse = !this.$vuetify.rtl\n\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 if (this.changedByDelimiters) {\n this.changedByDelimiters = false\n return\n }\n\n this.isReverse = val < oldVal\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 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":""}