{"version":3,"sources":["webpack:///../../../src/components/VToolbar/index.ts","webpack:///../../../src/components/VMenu/index.ts","webpack:///../../../src/components/VChip/index.ts","webpack:///../../../src/components/VRadioGroup/VRadioGroup.ts","webpack:///../../../src/components/VRadioGroup/VRadio.ts","webpack:///./src/mixins/trigger.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/util/dedupeModelListeners.ts","webpack:///../../src/util/rebuildFunctionalSlots.ts","webpack:///../../../src/components/VDataTable/VDataTableHeader.ts","webpack:///../../../src/components/VDataTable/Row.ts","webpack:///../../../src/components/VDataTable/RowGroup.ts","webpack:///../../../src/components/VDataTable/VSimpleTable.ts","webpack:///../../../src/components/VDataTable/MobileRow.ts","webpack:///../../../src/mixins/mouse/index.ts","webpack:///../../../src/components/VDataTable/VDataTable.ts","webpack:///../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack:///./src/components/shared/DefaultTable.vue?c9bb","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///./src/components/shared/DefaultTable.vue","webpack:///src/components/shared/DefaultTable.vue","webpack:///./src/components/shared/DefaultTable.vue?e134","webpack:///./src/components/shared/DefaultTable.vue?cb8f","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///../../../src/components/VSubheader/index.ts","webpack:///../../../src/components/VSelect/VSelectList.ts","webpack:///../../../src/mixins/filterable/index.ts","webpack:///../../../src/components/VSelect/VSelect.ts"],"names":["VToolbarTitle","createSimpleFunctional","VToolbarItems","VToolbar","VMenu","VChip","baseMixins","mixins","BaseItemGroup","VInput","extend","name","provide","radioGroup","this","props","column","type","Boolean","default","height","Number","String","row","value","computed","classes","options","call","methods","genDefaultSlot","$createElement","staticClass","attrs","id","role","computedId","genInputSlot","render","data","on","click","genLabel","label","for","tag","onClick","h","vnode","_b","attrs$","BindsAttrs","Colorable","Rippleable","GroupableFactory","Themeable","inheritAttrs","disabled","offIcon","onIcon","readonly","isFocused","isDisabled","themeClasses","groupClasses","computedColor","Selectable","computedIcon","isActive","hasLabel","hasState","_a","isReadonly","computedName","_uid","rippleState","validationState","genInput","args","VLabel","prevent","color","focused","getSlot","genRadio","title","radioAttrs","VIcon","setTextColor","dense","genRipple","onFocus","e","$emit","onBlur","onChange","toggle","onKeydown","class","mergeListeners","listeners$","cov_1jmtup44md","actualCoverage","mapGetters","mapActions","Vue","items","Array","Object","sortBy","sortDesc","customSort","Function","sortItems","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","search","customFilter","searchItems","serverItemsLength","internalOptions","wrapInArray","assign","sortDiff","length","groupDiff","push","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","isArray","key","oldBy","oldDesc","by","desc","byIndex","findIndex","k","splice","map","s","i","max","$scopedSlots","required","itemsPerPageOptions","prevIcon","nextIcon","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","genDataItemsPerPageOption","obj","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","text","$vuetify","lang","t","genItemsPerPageSelect","computedIPPO","find","ippo","VSelect","hideDetails","auto","minWidth","input","genPaginationInfo","children","genIcon","icon","VBtn","genIcons","before","after","rtl","unshift","toString","Mobile","VData","itemKey","singleSelect","expanded","mobileBreakpoint","singleExpand","loading","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","selection","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","some","sanitizedFooterProps","camelizeObjectKeys","filter","item","isSelectable","reduce","getObjectValueByPath","keys","values","includes","created","breakingProps","forEach","original","replacement","$attrs","hasOwnProperty","breaking","removedProps","prop","removed","mounted","window","addEventListener","onKeyDown","onKeyUp","beforeDestroy","removeEventListener","keyCode","keyCodes","shift","shiftKey","toggleSelectAll","select","emit","index","x","lastEntryKey","lastEntryKeySelected","multipleSelect","start","end","currentItem","isExpanded","expand","createItemProps","v","isMobile","genEmptyWrapper","content","genEmpty","filteredItemsLength","$slots","noData","noResults","genItems","empty","genFooter","scopedSlots","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","$props","update:options","directives","ripple","headers","checkboxColor","sortIcon","showGroupBy","genSelectAll","indeterminate","VSimpleCheckbox","genSortIcon","size","header","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","active","asc","stopPropagation","genSortSelect","multiple","menuProps","closeOnContentClick","change","width","sortHeaders","th","undefined","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","join","genHeader","scope","style","convertToUnit","align","divider","groupable","dedupeModelListeners","model","indexOf","callback","rebuildFunctionalSlots","slots","slot","functional","mobile","rebuildSlots","mergeData","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","computedSlots","columns","slotName","scopedSlot","regularSlot","textAlign","cellClass","headerClass","contentClass","summaryClass","fixedHeader","top","bottom","genWrapper","wrapper","hideDefaultHeader","mobileRowChildren","getDefaultMouseEventHandlers","suffix","getData","eventFirst","listeners","$listeners","endsWith","acc","event","getMouseEventHandlers","result","events","eventOptions","prefix","passive","once","capture","mouseEvent","button","buttons","preventDefault","stop","classSeparator","eventTargetClasses","currentTarget","className","split","currentTargets","document","elementsFromPoint","changedTouches","clientX","clientY","c","target","isSameNode","dispatchEvent","TouchEvent","targetTouches","touches","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","filterMode","trim","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","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","val","MobileRow","Row","mergeClasses","getPropertyFromItem","mergeStyles","genBody","body","genFoot","foot","genFooters","simpleProps","VSimpleTable","proxySlot","Ripple","indeterminateIcon","dark","light","def","center","f","VTextField","autoGrow","noResize","rowHeight","validator","isNaN","parseFloat","parseInt","noResizeHandle","$nextTick","calculateInputHeight","$refs","removeProperty","lazyValue","setTimeout","scrollHeight","minHeight","onInput","cov_2gdyr79t52","customTopActionSlots","tableHeaders","_vm","isLoading","pageHeader","b","staticRenderFns","trigger","storeName","method","customSlots","itemType","needsInitialFetch","localValues","allowExpand","needsUpdate","newValue","refreshItems","getItems","$logger","resetTrigger","response","$store","dispatch","JSON","parse","stringify","component","VDivider","inset","VSubheader","action","hideSelected","itemDisabled","itemText","itemValue","noFilter","searchInput","selectedItems","parsedItems","getValue","tileActiveClass","staticNoDataTile","tile","mousedown","VListItem","genTileContent","genAction","inputValue","VListItemAction","genDivider","genFilteredText","middle","getMaskedCharacters","genHighlight","toLocaleLowerCase","genTile","hasItem","getDisabled","activeClass","parent","needsTile","VListItemContent","VListItemTitle","getText","componentOptions","Ctor","VList","tabindex","defaultMenuProps","closeOnClick","disableKeys","openOnClick","maxHeight","Comparable","Dependent","Filterable","ClickOutside","appendIcon","attach","cacheItems","chips","clearable","deletableChips","disableLookup","eager","itemColor","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","selectedIndex","keyboardLookupPrefix","keyboardLookupLastTime","allItems","filterDuplicates","concat","hasChips","computedOwns","computedCounterValue","counterValue","blur","closeConditional","include","getOpenDependentElements","dynamicHeight","hasSlot","isDirty","listData","scopeId","$vnode","context","$options","_scopeId","virtualizedItems","selectItem","staticList","consoleError","VSelectList","$_menuProps","menuCanShow","normalisedProps","p","nudgeBottom","offsetY","internalValue","initialValue","setSelectedItems","menu","updateDimensions","onScroll","onMenuActiveChange","setMenuIndex","activateMenu","isInteractive","clearableCallback","setValue","focus","_isDestroyed","getContent","contains","arr","uniqueValues","Map","set","has","findExistingIndex","valueComparator","genChipSelection","close","click:close","onChipInput","genCommaSelection","last","selections","genSelections","genFieldset","genAffix","genClearIcon","genIconSlot","genHiddenInput","genMenu","cb","extraData","domProps","autocomplete","placeholder","persistentPlaceholder","keypress","onKeyPress","genList","genListWithSlot","activator","scroll","ref","genSelection","genSlotSelection","selected","getMenuIndex","listIndex","isAppendInner","onEscDown","ctrlKey","metaKey","altKey","KEYBOARD_LOOKUP_THRESHOLD","now","performance","toLowerCase","startsWith","getTiles","tab","up","down","home","enter","changeListIndex","space","onUpDown","esc","onTabDown","onSpaceDown","tiles","getAttribute","onMouseUp","hasMouseDown","which","showMoreItems","scrollTop","clientHeight","requestAnimationFrame","activeTile","isBooted","hasClickableTiles","prevTile","nextTile","firstTile","lastTile","appendInner"],"mappings":"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","file":"js/student~teacher.37d9822d.js","sourcesContent":["// Components\nimport VToolbar from './VToolbar'\n\n// Utilities\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VToolbarTitle = createSimpleFunctional('v-toolbar__title')\nconst VToolbarItems = createSimpleFunctional('v-toolbar__items')\n\nexport {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n },\n}\n","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","// Styles\nimport '../../styles/components/_selection-controls.sass'\nimport './VRadioGroup.sass'\n\n// Extensions\nimport VInput from '../VInput'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { PropType } from 'vue'\n\nconst baseMixins = mixins(\n BaseItemGroup,\n VInput\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-radio-group',\n\n provide () {\n return {\n radioGroup: this,\n }\n },\n\n props: {\n column: {\n type: Boolean,\n default: true,\n },\n height: {\n type: [Number, String],\n default: 'auto',\n },\n name: String,\n row: Boolean,\n // If no value set on VRadio\n // will match valueComparator\n // force default to null\n value: null as unknown as PropType,\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--radio-group': true,\n 'v-input--radio-group--column': this.column && !this.row,\n 'v-input--radio-group--row': this.row,\n }\n },\n },\n\n methods: {\n genDefaultSlot () {\n return this.$createElement('div', {\n staticClass: 'v-input--radio-group__input',\n attrs: {\n id: this.id,\n role: 'radiogroup',\n 'aria-labelledby': this.computedId,\n },\n }, VInput.options.methods.genDefaultSlot.call(this))\n },\n genInputSlot () {\n const render = VInput.options.methods.genInputSlot.call(this)\n\n delete render.data!.on!.click\n\n return render\n },\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return null\n\n label.data!.attrs!.id = this.computedId\n // WAI considers this an orphaned label\n delete label.data!.attrs!.for\n label.tag = 'legend'\n\n return label\n },\n onClick: BaseItemGroup.options.methods.onClick,\n },\n\n render (h) {\n const vnode = VInput.options.render.call(this, h)\n\n this._b(vnode.data!, 'div', this.attrs$)\n\n return vnode\n },\n})\n","// Styles\nimport './VRadio.sass'\n\n// Components\nimport VRadioGroup from './VRadioGroup'\nimport VLabel from '../VLabel'\nimport VIcon from '../VIcon'\nimport VInput from '../VInput'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Rippleable from '../../mixins/rippleable'\nimport Themeable from '../../mixins/themeable'\nimport Selectable, { prevent } from '../../mixins/selectable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { mergeListeners } from '../../util/mergeData'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Colorable,\n Rippleable,\n GroupableFactory('radioGroup'),\n Themeable\n)\n\ninterface options extends InstanceType {\n radioGroup: InstanceType\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-radio',\n\n inheritAttrs: false,\n\n props: {\n disabled: {\n type: Boolean,\n default: null,\n },\n id: String,\n label: String,\n name: String,\n offIcon: {\n type: String,\n default: '$radioOff',\n },\n onIcon: {\n type: String,\n default: '$radioOn',\n },\n readonly: {\n type: Boolean,\n default: null,\n },\n value: {\n default: null,\n },\n },\n\n data: () => ({\n isFocused: false,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-radio--is-disabled': this.isDisabled,\n 'v-radio--is-focused': this.isFocused,\n ...this.themeClasses,\n ...this.groupClasses,\n }\n },\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n return Selectable.options.computed.computedColor.call(this)\n },\n computedIcon (): string {\n return this.isActive\n ? this.onIcon\n : this.offIcon\n },\n computedId (): string {\n return VInput.options.computed.computedId.call(this)\n },\n hasLabel: VInput.options.computed.hasLabel,\n hasState (): boolean {\n return (this.radioGroup || {}).hasState\n },\n isDisabled (): boolean {\n return this.disabled ?? (\n !!this.radioGroup &&\n this.radioGroup.isDisabled\n )\n },\n isReadonly (): boolean {\n return this.readonly ?? (\n !!this.radioGroup &&\n this.radioGroup.isReadonly\n )\n },\n computedName (): string {\n if (this.name || !this.radioGroup) {\n return this.name\n }\n\n return this.radioGroup.name || `radio-${this.radioGroup._uid}`\n },\n rippleState (): string | undefined {\n return Selectable.options.computed.rippleState.call(this)\n },\n validationState (): string | undefined {\n return (this.radioGroup || {}).validationState || this.computedColor\n },\n },\n\n methods: {\n genInput (args: any) {\n // We can't actually use the mixin directly because\n // it's made for standalone components, but its\n // genInput method is exactly what we need\n return Selectable.options.methods.genInput.call(this, 'radio', args)\n },\n genLabel () {\n if (!this.hasLabel) return null\n\n return this.$createElement(VLabel, {\n on: {\n // Label shouldn't cause the input to focus\n click: prevent,\n },\n attrs: {\n for: this.computedId,\n },\n props: {\n color: this.validationState,\n focused: this.hasState,\n },\n }, getSlot(this, 'label') || this.label)\n },\n genRadio () {\n const { title, ...radioAttrs } = this.attrs$\n\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.radioGroup && this.radioGroup.dense,\n },\n }), this.computedIcon),\n this.genInput({\n name: this.computedName,\n value: this.value,\n ...radioAttrs,\n }),\n this.genRipple(this.setTextColor(this.rippleState)),\n ])\n },\n onFocus (e: Event) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: Event) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n onChange () {\n if (this.isDisabled || this.isReadonly || this.isActive) return\n\n this.toggle()\n },\n onKeydown: () => {}, // Override default with noop\n },\n\n render (h): VNode {\n const data: VNodeData = {\n staticClass: 'v-radio',\n class: this.classes,\n on: mergeListeners({\n click: this.onChange,\n }, this.listeners$),\n attrs: { title: this.attrs$.title },\n }\n\n return h('div', data, [\n this.genRadio(),\n this.genLabel(),\n ])\n },\n})\n","import { mapActions, mapGetters } from \"vuex\";\n\nexport default {\n computed: {\n ...mapGetters(\"trigger\", [\"needsUpdate\"]),\n },\n methods: {\n ...mapActions(\"trigger\", [\n \"resetTrigger\",\n \"triggerUpdate\",\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 = this.$slots.loading || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = this.$slots['no-data'] || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = this.$slots['no-results'] || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","import { VNodeData } from 'vue'\n\n/**\n * Removes duplicate `@input` listeners when\n * using v-model with functional components\n *\n * @see https://github.com/vuetifyjs/vuetify/issues/4460\n */\nexport default function dedupeModelListeners (data: VNodeData): void {\n if (data.model && data.on && data.on.input) {\n if (Array.isArray(data.on.input)) {\n const i = data.on.input.indexOf(data.model.callback)\n if (i > -1) data.on.input.splice(i, 1)\n } else {\n delete data.on.input\n }\n }\n}\n","import { CreateElement, VNode } from 'vue'\n\nexport default function rebuildFunctionalSlots (slots: { [key: string]: VNode[] | undefined }, h: CreateElement) {\n const children: VNode[] = []\n\n for (const slot in slots) {\n if (slots.hasOwnProperty(slot)) {\n children.push(h('template', { slot }, slots[slot]))\n }\n }\n\n return children\n}\n","// Styles\nimport './VDataTableHeader.sass'\n\n// Components\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\n// Mixins\nimport header from './mixins/header'\n\n// Utilities\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport mergeData from '../../util/mergeData'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n ...header.options.props,\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\n\n data = mergeData(data, { props })\n\n if (props.mobile) {\n return h(VDataTableHeaderMobile, data, children)\n } else {\n return h(VDataTableHeaderDesktop, data, children)\n }\n },\n})\n","// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DataTableHeader } from 'vuetify/types'\n\n// Utils\nimport { getObjectValueByPath, wrapInArray } from '../../util/helpers'\n\nfunction needsTd (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n !['td', 'th'].includes(slot![0]?.tag!)\n}\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns = props.headers.map((header: DataTableHeader) => {\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(...wrapInArray(scopedSlot({\n item: props.item,\n isMobile: false,\n header,\n index: props.index,\n value,\n })))\n } else if (regularSlot) {\n children.push(...wrapInArray(regularSlot))\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const textAlign = `text-${header.align || 'start'}`\n\n return needsTd(children)\n ? h('td', {\n class: [\n textAlign,\n header.cellClass,\n {\n 'v-data-table__divider': header.divider,\n },\n ],\n }, children)\n : children\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', this.$slots.default),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n hideDefaultHeader: Boolean,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const classes = {\n 'v-data-table__mobile-row': true,\n }\n\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({\n item: props.item,\n isMobile: true,\n header,\n index: props.index,\n value,\n }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const mobileRowChildren = [\n h('div', {\n staticClass: 'v-data-table__mobile-row__cell',\n }, children),\n ]\n\n if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n mobileRowChildren.unshift(\n h('div', {\n staticClass: 'v-data-table__mobile-row__header',\n }, [header.text])\n )\n }\n\n return h('td', { class: classes }, mobileRowChildren)\n })\n\n return h('tr', { ...data, staticClass: 'v-data-table__mobile-table-row' }, columns)\n },\n})\n","import Vue from 'vue'\n\nexport type MouseHandler = (e: MouseEvent | TouchEvent) => any\n\nexport type MouseEvents = {\n [event: string]: {\n event: string\n passive?: boolean\n capture?: boolean\n once?: boolean\n stop?: boolean\n prevent?: boolean\n button?: number\n result?: any\n }\n}\n\nexport type MouseEventsMap = {\n [event: string]: MouseHandler | MouseHandler[]\n}\n\nexport default Vue.extend({\n name: 'mouse',\n\n methods: {\n getDefaultMouseEventHandlers (suffix: string, getData: MouseHandler, eventFirst = false): MouseEventsMap {\n const listeners = Object.keys(this.$listeners)\n .filter(key => key.endsWith(suffix))\n .reduce((acc, key) => {\n acc[key] = { event: key.slice(0, -suffix.length) }\n return acc\n }, {} as MouseEvents)\n\n return this.getMouseEventHandlers({\n ...listeners,\n ['contextmenu' + suffix]: { event: 'contextmenu', prevent: true, result: false },\n }, getData, eventFirst)\n },\n getMouseEventHandlers (events: MouseEvents, getData: MouseHandler, eventFirst = false): MouseEventsMap {\n const on: MouseEventsMap = {}\n\n for (const event in events) {\n const eventOptions = events[event]\n\n if (!this.$listeners[event]) continue\n\n // TODO somehow pull in modifiers\n\n const prefix = eventOptions.passive ? '&' : ((eventOptions.once ? '~' : '') + (eventOptions.capture ? '!' : ''))\n const key = prefix + eventOptions.event\n\n const handler: MouseHandler = e => {\n const mouseEvent: MouseEvent = e as MouseEvent\n if (eventOptions.button === undefined || (mouseEvent.buttons > 0 && mouseEvent.button === eventOptions.button)) {\n if (eventOptions.prevent) {\n e.preventDefault()\n }\n if (eventOptions.stop) {\n e.stopPropagation()\n }\n\n // Due to TouchEvent target always returns the element that is first placed\n // Even if touch point has since moved outside the interactive area of that element\n // Ref: https://developer.mozilla.org/en-US/docs/Web/API/Touch/target\n // This block of code aims to make sure touchEvent is always dispatched from the element that is being pointed at\n if (e && 'touches' in e) {\n const classSeparator = ' '\n\n const eventTargetClasses = (e.currentTarget as HTMLElement)?.className.split(classSeparator)\n const currentTargets = document.elementsFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY)\n\n // Get \"the same kind\" current hovering target by checking\n // If element has the same class of initial touch start element (which has touch event listener registered)\n const currentTarget = currentTargets.find(t => t.className.split(classSeparator).some(c => eventTargetClasses.includes(c)))\n\n if (currentTarget &&\n !(e.target as HTMLElement)?.isSameNode(currentTarget)\n ) {\n currentTarget.dispatchEvent(new TouchEvent(e.type, {\n changedTouches: e.changedTouches as unknown as Touch[],\n targetTouches: e.targetTouches as unknown as Touch[],\n touches: e.touches as unknown as Touch[],\n }))\n return\n }\n }\n\n // TODO: VCalendar emits the calendar event as the first argument,\n // but it really should be the native event instead so modifiers can be used\n if (eventFirst) {\n this.$emit(event, e, getData(e))\n } else {\n this.$emit(event, getData(e), e)\n }\n }\n\n return eventOptions.result\n }\n\n if (key in on) {\n /* istanbul ignore next */\n if (Array.isArray(on[key])) {\n (on[key] as MouseHandler[]).push(handler)\n } else {\n on[key] = [on[key], handler] as MouseHandler[]\n }\n } else {\n on[key] = handler\n }\n }\n\n return on\n },\n },\n})\n","import './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n RowClassFunction,\n RowStyleFunction,\n DataTableItemProps,\n DataTableFilterMode,\n} from 'vuetify/types'\n\n// Components\nimport { VData } from '../VData'\nimport { VDataFooter, VDataIterator } from '../VDataIterator'\nimport VBtn from '../VBtn'\nimport VDataTableHeader from './VDataTableHeader'\n// import VVirtualTable from './VVirtualTable'\nimport VIcon from '../VIcon'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Mouse from '../../mixins/mouse'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers'\nimport { breaking } from '../../util/console'\nimport { mergeClasses, mergeStyles } from '../../util/mergeData'\n\nfunction filterFn (item: any, search: string | null, filter: DataTableFilterFunction) {\n return (header: DataTableHeader) => {\n const value = getObjectValueByPath(item, header.value)\n return header.filter ? header.filter(value, search, item) : filter(value, search, item)\n }\n}\n\nfunction searchTableItems (\n items: any[],\n search: string | null,\n headersWithCustomFilters: DataTableHeader[],\n headersWithoutCustomFilters: DataTableHeader[],\n customFilter: DataTableFilterFunction,\n filterMode: DataTableFilterMode,\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n if (filterMode === 'union') {\n // If the `search` property is empty and there are no custom filters in use, there is nothing to do.\n if (!(search && headersWithoutCustomFilters.length) && !headersWithCustomFilters.length) return items\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n if (headersWithCustomFilters.length && headersWithCustomFilters.every(filterFn(item, search, defaultFilter))) {\n return true\n }\n\n // Otherwise, the `search` property is used to filter columns without a custom filter.\n return (search && headersWithoutCustomFilters.some(filterFn(item, search, customFilter)))\n })\n } else if (filterMode === 'intersection') {\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n // We need to match every filter to be included in the results.\n const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter))\n\n // Headers without custom filters are only filtered by the `search` property if it is defined.\n // We only need a single column to match the search term to be included in the results.\n const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter))\n\n return matchesColumnFilters && matchesSearchTerm\n })\n } else {\n return items\n }\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n Mouse,\n).extend({\n name: 'v-data-table',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => [],\n } as PropValidator,\n showSelect: Boolean,\n checkboxColor: String,\n showExpand: Boolean,\n showGroupBy: Boolean,\n // TODO: Fix\n // virtualRows: Boolean,\n height: [Number, String],\n hideDefaultHeader: Boolean,\n caption: String,\n dense: Boolean,\n headerProps: Object,\n calculateWidths: Boolean,\n fixedHeader: Boolean,\n headersLength: Number,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n customFilter: {\n type: Function,\n default: defaultFilter,\n } as PropValidator,\n filterMode: {\n type: String,\n default: 'intersection',\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n itemStyle: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n },\n\n data () {\n return {\n internalGroupBy: [] as string[],\n openCache: {} as { [key: string]: boolean },\n widths: [] as number[],\n }\n },\n\n computed: {\n computedHeaders (): DataTableHeader[] {\n if (!this.headers) return []\n const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value))\n const defaultHeader = { text: '', sortable: false, width: '1px' }\n\n if (this.showSelect) {\n const index = headers.findIndex(h => h.value === 'data-table-select')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-select' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n if (this.showExpand) {\n const index = headers.findIndex(h => h.value === 'data-table-expand')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-expand' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n return headers\n },\n colspanAttrs (): object | undefined {\n return this.isMobile ? undefined : {\n colspan: this.headersLength || this.computedHeaders.length,\n }\n },\n columnSorters (): Record {\n return this.computedHeaders.reduce>((acc, header) => {\n if (header.sort) acc[header.value] = header.sort\n return acc\n }, {})\n },\n headersWithCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n headersWithoutCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n sanitizedHeaderProps (): Record {\n return camelizeObjectKeys(this.headerProps)\n },\n computedItemsPerPage (): number {\n const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage\n const itemsPerPageOptions: DataItemsPerPageOption[] | undefined = this.sanitizedFooterProps.itemsPerPageOptions\n\n if (\n itemsPerPageOptions &&\n !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)\n ) {\n const firstOption = itemsPerPageOptions[0]\n return typeof firstOption === 'object' ? firstOption.value : firstOption\n }\n\n return itemsPerPage\n },\n groupByText (): string {\n return this.headers?.find(header => header.value === this.internalGroupBy?.[0])?.text ?? ''\n },\n },\n\n created () {\n const breakingProps = [\n ['sort-icon', 'header-props.sort-icon'],\n ['hide-headers', 'hide-default-header'],\n ['select-all', 'show-select'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n mounted () {\n // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n // const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n // if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n // }\n\n if (this.calculateWidths) {\n window.addEventListener('resize', this.calcWidths)\n this.calcWidths()\n }\n },\n\n beforeDestroy () {\n if (this.calculateWidths) {\n window.removeEventListener('resize', this.calcWidths)\n }\n },\n\n methods: {\n calcWidths () {\n this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth)\n },\n customFilterWithColumns (items: any[], search: string) {\n return searchTableItems(\n items,\n search,\n this.headersWithCustomFilters,\n this.headersWithoutCustomFilters,\n this.customFilter,\n this.filterMode\n )\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any, index: number): DataTableItemProps {\n const data = {\n ...VDataIterator.options.methods.createItemProps.call(this, item, index),\n headers: this.computedHeaders,\n }\n\n return {\n ...data,\n attrs: {\n class: {\n 'v-data-table__selected': data.isSelected,\n },\n },\n on: {\n ...this.getDefaultMouseEventHandlers(':row', () => data, true),\n // TODO: the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: (event: MouseEvent) => this.$emit('click:row', item, data, event),\n },\n }\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${this.groupByText}: ${group}`, remove])\n\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [column]))\n }\n\n if (this.$scopedSlots['group.summary']) {\n children.push(this.$createElement('template', { slot: 'column.summary' }, [\n this.$scopedSlots['group.summary']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item, i),\n isMobile: this.isMobile,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n index: i,\n item,\n }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map((item, index) => this.genDefaultExpandedRow(item, index))\n : items.map((item, index) => this.genDefaultSimpleRow(item, index))\n },\n genDefaultExpandedRow (item: any, index: number): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, index, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n item,\n })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, index: number, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item, index)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot({\n ...data,\n isMobile: this.isMobile,\n }) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n style: mergeStyles({}, getPropertyFromItem(item, this.itemStyle)),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: data.on,\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n 'v-data-table--selectable': this.showSelect,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","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","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultTable.vue?vue&type=style&index=0&id=2b6bb9d4&prod&scoped=true&lang=css\"","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticClass:\"flex-1\",attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[(_vm.customTopActionSlots.length > 0)?_c('v-row',{staticClass:\"px-7 pt-5 mb-5\",attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"pa-0\",attrs:{\"cols\":\"12\"}},[(_vm.customTopActionSlots.length > 0)?_c('v-col',{staticClass:\"pa-0\"},_vm._l((_vm.customTopActionSlots),function(slot){return _c('v-row',{key:slot,staticClass:\"mb-3\",attrs:{\"no-gutters\":\"\"}},[_vm._t(slot)],2)}),1):_vm._e()],1)],1):_vm._e(),_c('v-col',{staticClass:\"pa-0\",attrs:{\"cols\":\"12\"}},[_c('v-data-table',{staticClass:\"data-table\",attrs:{\"disable-sort\":\"\",\"dark\":\"\",\"disable-filtering\":\"\",\"items-per-page\":_vm.itemsPerPage,\"show-expand\":_vm.allowExpand,\"item-key\":_vm.itemKey,\"single-expand\":_vm.allowExpand,\"expanded\":_vm.expanded,\"headers\":_vm.tableHeaders,\"items\":_vm.items,\"footer-props\":{\n 'items-per-page-options': [5, 10, 20, 30, 40, 50],\n },\"loading\":_vm.isLoading},on:{\"update:expanded\":function($event){_vm.expanded=$event}},scopedSlots:_vm._u([_vm._l((_vm.tableHeaders),function(pageHeader){return {key:`header.${pageHeader.value}`,fn:function({ header }){return [_c('v-responsive',{key:pageHeader.value,attrs:{\"min-width\":\"150px\"}},[_c('v-row',{key:pageHeader.value,attrs:{\"no-gutters\":\"\",\"justify\":\"start\",\"align\":\"center\"}},[_c('span',{staticClass:\"header-font\"},[_vm._v(_vm._s(header.text))])])],1)]}}}),_vm._l((_vm.customSlots),function(slot){return {key:`item.${slot}`,fn:function({ item }){return [_vm._t(slot,null,{\"item\":item})]}}}),(_vm.allowExpand)?{key:\"expanded-item\",fn:function({ item }){return [_vm._t('expanded-item',null,{\"item\":item})]}}:null],null,true)})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n \n \n \n\n \n \n \n \n \n \n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultTable.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultTable.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DefaultTable.vue?vue&type=template&id=2b6bb9d4&scoped=true\"\nimport script from \"./DefaultTable.vue?vue&type=script&lang=js\"\nexport * from \"./DefaultTable.vue?vue&type=script&lang=js\"\nimport style0 from \"./DefaultTable.vue?vue&type=style&index=0&id=2b6bb9d4&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2b6bb9d4\",\n null\n \n)\n\nexport default component.exports","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport { getPropertyFromItem } from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n attrs: {\n role: undefined,\n },\n on: {\n mousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n },\n }\n\n return this.$createElement(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return this.$createElement(VListItemAction, [\n this.$createElement(VSimpleCheckbox, {\n props: {\n color: this.color,\n value: inputValue,\n ripple: false,\n },\n on: {\n input: () => this.$emit('select', item),\n },\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return this.$createElement(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return text\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return [start, this.genHighlight(middle), end]\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string) {\n return this.$createElement('span', { staticClass: 'v-list-item__mask' }, text)\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n attrs: {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n },\n on: {\n mousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n click: () => disabled || this.$emit('select', item),\n },\n props: {\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n },\n }\n\n if (!this.$scopedSlots.item) {\n return this.$createElement(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$scopedSlots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? this.$createElement(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n return this.$createElement(VListItemContent, [\n this.$createElement(VListItemTitle, [\n this.genFilteredText(this.getText(item)),\n ]),\n ])\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.options.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item'])\n\n this.$slots['append-item'] && children.push(this.$slots['append-item'])\n\n return this.$createElement(VList, {\n staticClass: 'v-select-list',\n class: this.themeClasses,\n attrs: {\n role: 'listbox',\n tabindex: -1,\n },\n props: { dense: this.dense },\n }, children)\n },\n})\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'filterable',\n\n props: {\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n },\n})\n","// Styles\nimport '../VTextField/VTextField.sass'\nimport './VSelect.sass'\n\n// Components\nimport VChip from '../VChip'\nimport VMenu from '../VMenu'\nimport VSelectList from './VSelectList'\n\n// Extensions\nimport VInput from '../VInput'\nimport VTextField from '../VTextField/VTextField'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Dependent from '../../mixins/dependent'\nimport Filterable from '../../mixins/filterable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { getPropertyFromItem, getObjectValueByPath, keyCodes } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, VNodeDirective, PropType, VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\nexport const defaultMenuProps = {\n closeOnClick: false,\n closeOnContentClick: false,\n disableKeys: true,\n openOnClick: false,\n maxHeight: 304,\n}\n\n// Types\nconst baseMixins = mixins(\n VTextField,\n Comparable,\n Dependent,\n Filterable\n)\n\ninterface options extends InstanceType {\n $refs: {\n menu: InstanceType\n content: HTMLElement\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n 'append-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-select',\n\n directives: {\n ClickOutside,\n },\n\n props: {\n appendIcon: {\n type: String,\n default: '$dropdown',\n },\n attach: {\n type: null as unknown as PropType,\n default: false,\n },\n cacheItems: Boolean,\n chips: Boolean,\n clearable: Boolean,\n deletableChips: Boolean,\n disableLookup: Boolean,\n eager: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemColor: {\n type: String,\n default: 'primary',\n },\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n menuProps: {\n type: [String, Array, Object],\n default: () => defaultMenuProps,\n },\n multiple: Boolean,\n openOnClear: Boolean,\n returnObject: Boolean,\n smallChips: Boolean,\n },\n\n data () {\n return {\n cachedItems: this.cacheItems ? this.items : [],\n menuIsBooted: false,\n isMenuActive: false,\n lastItem: 20,\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n lazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n selectedIndex: -1,\n selectedItems: [] as any[],\n keyboardLookupPrefix: '',\n keyboardLookupLastTime: 0,\n }\n },\n\n computed: {\n /* All items that the select has */\n allItems (): object[] {\n return this.filterDuplicates(this.cachedItems.concat(this.items))\n },\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-select': true,\n 'v-select--chips': this.hasChips,\n 'v-select--chips--small': this.smallChips,\n 'v-select--is-menu-active': this.isMenuActive,\n 'v-select--is-multi': this.multiple,\n }\n },\n /* Used by other components to overwrite */\n computedItems (): object[] {\n return this.allItems\n },\n computedOwns (): string {\n return `list-${this._uid}`\n },\n computedCounterValue (): number {\n const value = this.multiple\n ? this.selectedItems\n : (this.getText(this.selectedItems[0]) ?? '').toString()\n\n if (typeof this.counterValue === 'function') {\n return this.counterValue(value)\n }\n\n return value.length\n },\n directives (): VNodeDirective[] | undefined {\n return this.isFocused ? [{\n name: 'click-outside',\n value: {\n handler: this.blur,\n closeConditional: this.closeConditional,\n include: () => this.getOpenDependentElements(),\n },\n }] : undefined\n },\n dynamicHeight () {\n return 'auto'\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n hasSlot (): boolean {\n return Boolean(this.hasChips || this.$scopedSlots.selection)\n },\n isDirty (): boolean {\n return this.selectedItems.length > 0\n },\n listData (): object {\n const scopeId = this.$vnode && (this.$vnode.context!.$options as { [key: string]: any })._scopeId\n const attrs = scopeId ? {\n [scopeId]: true,\n } : {}\n\n return {\n attrs: {\n ...attrs,\n id: this.computedOwns,\n },\n props: {\n action: this.multiple,\n color: this.itemColor,\n dense: this.dense,\n hideSelected: this.hideSelected,\n items: this.virtualizedItems,\n itemDisabled: this.itemDisabled,\n itemText: this.itemText,\n itemValue: this.itemValue,\n noDataText: this.$vuetify.lang.t(this.noDataText),\n selectedItems: this.selectedItems,\n },\n on: {\n select: this.selectItem,\n },\n scopedSlots: {\n item: this.$scopedSlots.item,\n },\n }\n },\n staticList (): VNode {\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n consoleError('assert: staticList should not be called if slots are used')\n }\n\n return this.$createElement(VSelectList, this.listData)\n },\n virtualizedItems (): object[] {\n return (this.$_menuProps as any).auto\n ? this.computedItems\n : this.computedItems.slice(0, this.lastItem)\n },\n menuCanShow: () => true,\n $_menuProps (): object {\n let normalisedProps = typeof this.menuProps === 'string'\n ? this.menuProps.split(',')\n : this.menuProps\n\n if (Array.isArray(normalisedProps)) {\n normalisedProps = normalisedProps.reduce((acc, p) => {\n acc[p.trim()] = true\n return acc\n }, {})\n }\n\n return {\n ...defaultMenuProps,\n eager: this.eager,\n value: this.menuCanShow && this.isMenuActive,\n nudgeBottom: normalisedProps.offsetY ? 1 : 0, // convert to int\n ...normalisedProps,\n }\n },\n },\n\n watch: {\n internalValue (val) {\n this.initialValue = val\n this.setSelectedItems()\n\n if (this.multiple) {\n this.$nextTick(() => {\n this.$refs.menu?.updateDimensions()\n })\n }\n if (this.hideSelected) {\n this.$nextTick(() => {\n this.onScroll()\n })\n }\n },\n isMenuActive (val) {\n window.setTimeout(() => this.onMenuActiveChange(val))\n },\n items: {\n immediate: true,\n handler (val) {\n if (this.cacheItems) {\n // Breaks vue-test-utils if\n // this isn't calculated\n // on the next tick\n this.$nextTick(() => {\n this.cachedItems = this.filterDuplicates(this.cachedItems.concat(val))\n })\n }\n\n this.setSelectedItems()\n },\n },\n },\n\n methods: {\n /** @public */\n blur (e?: Event) {\n VTextField.options.methods.blur.call(this, e)\n this.isMenuActive = false\n this.isFocused = false\n this.selectedIndex = -1\n this.setMenuIndex(-1)\n },\n /** @public */\n activateMenu () {\n if (\n !this.isInteractive ||\n this.isMenuActive\n ) return\n\n this.isMenuActive = true\n },\n clearableCallback () {\n this.setValue(this.multiple ? [] : null)\n this.setMenuIndex(-1)\n this.$nextTick(() => this.$refs.input && this.$refs.input.focus())\n\n if (this.openOnClear) this.isMenuActive = true\n },\n closeConditional (e: Event) {\n if (!this.isMenuActive) return true\n\n return (\n !this._isDestroyed &&\n\n // Click originates from outside the menu content\n // Multiple selects don't close when an item is clicked\n (!this.getContent() ||\n !this.getContent().contains(e.target as Node)) &&\n\n // Click originates from outside the element\n this.$el &&\n !this.$el.contains(e.target as Node) &&\n e.target !== this.$el\n )\n },\n filterDuplicates (arr: any[]) {\n const uniqueValues = new Map()\n for (let index = 0; index < arr.length; ++index) {\n const item = arr[index]\n\n // Do not return null values if existant (#14421)\n if (item == null) {\n continue\n }\n // Do not deduplicate headers or dividers (#12517)\n if (item.header || item.divider) {\n uniqueValues.set(item, item)\n continue\n }\n\n const val = this.getValue(item)\n\n // TODO: comparator\n !uniqueValues.has(val) && uniqueValues.set(val, item)\n }\n return Array.from(uniqueValues.values())\n },\n findExistingIndex (item: object) {\n const itemValue = this.getValue(item)\n\n return (this.internalValue || []).findIndex((i: object) => this.valueComparator(this.getValue(i), itemValue))\n },\n getContent () {\n return this.$refs.menu && this.$refs.menu.$refs.content\n },\n genChipSelection (item: object, index: number) {\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n const isInteractive = !isDisabled && this.isInteractive\n\n return this.$createElement(VChip, {\n staticClass: 'v-chip--select',\n attrs: { tabindex: -1 },\n props: {\n close: this.deletableChips && isInteractive,\n disabled: isDisabled,\n inputValue: index === this.selectedIndex,\n small: this.smallChips,\n },\n on: {\n click: (e: MouseEvent) => {\n if (!isInteractive) return\n\n e.stopPropagation()\n\n this.selectedIndex = index\n },\n 'click:close': () => this.onChipInput(item),\n },\n key: JSON.stringify(this.getValue(item)),\n }, this.getText(item))\n },\n genCommaSelection (item: object, index: number, last: boolean) {\n const color = index === this.selectedIndex && this.computedColor\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-select__selection v-select__selection--comma',\n class: {\n 'v-select__selection--disabled': isDisabled,\n },\n key: JSON.stringify(this.getValue(item)),\n }), `${this.getText(item)}${last ? '' : ', '}`)\n },\n genDefaultSlot (): (VNode | VNode[] | null)[] {\n const selections = this.genSelections()\n const input = this.genInput()\n\n // If the return is an empty array\n // push the input\n if (Array.isArray(selections)) {\n selections.push(input)\n // Otherwise push it into children\n } else {\n selections.children = selections.children || []\n selections.children.push(input)\n }\n\n return [\n this.genFieldset(),\n this.$createElement('div', {\n staticClass: 'v-select__slot',\n directives: this.directives,\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n selections,\n this.suffix ? this.genAffix('suffix') : null,\n this.genClearIcon(),\n this.genIconSlot(),\n this.genHiddenInput(),\n ]),\n this.genMenu(),\n this.genProgress(),\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData?: VNodeData\n ) {\n const icon = VInput.options.methods.genIcon.call(this, type, cb, extraData)\n\n if (type === 'append') {\n // Don't allow the dropdown icon to be focused\n icon.children![0].data = mergeData(icon.children![0].data!, {\n attrs: {\n tabindex: icon.children![0].componentOptions!.listeners && '-1',\n 'aria-hidden': 'true',\n 'aria-label': undefined,\n },\n })\n }\n\n return icon\n },\n genInput (): VNode {\n const input = VTextField.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n\n input.data = mergeData(input.data!, {\n domProps: { value: null },\n attrs: {\n readonly: true,\n type: 'text',\n 'aria-readonly': String(this.isReadonly),\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n placeholder: (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) ? this.placeholder : undefined,\n },\n on: { keypress: this.onKeyPress },\n })\n\n return input\n },\n genHiddenInput (): VNode {\n return this.$createElement('input', {\n domProps: { value: this.lazyValue },\n attrs: {\n type: 'hidden',\n name: this.attrs$.name,\n },\n })\n },\n genInputSlot (): VNode {\n const render = VTextField.options.methods.genInputSlot.call(this)\n\n render.data!.attrs = {\n ...render.data!.attrs,\n role: 'button',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': String(this.isMenuActive),\n 'aria-owns': this.computedOwns,\n }\n\n return render\n },\n genList (): VNode {\n // If there's no slots, we can use a cached VNode to improve performance\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n return this.genListWithSlot()\n } else {\n return this.staticList\n }\n },\n genListWithSlot (): VNode {\n const slots = ['prepend-item', 'no-data', 'append-item']\n .filter(slotName => this.$slots[slotName])\n .map(slotName => this.$createElement('template', {\n slot: slotName,\n }, this.$slots[slotName]))\n // Requires destructuring due to Vue\n // modifying the `on` property when passed\n // as a referenced object\n return this.$createElement(VSelectList, {\n ...this.listData,\n }, slots)\n },\n genMenu (): VNode {\n const props = this.$_menuProps as any\n props.activator = this.$refs['input-slot']\n\n if ('attach' in props) void 0\n else if (\n // TODO: make this a computed property or helper or something\n this.attach === '' || // If used as a boolean prop ()\n this.attach === true || // If bound to a boolean ()\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) {\n // Attach to root el so that\n // menu covers prepend/append icons\n props.attach = this.$el\n } else {\n props.attach = this.attach\n }\n\n return this.$createElement(VMenu, {\n attrs: { role: undefined },\n props,\n on: {\n input: (val: boolean) => {\n this.isMenuActive = val\n this.isFocused = val\n },\n scroll: this.onScroll,\n },\n ref: 'menu',\n }, [this.genList()])\n },\n genSelections (): VNode {\n let length = this.selectedItems.length\n const children = new Array(length)\n\n let genSelection\n if (this.$scopedSlots.selection) {\n genSelection = this.genSlotSelection\n } else if (this.hasChips) {\n genSelection = this.genChipSelection\n } else {\n genSelection = this.genCommaSelection\n }\n\n while (length--) {\n children[length] = genSelection(\n this.selectedItems[length],\n length,\n length === children.length - 1\n )\n }\n\n return this.$createElement('div', {\n staticClass: 'v-select__selections',\n }, children)\n },\n genSlotSelection (item: object, index: number): VNode[] | undefined {\n return this.$scopedSlots.selection!({\n attrs: {\n class: 'v-chip--select',\n },\n parent: this,\n item,\n index,\n select: (e: Event) => {\n e.stopPropagation()\n this.selectedIndex = index\n },\n selected: index === this.selectedIndex,\n disabled: !this.isInteractive,\n })\n },\n getMenuIndex () {\n return this.$refs.menu ? (this.$refs.menu as { [key: string]: any }).listIndex : -1\n },\n getDisabled (item: object) {\n return getPropertyFromItem(item, this.itemDisabled, false)\n },\n getText (item: object) {\n return getPropertyFromItem(item, this.itemText, item)\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n onBlur (e?: Event) {\n e && this.$emit('blur', e)\n },\n onChipInput (item: object) {\n if (this.multiple) this.selectItem(item)\n else this.setValue(null)\n // If all items have been deleted,\n // open `v-menu`\n if (this.selectedItems.length === 0) {\n this.isMenuActive = true\n } else {\n this.isMenuActive = false\n }\n this.selectedIndex = -1\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n if (!this.isAppendInner(e.target)) {\n this.isMenuActive = true\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n this.$emit('focus')\n }\n\n this.$emit('click', e)\n },\n onEscDown (e: Event) {\n e.preventDefault()\n if (this.isMenuActive) {\n e.stopPropagation()\n this.isMenuActive = false\n }\n },\n onKeyPress (e: KeyboardEvent) {\n if (\n this.multiple ||\n !this.isInteractive ||\n this.disableLookup ||\n e.key.length > 1 ||\n e.ctrlKey || e.metaKey || e.altKey\n ) return\n\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n const now = performance.now()\n if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n this.keyboardLookupPrefix = ''\n }\n this.keyboardLookupPrefix += e.key.toLowerCase()\n this.keyboardLookupLastTime = now\n\n const index = this.allItems.findIndex(item => {\n const text = (this.getText(item) ?? '').toString()\n\n return text.toLowerCase().startsWith(this.keyboardLookupPrefix)\n })\n const item = this.allItems[index]\n if (index !== -1) {\n this.lastItem = Math.max(this.lastItem, index + 5)\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.isReadonly && e.keyCode !== keyCodes.tab) return\n\n const keyCode = e.keyCode\n const menu = this.$refs.menu\n\n this.$emit('keydown', e)\n\n if (!menu) return\n\n // If menu is active, allow default\n // listIndex change from menu\n if (this.isMenuActive && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end, keyCodes.enter].includes(keyCode)) {\n this.$nextTick(() => {\n menu.changeListIndex(e)\n this.$emit('update:list-index', menu.listIndex)\n })\n }\n\n // If enter, space, open menu\n if ([\n keyCodes.enter,\n keyCodes.space,\n ].includes(keyCode)) this.activateMenu()\n\n // If menu is not active, up/down/home/end can do\n // one of 2 things. If multiple, opens the\n // menu, if not, will cycle through all\n // available options\n if (\n !this.isMenuActive &&\n [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end].includes(keyCode)\n ) return this.onUpDown(e)\n\n // If escape deactivate the menu\n if (keyCode === keyCodes.esc) return this.onEscDown(e)\n\n // If tab - select item or close menu\n if (keyCode === keyCodes.tab) return this.onTabDown(e)\n\n // If space preventDefault\n if (keyCode === keyCodes.space) return this.onSpaceDown(e)\n },\n onMenuActiveChange (val: boolean) {\n // If menu is closing and mulitple\n // or menuIndex is already set\n // skip menu index recalculation\n if (\n (this.multiple && !val) ||\n this.getMenuIndex() > -1\n ) return\n\n const menu = this.$refs.menu\n\n if (!menu || !this.isDirty) return\n\n // When menu opens, set index of first active item\n this.$refs.menu.getTiles()\n for (let i = 0; i < menu.tiles.length; i++) {\n if (menu.tiles[i].getAttribute('aria-selected') === 'true') {\n this.setMenuIndex(i)\n break\n }\n }\n },\n onMouseUp (e: MouseEvent) {\n // eslint-disable-next-line sonarjs/no-collapsible-if\n if (\n this.hasMouseDown &&\n e.which !== 3 &&\n this.isInteractive\n ) {\n // If append inner is present\n // and the target is itself\n // or inside, toggle menu\n if (this.isAppendInner(e.target)) {\n this.$nextTick(() => (this.isMenuActive = !this.isMenuActive))\n }\n }\n\n VTextField.options.methods.onMouseUp.call(this, e)\n },\n onScroll () {\n if (!this.isMenuActive) {\n requestAnimationFrame(() => {\n const content = this.getContent()\n if (content) content.scrollTop = 0\n })\n } else {\n if (this.lastItem > this.computedItems.length) return\n\n const showMoreItems = (\n this.getContent().scrollHeight -\n (this.getContent().scrollTop +\n this.getContent().clientHeight)\n ) < 200\n\n if (showMoreItems) {\n this.lastItem += 20\n }\n }\n },\n onSpaceDown (e: KeyboardEvent) {\n e.preventDefault()\n },\n onTabDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n const activeTile = menu.activeTile\n\n // An item that is selected by\n // menu-index should toggled\n if (\n !this.multiple &&\n activeTile &&\n this.isMenuActive\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n activeTile.click()\n } else {\n // If we make it here,\n // the user has no selected indexes\n // and is probably tabbing out\n this.blur(e)\n }\n },\n onUpDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n e.preventDefault()\n\n // Multiple selects do not cycle their value\n // when pressing up or down, instead activate\n // the menu\n if (this.multiple) return this.activateMenu()\n\n const keyCode = e.keyCode\n\n // Cycle through available values to achieve\n // select native behavior\n menu.isBooted = true\n\n window.requestAnimationFrame(() => {\n menu.getTiles()\n\n if (!menu.hasClickableTiles) return this.activateMenu()\n\n switch (keyCode) {\n case keyCodes.up:\n menu.prevTile()\n break\n case keyCodes.down:\n menu.nextTile()\n break\n case keyCodes.home:\n menu.firstTile()\n break\n case keyCodes.end:\n menu.lastTile()\n break\n }\n this.selectItem(this.allItems[this.getMenuIndex()])\n })\n },\n selectItem (item: object) {\n if (!this.multiple) {\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.isMenuActive = false\n } else {\n const internalValue = (this.internalValue || []).slice()\n const i = this.findExistingIndex(item)\n\n i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item)\n this.setValue(internalValue.map((i: object) => {\n return this.returnObject ? i : this.getValue(i)\n }))\n\n // There is no item to re-highlight\n // when selections are hidden\n if (this.hideSelected) {\n this.setMenuIndex(-1)\n } else {\n const index = this.allItems.indexOf(item)\n if (~index) {\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n }\n }\n },\n setMenuIndex (index: number) {\n this.$refs.menu && ((this.$refs.menu as { [key: string]: any }).listIndex = index)\n },\n setSelectedItems () {\n const selectedItems = []\n const values = !this.multiple || !Array.isArray(this.internalValue)\n ? [this.internalValue]\n : this.internalValue\n\n for (const value of values) {\n const index = this.allItems.findIndex(v => this.valueComparator(\n this.getValue(v),\n this.getValue(value)\n ))\n\n if (index > -1) {\n selectedItems.push(this.allItems[index])\n }\n }\n\n this.selectedItems = selectedItems\n },\n setValue (value: any) {\n if (!this.valueComparator(value, this.internalValue)) {\n this.internalValue = value\n this.$emit('change', value)\n }\n },\n isAppendInner (target: any) {\n // return true if append inner is present\n // and the target is itself or inside\n const appendInner = this.$refs['append-inner']\n\n return appendInner && (appendInner === target || appendInner.contains(target))\n },\n },\n})\n"],"sourceRoot":""}