{"version":3,"sources":["webpack:///../../../src/components/VSheet/index.ts","webpack:///../../../src/components/VProgressCircular/index.ts","webpack:///./src/view/pages/history/ActivityHistory.vue?5354","webpack:///src/view/pages/history/ActivityHistory.vue","webpack:///./src/view/pages/history/ActivityHistory.vue?89eb","webpack:///./src/view/pages/history/ActivityHistory.vue","webpack:///../../../src/components/VBtn/VBtn.ts","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/VBtn/index.ts","webpack:///../../../src/mixins/mobile/index.ts"],"names":["VSheet","VProgressCircular","render","_vm","this","_h","$createElement","_c","_self","attrs","isLoading","on","$event","staticClass","$t","scopedSlots","_u","key","fn","staticStyle","model","value","callback","$$v","fromDate","expression","toDateYYMMDD","onContextFrom","_v","toDate","onContextTo","activityHistoriesFiltered","length","_s","_e","VDataTable","activityColumn","currentPage","ref","item","_f","createTime","totalCount","proxy","staticRenderFns","name","components","KTCodePreview","data","project_id","currentPageSubmissionList","page","pageCount","text","activityHistories","computed","Date","$addDay","result","filter","createDate","methods","searchData","getList","ctx","selectedYMD","lastYearDateYYMMDD","param","projectId","$store","getters","getSelectedProjectId","startDate","endDate","$moment","add","format","console","log","returnValue","dispatch","resultArr","Items","$sortByDate","e","SET_BREADCRUMB","title","today","lastYear","$addYear","todayFormat","watch","handler","component","baseMixins","mixins","Routable","Positionable","Sizeable","GroupableFactory","ToggleableFactory","extend","props","activeClass","type","String","default","btnToggle","block","Boolean","depressed","fab","icon","loading","outlined","plain","retainFocusOnClick","rounded","tag","tile","proxyClass","classes","options","call","absolute","bottom","disabled","isElevated","fixed","hasBg","left","right","isRound","to","top","themeClasses","groupClasses","elevationClasses","sizeableClasses","computedElevation","Elevatable","computedRipple","defaultRipple","circle","_a","ripple","elevation","Number","styles","measurableStyles","created","breakingProps","forEach","original","replacement","$attrs","hasOwnProperty","breaking","click","detail","$el","blur","$emit","toggle","genContent","getSlot","genLoader","class","indeterminate","size","width","h","children","generateRouteLink","setColor","setBackgroundColor","setTextColor","includes","JSON","stringify","color","Vue","inheritAttrs","items","Array","Object","sortBy","sortDesc","customSort","Function","sortItems","mustSort","multiSort","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","search","customFilter","searchItems","serverItemsLength","internalOptions","wrapInArray","assign","sortDiff","groupDiff","push","fillArray","itemsLength","filteredItems","Math","ceil","pageStart","pageStop","min","isGrouped","pagination","slice","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","group","updateOptions","originalItemsLength","computedOptions","old","deepEqual","deep","immediate","isArray","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","$vuetify","lang","t","genItemsPerPageSelect","computedIPPO","find","ippo","VSelect","hideDetails","auto","minWidth","input","genPaginationInfo","genIcon","label","VBtn","VIcon","genIcons","before","after","rtl","unshift","toString","Mobile","Themeable","VData","itemKey","singleSelect","expanded","mobileBreakpoint","singleExpand","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","selection","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","some","sanitizedFooterProps","camelizeObjectKeys","isSelectable","reduce","getObjectValueByPath","keys","values","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","noData","noResults","genItems","empty","genFooter","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","$props","update:options","directives","headers","checkboxColor","sortIcon","showGroupBy","genSelectAll","VSimpleCheckbox","genSortIcon","header","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","active","asc","VChip","stopPropagation","genSortSelect","multiple","menuProps","closeOnContentClick","change","sortHeaders","th","undefined","tr","genGroupByToggle","getAria","ariaSort","ariaLabel","join","genHeader","role","scope","style","convertToUnit","align","divider","groupable","dedupeModelListeners","indexOf","rebuildFunctionalSlots","slots","slot","functional","mobile","rebuildSlots","mergeData","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","computedSlots","columns","slotName","scopedSlot","regularSlot","textAlign","cellClass","headerClass","contentClass","summaryClass","dense","fixedHeader","height","$slots","genWrapper","wrapper","hideDefaultHeader","mobileRowChildren","getDefaultMouseEventHandlers","suffix","getData","eventFirst","listeners","$listeners","endsWith","acc","event","getMouseEventHandlers","prevent","events","eventOptions","prefix","passive","once","capture","mouseEvent","button","buttons","preventDefault","stop","classSeparator","eventTargetClasses","currentTarget","className","split","currentTargets","document","elementsFromPoint","changedTouches","clientX","clientY","c","_b","target","isSameNode","dispatchEvent","TouchEvent","targetTouches","touches","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","filterMode","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","calcWidths","from","querySelectorAll","clientWidth","customFilterWithColumns","customSortWithHeaders","genCaption","genColgroup","genLoading","genProgress","genHeaders","VDataTableHeader","genGroupedRows","genRows","$set","genDefaultGroupedRow","isOpen","toggleFn","removeFn","remove","small","column","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","val","MobileRow","Row","mergeClasses","getPropertyFromItem","mergeStyles","genBody","body","genFoot","foot","genFooters","simpleProps","VSimpleTable","proxySlot","breakpoint","validator","isNaN","mobileWidth","parseInt","isNumber","deprecate"],"mappings":"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","file":"js/chunk-0b69b78e.038eb80d.js","sourcesContent":["import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","import { VDataTable } from 'vuetify/lib/components/VDataTable';\n\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('loading',{attrs:{\"active\":_vm.isLoading,\"opacity\":\"0.9\"},on:{\"update:active\":function($event){_vm.isLoading=$event}}}),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-12\"},[_c('KTCodePreview',{staticClass:\"px-10\",attrs:{\"title\":_vm.$t('KYBActivityLog')},scopedSlots:_vm._u([{key:\"preview\",fn:function(){return [_c('b-row',[_c('b-col',{attrs:{\"cols\":\"5\"}}),_c('b-col',[_c('b-input-group',{staticClass:\"mb-3 pr-0\"},[_c('b-form-input',{staticStyle:{\"width\":\"120px\"},attrs:{\"readonly\":\"\",\"id\":\"fromdate-input\",\"type\":\"text\",\"placeholder\":\"YYYY-MM-DD\",\"autocomplete\":\"off\"},model:{value:(_vm.fromDate),callback:function ($$v) {_vm.fromDate=$$v},expression:\"fromDate\"}}),_c('b-input-group-append',[_c('b-form-datepicker',{attrs:{\"max\":_vm.toDateYYMMDD,\"button-only\":\"\",\"right\":\"\",\"locale\":\"en-US\",\"aria-controls\":\"fromdate-input\"},on:{\"context\":_vm.onContextFrom},model:{value:(_vm.fromDate),callback:function ($$v) {_vm.fromDate=$$v},expression:\"fromDate\"}})],1),_c('span',{staticClass:\"mx-1\"},[_vm._v(\"~\")]),_c('b-form-input',{staticStyle:{\"width\":\"120px\"},attrs:{\"readonly\":\"\",\"id\":\"todate-input\",\"type\":\"text\",\"placeholder\":\"YYYY-MM-DD\",\"autocomplete\":\"off\"},model:{value:(_vm.toDate),callback:function ($$v) {_vm.toDate=$$v},expression:\"toDate\"}}),_c('b-input-group-append',[_c('b-form-datepicker',{attrs:{\"max\":_vm.toDateYYMMDD,\"button-only\":\"\",\"right\":\"\",\"locale\":\"en-US\",\"aria-controls\":\"todate-input\"},on:{\"context\":_vm.onContextTo},model:{value:(_vm.toDate),callback:function ($$v) {_vm.toDate=$$v},expression:\"toDate\"}})],1)],1)],1)],1),(_vm.activityHistoriesFiltered.length==0)?_c('div',{staticClass:\"p-3 mb-5 text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"NoData\"))+\" \")]):_vm._e(),(_vm.activityHistoriesFiltered.length > 0)?_c('div',[[_c(VDataTable,{attrs:{\"headers\":_vm.activityColumn,\"items\":_vm.activityHistoriesFiltered,\"page\":_vm.currentPage,\"items-per-page\":10,\"hide-default-footer\":\"\"},on:{\"update:page\":function($event){_vm.currentPage=$event}},scopedSlots:_vm._u([{key:\"item.createTime\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('span',[_vm._v(_vm._s(_vm._f(\"datetimeFormatSecond\")(item.createTime)))])]}}],null,false,673619679)}),_c('b-pagination',{staticClass:\"my-5\",attrs:{\"total-rows\":_vm.totalCount,\"per-page\":10,\"align\":\"center\"},model:{value:(_vm.currentPage),callback:function ($$v) {_vm.currentPage=$$v},expression:\"currentPage\"}})]],2):_vm._e()]},proxy:true}])})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n\n \n \n\n \n\n \n \n \n \n \n \n \n \n \n \n \n ~\n \n \n \n \n \n \n\n\n\n \n\n\n \n {{$t(\"NoData\") }}\n\n \n\n 0\">\n\n \n \n \n {{item.createTime | datetimeFormatSecond }}\n \n\n \n\n \n \n\n \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!./ActivityHistory.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!./ActivityHistory.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ActivityHistory.vue?vue&type=template&id=f6e141e4&scoped=true\"\nimport script from \"./ActivityHistory.vue?vue&type=script&lang=js\"\nexport * from \"./ActivityHistory.vue?vue&type=script&lang=js\"\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 \"f6e141e4\",\n null\n \n)\n\nexport default component.exports","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, getSlot(this))\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, getSlot(this, 'loader') || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n this.shiftKeyDown = e.keyCode === keyCodes.shift || e.shiftKey\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode === keyCodes.shift || !e.shiftKey) {\n this.shiftKeyDown = false\n }\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = getSlot(this, 'loading') || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = getSlot(this, 'noData') || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = getSlot(this, 'noResults') || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","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, getSlot } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', getSlot(this)),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n getSlot(this, 'top'),\n this.genWrapper(),\n getSlot(this, 'bottom'),\n ])\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n hideDefaultHeader: Boolean,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const classes = {\n 'v-data-table__mobile-row': true,\n }\n\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({\n item: props.item,\n isMobile: true,\n header,\n index: props.index,\n value,\n }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const mobileRowChildren = [\n h('div', {\n staticClass: 'v-data-table__mobile-row__cell',\n }, children),\n ]\n\n if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n mobileRowChildren.unshift(\n h('div', {\n staticClass: 'v-data-table__mobile-row__header',\n }, [header.text])\n )\n }\n\n return h('td', { class: classes }, mobileRowChildren)\n })\n\n return h('tr', { ...data, staticClass: 'v-data-table__mobile-table-row' }, columns)\n },\n})\n","import Vue from 'vue'\n\nexport type MouseHandler = (e: MouseEvent | TouchEvent) => any\n\nexport type MouseEvents = {\n [event: string]: {\n event: string\n passive?: boolean\n capture?: boolean\n once?: boolean\n stop?: boolean\n prevent?: boolean\n button?: number\n result?: any\n }\n}\n\nexport type MouseEventsMap = {\n [event: string]: MouseHandler | MouseHandler[]\n}\n\nexport default Vue.extend({\n name: 'mouse',\n\n methods: {\n getDefaultMouseEventHandlers (suffix: string, getData: MouseHandler, eventFirst = false): MouseEventsMap {\n const listeners = Object.keys(this.$listeners)\n .filter(key => key.endsWith(suffix))\n .reduce((acc, key) => {\n acc[key] = { event: key.slice(0, -suffix.length) }\n return acc\n }, {} as MouseEvents)\n\n return this.getMouseEventHandlers({\n ...listeners,\n ['contextmenu' + suffix]: { event: 'contextmenu', prevent: true, result: false },\n }, getData, eventFirst)\n },\n getMouseEventHandlers (events: MouseEvents, getData: MouseHandler, eventFirst = false): MouseEventsMap {\n const on: MouseEventsMap = {}\n\n for (const event in events) {\n const eventOptions = events[event]\n\n if (!this.$listeners[event]) continue\n\n // TODO somehow pull in modifiers\n\n const prefix = eventOptions.passive ? '&' : ((eventOptions.once ? '~' : '') + (eventOptions.capture ? '!' : ''))\n const key = prefix + eventOptions.event\n\n const handler: MouseHandler = e => {\n const mouseEvent: MouseEvent = e as MouseEvent\n if (eventOptions.button === undefined || (mouseEvent.buttons > 0 && mouseEvent.button === eventOptions.button)) {\n if (eventOptions.prevent) {\n e.preventDefault()\n }\n if (eventOptions.stop) {\n e.stopPropagation()\n }\n\n // Due to TouchEvent target always returns the element that is first placed\n // Even if touch point has since moved outside the interactive area of that element\n // Ref: https://developer.mozilla.org/en-US/docs/Web/API/Touch/target\n // This block of code aims to make sure touchEvent is always dispatched from the element that is being pointed at\n if (e && 'touches' in e) {\n const classSeparator = ' '\n\n const eventTargetClasses = (e.currentTarget as HTMLElement)?.className.split(classSeparator)\n const currentTargets = document.elementsFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY)\n\n // Get \"the same kind\" current hovering target by checking\n // If element has the same class of initial touch start element (which has touch event listener registered)\n const currentTarget = currentTargets.find(t => t.className.split(classSeparator).some(c => eventTargetClasses.includes(c)))\n\n if (currentTarget &&\n !(e.target as HTMLElement)?.isSameNode(currentTarget)\n ) {\n currentTarget.dispatchEvent(new TouchEvent(e.type, {\n changedTouches: e.changedTouches as unknown as Touch[],\n targetTouches: e.targetTouches as unknown as Touch[],\n touches: e.touches as unknown as Touch[],\n }))\n return\n }\n }\n\n // TODO: VCalendar emits the calendar event as the first argument,\n // but it really should be the native event instead so modifiers can be used\n if (eventFirst) {\n this.$emit(event, e, getData(e))\n } else {\n this.$emit(event, getData(e), e)\n }\n }\n\n return eventOptions.result\n }\n\n if (key in on) {\n /* istanbul ignore next */\n if (Array.isArray(on[key])) {\n (on[key] as MouseHandler[]).push(handler)\n } else {\n on[key] = [on[key], handler] as MouseHandler[]\n }\n } else {\n on[key] = handler\n }\n }\n\n return on\n },\n },\n})\n","import './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n RowClassFunction,\n RowStyleFunction,\n DataTableItemProps,\n DataTableFilterMode,\n} from 'vuetify/types'\n\n// Components\nimport { VData } from '../VData'\nimport { VDataFooter, VDataIterator } from '../VDataIterator'\nimport VBtn from '../VBtn'\nimport VDataTableHeader from './VDataTableHeader'\n// import VVirtualTable from './VVirtualTable'\nimport VIcon from '../VIcon'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Mouse from '../../mixins/mouse'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers'\nimport { breaking } from '../../util/console'\nimport { mergeClasses, mergeStyles } from '../../util/mergeData'\n\nfunction filterFn (item: any, search: string | null, filter: DataTableFilterFunction) {\n return (header: DataTableHeader) => {\n const value = getObjectValueByPath(item, header.value)\n return header.filter ? header.filter(value, search, item) : filter(value, search, item)\n }\n}\n\nfunction searchTableItems (\n items: any[],\n search: string | null,\n headersWithCustomFilters: DataTableHeader[],\n headersWithoutCustomFilters: DataTableHeader[],\n customFilter: DataTableFilterFunction,\n filterMode: DataTableFilterMode,\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n if (filterMode === 'union') {\n // If the `search` property is empty and there are no custom filters in use, there is nothing to do.\n if (!(search && headersWithoutCustomFilters.length) && !headersWithCustomFilters.length) return items\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n if (headersWithCustomFilters.length && headersWithCustomFilters.every(filterFn(item, search, defaultFilter))) {\n return true\n }\n\n // Otherwise, the `search` property is used to filter columns without a custom filter.\n return (search && headersWithoutCustomFilters.some(filterFn(item, search, customFilter)))\n })\n } else if (filterMode === 'intersection') {\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n // We need to match every filter to be included in the results.\n const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter))\n\n // Headers without custom filters are only filtered by the `search` property if it is defined.\n // We only need a single column to match the search term to be included in the results.\n const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter))\n\n return matchesColumnFilters && matchesSearchTerm\n })\n } else {\n return items\n }\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n Mouse,\n).extend({\n name: 'v-data-table',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => [],\n } as PropValidator,\n showSelect: Boolean,\n checkboxColor: String,\n showExpand: Boolean,\n showGroupBy: Boolean,\n // TODO: Fix\n // virtualRows: Boolean,\n height: [Number, String],\n hideDefaultHeader: Boolean,\n caption: String,\n dense: Boolean,\n headerProps: Object,\n calculateWidths: Boolean,\n fixedHeader: Boolean,\n headersLength: Number,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n customFilter: {\n type: Function,\n default: defaultFilter,\n } as PropValidator,\n filterMode: {\n type: String,\n default: 'intersection',\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n itemStyle: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n },\n\n data () {\n return {\n internalGroupBy: [] as string[],\n openCache: {} as { [key: string]: boolean },\n widths: [] as number[],\n }\n },\n\n computed: {\n computedHeaders (): DataTableHeader[] {\n if (!this.headers) return []\n const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value))\n const defaultHeader = { text: '', sortable: false, width: '1px' }\n\n if (this.showSelect) {\n const index = headers.findIndex(h => h.value === 'data-table-select')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-select' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n if (this.showExpand) {\n const index = headers.findIndex(h => h.value === 'data-table-expand')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-expand' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n return headers\n },\n colspanAttrs (): object | undefined {\n return this.isMobile ? undefined : {\n colspan: this.headersLength || this.computedHeaders.length,\n }\n },\n columnSorters (): Record {\n return this.computedHeaders.reduce>((acc, header) => {\n if (header.sort) acc[header.value] = header.sort\n return acc\n }, {})\n },\n headersWithCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n headersWithoutCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n sanitizedHeaderProps (): Record {\n return camelizeObjectKeys(this.headerProps)\n },\n computedItemsPerPage (): number {\n const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage\n const itemsPerPageOptions: DataItemsPerPageOption[] | undefined = this.sanitizedFooterProps.itemsPerPageOptions\n\n if (\n itemsPerPageOptions &&\n !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)\n ) {\n const firstOption = itemsPerPageOptions[0]\n return typeof firstOption === 'object' ? firstOption.value : firstOption\n }\n\n return itemsPerPage\n },\n groupByText (): string {\n return this.headers?.find(header => header.value === this.internalGroupBy?.[0])?.text ?? ''\n },\n },\n\n created () {\n const breakingProps = [\n ['sort-icon', 'header-props.sort-icon'],\n ['hide-headers', 'hide-default-header'],\n ['select-all', 'show-select'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n mounted () {\n // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n // const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n // if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n // }\n\n if (this.calculateWidths) {\n window.addEventListener('resize', this.calcWidths)\n this.calcWidths()\n }\n },\n\n beforeDestroy () {\n if (this.calculateWidths) {\n window.removeEventListener('resize', this.calcWidths)\n }\n },\n\n methods: {\n calcWidths () {\n this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth)\n },\n customFilterWithColumns (items: any[], search: string) {\n return searchTableItems(\n items,\n search,\n this.headersWithCustomFilters,\n this.headersWithoutCustomFilters,\n this.customFilter,\n this.filterMode\n )\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any, index: number): DataTableItemProps {\n const data = {\n ...VDataIterator.options.methods.createItemProps.call(this, item, index),\n headers: this.computedHeaders,\n }\n\n return {\n ...data,\n attrs: {\n class: {\n 'v-data-table__selected': data.isSelected,\n },\n },\n on: {\n ...this.getDefaultMouseEventHandlers(':row', () => data, true),\n // TODO: the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: (event: MouseEvent) => this.$emit('click:row', item, data, event),\n },\n }\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${this.groupByText}: ${group}`, remove])\n\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [column]))\n }\n\n if (this.$scopedSlots['group.summary']) {\n children.push(this.$createElement('template', { slot: 'column.summary' }, [\n this.$scopedSlots['group.summary']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item, i),\n isMobile: this.isMobile,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n index: i,\n item,\n }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map((item, index) => this.genDefaultExpandedRow(item, index))\n : items.map((item, index) => this.genDefaultSimpleRow(item, index))\n },\n genDefaultExpandedRow (item: any, index: number): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, index, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n item,\n })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, index: number, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item, index)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot({\n ...data,\n isMobile: this.isMobile,\n }) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n style: mergeStyles({}, getPropertyFromItem(item, this.itemStyle)),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: data.on,\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n 'v-data-table--selectable': this.showSelect,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","// Types\nimport { BreakpointName } from 'vuetify/types/services/breakpoint'\nimport { deprecate } from '../../util/console'\nimport Vue, { PropType } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'mobile',\n\n props: {\n mobileBreakpoint: {\n type: [Number, String] as PropType,\n default (): number | BreakpointName | undefined {\n // Avoid destroying unit\n // tests for users\n return this.$vuetify\n ? this.$vuetify.breakpoint.mobileBreakpoint\n : undefined\n },\n validator: v => (\n !isNaN(Number(v)) ||\n ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n ),\n },\n },\n\n computed: {\n isMobile (): boolean {\n const {\n mobile,\n width,\n name,\n mobileBreakpoint,\n } = this.$vuetify.breakpoint\n\n // Check if local mobileBreakpoint matches\n // the application's mobileBreakpoint\n if (mobileBreakpoint === this.mobileBreakpoint) return mobile\n\n const mobileWidth = parseInt(this.mobileBreakpoint, 10)\n const isNumber = !isNaN(mobileWidth)\n\n return isNumber\n ? width < mobileWidth\n : name === this.mobileBreakpoint\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n deprecate('mobile-break-point', 'mobile-breakpoint', this)\n }\n },\n})\n"],"sourceRoot":""}