{"version":3,"sources":["webpack:///../../../src/components/VBtn/index.ts","webpack:///../../../src/components/VIcon/index.ts","webpack:///../../../src/components/VIcon/VIcon.ts","webpack:///../../../src/directives/resize/index.ts","webpack:///../../../src/components/VItemGroup/VItemGroup.ts","webpack:///../../../src/components/VDivider/VDivider.ts","webpack:///../../../src/components/VAvatar/VAvatar.ts","webpack:///../../../src/mixins/comparable/index.ts","webpack:///../../../src/mixins/mobile/index.ts","webpack:///../../../src/mixins/validatable/index.ts","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VAvatar/index.ts","webpack:///../../../src/components/VMessages/index.ts","webpack:///../../../src/components/VMessages/VMessages.ts","webpack:///../../../src/components/VInput/VInput.ts","webpack:///../../../src/components/VInput/index.ts","webpack:///../../../src/components/VLabel/VLabel.ts","webpack:///../../../src/components/VLabel/index.ts","webpack:///./node_modules/core-js/modules/es.object.is.js","webpack:///./node_modules/core-js/modules/esnext.array.last-item.js","webpack:///../../../src/components/VCounter/VCounter.ts","webpack:///../../../src/components/VCounter/index.ts","webpack:///../../../src/components/VTextField/VTextField.ts","webpack:///../../../src/mixins/intersectable/index.ts","webpack:///../../../src/components/VData/VData.ts","webpack:///../../../src/components/VChip/VChip.ts","webpack:///../../../src/components/VChip/index.ts","webpack:///../../../src/mixins/menuable/index.ts","webpack:///../../../src/components/VMenu/VMenu.ts","webpack:///../../../src/components/VMenu/index.ts","webpack:///../../../src/components/VCheckbox/VSimpleCheckbox.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/VListItemAvatar.ts","webpack:///../../../src/components/VList/index.ts","webpack:///../../../src/components/VSelect/VSelectList.ts","webpack:///../../../src/mixins/filterable/index.ts","webpack:///../../../src/components/VSelect/VSelect.ts","webpack:///../../../src/components/VDataIterator/VDataFooter.ts","webpack:///../../../src/components/VDataIterator/VDataIterator.ts","webpack:///../../../../src/components/VDataTable/mixins/header.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack:///../../../src/components/VDataTable/VDataTableHeader.ts","webpack:///../../src/util/dedupeModelListeners.ts","webpack:///../../src/util/rebuildFunctionalSlots.ts","webpack:///../../../src/components/VDataTable/Row.ts","webpack:///../../../src/components/VDataTable/RowGroup.ts","webpack:///../../../src/components/VDataTable/VSimpleTable.ts","webpack:///../../../src/components/VDataTable/MobileRow.ts","webpack:///../../../src/components/VDataTable/VDataTable.ts"],"names":["VBtn","VIcon","SIZE_MAP","mixins","BindsAttrs","Colorable","Sizeable","Themeable","extend","name","props","dense","Boolean","disabled","left","right","size","Number","String","tag","type","required","default","computed","medium","hasClickListener","this","listeners$","click","methods","getIcon","iconName","$slots","text","trim","remapInternalIcon","getSize","sizes","xSmall","small","large","xLarge","explicitSize","keys","find","key","convertToUnit","getDefaultData","staticClass","class","attrs","undefined","attrs$","on","getSvgWrapperData","fontSize","wrapperData","style","height","width","applyColors","data","themeClasses","setTextColor","color","renderFontIcon","icon","h","newChildren","iconType","delimiterIndex","indexOf","isMaterialIcon","push","some","val","includes","isFontAwesome5","slice","renderSvgIcon","svgData","xmlns","viewBox","role","d","renderSvgIconComponent","component","nativeOn","render","test","length","isSvgPath","Vue","$_wrapperFor","functional","children","domProps","textContent","innerHTML","Resize","inserted","el","binding","vnode","callback","value","options","passive","window","addEventListener","_onResize","Object","context","_uid","modifiers","quiet","unbind","_a","removeEventListener","BaseItemGroup","Comparable","Proxyable","activeClass","mandatory","max","multiple","internalLazyValue","items","classes","selectedIndex","selectedItem","selectedItems","filter","item","index","toggleMethod","getValue","selectedValues","internalValue","Array","isArray","v","valueComparator","intern","watch","created","consoleWarn","genData","i","onClick","updateInternalValue","register","$on","updateMandatory","updateItem","unregister","_isDestroyed","splice","isActive","updateItemsState","$nextTick","forEach","updateMultiple","updateSingle","last","reverse","findIndex","isSame","provide","itemGroup","inset","vertical","orientation","$attrs","$listeners","Measurable","Roundable","roundedClasses","styles","minWidth","measurableStyles","setBackgroundColor","Function","deepEqual","mobileBreakpoint","$vuetify","breakpoint","validator","isNaN","isMobile","mobile","mobileWidth","parseInt","hasOwnProperty","deprecate","baseMixins","RegistrableInject","error","errorCount","errorMessages","messages","readonly","rules","success","successMessages","validateOnBlur","errorBucket","hasColor","hasFocused","hasInput","isFocused","isResetting","lazyValue","valid","computedColor","isDisabled","isDark","appIsDark","hasError","internalErrorMessages","hasSuccess","internalSuccessMessages","externalError","hasMessages","validationTarget","hasState","shouldValidate","genInternalMessages","internalMessages","get","set","$emit","form","isInteractive","isReadonly","validations","validationState","handler","newVal","oldVal","validate","deep","setTimeout","beforeMount","beforeDestroy","reset","resetValidation","force","rule","consoleError","VDivider","VAvatar","VMessages","genChildren","$createElement","map","genMessage","message","getSlot","Validatable","inheritAttrs","appendIcon","backgroundColor","hideDetails","hideSpinButtons","hint","id","label","loading","persistentHint","prependIcon","hasMouseDown","showDetails","isLabelActive","isDirty","computedId","hasDetails","messagesToDisplay","hasHint","hasLabel","$_modelEvent","validation","validationResult","beforeCreate","$options","model","event","genContent","genPrependSlot","genControl","genAppendSlot","title","genInputSlot","genMessages","genDefaultSlot","genLabel","genIcon","cb","extraData","eventName","kebabCase","hasListener","mergeData","split","dark","light","tabindex","e","preventDefault","stopPropagation","mouseup","mousedown","onMouseDown","onMouseUp","ref","VLabel","focused","for","scopedSlots","genSlot","location","slot","prepend","append","VInput","absolute","ctx","listeners","functionalThemeClasses","position","$","target","stat","is","DESCRIPTORS","addToUnscopables","toObject","lengthOfArrayLike","defineBuiltInAccessor","prototype","configurable","O","len","VCounter","content","onVisible","isIntersecting","mounted","Intersect","$el","onObserve","$vnode","destroyed","entries","observer","Loadable","dirtyTypes","directives","resize","ripple","appendOuterIcon","autofocus","clearable","clearIcon","counter","counterValue","filled","flat","fullWidth","outlined","placeholder","prefix","prependInnerIcon","persistentPlaceholder","rounded","shaped","singleLine","solo","soloInverted","suffix","badInput","labelWidth","prefixWidth","prependWidth","initialValue","isBooted","isClearing","call","isSingle","isSolo","isEnclosed","computedCounterValue","toString","hasCounter","labelPosition","offset","labelValue","rtl","showLabel","setLabelWidth","setPrefixWidth","breaking","$watch","tryAutofocus","requestAnimationFrame","onResize","focus","onFocus","blur","$refs","input","clearableCallback","genPrependInnerSlot","genIconSlot","unshift","genClearIcon","genCounter","maxlength","$scopedSlots","_b","_c","genFieldset","genTextFieldSlot","genProgress","genLegend","span","genInput","assign","change","inputAttrs","onBlur","onInput","keydown","onKeyDown","messagesNode","counterNode","genAffix","root","attachedRoot","activeElement","validity","keyCode","keyCodes","enter","Math","min","scrollWidth","offsetWidth","setPrependWidth","document","updateValue","sortBy","sortDesc","customSort","sortItems","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","search","customFilter","searchItems","serverItemsLength","internalOptions","wrapInArray","sortDiff","groupDiff","fillArray","itemsLength","filteredItems","pageCount","ceil","pageStart","pageStop","isGrouped","pagination","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","group","updateOptions","originalItemsLength","computedOptions","old","immediate","toggle","oldBy","oldDesc","by","desc","byIndex","k","s","VChip","Routable","GroupableFactory","ToggleableFactory","active","chipGroup","close","closeIcon","closeLabel","draggable","filterIcon","link","pill","textColor","proxyClass","isClickable","isLink","hasClose","sizeableClasses","groupClasses","original","replacement","genFilter","VExpandXTransition","genClose","lang","t","generateRouteLink","Stackable","positionableFactory","Activatable","Detachable","allowOverflow","maxWidth","nudgeBottom","nudgeLeft","nudgeRight","nudgeTop","nudgeWidth","offsetOverflow","positionX","positionY","zIndex","activatorNode","absoluteX","absoluteY","activatedBy","activatorFixed","dimensions","activator","top","bottom","offsetTop","scrollHeight","offsetLeft","relativeYOffset","hasJustFocused","hasWindow","inputActivator","isContentActive","pageWidth","pageYOffset","stackClass","stackMinZIndex","computedLeft","a","c","activatorLeft","attach","offsetX","computedTop","offsetY","hasActivator","absoluteYOffset","callDeactivate","callActivate","updateDimensions","absolutePosition","activate","calcLeft","menuWidth","calcXOverflow","calcTop","calcYOverflow","xOverflow","getOffsetLeft","documentHeight","getInnerHeight","toTop","contentHeight","isOverflowing","deactivate","checkForPageYOffset","getOffsetTop","checkActivatorFixed","getActivator","getComputedStyle","offsetParent","genActivatorListeners","openOnClick","clientX","clientY","innerHeight","documentElement","clientHeight","pageXOffset","scrollLeft","scrollTop","getRoundedBoundedClientRect","rect","getBoundingClientRect","round","measure","marginLeft","marginTop","sneakPeek","display","startTransition","Promise","resolve","clientWidth","offsetRect","VMenu","Dependent","Delayable","Returnable","Menuable","ClickOutside","isInMenu","theme","auto","closeOnClick","closeOnContentClick","disableKeys","maxHeight","openOnHover","origin","transition","calculatedTopAuto","defaultOffset","listIndex","resizeTimeout","tiles","activeTile","calculatedLeft","parseFloat","calculatedMinWidth","calcLeftAuto","calculatedMaxHeight","calculatedMaxWidth","calculatedTop","hasClickableTiles","tile","tabIndex","transformOrigin","activeZIndex","next","prev","classList","add","goTo","appOffset","duration","container","remove","removed","then","calcTopAuto","calcScrollPosition","querySelector","maxScrollTop","offsetHeight","from","tileDistanceFromMenuTop","firstTileOffsetTop","changeListIndex","getTiles","tab","down","nextTile","up","prevTile","end","lastTile","home","firstTile","closeConditional","contains","genActivatorAttributes","attributes","genTransition","genDirectives","include","getOpenDependentElements","getScopeIdAttrs","rootThemeClasses","menuable__content__active","contentClass","getAttribute","scroll","mouseenter","mouseEnterHandler","mouseleave","mouseLeaveHandler","getContentSlot","querySelectorAll","runDelay","relatedTarget","esc","clearTimeout","arg","genActivator","showLazyContent","VThemeProvider","Ripple","indeterminate","indeterminateIcon","onIcon","offIcon","def","center","f","VSubheader","inject","isInGroup","isInList","isInNav","listItemGroup","inactive","selectable","threeLine","twoLine","detail","to","genAttrs","inputValue","VNode","isComment","VSheet","list","expand","nav","subheader","groups","g","listClick","uid","Bootable","Toggleable","RegExp","noAction","subGroup","$route","matchRoute","path","genAppendIcon","VListItemIcon","genHeader","VListItem","genPrependIcon","genItems","onRouteChange","match","VExpandTransition","horizontal","createSimpleFunctional","VListItemContent","VListItemTitle","action","hideSelected","itemDisabled","itemText","itemValue","noDataText","noFilter","searchInput","parsedItems","tileActiveClass","join","staticNoDataTile","genTileContent","genAction","VListItemAction","VSimpleCheckbox","genDivider","genFilteredText","getMaskedCharacters","start","middle","genHighlight","header","toLocaleLowerCase","genTile","hasItem","getDisabled","scopedSlot","parent","needsTile","getText","componentOptions","Ctor","getPropertyFromItem","divider","VList","defaultMenuProps","VTextField","Filterable","cacheItems","chips","deletableChips","disableLookup","eager","itemColor","menuProps","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","keyboardLookupPrefix","keyboardLookupLastTime","allItems","filterDuplicates","concat","hasChips","computedOwns","dynamicHeight","hasSlot","selection","listData","scopeId","_scopeId","virtualizedItems","select","selectItem","staticList","VSelectList","$_menuProps","menuCanShow","normalisedProps","reduce","acc","p","setSelectedItems","menu","onMenuActiveChange","setMenuIndex","activateMenu","setValue","getContent","arr","uniqueValues","Map","has","values","findExistingIndex","genChipSelection","onChipInput","JSON","stringify","genCommaSelection","selections","genSelections","genHiddenInput","genMenu","getObjectValueByPath","autocomplete","keypress","onKeyPress","genList","genListWithSlot","slots","slotName","onScroll","genSelection","genSlotSelection","selected","getMenuIndex","isAppendInner","onEscDown","now","performance","toLowerCase","startsWith","space","onUpDown","onTabDown","onSpaceDown","which","appendInner","itemsPerPageOptions","prevIcon","nextIcon","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","genDataItemsPerPageOption","obj","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","genItemsPerPageSelect","computedIPPO","ippo","VSelect","genPaginationInfo","genIcons","before","after","Mobile","VData","itemKey","singleSelect","expanded","singleExpand","noResultsText","loadingText","hideDefaultFooter","footerProps","selectableKey","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","sanitizedFooterProps","camelizeObjectKeys","isSelectable","prop","onKeyUp","shift","toggleSelectAll","emit","x","lastEntryKey","lastEntryKeySelected","multipleSelect","currentItem","isExpanded","createItemProps","genEmptyWrapper","genEmpty","filteredItemsLength","noData","noResults","empty","genFooter","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","$props","headers","checkboxColor","sortIcon","showGroupBy","genSelectAll","genSortIcon","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","asc","genSortSelect","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","scope","align","groupable","dedupeModelListeners","rebuildSlots","VDataTableHeaderMobile","VDataTableHeaderDesktop","computedSlots","columns","regularSlot","textAlign","cellClass","headerClass","summaryClass","fixedHeader","genWrapper","wrapper","hideDefaultHeader","mobileRowChildren","filterFn","VDataIterator","showSelect","showExpand","caption","headerProps","calculateWidths","headersLength","expandIcon","defaultFilter","itemClass","loaderHeight","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","colspanAttrs","colspan","columnSorters","headersWithCustomFilters","filterable","headersWithoutCustomFilters","sanitizedHeaderProps","computedItemsPerPage","firstOption","groupByText","calcWidths","customFilterWithColumns","matchesColumnFilters","matchesSearchTerm","searchTableItems","customSortWithHeaders","genCaption","genColgroup","genLoading","genHeaders","VDataTableHeader","genGroupedRows","genRows","$set","genDefaultGroupedRow","isOpen","toggleFn","removeFn","column","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","MobileRow","Row","mergeClasses","contextmenu","dblclick","genBody","body","genFoot","foot","genFooters","simpleProps","VSimpleTable","proxySlot"],"mappings":"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","file":"de0d25a.js","sourcesContent":["import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","import VIcon from './VIcon'\n\nexport { VIcon }\nexport default VIcon\n","import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ResizeVNodeDirective extends VNodeDirective {\n value?: () => void\n options?: boolean | AddEventListenerOptions\n}\n\nfunction inserted (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n const callback = binding.value!\n const options = binding.options || { passive: true }\n\n window.addEventListener('resize', callback, options)\n\n el._onResize = Object(el._onResize)\n el._onResize![vnode.context!._uid] = {\n callback,\n options,\n }\n\n if (!binding.modifiers || !binding.modifiers.quiet) {\n callback()\n }\n}\n\nfunction unbind (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n if (!el._onResize?.[vnode.context!._uid]) return\n\n const { callback, options } = el._onResize[vnode.context!._uid]!\n\n window.removeEventListener('resize', callback, options)\n\n delete el._onResize[vnode.context!._uid]\n}\n\nexport const Resize = {\n inserted,\n unbind,\n}\n\nexport default Resize\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","// 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","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 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","// Types\nimport { BreakpointName } from 'vuetify/types/services/breakpoint'\nimport { deprecate } from '../../util/console'\nimport Vue, { PropType } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'mobile',\n\n props: {\n mobileBreakpoint: {\n type: [Number, String] as PropType,\n default (): number | BreakpointName | undefined {\n // Avoid destroying unit\n // tests for users\n return this.$vuetify\n ? this.$vuetify.breakpoint.mobileBreakpoint\n : undefined\n },\n validator: v => (\n !isNaN(Number(v)) ||\n ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n ),\n },\n },\n\n computed: {\n isMobile (): boolean {\n const {\n mobile,\n width,\n name,\n mobileBreakpoint,\n } = this.$vuetify.breakpoint\n\n // Check if local mobileBreakpoint matches\n // the application's mobileBreakpoint\n if (mobileBreakpoint === this.mobileBreakpoint) return mobile\n\n const mobileWidth = parseInt(this.mobileBreakpoint, 10)\n const isNumber = !isNaN(mobileWidth)\n\n return isNumber\n ? width < mobileWidth\n : name === this.mobileBreakpoint\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n deprecate('mobile-break-point', 'mobile-breakpoint', this)\n }\n },\n})\n","// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'form', any>('form'),\n Themeable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'validatable',\n\n props: {\n disabled: Boolean,\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n messages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n readonly: Boolean,\n rules: {\n type: Array,\n default: () => [],\n } as PropValidator,\n success: Boolean,\n successMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n validateOnBlur: Boolean,\n value: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.value,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled || (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly || (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeDestroy () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\n","import VAvatar from './VAvatar'\n\nexport { VAvatar }\nexport default VAvatar\n","import VMessages from './VMessages'\n\nexport { VMessages }\nexport default VMessages\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","// Styles\nimport './VInput.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VLabel from '../VLabel'\nimport VMessages from '../VMessages'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Validatable from '../../mixins/validatable'\n\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n kebabCase,\n} from '../../util/helpers'\nimport mergeData from '../../util/mergeData'\n\n// Types\nimport { VNode, VNodeData, PropType } from 'vue'\nimport mixins from '../../util/mixins'\nimport { InputValidationRule } from 'vuetify/types'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Validatable,\n)\n\ninterface options extends InstanceType {\n /* eslint-disable-next-line camelcase */\n $_modelEvent: string\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-input',\n\n inheritAttrs: false,\n\n props: {\n appendIcon: String,\n backgroundColor: {\n type: String,\n default: '',\n },\n dense: Boolean,\n height: [Number, String],\n hideDetails: [Boolean, String] as PropType,\n hideSpinButtons: Boolean,\n hint: String,\n id: String,\n label: String,\n loading: Boolean,\n persistentHint: Boolean,\n prependIcon: String,\n value: null as any as PropType,\n },\n\n data () {\n return {\n lazyValue: this.value,\n hasMouseDown: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-input--has-state': this.hasState,\n 'v-input--hide-details': !this.showDetails,\n 'v-input--is-label-active': this.isLabelActive,\n 'v-input--is-dirty': this.isDirty,\n 'v-input--is-disabled': this.isDisabled,\n 'v-input--is-focused': this.isFocused,\n // .loading === '' so we can't just cast to boolean\n 'v-input--is-loading': this.loading !== false && this.loading != null,\n 'v-input--is-readonly': this.isReadonly,\n 'v-input--dense': this.dense,\n 'v-input--hide-spin-buttons': this.hideSpinButtons,\n ...this.themeClasses,\n }\n },\n computedId (): string {\n return this.id || `input-${this._uid}`\n },\n hasDetails (): boolean {\n return this.messagesToDisplay.length > 0\n },\n hasHint (): boolean {\n return !this.hasMessages &&\n !!this.hint &&\n (this.persistentHint || this.isFocused)\n },\n hasLabel (): boolean {\n return !!(this.$slots.label || this.label)\n },\n // Proxy for `lazyValue`\n // This allows an input\n // to function without\n // a provided model\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit(this.$_modelEvent, val)\n },\n },\n isDirty (): boolean {\n return !!this.lazyValue\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n messagesToDisplay (): string[] {\n if (this.hasHint) return [this.hint]\n\n if (!this.hasMessages) return []\n\n return this.validations.map((validation: string | InputValidationRule) => {\n if (typeof validation === 'string') return validation\n\n const validationResult = validation(this.internalValue)\n\n return typeof validationResult === 'string' ? validationResult : ''\n }).filter(message => message !== '')\n },\n showDetails (): boolean {\n return this.hideDetails === false || (this.hideDetails === 'auto' && this.hasDetails)\n },\n },\n\n watch: {\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeCreate () {\n // v-radio-group needs to emit a different event\n // https://github.com/vuetifyjs/vuetify/issues/4752\n this.$_modelEvent = (this.$options.model && this.$options.model.event) || 'input'\n },\n\n methods: {\n genContent () {\n return [\n this.genPrependSlot(),\n this.genControl(),\n this.genAppendSlot(),\n ]\n },\n genControl () {\n return this.$createElement('div', {\n staticClass: 'v-input__control',\n attrs: { title: this.attrs$.title },\n }, [\n this.genInputSlot(),\n this.genMessages(),\n ])\n },\n genDefaultSlot () {\n return [\n this.genLabel(),\n this.$slots.default,\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData: VNodeData = {}\n ) {\n const icon = (this as any)[`${type}Icon`]\n const eventName = `click:${kebabCase(type)}`\n const hasListener = !!(this.listeners$[eventName] || cb)\n\n const data = mergeData({\n attrs: {\n 'aria-label': hasListener ? kebabCase(type).split('-')[0] + ' icon' : undefined,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n light: this.light,\n tabindex: type === 'clear' ? -1 : undefined,\n },\n on: !hasListener\n ? undefined\n : {\n click: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n\n this.$emit(eventName, e)\n cb && cb(e)\n },\n // Container has g event that will\n // trigger menu open if enclosed\n mouseup: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n },\n },\n }, extraData)\n\n return this.$createElement('div', {\n staticClass: `v-input__icon`,\n class: type ? `v-input__icon--${kebabCase(type)}` : undefined,\n }, [\n this.$createElement(\n VIcon,\n data,\n icon\n ),\n ])\n },\n genInputSlot () {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n staticClass: 'v-input__slot',\n style: { height: convertToUnit(this.height) },\n on: {\n click: this.onClick,\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n },\n ref: 'input-slot',\n }), [this.genDefaultSlot()])\n },\n genLabel () {\n if (!this.hasLabel) return null\n\n return this.$createElement(VLabel, {\n props: {\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: this.hasState,\n for: this.computedId,\n light: this.light,\n },\n }, this.$slots.label || this.label)\n },\n genMessages () {\n if (!this.showDetails) return null\n\n return this.$createElement(VMessages, {\n props: {\n color: this.hasHint ? '' : this.validationState,\n dark: this.dark,\n light: this.light,\n value: this.messagesToDisplay,\n },\n attrs: {\n role: this.hasMessages ? 'alert' : null,\n },\n scopedSlots: {\n default: props => getSlot(this, 'message', props),\n },\n })\n },\n genSlot (\n type: string,\n location: string,\n slot: (VNode | VNode[])[]\n ) {\n if (!slot.length) return null\n\n const ref = `${type}-${location}`\n\n return this.$createElement('div', {\n staticClass: `v-input__${ref}`,\n ref,\n }, slot)\n },\n genPrependSlot () {\n const slot = []\n\n if (this.$slots.prepend) {\n slot.push(this.$slots.prepend)\n } else if (this.prependIcon) {\n slot.push(this.genIcon('prepend'))\n }\n\n return this.genSlot('prepend', 'outer', slot)\n },\n genAppendSlot () {\n const slot = []\n\n // Append icon for text field was really\n // an appended inner icon, v-text-field\n // will overwrite this method in order to obtain\n // backwards compat\n if (this.$slots.append) {\n slot.push(this.$slots.append)\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n onClick (e: Event) {\n this.$emit('click', e)\n },\n onMouseDown (e: Event) {\n this.hasMouseDown = true\n this.$emit('mousedown', e)\n },\n onMouseUp (e: Event) {\n this.hasMouseDown = false\n this.$emit('mouseup', e)\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.validationState, {\n staticClass: 'v-input',\n class: this.classes,\n }), this.genContent())\n },\n})\n","import VInput from './VInput'\n\nexport { VInput }\nexport default VInput\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","var $ = require('../internals/export');\nvar is = require('../internals/same-value');\n\n// `Object.is` method\n// https://tc39.es/ecma262/#sec-object.is\n$({ target: 'Object', stat: true }, {\n is: is\n});\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar DESCRIPTORS = require('../internals/descriptors');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\n// `Array.prototype.lastIndex` accessor\n// https://github.com/keithamus/proposal-array-last\nif (DESCRIPTORS) {\n defineBuiltInAccessor(Array.prototype, 'lastItem', {\n configurable: true,\n get: function lastItem() {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n return len == 0 ? undefined : O[len - 1];\n },\n set: function lastItem(value) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n return O[len == 0 ? 0 : len - 1] = value;\n }\n });\n\n addToUnscopables('lastItem');\n}\n","// Styles\nimport './VCounter.sass'\n\n// Mixins\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-counter',\n\n functional: true,\n\n props: {\n value: {\n type: [Number, String],\n default: '',\n },\n max: [Number, String],\n },\n\n render (h, ctx): VNode {\n const { props } = ctx\n const max = parseInt(props.max, 10)\n const value = parseInt(props.value, 10)\n const content = max ? `${value} / ${max}` : String(props.value)\n const isGreater = max && (value > max)\n\n return h('div', {\n staticClass: 'v-counter',\n class: {\n 'error--text': isGreater,\n ...functionalThemeClasses(ctx),\n },\n }, content)\n },\n})\n","import VCounter from './VCounter'\n\nexport { VCounter }\nexport default VCounter\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 { attachedRoot } from '../../util/dom'\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 persistentPlaceholder: Boolean,\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 || '').toString()].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.labelValue)\n },\n labelValue (): boolean {\n return this.isFocused || this.isLabelActive || this.persistentPlaceholder\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 this.autofocus && this.tryAutofocus()\n requestAnimationFrame(() => {\n this.isBooted = true\n requestAnimationFrame(() => {\n if (!this.isIntersecting) {\n this.onResize()\n }\n })\n })\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 // if the text field has no content then don't display the clear icon.\n // We add an empty div because other controls depend on a ref to append inner\n if (!this.isDirty) {\n return this.genSlot('append', 'inner', [\n this.$createElement('div'),\n ])\n }\n\n return this.genSlot('append', 'inner', [\n this.genIcon('clear', this.clearableCallback),\n ])\n },\n genCounter () {\n if (!this.hasCounter) return null\n\n const max = this.counter === true ? this.attrs$.maxlength : this.counter\n\n const props = {\n dark: this.dark,\n light: this.light,\n max,\n value: this.computedCounterValue,\n }\n\n return this.$scopedSlots.counter?.({ props }) ?? this.$createElement(VCounter, { props })\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 staticClass: 'notranslate',\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 const { title, ...inputAttrs } = this.attrs$\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 ...inputAttrs,\n autofocus: this.autofocus,\n disabled: this.isDisabled,\n id: this.computedId,\n placeholder: this.persistentPlaceholder || this.isFocused || !this.hasLabel ? this.placeholder : undefined,\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 const root = attachedRoot(this.$el)\n if (!root) return\n\n if (root.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 (\n e.keyCode === keyCodes.enter &&\n this.lazyValue !== this.initialValue\n ) {\n this.initialValue = this.lazyValue\n this.$emit('change', this.initialValue)\n }\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) return false\n\n const root = attachedRoot(this.$el)\n if (!root || root.activeElement === this.$refs.input) 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","// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n return Vue.extend({\n name: 'intersectable',\n\n data: () => ({\n isIntersecting: false,\n }),\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isIntersecting = isIntersecting\n\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","// Styles\nimport './VChip.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Components\nimport { VExpandXTransition } from '../transitions'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\nimport { PropValidator, PropType } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Sizeable,\n Routable,\n Themeable,\n GroupableFactory('chipGroup'),\n ToggleableFactory('inputValue')\n).extend({\n name: 'v-chip',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.chipGroup) return ''\n\n return this.chipGroup.activeClass\n },\n } as any as PropValidator,\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span',\n },\n textColor: String,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-chip--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses,\n }\n },\n hasClose (): boolean {\n return Boolean(this.close)\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.chipGroup\n )\n },\n },\n\n created () {\n const breakingProps = [\n ['outline', 'outlined'],\n ['selected', 'input-value'],\n ['value', 'active'],\n ['@input', '@active.sync'],\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 click (e: MouseEvent): void {\n this.$emit('click', e)\n\n this.chipGroup && this.toggle()\n },\n genFilter (): VNode {\n const children = []\n\n if (this.isActive) {\n children.push(\n this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: { left: true },\n }, this.filterIcon)\n )\n }\n\n return this.$createElement(VExpandXTransition, children)\n },\n genClose (): VNode {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true,\n size: 18,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n this.$emit('click:close')\n this.$emit('update:active', false)\n },\n },\n }, this.closeIcon)\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-chip__content',\n }, [\n this.filter && this.genFilter(),\n this.$slots.default,\n this.hasClose && this.genClose(),\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genContent()]\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs!.tabindex,\n }\n data.directives!.push({\n name: 'show',\n value: this.active,\n })\n data = this.setBackgroundColor(this.color, data)\n\n const color = this.textColor || (this.outlined && this.color)\n\n return h(tag, this.setTextColor(color, data), children)\n },\n})\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","// Mixins\nimport Stackable from '../stackable'\nimport { factory as positionableFactory } from '../positionable'\nimport Activatable from '../activatable'\nimport Detachable from '../detachable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Stackable,\n positionableFactory(['top', 'right', 'bottom', 'left', 'absolute']),\n Activatable,\n Detachable,\n)\n\ninterface dimensions {\n top: number\n left: number\n bottom: number\n right: number\n width: number\n height: number\n offsetTop: number\n scrollHeight: number\n offsetLeft: number\n}\n\ninterface options extends ExtractVue {\n attach: boolean | string | Element\n offsetY: boolean\n offsetX: boolean\n dimensions: {\n activator: dimensions\n content: dimensions\n }\n $refs: {\n content: HTMLElement\n activator: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'menuable',\n\n props: {\n allowOverflow: Boolean,\n light: Boolean,\n dark: Boolean,\n maxWidth: {\n type: [Number, String],\n default: 'auto',\n },\n minWidth: [Number, String],\n nudgeBottom: {\n type: [Number, String],\n default: 0,\n },\n nudgeLeft: {\n type: [Number, String],\n default: 0,\n },\n nudgeRight: {\n type: [Number, String],\n default: 0,\n },\n nudgeTop: {\n type: [Number, String],\n default: 0,\n },\n nudgeWidth: {\n type: [Number, String],\n default: 0,\n },\n offsetOverflow: Boolean,\n positionX: {\n type: Number,\n default: null,\n },\n positionY: {\n type: Number,\n default: null,\n },\n zIndex: {\n type: [Number, String],\n default: null,\n },\n },\n\n data: () => ({\n activatorNode: [] as VNode[],\n absoluteX: 0,\n absoluteY: 0,\n activatedBy: null as EventTarget | null,\n activatorFixed: false,\n dimensions: {\n activator: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n offsetLeft: 0,\n },\n content: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n },\n },\n relativeYOffset: 0,\n hasJustFocused: false,\n hasWindow: false,\n inputActivator: false,\n isContentActive: false,\n pageWidth: 0,\n pageYOffset: 0,\n stackClass: 'v-menu__content--active',\n stackMinZIndex: 6,\n }),\n\n computed: {\n computedLeft () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n const activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0\n const minWidth = Math.max(a.width, c.width)\n let left = 0\n left += activatorLeft\n if (this.left || (this.$vuetify.rtl && !this.right)) left -= (minWidth - a.width)\n if (this.offsetX) {\n const maxWidth = isNaN(Number(this.maxWidth))\n ? a.width\n : Math.min(a.width, Number(this.maxWidth))\n\n left += this.left ? -maxWidth : a.width\n }\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return left\n },\n computedTop () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n let top = 0\n\n if (this.top) top += a.height - c.height\n if (this.attach !== false) top += a.offsetTop\n else top += a.top + this.pageYOffset\n if (this.offsetY) top += this.top ? -a.height : a.height\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n\n return top\n },\n hasActivator (): boolean {\n return !!this.$slots.activator || !!this.$scopedSlots.activator || !!this.activator || !!this.inputActivator\n },\n absoluteYOffset (): number {\n return this.pageYOffset - this.relativeYOffset\n },\n },\n\n watch: {\n disabled (val) {\n val && this.callDeactivate()\n },\n isActive (val) {\n if (this.disabled) return\n\n val ? this.callActivate() : this.callDeactivate()\n },\n positionX: 'updateDimensions',\n positionY: 'updateDimensions',\n },\n\n beforeMount () {\n this.hasWindow = typeof window !== 'undefined'\n\n if (this.hasWindow) {\n window.addEventListener('resize', this.updateDimensions, false)\n }\n },\n\n beforeDestroy () {\n if (this.hasWindow) {\n window.removeEventListener('resize', this.updateDimensions, false)\n }\n },\n\n methods: {\n absolutePosition () {\n return {\n offsetTop: this.positionY || this.absoluteY,\n offsetLeft: this.positionX || this.absoluteX,\n scrollHeight: 0,\n top: this.positionY || this.absoluteY,\n bottom: this.positionY || this.absoluteY,\n left: this.positionX || this.absoluteX,\n right: this.positionX || this.absoluteX,\n height: 0,\n width: 0,\n }\n },\n activate () {},\n calcLeft (menuWidth: number) {\n return convertToUnit(this.attach !== false\n ? this.computedLeft\n : this.calcXOverflow(this.computedLeft, menuWidth))\n },\n calcTop () {\n return convertToUnit(this.attach !== false\n ? this.computedTop\n : this.calcYOverflow(this.computedTop))\n },\n calcXOverflow (left: number, menuWidth: number) {\n const xOverflow = left + menuWidth - this.pageWidth + 12\n\n if ((!this.left || this.right) && xOverflow > 0) {\n left = Math.max(left - xOverflow, 0)\n } else {\n left = Math.max(left, 12)\n }\n\n return left + this.getOffsetLeft()\n },\n calcYOverflow (top: number) {\n const documentHeight = this.getInnerHeight()\n const toTop = this.absoluteYOffset + documentHeight\n const activator = this.dimensions.activator\n const contentHeight = this.dimensions.content.height\n const totalHeight = top + contentHeight\n const isOverflowing = toTop < totalHeight\n\n // If overflowing bottom and offset\n // TODO: set 'bottom' position instead of 'top'\n if (isOverflowing &&\n this.offsetOverflow &&\n // If we don't have enough room to offset\n // the overflow, don't offset\n activator.top > contentHeight\n ) {\n top = this.pageYOffset + (activator.top - contentHeight)\n // If overflowing bottom\n } else if (isOverflowing && !this.allowOverflow) {\n top = toTop - contentHeight - 12\n // If overflowing top\n } else if (top < this.absoluteYOffset && !this.allowOverflow) {\n top = this.absoluteYOffset + 12\n }\n\n return top < 12 ? 12 : top\n },\n callActivate () {\n if (!this.hasWindow) return\n\n this.activate()\n },\n callDeactivate () {\n this.isContentActive = false\n\n this.deactivate()\n },\n checkForPageYOffset () {\n if (this.hasWindow) {\n this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop()\n }\n },\n checkActivatorFixed () {\n if (this.attach !== false) {\n this.activatorFixed = false\n return\n }\n let el = this.getActivator()\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n this.activatorFixed = true\n return\n }\n el = el.offsetParent as HTMLElement\n }\n this.activatorFixed = false\n },\n deactivate () {},\n genActivatorListeners () {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this)\n\n const onClick = listeners.click\n\n if (onClick) {\n listeners.click = (e: MouseEvent & KeyboardEvent & FocusEvent) => {\n if (this.openOnClick) {\n onClick && onClick(e)\n }\n\n this.absoluteX = e.clientX\n this.absoluteY = e.clientY\n }\n }\n\n return listeners\n },\n getInnerHeight () {\n if (!this.hasWindow) return 0\n\n return window.innerHeight ||\n document.documentElement.clientHeight\n },\n getOffsetLeft () {\n if (!this.hasWindow) return 0\n\n return window.pageXOffset ||\n document.documentElement.scrollLeft\n },\n getOffsetTop () {\n if (!this.hasWindow) return 0\n\n return window.pageYOffset ||\n document.documentElement.scrollTop\n },\n getRoundedBoundedClientRect (el: Element) {\n const rect = el.getBoundingClientRect()\n return {\n top: Math.round(rect.top),\n left: Math.round(rect.left),\n bottom: Math.round(rect.bottom),\n right: Math.round(rect.right),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n }\n },\n measure (el: HTMLElement) {\n if (!el || !this.hasWindow) return null\n\n const rect = this.getRoundedBoundedClientRect(el)\n\n // Account for activator margin\n if (this.attach !== false) {\n const style = window.getComputedStyle(el)\n\n rect.left = parseInt(style.marginLeft!)\n rect.top = parseInt(style.marginTop!)\n }\n\n return rect\n },\n sneakPeek (cb: () => void) {\n requestAnimationFrame(() => {\n const el = this.$refs.content\n\n if (!el || el.style.display !== 'none') {\n cb()\n return\n }\n\n el.style.display = 'inline-block'\n cb()\n el.style.display = 'none'\n })\n },\n startTransition () {\n return new Promise(resolve => requestAnimationFrame(() => {\n this.isContentActive = this.hasJustFocused = this.isActive\n resolve()\n }))\n },\n updateDimensions () {\n this.hasWindow = typeof window !== 'undefined'\n this.checkActivatorFixed()\n this.checkForPageYOffset()\n this.pageWidth = document.documentElement.clientWidth\n\n const dimensions: any = {\n activator: { ...this.dimensions.activator },\n content: { ...this.dimensions.content },\n }\n\n // Activator should already be shown\n if (!this.hasActivator || this.absolute) {\n dimensions.activator = this.absolutePosition()\n } else {\n const activator = this.getActivator()\n if (!activator) return\n\n dimensions.activator = this.measure(activator)\n dimensions.activator.offsetLeft = activator.offsetLeft\n if (this.attach !== false) {\n // account for css padding causing things to not line up\n // this is mostly for v-autocomplete, hopefully it won't break anything\n dimensions.activator.offsetTop = activator.offsetTop\n } else {\n dimensions.activator.offsetTop = 0\n }\n }\n\n // Display and hide to get dimensions\n this.sneakPeek(() => {\n if (this.$refs.content) {\n if (this.$refs.content.offsetParent) {\n const offsetRect = this.getRoundedBoundedClientRect(this.$refs.content.offsetParent)\n\n this.relativeYOffset = window.pageYOffset + offsetRect.top\n dimensions.activator.top -= this.relativeYOffset\n dimensions.activator.left -= window.pageXOffset + offsetRect.left\n }\n\n dimensions.content = this.measure(this.$refs.content)\n }\n\n this.dimensions = dimensions\n })\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 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","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\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","// 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 = '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","// 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, 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","// 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","// 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","// 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","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = true\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = false\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = this.$slots.loading || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = this.$slots['no-data'] || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = this.$slots['no-results'] || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","// Styles\nimport './VDataTableHeader.sass'\n\n// Components\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\n// Mixins\nimport header from './mixins/header'\n\n// Utilities\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport mergeData from '../../util/mergeData'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n ...header.options.props,\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\n\n data = mergeData(data, { props })\n\n if (props.mobile) {\n return h(VDataTableHeaderMobile, data, children)\n } else {\n return h(VDataTableHeaderDesktop, data, children)\n }\n },\n})\n","import { VNodeData } from 'vue'\n\n/**\n * Removes duplicate `@input` listeners when\n * using v-model with functional components\n *\n * @see https://github.com/vuetifyjs/vuetify/issues/4460\n */\nexport default function dedupeModelListeners (data: VNodeData): void {\n if (data.model && data.on && data.on.input) {\n if (Array.isArray(data.on.input)) {\n const i = data.on.input.indexOf(data.model.callback)\n if (i > -1) data.on.input.splice(i, 1)\n } else {\n delete data.on.input\n }\n }\n}\n","import { CreateElement, VNode } from 'vue'\n\nexport default function rebuildFunctionalSlots (slots: { [key: string]: VNode[] | undefined }, h: CreateElement) {\n const children: VNode[] = []\n\n for (const slot in slots) {\n if (slots.hasOwnProperty(slot)) {\n children.push(h('template', { slot }, slots[slot]))\n }\n }\n\n return children\n}\n","// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DataTableHeader } from 'vuetify/types'\n\n// Utils\nimport { getObjectValueByPath, wrapInArray } from '../../util/helpers'\n\nfunction needsTd (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n !['td', 'th'].includes(slot![0]?.tag!)\n}\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns = props.headers.map((header: DataTableHeader) => {\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(...wrapInArray(scopedSlot({\n item: props.item,\n isMobile: false,\n header,\n index: props.index,\n value,\n })))\n } else if (regularSlot) {\n children.push(...wrapInArray(regularSlot))\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const textAlign = `text-${header.align || 'start'}`\n\n return needsTd(children)\n ? h('td', {\n class: [\n textAlign,\n header.cellClass,\n {\n 'v-data-table__divider': header.divider,\n },\n ],\n }, children)\n : children\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', this.$slots.default),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n hideDefaultHeader: Boolean,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const classes = {\n 'v-data-table__mobile-row': true,\n }\n\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({\n item: props.item,\n isMobile: true,\n header,\n index: props.index,\n value,\n }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const mobileRowChildren = [\n h('div', {\n staticClass: 'v-data-table__mobile-row__cell',\n }, children),\n ]\n\n if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n mobileRowChildren.unshift(\n h('div', {\n staticClass: 'v-data-table__mobile-row__header',\n }, [header.text])\n )\n }\n\n return h('td', { class: classes }, mobileRowChildren)\n })\n\n return h('tr', { ...data, staticClass: 'v-data-table__mobile-table-row' }, columns)\n },\n})\n","import './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n RowClassFunction,\n DataTableItemProps,\n} from 'vuetify/types'\n\n// Components\nimport { VData } from '../VData'\nimport { VDataFooter, VDataIterator } from '../VDataIterator'\nimport VBtn from '../VBtn'\nimport VDataTableHeader from './VDataTableHeader'\n// import VVirtualTable from './VVirtualTable'\nimport VIcon from '../VIcon'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers'\nimport { breaking } from '../../util/console'\nimport { mergeClasses } from '../../util/mergeData'\n\nfunction filterFn (item: any, search: string | null, filter: DataTableFilterFunction) {\n return (header: DataTableHeader) => {\n const value = getObjectValueByPath(item, header.value)\n return header.filter ? header.filter(value, search, item) : filter(value, search, item)\n }\n}\n\nfunction searchTableItems (\n items: any[],\n search: string | null,\n headersWithCustomFilters: DataTableHeader[],\n headersWithoutCustomFilters: DataTableHeader[],\n customFilter: DataTableFilterFunction\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n // We need to match every filter to be included in the results.\n const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter))\n\n // Headers without custom filters are only filtered by the `search` property if it is defined.\n // We only need a single column to match the search term to be included in the results.\n const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter))\n\n return matchesColumnFilters && matchesSearchTerm\n })\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n).extend({\n name: 'v-data-table',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => [],\n } as PropValidator,\n showSelect: Boolean,\n checkboxColor: String,\n showExpand: Boolean,\n showGroupBy: Boolean,\n // TODO: Fix\n // virtualRows: Boolean,\n height: [Number, String],\n hideDefaultHeader: Boolean,\n caption: String,\n dense: Boolean,\n headerProps: Object,\n calculateWidths: Boolean,\n fixedHeader: Boolean,\n headersLength: Number,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n customFilter: {\n type: Function,\n default: defaultFilter,\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n },\n\n data () {\n return {\n internalGroupBy: [] as string[],\n openCache: {} as { [key: string]: boolean },\n widths: [] as number[],\n }\n },\n\n computed: {\n computedHeaders (): DataTableHeader[] {\n if (!this.headers) return []\n const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value))\n const defaultHeader = { text: '', sortable: false, width: '1px' }\n\n if (this.showSelect) {\n const index = headers.findIndex(h => h.value === 'data-table-select')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-select' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n if (this.showExpand) {\n const index = headers.findIndex(h => h.value === 'data-table-expand')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-expand' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n return headers\n },\n colspanAttrs (): object | undefined {\n return this.isMobile ? undefined : {\n colspan: this.headersLength || this.computedHeaders.length,\n }\n },\n columnSorters (): Record {\n return this.computedHeaders.reduce>((acc, header) => {\n if (header.sort) acc[header.value] = header.sort\n return acc\n }, {})\n },\n headersWithCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n headersWithoutCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n sanitizedHeaderProps (): Record {\n return camelizeObjectKeys(this.headerProps)\n },\n computedItemsPerPage (): number {\n const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage\n const itemsPerPageOptions: DataItemsPerPageOption[] | undefined = this.sanitizedFooterProps.itemsPerPageOptions\n\n if (\n itemsPerPageOptions &&\n !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)\n ) {\n const firstOption = itemsPerPageOptions[0]\n return typeof firstOption === 'object' ? firstOption.value : firstOption\n }\n\n return itemsPerPage\n },\n groupByText (): string {\n return this.headers?.find(header => header.value === this.internalGroupBy?.[0])?.text ?? ''\n },\n },\n\n created () {\n const breakingProps = [\n ['sort-icon', 'header-props.sort-icon'],\n ['hide-headers', 'hide-default-header'],\n ['select-all', 'show-select'],\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 mounted () {\n // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n // const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n // if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n // }\n\n if (this.calculateWidths) {\n window.addEventListener('resize', this.calcWidths)\n this.calcWidths()\n }\n },\n\n beforeDestroy () {\n if (this.calculateWidths) {\n window.removeEventListener('resize', this.calcWidths)\n }\n },\n\n methods: {\n calcWidths () {\n this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth)\n },\n customFilterWithColumns (items: any[], search: string) {\n return searchTableItems(items, search, this.headersWithCustomFilters, this.headersWithoutCustomFilters, this.customFilter)\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any, index: number): DataTableItemProps {\n const props = VDataIterator.options.methods.createItemProps.call(this, item, index)\n\n return Object.assign(props, { headers: this.computedHeaders })\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${this.groupByText}: ${group}`, remove])\n\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [column]))\n }\n\n if (this.$scopedSlots['group.summary']) {\n children.push(this.$createElement('template', { slot: 'column.summary' }, [\n this.$scopedSlots['group.summary']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item, i),\n isMobile: this.isMobile,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n index: i,\n item,\n }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map((item, index) => this.genDefaultExpandedRow(item, index))\n : items.map((item, index) => this.genDefaultSimpleRow(item, index))\n },\n genDefaultExpandedRow (item: any, index: number): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, index, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n item,\n })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, index: number, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item, index)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot({\n ...data,\n isMobile: this.isMobile,\n }) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: {\n // TODO: for click, the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: (event: MouseEvent) => this.$emit('click:row', item, data, event),\n contextmenu: (event: MouseEvent) => this.$emit('contextmenu:row', event, data),\n dblclick: (event: MouseEvent) => this.$emit('dblclick:row', event, data),\n },\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n"],"sourceRoot":""}