{"version":3,"sources":["webpack:///../../../src/components/VData/VData.ts","webpack:///../../../src/components/VDataIterator/VDataIterator.ts","webpack:///../../../src/components/VDataIterator/VDataFooter.ts"],"names":["name","inheritAttrs","props","items","type","default","options","sortBy","String","sortDesc","Boolean","customSort","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","locale","disableSort","disablePagination","disableFiltering","search","customFilter","serverItemsLength","data","internalOptions","this","Object","sortDiff","groupDiff","computed","itemsLength","filteredItems","pageCount","Math","pageStart","pageStop","isGrouped","pagination","computedItems","sortItems","paginateItems","groupedItems","groupItems","scopedProps","sort","sortArray","group","updateOptions","originalItemsLength","length","computedOptions","watch","handler","deep","immediate","$emit","Array","methods","toggle","by","oldBy","desc","oldDesc","byIndex","k","s","i","render","$scopedSlots","itemKey","value","singleSelect","expanded","mobileBreakpoint","singleExpand","loading","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","selection","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","someItems","some","sanitizedFooterProps","filter","item","keys","created","breakingProps","original","replacement","removedProps","prop","mounted","window","beforeDestroy","onKeyDown","e","onKeyUp","toggleSelectAll","isSelectable","key","isSelected","select","emit","index","findIndex","x","lastEntryKey","lastEntryKeySelected","old","multipleSelect","start","end","currentItem","isExpanded","expand","createItemProps","v","isMobile","genEmptyWrapper","$createElement","genEmpty","$slots","$vuetify","lang","t","noData","filteredItemsLength","noResults","genItems","empty","genFooter","on","scopedSlots","genDefaultScopedSlot","outerProps","staticClass","required","itemsPerPageOptions","prevIcon","nextIcon","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","map","option","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","genDataItemsPerPageOption","text","genItemsPerPageSelect","computedIPPO","ippo","attrs","disabled","hideDetails","auto","minWidth","input","genPaginationInfo","children","class","genIcon","icon","click","label","genIcons","before","after","rtl"],"mappings":"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","file":"js/chunk-633dca72.2b0e5ff2.js","sourcesContent":["// 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 default: () => [],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n default: () => [],\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","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = true\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = false\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = this.$slots.loading || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = this.$slots['no-data'] || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = this.$slots['no-results'] || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import './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"],"sourceRoot":""}