{"version":3,"sources":["webpack:///../../../src/components/VList/VListItemAction.ts","webpack:///../../../src/components/VMenu/index.ts","webpack:///../../../src/components/VList/VListItemIcon.ts","webpack:///../../../src/components/VList/VListGroup.ts","webpack:///../../../src/components/VList/VListItemGroup.ts","webpack:///../../../src/components/VAvatar/VAvatar.ts","webpack:///../../../src/components/VAvatar/index.ts","webpack:///../../../src/components/VList/VListItemAvatar.ts","webpack:///../../../src/components/VList/index.ts","webpack:///../../../src/components/VItemGroup/VItemGroup.ts","webpack:///../../../src/mixins/comparable/index.ts","webpack:///../../../src/components/VData/VData.ts","webpack:///../../../src/components/VChip/VChip.ts","webpack:///../../../src/components/VChip/index.ts","webpack:///../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///../../../src/components/VSubheader/index.ts","webpack:///../../../src/components/VSelect/VSelectList.ts","webpack:///../../../src/mixins/filterable/index.ts","webpack:///../../../src/components/VSelect/VSelect.ts","webpack:///../../../src/components/VDataIterator/VDataFooter.ts","webpack:///../../../src/mixins/mobile/index.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/util/dedupeModelListeners.ts","webpack:///../../src/util/rebuildFunctionalSlots.ts","webpack:///../../../src/components/VDataTable/VDataTableHeader.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/mixins/mouse/index.ts","webpack:///../../../src/components/VDataTable/VDataTable.ts","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///../../../src/components/VBtn/index.ts","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VDivider/VDivider.ts"],"names":["Vue","extend","name","functional","render","h","data","children","staticClass","filteredChild","filter","VNode","isComment","text","length","VMenu","trim","baseMixins","mixins","BindsAttrs","Bootable","Colorable","RegistrableInject","Toggleable","directives","ripple","props","activeClass","type","String","default","appendIcon","color","disabled","Boolean","group","RegExp","noAction","prependIcon","Object","subGroup","computed","classes","this","isActive","watch","val","list","listClick","_uid","$route","created","register","value","matchRoute","path","beforeDestroy","unregister","methods","click","e","isBooted","$emit","$nextTick","genIcon","icon","$createElement","VIcon","genAppendIcon","$slots","VListItemIcon","genHeader","VListItem","attrs","role","class","inputValue","on","listeners$","genPrependIcon","activator","genItems","showLazyContent","getSlot","onRouteChange","to","toggle","uid","match","setTextColor","VExpandTransition","BaseItemGroup","provide","isInGroup","listItemGroup","options","call","genData","Measurable","Roundable","left","right","size","Number","roundedClasses","styles","height","convertToUnit","minWidth","width","measurableStyles","style","$listeners","setBackgroundColor","VAvatar","horizontal","tile","VListItemActionText","createSimpleFunctional","VListItemContent","VListItemTitle","VListItemSubtitle","VList","VListItemAction","Comparable","Proxyable","Themeable","mandatory","max","multiple","tag","internalLazyValue","undefined","items","themeClasses","selectedIndex","selectedItem","indexOf","selectedItems","item","index","toggleMethod","getValue","selectedValues","internalValue","Array","isArray","v","valueComparator","some","intern","consoleWarn","i","onClick","updateInternalValue","push","$on","updateMandatory","updateItem","_isDestroyed","splice","valueIndex","updateItemsState","forEach","updateMultiple","updateSingle","last","slice","reverse","find","defaultValue","findIndex","isSame","itemGroup","Function","deepEqual","inheritAttrs","sortBy","sortDesc","customSort","sortItems","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","search","customFilter","searchItems","serverItemsLength","internalOptions","wrapInArray","assign","sortDiff","groupDiff","fillArray","itemsLength","filteredItems","pageCount","Math","ceil","pageStart","pageStop","min","isGrouped","pagination","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","updateOptions","originalItemsLength","computedOptions","handler","old","deep","immediate","key","oldBy","oldDesc","by","desc","byIndex","k","map","s","$scopedSlots","Sizeable","Routable","GroupableFactory","ToggleableFactory","active","chipGroup","close","closeIcon","closeLabel","draggable","filterIcon","label","link","outlined","pill","textColor","proxyClass","isClickable","isLink","hasClose","sizeableClasses","groupClasses","breakingProps","original","replacement","$attrs","hasOwnProperty","breaking","genFilter","VExpandXTransition","genClose","$vuetify","lang","t","stopPropagation","preventDefault","genContent","generateRouteLink","tabindex","VChip","Ripple","indeterminate","indeterminateIcon","onIcon","offIcon","listeners","dark","light","def","center","mergeData","input","f","inset","VSubheader","action","dense","hideSelected","itemDisabled","itemText","itemValue","noDataText","noFilter","searchInput","parsedItems","tileActiveClass","keys","join","staticNoDataTile","mousedown","genTileContent","genAction","VSimpleCheckbox","genDivider","VDivider","genFilteredText","start","middle","end","getMaskedCharacters","genHighlight","header","toString","toLocaleLowerCase","genTile","hasItem","getDisabled","id","parent","scopedSlot","needsTile","getText","slot","componentOptions","Ctor","getPropertyFromItem","divider","unshift","defaultMenuProps","closeOnClick","closeOnContentClick","disableKeys","openOnClick","maxHeight","VTextField","Dependent","Filterable","ClickOutside","attach","cacheItems","chips","clearable","deletableChips","disableLookup","eager","itemColor","menuProps","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","lazyValue","keyboardLookupPrefix","keyboardLookupLastTime","allItems","filterDuplicates","concat","hasChips","computedOwns","computedCounterValue","_a","counterValue","isFocused","blur","closeConditional","include","getOpenDependentElements","dynamicHeight","hasSlot","selection","isDirty","listData","scopeId","$vnode","context","$options","_scopeId","virtualizedItems","select","selectItem","scopedSlots","staticList","consoleError","VSelectList","$_menuProps","auto","menuCanShow","normalisedProps","split","reduce","acc","p","nudgeBottom","offsetY","initialValue","setSelectedItems","$refs","menu","updateDimensions","onScroll","window","setTimeout","onMenuActiveChange","setMenuIndex","activateMenu","isInteractive","clearableCallback","setValue","focus","getContent","contains","target","$el","arr","uniqueValues","Map","set","has","from","values","findExistingIndex","content","genChipSelection","isDisabled","small","click:close","onChipInput","JSON","stringify","genCommaSelection","computedColor","genDefaultSlot","selections","genSelections","genInput","genFieldset","genLabel","prefix","genAffix","suffix","genClearIcon","genIconSlot","genHiddenInput","genMenu","genProgress","cb","extraData","VInput","domProps","readonly","isReadonly","getObjectValueByPath","autocomplete","placeholder","persistentPlaceholder","hasLabel","keypress","onKeyPress","attrs$","genInputSlot","genList","genListWithSlot","slots","slotName","scroll","ref","genSelection","genSlotSelection","selected","getMenuIndex","listIndex","onBlur","isAppendInner","onEscDown","ctrlKey","metaKey","altKey","KEYBOARD_LOOKUP_THRESHOLD","now","performance","toLowerCase","startsWith","getTiles","onKeyDown","keyCode","keyCodes","tab","up","down","home","enter","includes","changeListIndex","space","onUpDown","esc","onTabDown","onSpaceDown","tiles","getAttribute","onMouseUp","hasMouseDown","which","showMoreItems","scrollHeight","scrollTop","clientHeight","requestAnimationFrame","activeTile","hasClickableTiles","prevTile","nextTile","firstTile","lastTile","appendInner","required","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","hideDetails","genPaginationInfo","VBtn","genIcons","before","after","rtl","mobileBreakpoint","breakpoint","validator","isNaN","isMobile","mobile","mobileWidth","parseInt","isNumber","deprecate","Mobile","VData","itemKey","singleSelect","expanded","singleExpand","loading","noResultsText","loadingText","hideDefaultFooter","footerProps","selectableKey","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","sanitizedFooterProps","camelizeObjectKeys","isSelectable","removedProps","prop","removed","mounted","addEventListener","onKeyUp","removeEventListener","shift","shiftKey","toggleSelectAll","emit","x","lastEntryKey","lastEntryKeySelected","multipleSelect","currentItem","isExpanded","expand","createItemProps","genEmptyWrapper","genEmpty","filteredItemsLength","noData","noResults","empty","genFooter","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","$props","update:options","headers","checkboxColor","sortIcon","showGroupBy","genSelectAll","genSortIcon","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","asc","genSortSelect","change","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","scope","align","groupable","dedupeModelListeners","model","callback","rebuildFunctionalSlots","rebuildSlots","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","computedSlots","columns","regularSlot","textAlign","cellClass","headerClass","contentClass","summaryClass","fixedHeader","top","bottom","genWrapper","wrapper","hideDefaultHeader","mobileRowChildren","getDefaultMouseEventHandlers","getData","eventFirst","endsWith","event","getMouseEventHandlers","prevent","result","events","eventOptions","passive","once","capture","mouseEvent","button","buttons","stop","classSeparator","eventTargetClasses","currentTarget","className","currentTargets","document","elementsFromPoint","changedTouches","clientX","clientY","c","_b","isSameNode","dispatchEvent","TouchEvent","targetTouches","touches","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","filterMode","defaultFilter","matchesColumnFilters","matchesSearchTerm","VDataIterator","Loadable","Mouse","showSelect","showExpand","caption","headerProps","calculateWidths","headersLength","expandIcon","itemClass","itemStyle","loaderHeight","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","colspanAttrs","colspan","columnSorters","filterable","sanitizedHeaderProps","computedItemsPerPage","firstOption","groupByText","_c","calcWidths","querySelectorAll","clientWidth","customFilterWithColumns","customSortWithHeaders","genCaption","genColgroup","genLoading","genHeaders","VDataTableHeader","genGroupedRows","genRows","$set","genDefaultGroupedRow","isOpen","toggleFn","removeFn","remove","column","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","MobileRow","Row","mergeClasses","mergeStyles","genBody","body","genFoot","foot","genFooters","simpleProps","VSimpleTable","proxySlot","VGrid","Grid","fluid","vertical","orientation"],"mappings":"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","file":"static/js/chunk-94758044.f96ba678.js","sourcesContent":["// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-action',\n\n functional: true,\n\n render (h, { data, children = [] }): VNode {\n data.staticClass = data.staticClass ? `v-list-item__action ${data.staticClass}` : 'v-list-item__action'\n const filteredChild = children.filter(VNode => {\n return VNode.isComment === false && VNode.text !== ' '\n })\n if (filteredChild.length > 1) data.staticClass += ' v-list-item__action--stack'\n\n return h('div', data, children)\n },\n})\n","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-icon',\n\n functional: true,\n\n render (h, { data, children }): VNode {\n data.staticClass = (`v-list-item__icon ${data.staticClass || ''}`).trim()\n\n return h('div', data, children)\n },\n})\n","// 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","import './VAvatar.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n Colorable,\n Measurable,\n Roundable,\n /* @vue/component */\n).extend({\n name: 'v-avatar',\n\n props: {\n left: Boolean,\n right: Boolean,\n size: {\n type: [Number, String],\n default: 48,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-avatar--left': this.left,\n 'v-avatar--right': this.right,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return {\n height: convertToUnit(this.size),\n minWidth: convertToUnit(this.size),\n width: convertToUnit(this.size),\n ...this.measurableStyles,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-avatar',\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n }\n\n return h('div', this.setBackgroundColor(this.color, data), this.$slots.default)\n },\n})\n","import VAvatar from './VAvatar'\n\nexport { VAvatar }\nexport default VAvatar\n","// Components\nimport VAvatar from '../VAvatar'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default VAvatar.extend({\n name: 'v-list-item-avatar',\n\n props: {\n horizontal: Boolean,\n size: {\n type: [Number, String],\n default: 40,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-item__avatar--horizontal': this.horizontal,\n ...VAvatar.options.computed.classes.call(this),\n 'v-avatar--tile': this.tile || this.horizontal,\n }\n },\n },\n\n render (h): VNode {\n const render = VAvatar.options.render.call(this, h)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-list-item__avatar'\n\n return render\n },\n})\n","import { createSimpleFunctional } from '../../util/helpers'\n\nimport VList from './VList'\nimport VListGroup from './VListGroup'\nimport VListItem from './VListItem'\nimport VListItemGroup from './VListItemGroup'\nimport VListItemAction from './VListItemAction'\nimport VListItemAvatar from './VListItemAvatar'\nimport VListItemIcon from './VListItemIcon'\n\nexport const VListItemActionText = createSimpleFunctional('v-list-item__action-text', 'span')\nexport const VListItemContent = createSimpleFunctional('v-list-item__content', 'div')\nexport const VListItemTitle = createSimpleFunctional('v-list-item__title', 'div')\nexport const VListItemSubtitle = createSimpleFunctional('v-list-item__subtitle', 'div')\n\nexport {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemAvatar,\n VListItemIcon,\n VListItemGroup,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemActionText,\n VListItemAvatar,\n VListItemContent,\n VListItemGroup,\n VListItemIcon,\n VListItemSubtitle,\n VListItemTitle,\n },\n}\n","// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Groupable from '../../mixins/groupable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue/types'\n\nexport type GroupableInstance = InstanceType & {\n id?: string\n to?: any\n value?: any\n }\n\nexport const BaseItemGroup = mixins(\n Comparable,\n Proxyable,\n Themeable\n).extend({\n name: 'base-item-group',\n\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active',\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null,\n },\n multiple: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n data () {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n items: [] as GroupableInstance[],\n }\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-item-group': true,\n ...this.themeClasses,\n }\n },\n selectedIndex (): number {\n return (this.selectedItem && this.items.indexOf(this.selectedItem)) || -1\n },\n selectedItem (): GroupableInstance | undefined {\n if (this.multiple) return undefined\n\n return this.selectedItems[0]\n },\n selectedItems (): GroupableInstance[] {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index))\n })\n },\n selectedValues (): any[] {\n if (this.internalValue == null) return []\n\n return Array.isArray(this.internalValue)\n ? this.internalValue\n : [this.internalValue]\n },\n toggleMethod (): (v: any) => boolean {\n if (!this.multiple) {\n return (v: any) => this.valueComparator(this.internalValue, v)\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.some(intern => this.valueComparator(intern, v))\n }\n\n return () => false\n },\n },\n\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState',\n },\n\n created () {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this)\n }\n },\n\n methods: {\n\n genData (): object {\n return {\n class: this.classes,\n }\n },\n getValue (item: GroupableInstance, i: number): unknown {\n return item.value === undefined\n ? i\n : item.value\n },\n onClick (item: GroupableInstance) {\n this.updateInternalValue(\n this.getValue(item, this.items.indexOf(item))\n )\n },\n register (item: GroupableInstance) {\n const index = this.items.push(item) - 1\n\n item.$on('change', () => this.onClick(item))\n\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory()\n }\n\n this.updateItem(item, index)\n },\n unregister (item: GroupableInstance) {\n if (this._isDestroyed) return\n\n const index = this.items.indexOf(item)\n const value = this.getValue(item, index)\n\n this.items.splice(index, 1)\n\n const valueIndex = this.selectedValues.indexOf(value)\n\n // Items is not selected, do nothing\n if (valueIndex < 0) return\n\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value)\n }\n\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value)\n } else {\n this.internalValue = undefined\n }\n\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true)\n }\n },\n updateItem (item: GroupableInstance, index: number) {\n const value = this.getValue(item, index)\n\n item.isActive = this.toggleMethod(value)\n },\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState () {\n this.$nextTick(() => {\n if (this.mandatory &&\n !this.selectedItems.length\n ) {\n return this.updateMandatory()\n }\n\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem)\n })\n },\n updateInternalValue (value: any) {\n this.multiple\n ? this.updateMultiple(value)\n : this.updateSingle(value)\n },\n updateMandatory (last?: boolean) {\n if (!this.items.length) return\n\n const items = this.items.slice()\n\n if (last) items.reverse()\n\n const item = items.find(item => !item.disabled)\n\n // If no tabs are available\n // aborts mandatory value\n if (!item) return\n\n const index = this.items.indexOf(item)\n\n this.updateInternalValue(\n this.getValue(item, index)\n )\n },\n updateMultiple (value: any) {\n const defaultValue = Array.isArray(this.internalValue)\n ? this.internalValue\n : []\n const internalValue = defaultValue.slice()\n const index = internalValue.findIndex(val => this.valueComparator(val, value))\n\n if (\n this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1\n ) return\n\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max\n ) return\n\n index > -1\n ? internalValue.splice(index, 1)\n : internalValue.push(value)\n\n this.internalValue = internalValue\n },\n updateSingle (value: any) {\n const isSame = this.valueComparator(this.internalValue, value)\n\n if (this.mandatory && isSame) return\n\n this.internalValue = isSame ? undefined : value\n },\n },\n\n render (h): VNode {\n return h(this.tag, this.genData(), this.$slots.default)\n },\n})\n\nexport default BaseItemGroup.extend({\n name: 'v-item-group',\n\n provide (): object {\n return {\n itemGroup: this,\n }\n },\n})\n","import Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { deepEqual } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'comparable',\n props: {\n valueComparator: {\n type: Function,\n default: deepEqual,\n } as PropValidator,\n },\n})\n","// 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","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","// 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 if (this.hideSelected) {\n this.$nextTick(() => {\n this.onScroll()\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 if ('attach' in props) void 0\n else 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 // Attach to root el so that\n // menu covers prepend/append icons\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 e.key.length > 1 ||\n e.ctrlKey || e.metaKey || e.altKey\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(() => {\n const content = this.getContent()\n if (content) content.scrollTop = 0\n })\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","// 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","// 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 this.shiftKeyDown = e.keyCode === keyCodes.shift || e.shiftKey\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode === keyCodes.shift || !e.shiftKey) {\n this.shiftKeyDown = false\n }\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","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","// 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","// 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 Vue from 'vue'\n\nexport type MouseHandler = (e: MouseEvent | TouchEvent) => any\n\nexport type MouseEvents = {\n [event: string]: {\n event: string\n passive?: boolean\n capture?: boolean\n once?: boolean\n stop?: boolean\n prevent?: boolean\n button?: number\n result?: any\n }\n}\n\nexport type MouseEventsMap = {\n [event: string]: MouseHandler | MouseHandler[]\n}\n\nexport default Vue.extend({\n name: 'mouse',\n\n methods: {\n getDefaultMouseEventHandlers (suffix: string, getData: MouseHandler, eventFirst = false): MouseEventsMap {\n const listeners = Object.keys(this.$listeners)\n .filter(key => key.endsWith(suffix))\n .reduce((acc, key) => {\n acc[key] = { event: key.slice(0, -suffix.length) }\n return acc\n }, {} as MouseEvents)\n\n return this.getMouseEventHandlers({\n ...listeners,\n ['contextmenu' + suffix]: { event: 'contextmenu', prevent: true, result: false },\n }, getData, eventFirst)\n },\n getMouseEventHandlers (events: MouseEvents, getData: MouseHandler, eventFirst = false): MouseEventsMap {\n const on: MouseEventsMap = {}\n\n for (const event in events) {\n const eventOptions = events[event]\n\n if (!this.$listeners[event]) continue\n\n // TODO somehow pull in modifiers\n\n const prefix = eventOptions.passive ? '&' : ((eventOptions.once ? '~' : '') + (eventOptions.capture ? '!' : ''))\n const key = prefix + eventOptions.event\n\n const handler: MouseHandler = e => {\n const mouseEvent: MouseEvent = e as MouseEvent\n if (eventOptions.button === undefined || (mouseEvent.buttons > 0 && mouseEvent.button === eventOptions.button)) {\n if (eventOptions.prevent) {\n e.preventDefault()\n }\n if (eventOptions.stop) {\n e.stopPropagation()\n }\n\n // Due to TouchEvent target always returns the element that is first placed\n // Even if touch point has since moved outside the interactive area of that element\n // Ref: https://developer.mozilla.org/en-US/docs/Web/API/Touch/target\n // This block of code aims to make sure touchEvent is always dispatched from the element that is being pointed at\n if (e && 'touches' in e) {\n const classSeparator = ' '\n\n const eventTargetClasses = (e.currentTarget as HTMLElement)?.className.split(classSeparator)\n const currentTargets = document.elementsFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY)\n\n // Get \"the same kind\" current hovering target by checking\n // If element has the same class of initial touch start element (which has touch event listener registered)\n const currentTarget = currentTargets.find(t => t.className.split(classSeparator).some(c => eventTargetClasses.includes(c)))\n\n if (currentTarget &&\n !(e.target as HTMLElement)?.isSameNode(currentTarget)\n ) {\n currentTarget.dispatchEvent(new TouchEvent(e.type, {\n changedTouches: e.changedTouches as unknown as Touch[],\n targetTouches: e.targetTouches as unknown as Touch[],\n touches: e.touches as unknown as Touch[],\n }))\n return\n }\n }\n\n // TODO: VCalendar emits the calendar event as the first argument,\n // but it really should be the native event instead so modifiers can be used\n if (eventFirst) {\n this.$emit(event, e, getData(e))\n } else {\n this.$emit(event, getData(e), e)\n }\n }\n\n return eventOptions.result\n }\n\n if (key in on) {\n /* istanbul ignore next */\n if (Array.isArray(on[key])) {\n (on[key] as MouseHandler[]).push(handler)\n } else {\n on[key] = [on[key], handler] as MouseHandler[]\n }\n } else {\n on[key] = handler\n }\n }\n\n return on\n },\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 RowStyleFunction,\n DataTableItemProps,\n DataTableFilterMode,\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'\nimport Mouse from '../../mixins/mouse'\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, mergeStyles } 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 filterMode: DataTableFilterMode,\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n if (filterMode === 'union') {\n // If the `search` property is empty and there are no custom filters in use, there is nothing to do.\n if (!(search && headersWithoutCustomFilters.length) && !headersWithCustomFilters.length) return items\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n if (headersWithCustomFilters.length && headersWithCustomFilters.every(filterFn(item, search, defaultFilter))) {\n return true\n }\n\n // Otherwise, the `search` property is used to filter columns without a custom filter.\n return (search && headersWithoutCustomFilters.some(filterFn(item, search, customFilter)))\n })\n } else if (filterMode === 'intersection') {\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 } else {\n return items\n }\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n Mouse,\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 filterMode: {\n type: String,\n default: 'intersection',\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n itemStyle: {\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(\n items,\n search,\n this.headersWithCustomFilters,\n this.headersWithoutCustomFilters,\n this.customFilter,\n this.filterMode\n )\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 data = {\n ...VDataIterator.options.methods.createItemProps.call(this, item, index),\n headers: this.computedHeaders,\n }\n\n return {\n ...data,\n attrs: {\n class: {\n 'v-data-table__selected': data.isSelected,\n },\n },\n on: {\n ...this.getDefaultMouseEventHandlers(':row', () => data, true),\n // TODO: 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 },\n }\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 style: mergeStyles({}, getPropertyFromItem(item, this.itemStyle)),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: data.on,\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 'v-data-table--selectable': this.showSelect,\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","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\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"],"sourceRoot":""}