{"version":3,"sources":["webpack:///../../../src/components/VSubheader/index.ts","webpack:///../../../src/components/VMenu/index.ts","webpack:///../../../src/components/VChip/index.ts","webpack:///../../../src/components/VBadge/VBadge.ts","webpack:///../../../src/components/VAppBar/VAppBarNavIcon.ts","webpack:///../../src/util/rebuildFunctionalSlots.ts","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///../../../src/components/VData/VData.ts","webpack:///../../../src/components/VDataIterator/VDataFooter.ts","webpack:///../../../src/components/VDataIterator/VDataIterator.ts","webpack:///../../../../src/components/VDataTable/mixins/header.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack:///../../../src/components/VDataTable/VDataTableHeader.ts","webpack:///../../../src/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/VCheckbox/VSimpleCheckbox.ts","webpack:///../../src/util/dedupeModelListeners.ts","webpack:///../../../src/components/VSwitch/VSwitch.ts","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VSelect/VSelectList.ts","webpack:///../../../src/mixins/filterable/index.ts","webpack:///../../../src/components/VSelect/VSelect.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///../../../src/components/VMain/VMain.ts","webpack:///../../../src/components/VNavigationDrawer/VNavigationDrawer.ts"],"names":["VSubheader","VMenu","VChip","mixins","Colorable","PositionableFactory","Themeable","Toggleable","Transitionable","extend","name","props","avatar","Boolean","bordered","color","type","String","default","content","required","dot","label","icon","inline","offsetX","Number","offsetY","overlap","tile","transition","value","computed","classes","_objectSpread","this","bottom","left","themeClasses","computedBottom","computedYOffset","computedLeft","isRtl","computedXOffset","computedRight","computedTop","calcPosition","$vuetify","rtl","offset","styles","right","top","methods","concat","convertToUnit","genBadge","lang","$attrs","t","data","setBackgroundColor","staticClass","style","attrs","title","role","directives","isActive","badge","$createElement","genBadgeContent","origin","mode","slot","getSlot","VIcon","genBadgeWrapper","render","h","children","_this$$attrs","_objectWithoutProperties","_excluded","unshift","push","class","Vue","functional","_ref","slots","listeners","d","Object","assign","trim","on","defaultSlot","VBtn","rebuildFunctionalSlots","hasOwnProperty","call","fixRegExpWellKnownSymbolLogic","anObject","isNullOrUndefined","requireObjectCoercible","sameValue","toString","getMethod","regExpExec","SEARCH","nativeSearch","maybeCallNative","regexp","O","searcher","undefined","RegExp","string","rx","S","res","done","previousLastIndex","lastIndex","result","index","inheritAttrs","items","Array","options","sortBy","sortDesc","customSort","Function","sortItems","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","search","customFilter","searchItems","serverItemsLength","internalOptions","wrapInArray","_internalOptions$sort","_internalOptions$grou","_internalOptions","sortDiff","length","groupDiff","apply","_toConsumableArray","fillArray","itemsLength","filteredItems","pageCount","Math","ceil","pageStart","pageStop","min","isGrouped","pagination","slice","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","group","updateOptions","originalItemsLength","computedOptions","watch","handler","old","deepEqual","deep","immediate","$emit","isArray","toggle","key","oldBy","oldDesc","by","desc","byIndex","findIndex","k","splice","_this$toggle","_this$toggle2","_this","map","s","i","max","$scopedSlots","itemsPerPageOptions","prevIcon","nextIcon","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","_typeof","genDataItemsPerPageOption","obj","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","text","genItemsPerPageSelect","computedIPPO","find","ippo","VSelect","disabled","hideDetails","auto","minWidth","input","genPaginationInfo","genIcon","click","genIcons","before","after","Mobile","VData","itemKey","singleSelect","expanded","mobileBreakpoint","singleExpand","loading","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","selection","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","_this2","some","sanitizedFooterProps","camelizeObjectKeys","_this3","filter","item","isSelectable","_this4","reduce","getObjectValueByPath","keys","values","_this5","_this6","includes","created","_this7","breakingProps","forEach","_ref2","_slicedToArray","original","replacement","breaking","removedProps","prop","removed","mounted","window","addEventListener","onKeyDown","onKeyUp","beforeDestroy","removeEventListener","e","keyCode","keyCodes","shift","shiftKey","toggleSelectAll","select","_this8","arguments","emit","x","lastEntryKey","lastEntryKeySelected","multipleSelect","start","end","currentItem","isExpanded","expand","createItemProps","_this9","v","isMobile","genEmptyWrapper","genEmpty","filteredItemsLength","noData","noResults","genItems","_this10","empty","genFooter","scopedSlots","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","_this11","$props","ripple","headers","checkboxColor","sortIcon","showGroupBy","genSelectAll","indeterminate","_a","VSimpleCheckbox","genSortIcon","size","header","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","active","asc","stopPropagation","genSortSelect","multiple","menuProps","closeOnContentClick","change","width","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","join","genHeader","scope","align","divider","_this$getAria","groupable","mobile","dedupeModelListeners","rebuildSlots","mergeData","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","tag","computedSlots","columns","slotName","scopedSlot","regularSlot","textAlign","cellClass","headerClass","contentClass","summaryClass","dense","fixedHeader","height","$slots","genWrapper","wrapper","hideDefaultHeader","mobileRowChildren","getDefaultMouseEventHandlers","suffix","getData","eventFirst","$listeners","endsWith","acc","event","getMouseEventHandlers","_defineProperty","prevent","events","_loop","eventOptions","prefix","passive","once","capture","mouseEvent","button","buttons","preventDefault","stop","classSeparator","eventTargetClasses","currentTarget","className","split","currentTargets","document","elementsFromPoint","changedTouches","clientX","clientY","c","_b","target","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","from","$el","querySelectorAll","clientWidth","customFilterWithColumns","customSortWithHeaders","genCaption","genColgroup","genLoading","genProgress","genHeaders","VDataTableHeader","genGroupedRows","genRows","$set","genDefaultGroupedRow","isOpen","toggleFn","removeFn","remove","small","column","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","val","MobileRow","Row","mergeClasses","getPropertyFromItem","mergeStyles","genBody","body","genFoot","foot","genFooters","simpleProps","VSimpleTable","proxySlot","Ripple","indeterminateIcon","onIcon","offIcon","setTextColor","dark","light","def","center","f","model","indexOf","callback","Selectable","Touch","inset","flat","VInput","isDisabled","validationState","hasError","shouldValidate","hasSuccess","hasColor","computedColor","switchData","genDefaultSlot","genSwitch","genLabel","_this$attrs$","attrs$","switchAttrs","genInput","genRipple","onSwipeLeft","onSwipeRight","VFabTransition","VProgressCircular","onChange","onKeydown","VDivider","action","hideSelected","itemDisabled","itemText","itemValue","noFilter","searchInput","selectedItems","parsedItems","getValue","tileActiveClass","staticNoDataTile","mousedown","VListItem","genTileContent","genAction","inputValue","VListItemAction","genDivider","genFilteredText","_this$getMaskedCharac","getMaskedCharacters","middle","genHighlight","toLocaleLowerCase","genTile","_ref$disabled","_ref$value","hasItem","getDisabled","id","_uid","activeClass","parent","needsTile","VListItemContent","VListItemTitle","getText","componentOptions","Ctor","VList","tabindex","defaultMenuProps","closeOnClick","disableKeys","openOnClick","maxHeight","baseMixins","VTextField","Comparable","Dependent","Filterable","ClickOutside","appendIcon","attach","cacheItems","chips","clearable","deletableChips","disableLookup","eager","itemColor","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","lazyValue","selectedIndex","keyboardLookupPrefix","keyboardLookupLastTime","allItems","filterDuplicates","hasChips","computedOwns","computedCounterValue","counterValue","isFocused","blur","closeConditional","include","getOpenDependentElements","dynamicHeight","hasSlot","isDirty","listData","scopeId","$vnode","context","$options","_scopeId","virtualizedItems","selectItem","staticList","consoleError","VSelectList","$_menuProps","menuCanShow","normalisedProps","p","nudgeBottom","internalValue","initialValue","setSelectedItems","$nextTick","$refs","menu","updateDimensions","onScroll","setTimeout","onMenuActiveChange","setMenuIndex","activateMenu","isInteractive","clearableCallback","setValue","focus","_isDestroyed","getContent","contains","arr","uniqueValues","Map","set","has","findExistingIndex","valueComparator","genChipSelection","close","onChipInput","JSON","stringify","genCommaSelection","last","selections","genSelections","genFieldset","genAffix","genClearIcon","genIconSlot","genHiddenInput","genMenu","cb","extraData","domProps","readonly","isReadonly","autocomplete","placeholder","persistentPlaceholder","hasLabel","keypress","onKeyPress","genInputSlot","genList","genListWithSlot","activator","scroll","ref","genSelection","genSlotSelection","selected","getMenuIndex","listIndex","onBlur","onClick","isAppendInner","onEscDown","ctrlKey","metaKey","altKey","KEYBOARD_LOOKUP_THRESHOLD","now","performance","toLowerCase","startsWith","getTiles","_this12","tab","up","down","home","enter","changeListIndex","space","onUpDown","esc","onTabDown","onSpaceDown","tiles","getAttribute","onMouseUp","_this13","hasMouseDown","which","_this14","showMoreItems","scrollHeight","scrollTop","clientHeight","requestAnimationFrame","activeTile","_this15","isBooted","hasClickableTiles","prevTile","nextTile","firstTile","lastTile","_this16","_step","_this17","_iterator","_createForOfIteratorHelper","n","err","appendInner","SSRBootable","_this$$vuetify$applic","application","bar","footer","insetFooter","paddingTop","paddingRight","paddingBottom","paddingLeft","Applicationable","Overlayable","Resize","provide","isInNav","clipped","disableResizeWatcher","disableRouteWatcher","expandOnHover","floating","app","miniVariant","miniVariantWidth","permanent","src","stateless","temporary","touchless","isMouseover","touchArea","stackMinZIndex","applicationProperty","absolute","fixed","isMiniVariant","computedMaxHeight","hasApp","computedTransform","isBottom","computedWidth","reactsToClick","reactsToMobile","reactsToResize","reactsToRoute","showOverlay","hideOverlay","translate","transform","$route","prev","removeOverlay","genOverlay","init","updateMiniVariant","beforeMount","calculateTouchArea","parentNode","parentRect","getBoundingClientRect","genAppend","genPosition","genBackground","image","img","VImg","genDirectives","swipeLeft","swipeRight","genListeners","mouseenter","mouseleave","transitionend","resizeEvent","createEvent","initUIEvent","genPrepend","genContent","genBorder","onRouteChange","abs","touchendX","touchstartX","updateApplication","isNaN"],"mappings":"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","file":"js/ActivityLog~d939e436.6c6556dd.js","sourcesContent":["import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","// Styles\nimport './VBadge.sass'\n\n// Components\nimport VIcon from '../VIcon/VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from '../../mixins/toggleable'\nimport Transitionable from '../../mixins/transitionable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport {\n convertToUnit,\n getSlot,\n} from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Colorable,\n PositionableFactory(['left', 'bottom']),\n Themeable,\n Toggleable,\n Transitionable,\n/* @vue/component */\n).extend({\n name: 'v-badge',\n\n props: {\n avatar: Boolean,\n bordered: Boolean,\n color: {\n type: String,\n default: 'primary',\n },\n content: { required: false },\n dot: Boolean,\n label: {\n type: String,\n default: '$vuetify.badge',\n },\n icon: String,\n inline: Boolean,\n offsetX: [Number, String],\n offsetY: [Number, String],\n overlap: Boolean,\n tile: Boolean,\n transition: {\n type: String,\n default: 'scale-rotate-transition',\n },\n value: { default: true },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-badge--avatar': this.avatar,\n 'v-badge--bordered': this.bordered,\n 'v-badge--bottom': this.bottom,\n 'v-badge--dot': this.dot,\n 'v-badge--icon': this.icon != null,\n 'v-badge--inline': this.inline,\n 'v-badge--left': this.left,\n 'v-badge--overlap': this.overlap,\n 'v-badge--tile': this.tile,\n ...this.themeClasses,\n }\n },\n computedBottom (): string {\n return this.bottom ? 'auto' : this.computedYOffset\n },\n computedLeft (): string {\n if (this.isRtl) {\n return this.left ? this.computedXOffset : 'auto'\n }\n\n return this.left ? 'auto' : this.computedXOffset\n },\n computedRight (): string {\n if (this.isRtl) {\n return this.left ? 'auto' : this.computedXOffset\n }\n\n return !this.left ? 'auto' : this.computedXOffset\n },\n computedTop (): string {\n return this.bottom ? this.computedYOffset : 'auto'\n },\n computedXOffset (): string {\n return this.calcPosition(this.offsetX)\n },\n computedYOffset (): string {\n return this.calcPosition(this.offsetY)\n },\n isRtl (): boolean {\n return this.$vuetify.rtl\n },\n // Default fallback if offsetX\n // or offsetY are undefined.\n offset (): number {\n if (this.overlap) return this.dot ? 8 : 12\n return this.dot ? 2 : 4\n },\n styles (): object {\n if (this.inline) return {}\n\n return {\n bottom: this.computedBottom,\n left: this.computedLeft,\n right: this.computedRight,\n top: this.computedTop,\n }\n },\n },\n\n methods: {\n calcPosition (offset: string | number): string {\n return `calc(100% - ${convertToUnit(offset || this.offset)})`\n },\n genBadge () {\n const lang = this.$vuetify.lang\n const label = this.$attrs['aria-label'] || lang.t(this.label)\n\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-badge__badge',\n style: this.styles,\n attrs: {\n 'aria-atomic': this.$attrs['aria-atomic'] || 'true',\n 'aria-label': label,\n 'aria-live': this.$attrs['aria-live'] || 'polite',\n title: this.$attrs.title,\n role: this.$attrs.role || 'status',\n },\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n })\n\n const badge = this.$createElement('span', data, [this.genBadgeContent()])\n\n if (!this.transition) return badge\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode,\n },\n }, [badge])\n },\n genBadgeContent () {\n // Dot prop shows no content\n if (this.dot) return undefined\n\n const slot = getSlot(this, 'badge')\n\n if (slot) return slot\n if (this.content) return String(this.content)\n if (this.icon) return this.$createElement(VIcon, this.icon)\n\n return undefined\n },\n genBadgeWrapper () {\n return this.$createElement('span', {\n staticClass: 'v-badge__wrapper',\n }, [this.genBadge()])\n },\n },\n\n render (h): VNode {\n const badge = [this.genBadgeWrapper()]\n const children = [getSlot(this)]\n const {\n 'aria-atomic': _x,\n 'aria-label': _y,\n 'aria-live': _z,\n role,\n title,\n ...attrs\n } = this.$attrs\n\n if (this.inline && this.left) children.unshift(badge)\n else children.push(badge)\n\n return h('span', {\n staticClass: 'v-badge',\n attrs,\n class: this.classes,\n }, children)\n },\n})\n","// Components\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn/VBtn'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-app-bar-nav-icon',\n\n functional: true,\n\n render (h, { slots, listeners, props, data }) {\n const d = Object.assign(data, {\n staticClass: (`v-app-bar__nav-icon ${data.staticClass || ''}`).trim(),\n props: {\n ...props,\n icon: true,\n },\n on: listeners,\n })\n\n const defaultSlot = slots().default\n\n return h(VBtn, d, defaultSlot || [h(VIcon, '$menu')])\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","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH);\n return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n 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 = getSlot(this, 'loading') || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = getSlot(this, 'noData') || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = getSlot(this, 'noResults') || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","// Styles\nimport './VDataTableHeader.sass'\n\n// Components\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\n// Mixins\nimport header from './mixins/header'\n\n// Utilities\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport mergeData from '../../util/mergeData'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n ...header.options.props,\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\n\n data = mergeData(data, { props })\n\n if (props.mobile) {\n return h(VDataTableHeaderMobile, data, children)\n } else {\n return h(VDataTableHeaderDesktop, data, children)\n }\n },\n})\n","// 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, getSlot } 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', getSlot(this)),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n getSlot(this, 'top'),\n this.genWrapper(),\n getSlot(this, '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","import './VSimpleCheckbox.sass'\n\nimport Ripple from '../../directives/ripple'\n\nimport Vue, { VNode, VNodeDirective } from 'vue'\nimport { VIcon } from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-simple-checkbox',\n\n functional: true,\n\n directives: {\n Ripple,\n },\n\n props: {\n ...Colorable.options.props,\n ...Themeable.options.props,\n disabled: Boolean,\n ripple: {\n type: Boolean,\n default: true,\n },\n value: Boolean,\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n },\n\n render (h, { props, data, listeners }): VNode {\n const children = []\n let icon = props.offIcon\n if (props.indeterminate) icon = props.indeterminateIcon\n else if (props.value) icon = props.onIcon\n\n children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n props: {\n disabled: props.disabled,\n dark: props.dark,\n light: props.light,\n },\n }), icon))\n\n if (props.ripple && !props.disabled) {\n const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n staticClass: 'v-input--selection-controls__ripple',\n directives: [{\n def: Ripple,\n name: 'ripple',\n value: { center: true },\n }] as VNodeDirective[],\n }))\n\n children.push(ripple)\n }\n\n return h('div',\n mergeData(data, {\n class: {\n 'v-simple-checkbox': true,\n 'v-simple-checkbox--disabled': props.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (data.on && data.on.input && !props.disabled) {\n wrapInArray(data.on.input).forEach(f => f(!props.value))\n }\n },\n },\n }), [\n h('div', { staticClass: 'v-input--selection-controls__input' }, children),\n ])\n },\n})\n","import { 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","// Styles\nimport '../../styles/components/_selection-controls.sass'\nimport './VSwitch.sass'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\nimport VInput from '../VInput'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport { VFabTransition } from '../transitions'\nimport VProgressCircular from '../VProgressCircular/VProgressCircular'\n\n// Helpers\nimport { getSlot, keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-switch',\n\n directives: { Touch },\n\n props: {\n inset: Boolean,\n loading: {\n type: [Boolean, String],\n default: false,\n },\n flat: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--switch': true,\n 'v-input--switch--flat': this.flat,\n 'v-input--switch--inset': this.inset,\n }\n },\n attrs (): object {\n return {\n 'aria-checked': String(this.isActive),\n 'aria-disabled': String(this.isDisabled),\n role: 'switch',\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n switchData (): VNodeData {\n return this.setTextColor(this.loading ? undefined : this.validationState, {\n class: this.themeClasses,\n })\n },\n },\n\n methods: {\n genDefaultSlot (): (VNode | null)[] {\n return [\n this.genSwitch(),\n this.genLabel(),\n ]\n },\n genSwitch (): VNode {\n const { title, ...switchAttrs } = this.attrs$\n\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.genInput('checkbox', {\n ...this.attrs,\n ...switchAttrs,\n }),\n this.genRipple(this.setTextColor(this.validationState, {\n directives: [{\n name: 'touch',\n value: {\n left: this.onSwipeLeft,\n right: this.onSwipeRight,\n },\n }],\n })),\n this.$createElement('div', {\n staticClass: 'v-input--switch__track',\n ...this.switchData,\n }),\n this.$createElement('div', {\n staticClass: 'v-input--switch__thumb',\n ...this.switchData,\n }, [this.genProgress()]),\n ])\n },\n genProgress (): VNode {\n return this.$createElement(VFabTransition, {}, [\n this.loading === false\n ? null\n : getSlot(this, 'progress') || this.$createElement(VProgressCircular, {\n props: {\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n size: 16,\n width: 2,\n indeterminate: true,\n },\n }),\n ])\n },\n onSwipeLeft () {\n if (this.isActive) this.onChange()\n },\n onSwipeRight () {\n if (!this.isActive) this.onChange()\n },\n onKeydown (e: KeyboardEvent) {\n if (\n (e.keyCode === keyCodes.left && this.isActive) ||\n (e.keyCode === keyCodes.right && !this.isActive)\n ) this.onChange()\n },\n },\n})\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\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 on: {\n mousedown: (e: Event) => {\n e.preventDefault()\n },\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.computedItems.indexOf(item)\n if (~index) {\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n }\n }\n },\n setMenuIndex (index: number) {\n this.$refs.menu && ((this.$refs.menu as { [key: string]: any }).listIndex = index)\n },\n setSelectedItems () {\n const selectedItems = []\n const values = !this.multiple || !Array.isArray(this.internalValue)\n ? [this.internalValue]\n : this.internalValue\n\n for (const value of values) {\n const index = this.allItems.findIndex(v => this.valueComparator(\n this.getValue(v),\n this.getValue(value)\n ))\n\n if (index > -1) {\n selectedItems.push(this.allItems[index])\n }\n }\n\n this.selectedItems = selectedItems\n },\n setValue (value: any) {\n if (!this.valueComparator(value, this.internalValue)) {\n this.internalValue = value\n this.$emit('change', value)\n }\n },\n isAppendInner (target: any) {\n // return true if append inner is present\n // and the target is itself or inside\n const appendInner = this.$refs['append-inner']\n\n return appendInner && (appendInner === target || appendInner.contains(target))\n },\n },\n})\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\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 }, getSlot(this))\n },\n})\n","// Styles\nimport './VMain.sass'\n\n// Mixins\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default SSRBootable.extend({\n name: 'v-main',\n\n props: {\n tag: {\n type: String,\n default: 'main',\n },\n },\n\n computed: {\n styles (): object {\n const {\n bar, top, right, footer, insetFooter, bottom, left,\n } = this.$vuetify.application\n\n return {\n paddingTop: `${top + bar}px`,\n paddingRight: `${right}px`,\n paddingBottom: `${footer + insetFooter + bottom}px`,\n paddingLeft: `${left}px`,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-main',\n style: this.styles,\n ref: 'main',\n }\n\n return h(this.tag, data, [\n h(\n 'div',\n { staticClass: 'v-main__wrap' },\n getSlot(this),\n ),\n ])\n },\n})\n","// Styles\nimport './VNavigationDrawer.sass'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport Colorable from '../../mixins/colorable'\nimport Dependent from '../../mixins/dependent'\nimport Mobile from '../../mixins/mobile'\nimport Overlayable from '../../mixins/overlayable'\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, VNodeDirective, PropType } from 'vue'\nimport { TouchWrapper } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Applicationable('left', [\n 'isActive',\n 'isMobile',\n 'miniVariant',\n 'expandOnHover',\n 'permanent',\n 'right',\n 'temporary',\n 'width',\n ]),\n Colorable,\n Dependent,\n Mobile,\n Overlayable,\n SSRBootable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-navigation-drawer',\n\n directives: {\n ClickOutside,\n Resize,\n Touch,\n },\n\n provide (): object {\n return {\n isInNav: this.tag === 'nav',\n }\n },\n\n props: {\n bottom: Boolean,\n clipped: Boolean,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n default (): string {\n return this.app ? '100vh' : '100%'\n },\n },\n miniVariant: Boolean,\n miniVariantWidth: {\n type: [Number, String],\n default: 56,\n },\n permanent: Boolean,\n right: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n stateless: Boolean,\n tag: {\n type: String,\n default (): string {\n return this.app ? 'nav' : 'aside'\n },\n },\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n value: null as unknown as PropType,\n },\n\n data: () => ({\n isMouseover: false,\n touchArea: {\n left: 0,\n right: 0,\n },\n stackMinZIndex: 6,\n }),\n\n computed: {\n /**\n * Used for setting an app value from a dynamic\n * property. Called from applicationable.js\n */\n applicationProperty (): string {\n return this.right ? 'right' : 'left'\n },\n classes (): object {\n return {\n 'v-navigation-drawer': true,\n 'v-navigation-drawer--absolute': this.absolute,\n 'v-navigation-drawer--bottom': this.bottom,\n 'v-navigation-drawer--clipped': this.clipped,\n 'v-navigation-drawer--close': !this.isActive,\n 'v-navigation-drawer--fixed': !this.absolute && (this.app || this.fixed),\n 'v-navigation-drawer--floating': this.floating,\n 'v-navigation-drawer--is-mobile': this.isMobile,\n 'v-navigation-drawer--is-mouseover': this.isMouseover,\n 'v-navigation-drawer--mini-variant': this.isMiniVariant,\n 'v-navigation-drawer--custom-mini-variant': Number(this.miniVariantWidth) !== 56,\n 'v-navigation-drawer--open': this.isActive,\n 'v-navigation-drawer--open-on-hover': this.expandOnHover,\n 'v-navigation-drawer--right': this.right,\n 'v-navigation-drawer--temporary': this.temporary,\n ...this.themeClasses,\n }\n },\n computedMaxHeight (): number | null {\n if (!this.hasApp) return null\n\n const computedMaxHeight = (\n this.$vuetify.application.bottom +\n this.$vuetify.application.footer +\n this.$vuetify.application.bar\n )\n\n if (!this.clipped) return computedMaxHeight\n\n return computedMaxHeight + this.$vuetify.application.top\n },\n computedTop (): number {\n if (!this.hasApp) return 0\n\n let computedTop = this.$vuetify.application.bar\n\n computedTop += this.clipped\n ? this.$vuetify.application.top\n : 0\n\n return computedTop\n },\n computedTransform (): number {\n if (this.isActive) return 0\n if (this.isBottom) return 100\n return this.right ? 100 : -100\n },\n computedWidth (): string | number {\n return this.isMiniVariant ? this.miniVariantWidth : this.width\n },\n hasApp (): boolean {\n return (\n this.app &&\n (!this.isMobile && !this.temporary)\n )\n },\n isBottom (): boolean {\n return this.bottom && this.isMobile\n },\n isMiniVariant (): boolean {\n return (\n !this.expandOnHover &&\n this.miniVariant\n ) || (\n this.expandOnHover &&\n !this.isMouseover\n )\n },\n isMobile (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n Mobile.options.computed.isMobile.call(this)\n )\n },\n reactsToClick (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n (this.isMobile || this.temporary)\n )\n },\n reactsToMobile (): boolean {\n return (\n this.app &&\n !this.disableResizeWatcher &&\n !this.permanent &&\n !this.stateless &&\n !this.temporary\n )\n },\n reactsToResize (): boolean {\n return !this.disableResizeWatcher && !this.stateless\n },\n reactsToRoute (): boolean {\n return (\n !this.disableRouteWatcher &&\n !this.stateless &&\n (this.temporary || this.isMobile)\n )\n },\n showOverlay (): boolean {\n return (\n !this.hideOverlay &&\n this.isActive &&\n (this.isMobile || this.temporary)\n )\n },\n styles (): object {\n const translate = this.isBottom ? 'translateY' : 'translateX'\n return {\n height: convertToUnit(this.height),\n top: !this.isBottom ? convertToUnit(this.computedTop) : 'auto',\n maxHeight: this.computedMaxHeight != null\n ? `calc(100% - ${convertToUnit(this.computedMaxHeight)})`\n : undefined,\n transform: `${translate}(${convertToUnit(this.computedTransform, '%')})`,\n width: convertToUnit(this.computedWidth),\n }\n },\n },\n\n watch: {\n $route: 'onRouteChange',\n isActive (val) {\n this.$emit('input', val)\n },\n /**\n * When mobile changes, adjust the active state\n * only when there has been a previous value\n */\n isMobile (val, prev) {\n !val &&\n this.isActive &&\n !this.temporary &&\n this.removeOverlay()\n\n if (prev == null ||\n !this.reactsToResize ||\n !this.reactsToMobile\n ) return\n\n this.isActive = !val\n },\n permanent (val) {\n // If enabling prop enable the drawer\n if (val) this.isActive = true\n },\n showOverlay (val) {\n if (val) this.genOverlay()\n else this.removeOverlay()\n },\n value (val) {\n if (this.permanent) return\n\n if (val == null) {\n this.init()\n return\n }\n\n if (val !== this.isActive) this.isActive = val\n },\n expandOnHover: 'updateMiniVariant',\n isMouseover (val) {\n this.updateMiniVariant(!val)\n },\n },\n\n beforeMount () {\n this.init()\n },\n\n methods: {\n calculateTouchArea () {\n const parent = this.$el.parentNode as Element\n\n if (!parent) return\n\n const parentRect = parent.getBoundingClientRect()\n\n this.touchArea = {\n left: parentRect.left + 50,\n right: parentRect.right - 50,\n }\n },\n closeConditional () {\n return this.isActive && !this._isDestroyed && this.reactsToClick\n },\n genAppend () {\n return this.genPosition('append')\n },\n genBackground () {\n const props = {\n height: '100%',\n width: '100%',\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img(props)\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__image',\n }, [image])\n },\n genDirectives (): VNodeDirective[] {\n const directives = [{\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n }]\n\n if (!this.touchless && !this.stateless) {\n directives.push({\n name: 'touch',\n value: {\n parent: true,\n left: this.swipeLeft,\n right: this.swipeRight,\n },\n } as any)\n }\n\n return directives\n },\n genListeners () {\n const on: Record void> = {\n mouseenter: () => (this.isMouseover = true),\n mouseleave: () => (this.isMouseover = false),\n transitionend: (e: Event) => {\n if (e.target !== e.currentTarget) return\n this.$emit('transitionend', e)\n\n // IE11 does not support new Event('resize')\n const resizeEvent = document.createEvent('UIEvents')\n resizeEvent.initUIEvent('resize', true, false, window, 0)\n window.dispatchEvent(resizeEvent)\n },\n }\n\n if (this.miniVariant) {\n on.click = () => this.$emit('update:mini-variant', false)\n }\n\n return on\n },\n genPosition (name: 'prepend' | 'append') {\n const slot = getSlot(this, name)\n\n if (!slot) return slot\n\n return this.$createElement('div', {\n staticClass: `v-navigation-drawer__${name}`,\n }, slot)\n },\n genPrepend () {\n return this.genPosition('prepend')\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__content',\n }, getSlot(this))\n },\n genBorder () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__border',\n })\n },\n init () {\n if (this.permanent) {\n this.isActive = true\n } else if (this.stateless ||\n this.value != null\n ) {\n this.isActive = this.value\n } else if (!this.temporary) {\n this.isActive = !this.isMobile\n }\n },\n onRouteChange () {\n if (this.reactsToRoute && this.closeConditional()) {\n this.isActive = false\n }\n },\n swipeLeft (e: TouchWrapper) {\n if (this.isActive && this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (this.right &&\n e.touchstartX >= this.touchArea.right\n ) this.isActive = true\n else if (!this.right && this.isActive) this.isActive = false\n },\n swipeRight (e: TouchWrapper) {\n if (this.isActive && !this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (!this.right &&\n e.touchstartX <= this.touchArea.left\n ) this.isActive = true\n else if (this.right && this.isActive) this.isActive = false\n },\n /**\n * Update the application layout\n */\n updateApplication () {\n if (\n !this.isActive ||\n this.isMobile ||\n this.temporary ||\n !this.$el\n ) return 0\n\n const width = Number(this.miniVariant ? this.miniVariantWidth : this.width)\n\n return isNaN(width) ? this.$el.clientWidth : width\n },\n updateMiniVariant (val: boolean) {\n if (this.expandOnHover && this.miniVariant !== val) this.$emit('update:mini-variant', val)\n },\n },\n\n render (h): VNode {\n const children = [\n this.genPrepend(),\n this.genContent(),\n this.genAppend(),\n this.genBorder(),\n ]\n\n if (this.src || getSlot(this, 'img')) children.unshift(this.genBackground())\n\n return h(this.tag, this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n directives: this.genDirectives(),\n on: this.genListeners(),\n }), children)\n },\n})\n"],"sourceRoot":""}