{"version":3,"sources":["webpack:///../../../src/components/VList/VListItemAction.ts","webpack:///../../../src/components/VList/VListItemGroup.ts","webpack:///../../../src/components/VMenu/index.ts","webpack:///../../../src/components/VList/VListItemIcon.ts","webpack:///../../../src/components/VChip/index.ts","webpack:///../../../src/components/VList/VListGroup.ts","webpack:///../../../src/components/VAvatar/VAvatar.ts","webpack:///../../../src/components/VAvatar/index.ts","webpack:///../../../src/components/VList/VListItemAvatar.ts","webpack:///../../../src/components/VList/index.ts","webpack:///../../../src/components/VItemGroup/VItemGroup.ts","webpack:///../../../src/mixins/comparable/index.ts","webpack:///../../../src/components/VList/VList.ts","webpack:///../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///../../../src/components/VSubheader/index.ts","webpack:///../../../src/components/VSelect/VSelectList.ts","webpack:///../../../src/mixins/filterable/index.ts","webpack:///../../../src/components/VSelect/VSelect.ts","webpack:///../../../src/components/VDivider/VDivider.ts","webpack:///../../../src/components/VList/VListItem.ts","webpack:///../../../src/components/VMenu/VMenu.ts"],"names":["Vue","extend","name","functional","render","h","data","children","staticClass","filteredChild","filter","VNode","isComment","text","length","mixins","BaseItemGroup","Colorable","provide","isInGroup","listItemGroup","this","computed","classes","options","call","methods","genData","setTextColor","color","attrs","role","VMenu","trim","VChip","baseMixins","BindsAttrs","Bootable","RegistrableInject","Toggleable","directives","ripple","props","activeClass","type","String","default","appendIcon","disabled","Boolean","group","RegExp","noAction","prependIcon","Object","subGroup","isActive","watch","val","list","listClick","_uid","$route","created","register","value","matchRoute","path","beforeDestroy","unregister","click","e","isBooted","$emit","$nextTick","genIcon","icon","$createElement","VIcon","genAppendIcon","$slots","VListItemIcon","genHeader","VListItem","class","inputValue","on","listeners$","genPrependIcon","activator","genItems","showLazyContent","getSlot","onRouteChange","to","toggle","uid","match","VExpandTransition","Measurable","Roundable","left","right","size","Number","roundedClasses","styles","height","convertToUnit","minWidth","width","measurableStyles","style","$listeners","setBackgroundColor","VAvatar","horizontal","tile","VListItemActionText","createSimpleFunctional","VListItemContent","VListItemTitle","VListItemSubtitle","VList","VListItemAction","VListItemGroup","Comparable","Proxyable","Themeable","mandatory","max","multiple","tag","internalLazyValue","undefined","items","themeClasses","selectedIndex","selectedItem","indexOf","selectedItems","item","index","toggleMethod","getValue","selectedValues","internalValue","Array","isArray","v","valueComparator","some","intern","consoleWarn","i","onClick","updateInternalValue","push","$on","updateMandatory","updateItem","_isDestroyed","splice","valueIndex","updateItemsState","forEach","updateMultiple","updateSingle","last","slice","reverse","find","defaultValue","findIndex","isSame","itemGroup","Function","deepEqual","VSheet","isInList","inject","isInMenu","isInNav","dense","expand","flat","nav","rounded","subheader","threeLine","twoLine","groups","content","g","attrs$","Ripple","indeterminate","indeterminateIcon","onIcon","offIcon","listeners","dark","light","def","center","mergeData","stopPropagation","input","wrapInArray","f","VDivider","inset","$attrs","VSubheader","action","hideSelected","itemDisabled","itemText","itemValue","noDataText","noFilter","searchInput","parsedItems","map","tileActiveClass","keys","join","staticNoDataTile","mousedown","preventDefault","genTileContent","genAction","VSimpleCheckbox","genDivider","genFilteredText","start","middle","end","getMaskedCharacters","genHighlight","header","toString","toLocaleLowerCase","genTile","hasItem","getDisabled","id","$scopedSlots","parent","scopedSlot","needsTile","getText","slot","componentOptions","Ctor","getPropertyFromItem","itemsLength","divider","unshift","tabindex","defaultMenuProps","closeOnClick","closeOnContentClick","disableKeys","openOnClick","maxHeight","VTextField","Dependent","Filterable","ClickOutside","attach","cacheItems","chips","clearable","deletableChips","disableLookup","eager","itemColor","menuProps","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","lazyValue","keyboardLookupPrefix","keyboardLookupLastTime","allItems","filterDuplicates","concat","hasChips","computedItems","computedOwns","computedCounterValue","_a","counterValue","isFocused","handler","blur","closeConditional","include","getOpenDependentElements","dynamicHeight","hasSlot","selection","isDirty","listData","scopeId","$vnode","context","$options","_scopeId","virtualizedItems","$vuetify","lang","t","select","selectItem","scopedSlots","staticList","consoleError","VSelectList","$_menuProps","auto","menuCanShow","normalisedProps","split","reduce","acc","p","nudgeBottom","offsetY","initialValue","setSelectedItems","$refs","menu","updateDimensions","window","setTimeout","onMenuActiveChange","immediate","setMenuIndex","activateMenu","isInteractive","clearableCallback","setValue","focus","getContent","contains","target","$el","arr","uniqueValues","Map","set","has","from","values","findExistingIndex","genChipSelection","isDisabled","close","small","onChipInput","key","JSON","stringify","genCommaSelection","computedColor","genDefaultSlot","selections","genSelections","genInput","genFieldset","genLabel","prefix","genAffix","suffix","genClearIcon","genIconSlot","genHiddenInput","genMenu","genProgress","cb","extraData","VInput","domProps","readonly","isReadonly","getObjectValueByPath","autocomplete","placeholder","persistentPlaceholder","hasLabel","keypress","onKeyPress","genInputSlot","genList","genListWithSlot","slots","slotName","scroll","onScroll","ref","genSelection","genSlotSelection","selected","getMenuIndex","listIndex","onBlur","isAppendInner","onEscDown","KEYBOARD_LOOKUP_THRESHOLD","now","performance","toLowerCase","startsWith","Math","getTiles","onKeyDown","keyCode","keyCodes","tab","up","down","home","enter","includes","changeListIndex","space","onUpDown","esc","onTabDown","onSpaceDown","tiles","getAttribute","onMouseUp","hasMouseDown","which","showMoreItems","scrollHeight","scrollTop","clientHeight","requestAnimationFrame","activeTile","hasClickableTiles","prevTile","nextTile","firstTile","lastTile","appendInner","vertical","orientation","Routable","GroupableFactory","ToggleableFactory","inheritAttrs","inactive","link","selectable","proxyClass","isClickable","hasOwnProperty","removed","detail","genAttrs","generateRouteLink","keydown","nativeOn","active","Delayable","Returnable","Menuable","Resize","theme","offsetX","openOnHover","origin","transition","calculatedTopAuto","defaultOffset","hasJustFocused","resizeTimeout","calculatedLeft","menuWidth","dimensions","parseFloat","calculatedMinWidth","calcXOverflow","calcLeftAuto","calcLeft","calculatedMaxHeight","calculatedMaxWidth","maxWidth","min","nudgeWidth","pageWidth","isNaN","parseInt","calculatedTop","top","calcYOverflow","calcTop","tabIndex","transformOrigin","zIndex","activeZIndex","isContentActive","next","prev","classList","add","contentHeight","offsetTop","goTo","appOffset","duration","container","remove","mounted","callActivate","activate","startTransition","then","calcTopAuto","calcScrollPosition","querySelector","maxScrollTop","offsetHeight","computedTop","tileDistanceFromMenuTop","firstTileOffsetTop","genActivatorAttributes","attributes","Activatable","genActivatorListeners","genTransition","genContent","genDirectives","getScopeIdAttrs","rootThemeClasses","activatorFixed","menuable__content__active","contentClass","mouseenter","mouseEnterHandler","mouseleave","mouseLeaveHandler","getContentSlot","querySelectorAll","runDelay","relatedTarget","callDeactivate","getActivator","onResize","offsetWidth","clearTimeout","arg","genActivator","VThemeProvider","root"],"mappings":"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","file":"js/chunk-499c4118.9437a0e7.js","sourcesContent":["// 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 './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 VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\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","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\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, RegExp],\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","import './VAvatar.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n Colorable,\n Measurable,\n Roundable,\n /* @vue/component */\n).extend({\n name: 'v-avatar',\n\n props: {\n left: Boolean,\n right: Boolean,\n size: {\n type: [Number, String],\n default: 48,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-avatar--left': this.left,\n 'v-avatar--right': this.right,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return {\n height: convertToUnit(this.size),\n minWidth: convertToUnit(this.size),\n width: convertToUnit(this.size),\n ...this.measurableStyles,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-avatar',\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n }\n\n return h('div', this.setBackgroundColor(this.color, data), this.$slots.default)\n },\n})\n","import VAvatar from './VAvatar'\n\nexport { VAvatar }\nexport default VAvatar\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","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","// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\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 Comparable,\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 tag: {\n type: String,\n default: 'div',\n },\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.valueComparator(this.internalValue, v)\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.some(intern => this.valueComparator(intern, 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 === undefined\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 => this.valueComparator(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 = this.valueComparator(this.internalValue, value)\n\n if (this.mandatory && isSame) return\n\n this.internalValue = isSame ? undefined : value\n },\n },\n\n render (h): VNode {\n return h(this.tag, 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","import Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { deepEqual } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'comparable',\n props: {\n valueComparator: {\n type: Function,\n default: deepEqual,\n } as PropValidator,\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","import './VSimpleCheckbox.sass'\n\nimport Ripple from '../../directives/ripple'\n\nimport Vue, { VNode, VNodeDirective } from 'vue'\nimport { VIcon } from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-simple-checkbox',\n\n functional: true,\n\n directives: {\n Ripple,\n },\n\n props: {\n ...Colorable.options.props,\n ...Themeable.options.props,\n disabled: Boolean,\n ripple: {\n type: Boolean,\n default: true,\n },\n value: Boolean,\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n },\n\n render (h, { props, data, listeners }): VNode {\n const children = []\n let icon = props.offIcon\n if (props.indeterminate) icon = props.indeterminateIcon\n else if (props.value) icon = props.onIcon\n\n children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n props: {\n disabled: props.disabled,\n dark: props.dark,\n light: props.light,\n },\n }), icon))\n\n if (props.ripple && !props.disabled) {\n const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n staticClass: 'v-input--selection-controls__ripple',\n directives: [{\n def: Ripple,\n name: 'ripple',\n value: { center: true },\n }] as VNodeDirective[],\n }))\n\n children.push(ripple)\n }\n\n return h('div',\n mergeData(data, {\n class: {\n 'v-simple-checkbox': true,\n 'v-simple-checkbox--disabled': props.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (data.on && data.on.input && !props.disabled) {\n wrapInArray(data.on.input).forEach(f => f(!props.value))\n }\n },\n },\n }), [\n h('div', { staticClass: 'v-input--selection-controls__input' }, children),\n ])\n },\n})\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\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","// 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 { getPropertyFromItem } 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 ripple: false,\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 text\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return [start, this.genHighlight(middle), end]\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string) {\n return this.$createElement('span', { staticClass: 'v-list-item__mask' }, 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 return this.$createElement(VListItemContent, [\n this.$createElement(VListItemTitle, [\n this.genFilteredText(this.getText(item)),\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","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'filterable',\n\n props: {\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\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 const value = this.multiple\n ? this.selectedItems\n : (this.getText(this.selectedItems[0]) ?? '').toString()\n\n if (typeof this.counterValue === 'function') {\n return this.counterValue(value)\n }\n\n return value.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 if (this.multiple) {\n this.$nextTick(() => {\n this.$refs.menu?.updateDimensions()\n })\n }\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 this.setMenuIndex(-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 ? [] : null)\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\n // Do not return null values if existant (#14421)\n if (item == null) {\n continue\n }\n // Do not deduplicate headers or dividers (#12517)\n if (item.header || item.divider) {\n uniqueValues.set(item, item)\n continue\n }\n\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.isDisabled ||\n this.getDisabled(item)\n )\n const isInteractive = !isDisabled && this.isInteractive\n\n return this.$createElement(VChip, {\n staticClass: 'v-chip--select',\n attrs: { tabindex: -1 },\n props: {\n close: this.deletableChips && isInteractive,\n disabled: isDisabled,\n inputValue: index === this.selectedIndex,\n small: this.smallChips,\n },\n on: {\n click: (e: MouseEvent) => {\n if (!isInteractive) 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.isDisabled ||\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 placeholder: (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) ? this.placeholder : undefined,\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 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 && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end, keyCodes.enter].includes(keyCode)) {\n this.$nextTick(() => {\n menu.changeListIndex(e)\n this.$emit('update:list-index', menu.listIndex)\n })\n }\n\n // If enter, space, open menu\n if ([\n keyCodes.enter,\n keyCodes.space,\n ].includes(keyCode)) this.activateMenu()\n\n // If menu is not active, up/down/home/end 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, keyCodes.home, keyCodes.end].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 this.$refs.menu.getTiles()\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\n if (!menu.hasClickableTiles) return this.activateMenu()\n\n switch (keyCode) {\n case keyCodes.up:\n menu.prevTile()\n break\n case keyCodes.down:\n menu.nextTile()\n break\n case keyCodes.home:\n menu.firstTile()\n break\n case keyCodes.end:\n menu.lastTile()\n break\n }\n this.selectItem(this.allItems[this.getMenuIndex()])\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 // There is no item to re-highlight\n // when selections are hidden\n if (this.hideSelected) {\n this.setMenuIndex(-1)\n } else {\n const index = this.allItems.indexOf(item)\n if (~index) {\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n }\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 if (!this.valueComparator(value, this.internalValue)) {\n this.internalValue = value\n this.$emit('change', value)\n }\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","// Styles\nimport './VDivider.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\nexport default Themeable.extend({\n name: 'v-divider',\n\n props: {\n inset: Boolean,\n vertical: Boolean,\n },\n\n render (h): VNode {\n // WAI-ARIA attributes\n let orientation\n if (!this.$attrs.role || this.$attrs.role === 'separator') {\n orientation = this.vertical ? 'vertical' : 'horizontal'\n }\n return h('hr', {\n class: {\n 'v-divider': true,\n 'v-divider--inset': this.inset,\n 'v-divider--vertical': this.vertical,\n ...this.themeClasses,\n },\n attrs: {\n role: 'separator',\n 'aria-orientation': orientation,\n ...this.$attrs,\n },\n on: this.$listeners,\n })\n },\n})\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 = 'option'\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 toggle () {\n if (this.to && this.inputValue === undefined) {\n this.isActive = !this.isActive\n }\n this.$emit('change')\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 if (!this.disabled) {\n /* istanbul ignore else */\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n }\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.isActive ? this.setTextColor(this.color, data) : data, children)\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 Menuable from '../../mixins/menuable'\nimport Returnable from '../../mixins/returnable'\nimport Roundable from '../../mixins/roundable'\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'\nimport goTo from '../../services/goto'\n\n// Types\nimport { VNode, VNodeDirective, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Delayable,\n Returnable,\n Roundable,\n Themeable,\n Menuable,\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 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 const scrollTop = this.$refs.content.scrollTop\n const contentHeight = this.$refs.content.clientHeight\n\n if (scrollTop > tile.offsetTop - 8) {\n goTo(tile.offsetTop - tile.clientHeight, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\n goTo(tile.offsetTop - contentHeight + tile.clientHeight * 2, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n }\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.end) {\n this.lastTile()\n } else if (e.keyCode === keyCodes.home) {\n this.firstTile()\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, .v-divider, .v-subheader'))\n },\n mouseEnterHandler () {\n this.runDelay('open', () => {\n if (this.hasJustFocused) return\n\n this.hasJustFocused = 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 lastTile () {\n const tile = this.tiles[this.tiles.length - 1]\n\n if (!tile) return\n\n this.listIndex = this.tiles.length - 1\n\n if (tile.tabIndex === -1) this.prevTile()\n },\n firstTile () {\n const tile = this.tiles[0]\n\n if (!tile) return\n\n this.listIndex = 0\n\n if (tile.tabIndex === -1) this.nextTile()\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"],"sourceRoot":""}