{"version":3,"sources":["webpack:///../../../src/components/VDialog/VDialog.ts","webpack:///../../../src/components/VDatePicker/VDatePickerTitle.ts","webpack:///../../../../src/components/VDatePicker/util/pad.ts","webpack:///../../../../src/components/VDatePicker/util/createNativeLocaleFormatter.ts","webpack:///../../../../src/components/VDatePicker/util/monthChange.ts","webpack:///../../../src/components/VDatePicker/VDatePickerHeader.ts","webpack:///../../../../src/components/VDatePicker/util/isDateAllowed.ts","webpack:///../../../../src/components/VDatePicker/mixins/date-picker-table.ts","webpack:///../../../src/components/VDatePicker/VDatePickerDateTable.ts","webpack:///../../../src/components/VDatePicker/VDatePickerMonthTable.ts","webpack:///../../../src/components/VDatePicker/VDatePickerYears.ts","webpack:///../../../src/components/VDatePicker/VDatePicker.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/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/components/VDataTable/VDataTable.ts","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VDivider/VDivider.ts"],"names":["baseMixins","name","directives","ClickOutside","props","dark","disabled","fullscreen","light","maxWidth","type","String","default","noClickAnimation","origin","persistent","retainFocus","scrollable","transition","width","data","activatedBy","animate","animateTimeout","isActive","this","stackMinZIndex","computed","classes","contentClasses","hasActivator","Boolean","$slots","$scopedSlots","watch","created","$attrs","hasOwnProperty","beforeMount","beforeDestroy","window","unbind","methods","animateClick","closeConditional","target","e","_isDestroyed","$refs","content","contains","overlay","$el","activeZIndex","hideScroll","document","show","bind","onClickOutside","onKeydown","getOpenDependents","activator","onFocusin","getOpenDependentElements","some","el","focusable","querySelectorAll","focus","genContent","showLazyContent","root","class","attrs","role","tabindex","on","keydown","style","zIndex","ref","genTransition","$createElement","appear","genInnerContent","value","args","include","transformOrigin","undefined","render","h","staticClass","attach","mixins","date","readonly","selectingYear","year","Number","yearIcon","isReversing","computedTransition","val","genYearIcon","VIcon","getYearBtn","genPickerButton","genTitleText","domProps","innerHTML","key","genTitleDate","padStart","string","targetLength","padString","length","n","createNativeLocaleFormatter","substrOptions","start","makeIsoString","dateString","pad","month","intlFormatter","Intl","locale","Date","format","min","max","nextIcon","prevIcon","required","formatter","timeZone","newVal","genBtn","change","calculateChange","VBtn","icon","nativeOn","click","$vuetify","monthChange","genHeader","color","header","setTextColor","themeClasses","allowedFn","Touch","allowedDates","current","events","Array","Function","eventColor","Object","range","tableDate","displayedMonth","split","displayedYear","genButtonClasses","isAllowed","isSelected","isCurrent","genButtonEvents","dblclick","genButton","setColor","isFloating","mouseEventType","genEvents","getEventColors","arrayize","v","eventColors","eventData","includes","wheel","calculateTableDate","touch","genTable","touchDirective","left","right","from","indexOf","firstDayOfWeek","showWeek","weekdayFormat","day","weekdayFormatter","weekday","weekDays","first","parseInt","i","Math","delta","genTHead","days","map","genTR","weekDaysBeforeFirstDayOfTheMonth","firstDayOfTheMonth","weekDay","getWeekNumber","dayOfYear","offset","genWeekNumber","genTBody","children","daysInMonth","rows","weekNumber","cols","row","tds","defaultColor","mounted","setTimeout","activeItem","genYearItem","formatted","active","genYearItems","selectedYear","maxYear","minYear","sanitizeDateString","dayFormat","headerDateFormat","monthFormat","multiple","pickerDate","reactive","showCurrent","selectedItemsText","titleDateFormat","validator","yearFormat","now","activePicker","inputDay","inputMonth","inputYear","isMultiple","lastValue","selectedMonths","getFullYear","getMonth","inputDate","tableMonth","tableYear","minMonth","maxMonth","formatters","titleDate","defaultTitleMultipleDateFormatter","dates","t","defaultTitleDateFormatter","titleFormats","titleDateFormatter","landscapeFormatter","nonDigit","landscape","sanitizeType","prev","oldValue","output","emitInput","x","$emit","checkMultipleProp","valueType","constructor","expected","console","isDateAllowed","yearClick","monthClick","dateClick","genPickerTitle","slot","genTableHeader","toggle","input","genDateTable","VDatePickerDateTable","genMonthTable","VDatePickerMonthTable","genYears","genPickerBody","setInputDate","array","genPicker","inheritAttrs","items","options","sortBy","sortDesc","customSort","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","disableSort","disablePagination","disableFiltering","search","customFilter","serverItemsLength","internalOptions","itemsLength","filteredItems","pageCount","pageStart","pageStop","isGrouped","pagination","computedItems","sortItems","paginateItems","groupedItems","groupItems","scopedProps","sort","sortArray","group","updateOptions","originalItemsLength","computedOptions","handler","deep","immediate","by","oldBy","desc","oldDesc","byIndex","k","s","itemsPerPageOptions","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","genDataItemsPerPageOption","text","lang","genItemsPerPageSelect","computedIPPO","ippo","VSelect","hideDetails","auto","minWidth","genPaginationInfo","genIcon","label","genIcons","before","after","rtl","VData","itemKey","singleSelect","expanded","mobileBreakpoint","singleExpand","loading","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","selection","expansion","internalCurrentItems","everyItem","selectableItems","every","someItems","sanitizedFooterProps","filter","item","isMobile","breakpoint","keys","breakingProps","original","replacement","removedProps","prop","toggleSelectAll","isSelectable","select","emit","old","isExpanded","expand","createItemProps","genEmptyWrapper","genEmpty","noData","filteredItemsLength","noResults","genItems","empty","genFooter","scopedSlots","genDefaultScopedSlot","outerProps","ripple","headers","sortIcon","showGroupBy","genSelectAll","indeterminate","VSimpleCheckbox","genSortIcon","size","sortByText","genSortChip","sortIndex","findIndex","beingSorted","isDesc","sortable","asc","VChip","genSortSelect","find","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","scope","functional","mobile","slots","dedupeModelListeners","VDataTableHeaderMobile","VDataTableHeaderDesktop","computedSlots","columns","slotName","scopedSlot","regularSlot","textAlign","divider","headerClass","contentClass","summaryClass","dense","fixedHeader","height","genWrapper","wrapper","mobileRowChildren","filterFn","searchTableItems","filtered","headersWithoutCustomFilters","headersWithCustomFilters","VDataIterator","showSelect","showExpand","hideDefaultHeader","caption","headerProps","calculateWidths","headersLength","expandIcon","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","index","colspanAttrs","colspan","columnSorters","reduce","acc","sanitizedHeaderProps","computedItemsPerPage","firstOption","calcWidths","customFilterWithColumns","customSortWithHeaders","genCaption","genColgroup","genLoading","progress","VProgressLinear","genHeaders","genGroupedRows","genRows","genDefaultGroupedRow","isOpen","toggleFn","removeFn","remove","small","column","RowGroup","genScopedRows","genDefaultRows","genDefaultExpandedRow","headerRow","genDefaultSimpleRow","expandedRow","MobileRow","genBody","body","genFooters","simpleProps","proxySlot","inset","vertical","orientation","$listeners"],"mappings":"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","file":"js/chunk-vendors~b8448254.31fd4af1.js","sourcesContent":["// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\nimport Toggleable from '../../mixins/toggleable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Activatable,\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Toggleable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n directives: { ClickOutside },\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: {\n type: [String, Number],\n default: 'none',\n },\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: {\n type: [String, Number],\n default: 'auto',\n },\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n isActive: !!this.value,\n stackMinZIndex: 200,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$scopedSlots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeDestroy () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.options.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n this.$nextTick(() => {\n this.$refs.content.focus()\n this.bind()\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n // It isn't the document or the dialog body\n ![document, this.$refs.content].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.content.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.content.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n focusable.length && (focusable[0] as HTMLElement).focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [\n this.$createElement('div', {\n class: this.contentClasses,\n attrs: {\n role: 'document',\n tabindex: this.isActive ? 0 : undefined,\n ...this.getScopeIdAttrs(),\n },\n on: { keydown: this.onKeydown },\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n appear: true,\n },\n }, [content])\n },\n genInnerContent () {\n const data: VNodeData = {\n class: this.classes,\n ref: 'dialog',\n directives: [\n {\n name: 'click-outside',\n value: this.onClickOutside,\n args: {\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n } as any,\n { name: 'show', value: this.isActive },\n ],\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: this.maxWidth === 'none' ? undefined : convertToUnit(this.maxWidth),\n width: this.width === 'auto' ? undefined : convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n attrs: { role: 'dialog' },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","import './VDatePickerTitle.sass'\n\n// Components\nimport VIcon from '../VIcon'\n\n// Mixins\nimport PickerButton from '../../mixins/picker-button'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n PickerButton\n/* @vue/component */\n).extend({\n name: 'v-date-picker-title',\n\n props: {\n date: {\n type: String,\n default: '',\n },\n disabled: Boolean,\n readonly: Boolean,\n selectingYear: Boolean,\n value: {\n type: String,\n },\n year: {\n type: [Number, String],\n default: '',\n },\n yearIcon: {\n type: String,\n },\n },\n\n data: () => ({\n isReversing: false,\n }),\n\n computed: {\n computedTransition (): string {\n return this.isReversing ? 'picker-reverse-transition' : 'picker-transition'\n },\n },\n\n watch: {\n value (val: string, prev: string) {\n this.isReversing = val < prev\n },\n },\n\n methods: {\n genYearIcon (): VNode {\n return this.$createElement(VIcon, {\n props: {\n dark: true,\n },\n }, this.yearIcon)\n },\n getYearBtn (): VNode {\n return this.genPickerButton('selectingYear', true, [\n String(this.year),\n this.yearIcon ? this.genYearIcon() : null,\n ], false, 'v-date-picker-title__year')\n },\n genTitleText (): VNode {\n return this.$createElement('transition', {\n props: {\n name: this.computedTransition,\n },\n }, [\n this.$createElement('div', {\n domProps: { innerHTML: this.date || ' ' },\n key: this.value,\n }),\n ])\n },\n genTitleDate (): VNode {\n return this.genPickerButton('selectingYear', false, [this.genTitleText()], false, 'v-date-picker-title__date')\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-date-picker-title',\n class: {\n 'v-date-picker-title--disabled': this.disabled,\n },\n }, [\n this.getYearBtn(),\n this.genTitleDate(),\n ])\n },\n})\n","const padStart = (string: number | string, targetLength: number, padString: string) => {\n targetLength = targetLength >> 0\n string = String(string)\n padString = String(padString)\n if (string.length > targetLength) {\n return String(string)\n }\n\n targetLength = targetLength - string.length\n if (targetLength > padString.length) {\n padString += padString.repeat(targetLength / padString.length)\n }\n return padString.slice(0, targetLength) + String(string)\n}\n\nexport default (n: string | number, length = 2) => padStart(n, length, '0')\n","import pad from './pad'\nimport { DatePickerFormatter } from 'types'\n\ninterface SubstrOptions {\n start?: number\n length: number\n}\n\nfunction createNativeLocaleFormatter (\n local: string | undefined,\n options: Intl.DateTimeFormatOptions\n): DatePickerFormatter | undefined\n\nfunction createNativeLocaleFormatter (\n local: string | undefined,\n options: Intl.DateTimeFormatOptions,\n substrOptions: SubstrOptions\n): DatePickerFormatter\n\nfunction createNativeLocaleFormatter (\n locale: string | undefined,\n options: Intl.DateTimeFormatOptions,\n substrOptions: SubstrOptions = { start: 0, length: 0 }\n): DatePickerFormatter | undefined {\n const makeIsoString = (dateString: string) => {\n const [year, month, date] = dateString.trim().split(' ')[0].split('-')\n return [pad(year, 4), pad(month || 1), pad(date || 1)].join('-')\n }\n\n try {\n const intlFormatter = new Intl.DateTimeFormat(locale || undefined, options)\n return (dateString: string) => intlFormatter.format(new Date(`${makeIsoString(dateString)}T00:00:00+00:00`))\n } catch (e) {\n return (substrOptions.start || substrOptions.length)\n ? (dateString: string) => makeIsoString(dateString).substr(substrOptions.start || 0, substrOptions.length)\n : undefined\n }\n}\n\nexport default createNativeLocaleFormatter\n","import pad from './pad'\n\n/**\n * @param {String} value YYYY-MM format\n * @param {Number} sign -1 or +1\n */\nexport default (value: string, sign: number) => {\n const [year, month] = value.split('-').map(Number)\n\n if (month + sign === 0) {\n return `${year - 1}-12`\n } else if (month + sign === 13) {\n return `${year + 1}-01`\n } else {\n return `${year}-${pad(month + sign)}`\n }\n}\n","import './VDatePickerHeader.sass'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Localable from '../../mixins/localable'\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport { createNativeLocaleFormatter, monthChange } from './util'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, PropType } from 'vue'\nimport { DatePickerFormatter } from 'types'\n\nexport default mixins(\n Colorable,\n Localable,\n Themeable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-header',\n\n props: {\n disabled: Boolean,\n format: Function as PropType,\n min: String,\n max: String,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n readonly: Boolean,\n value: {\n type: [Number, String],\n required: true,\n },\n },\n\n data () {\n return {\n isReversing: false,\n }\n },\n\n computed: {\n formatter (): DatePickerFormatter {\n if (this.format) {\n return this.format\n } else if (String(this.value).split('-')[1]) {\n return createNativeLocaleFormatter(this.currentLocale, { month: 'long', year: 'numeric', timeZone: 'UTC' }, { length: 7 })\n } else {\n return createNativeLocaleFormatter(this.currentLocale, { year: 'numeric', timeZone: 'UTC' }, { length: 4 })\n }\n },\n },\n\n watch: {\n value (newVal, oldVal) {\n this.isReversing = newVal < oldVal\n },\n },\n\n methods: {\n genBtn (change: number) {\n const disabled = this.disabled ||\n (change < 0 && this.min && this.calculateChange(change) < this.min) ||\n (change > 0 && this.max && this.calculateChange(change) > this.max)\n\n return this.$createElement(VBtn, {\n props: {\n dark: this.dark,\n disabled,\n icon: true,\n light: this.light,\n },\n nativeOn: {\n click: (e: Event) => {\n e.stopPropagation()\n this.$emit('input', this.calculateChange(change))\n },\n },\n }, [\n this.$createElement(VIcon, ((change < 0) === !this.$vuetify.rtl) ? this.prevIcon : this.nextIcon),\n ])\n },\n calculateChange (sign: number) {\n const [year, month] = String(this.value).split('-').map(Number)\n\n if (month == null) {\n return `${year + sign}`\n } else {\n return monthChange(String(this.value), sign)\n }\n },\n genHeader () {\n const color = !this.disabled && (this.color || 'accent')\n const header = this.$createElement('div', this.setTextColor(color, {\n key: String(this.value),\n }), [this.$createElement('button', {\n attrs: {\n type: 'button',\n },\n on: {\n click: () => this.$emit('toggle'),\n },\n }, [this.$slots.default || this.formatter(String(this.value))])])\n\n const transition = this.$createElement('transition', {\n props: {\n name: (this.isReversing === !this.$vuetify.rtl) ? 'tab-reverse-transition' : 'tab-transition',\n },\n }, [header])\n\n return this.$createElement('div', {\n staticClass: 'v-date-picker-header__value',\n class: {\n 'v-date-picker-header__value--disabled': this.disabled,\n },\n }, [transition])\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-date-picker-header',\n class: {\n 'v-date-picker-header--disabled': this.disabled,\n ...this.themeClasses,\n },\n }, [\n this.genBtn(-1),\n this.genHeader(),\n this.genBtn(+1),\n ])\n },\n})\n","import { DatePickerAllowedDatesFunction } from 'types'\n\nexport default function isDateAllowed (date: string, min: string, max: string, allowedFn: DatePickerAllowedDatesFunction | undefined) {\n return (!allowedFn || allowedFn(date)) &&\n (!min || date >= min.substr(0, 10)) &&\n (!max || date <= max)\n}\n","import '../VDatePickerTable.sass'\n\n// Directives\nimport Touch from '../../../directives/touch'\n\n// Mixins\nimport Colorable from '../../../mixins/colorable'\nimport Localable from '../../../mixins/localable'\nimport Themeable from '../../../mixins/themeable'\n\n// Utils\nimport isDateAllowed from '../util/isDateAllowed'\nimport mixins from '../../../util/mixins'\n\n// Types\nimport { VNodeChildren, PropType } from 'vue'\nimport { DatePickerAllowedDatesFunction, DatePickerFormatter, DatePickerEvents, DatePickerEventColors, DatePickerEventColorValue, TouchWrapper } from 'types'\n\ntype CalculateTableDateFunction = (v: number) => string\n\nexport default mixins(\n Colorable,\n Localable,\n Themeable\n/* @vue/component */\n).extend({\n directives: { Touch },\n\n props: {\n allowedDates: Function as PropType,\n current: String,\n disabled: Boolean,\n format: Function as PropType,\n events: {\n type: [Array, Function, Object] as PropType,\n default: () => null,\n },\n eventColor: {\n type: [Array, Function, Object, String] as PropType,\n default: () => 'warning',\n },\n min: String,\n max: String,\n range: Boolean,\n readonly: Boolean,\n scrollable: Boolean,\n tableDate: {\n type: String,\n required: true,\n },\n value: [String, Array] as PropType,\n },\n\n data: () => ({\n isReversing: false,\n }),\n\n computed: {\n computedTransition (): string {\n return (this.isReversing === !this.$vuetify.rtl) ? 'tab-reverse-transition' : 'tab-transition'\n },\n displayedMonth (): number {\n return Number(this.tableDate.split('-')[1]) - 1\n },\n displayedYear (): number {\n return Number(this.tableDate.split('-')[0])\n },\n },\n\n watch: {\n tableDate (newVal: string, oldVal: string) {\n this.isReversing = newVal < oldVal\n },\n },\n\n methods: {\n genButtonClasses (isAllowed: boolean, isFloating: boolean, isSelected: boolean, isCurrent: boolean) {\n return {\n 'v-size--default': !isFloating,\n 'v-date-picker-table__current': isCurrent,\n 'v-btn--active': isSelected,\n 'v-btn--flat': !isAllowed || this.disabled,\n 'v-btn--text': isSelected === isCurrent,\n 'v-btn--rounded': isFloating,\n 'v-btn--disabled': !isAllowed || this.disabled,\n 'v-btn--outlined': isCurrent && !isSelected,\n ...this.themeClasses,\n }\n },\n genButtonEvents (value: string, isAllowed: boolean, mouseEventType: string) {\n if (this.disabled) return undefined\n\n return {\n click: () => {\n isAllowed && !this.readonly && this.$emit('input', value)\n this.$emit(`click:${mouseEventType}`, value)\n },\n dblclick: () => this.$emit(`dblclick:${mouseEventType}`, value),\n }\n },\n genButton (value: string, isFloating: boolean, mouseEventType: string, formatter: DatePickerFormatter) {\n const isAllowed = isDateAllowed(value, this.min, this.max, this.allowedDates)\n const isSelected = this.isSelected(value)\n const isCurrent = value === this.current\n const setColor = isSelected ? this.setBackgroundColor : this.setTextColor\n const color = (isSelected || isCurrent) && (this.color || 'accent')\n\n return this.$createElement('button', setColor(color, {\n staticClass: 'v-btn',\n class: this.genButtonClasses(isAllowed, isFloating, isSelected, isCurrent),\n attrs: {\n type: 'button',\n },\n domProps: {\n disabled: this.disabled || !isAllowed,\n },\n on: this.genButtonEvents(value, isAllowed, mouseEventType),\n }), [\n this.$createElement('div', {\n staticClass: 'v-btn__content',\n }, [formatter(value)]),\n this.genEvents(value),\n ])\n },\n getEventColors (date: string) {\n const arrayize = (v: string | string[]) => Array.isArray(v) ? v : [v]\n let eventData: boolean | DatePickerEventColorValue\n let eventColors: string[] = []\n\n if (Array.isArray(this.events)) {\n eventData = this.events.includes(date)\n } else if (this.events instanceof Function) {\n eventData = this.events(date) || false\n } else if (this.events) {\n eventData = this.events[date] || false\n } else {\n eventData = false\n }\n\n if (!eventData) {\n return []\n } else if (eventData !== true) {\n eventColors = arrayize(eventData)\n } else if (typeof this.eventColor === 'string') {\n eventColors = [this.eventColor]\n } else if (typeof this.eventColor === 'function') {\n eventColors = arrayize(this.eventColor(date))\n } else if (Array.isArray(this.eventColor)) {\n eventColors = this.eventColor\n } else {\n eventColors = arrayize(this.eventColor[date])\n }\n\n return eventColors.filter(v => v)\n },\n genEvents (date: string) {\n const eventColors = this.getEventColors(date)\n\n return eventColors.length ? this.$createElement('div', {\n staticClass: 'v-date-picker-table__events',\n }, eventColors.map(color => this.$createElement('div', this.setBackgroundColor(color)))) : null\n },\n wheel (e: WheelEvent, calculateTableDate: CalculateTableDateFunction) {\n e.preventDefault()\n this.$emit('update:table-date', calculateTableDate(e.deltaY))\n },\n touch (value: number, calculateTableDate: CalculateTableDateFunction) {\n this.$emit('update:table-date', calculateTableDate(value))\n },\n genTable (staticClass: string, children: VNodeChildren, calculateTableDate: CalculateTableDateFunction) {\n const transition = this.$createElement('transition', {\n props: { name: this.computedTransition },\n }, [this.$createElement('table', { key: this.tableDate }, children)])\n\n const touchDirective = {\n name: 'touch',\n value: {\n left: (e: TouchWrapper) => (e.offsetX < -15) && this.touch(1, calculateTableDate),\n right: (e: TouchWrapper) => (e.offsetX > 15) && this.touch(-1, calculateTableDate),\n },\n }\n\n return this.$createElement('div', {\n staticClass,\n class: {\n 'v-date-picker-table--disabled': this.disabled,\n ...this.themeClasses,\n },\n on: (!this.disabled && this.scrollable) ? {\n wheel: (e: WheelEvent) => this.wheel(e, calculateTableDate),\n } : undefined,\n directives: [touchDirective],\n }, [transition])\n },\n isSelected (value: string): boolean {\n if (Array.isArray(this.value)) {\n if (this.range && this.value.length === 2) {\n const [from, to] = [...this.value].sort()\n return from <= value && value <= to\n } else {\n return this.value.indexOf(value) !== -1\n }\n }\n\n return value === this.value\n },\n },\n})\n","// Mixins\nimport DatePickerTable from './mixins/date-picker-table'\n\n// Utils\nimport { pad, createNativeLocaleFormatter, monthChange } from './util'\nimport { createRange } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, VNodeChildren, PropType } from 'vue'\nimport { DatePickerFormatter } from 'types'\n\nexport default mixins(\n DatePickerTable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-date-table',\n\n props: {\n firstDayOfWeek: {\n type: [String, Number],\n default: 0,\n },\n showWeek: Boolean,\n weekdayFormat: Function as PropType,\n },\n\n computed: {\n formatter (): DatePickerFormatter {\n return this.format || createNativeLocaleFormatter(this.currentLocale, { day: 'numeric', timeZone: 'UTC' }, { start: 8, length: 2 })\n },\n weekdayFormatter (): DatePickerFormatter | undefined {\n return this.weekdayFormat || createNativeLocaleFormatter(this.currentLocale, { weekday: 'narrow', timeZone: 'UTC' })\n },\n weekDays (): string[] {\n const first = parseInt(this.firstDayOfWeek, 10)\n\n return this.weekdayFormatter\n ? createRange(7).map(i => this.weekdayFormatter!(`2017-01-${first + i + 15}`)) // 2017-01-15 is Sunday\n : createRange(7).map(i => ['S', 'M', 'T', 'W', 'T', 'F', 'S'][(i + first) % 7])\n },\n },\n\n methods: {\n calculateTableDate (delta: number) {\n return monthChange(this.tableDate, Math.sign(delta || 1))\n },\n genTHead () {\n const days = this.weekDays.map(day => this.$createElement('th', day))\n this.showWeek && days.unshift(this.$createElement('th'))\n return this.$createElement('thead', this.genTR(days))\n },\n // Returns number of the days from the firstDayOfWeek to the first day of the current month\n weekDaysBeforeFirstDayOfTheMonth () {\n const firstDayOfTheMonth = new Date(`${this.displayedYear}-${pad(this.displayedMonth + 1)}-01T00:00:00+00:00`)\n const weekDay = firstDayOfTheMonth.getUTCDay()\n return (weekDay - parseInt(this.firstDayOfWeek) + 7) % 7\n },\n getWeekNumber () {\n let dayOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334][this.displayedMonth]\n if (this.displayedMonth > 1 &&\n (((this.displayedYear % 4 === 0) && (this.displayedYear % 100 !== 0)) || (this.displayedYear % 400 === 0))\n ) {\n dayOfYear++\n }\n const offset = (\n this.displayedYear +\n ((this.displayedYear - 1) >> 2) -\n Math.floor((this.displayedYear - 1) / 100) +\n Math.floor((this.displayedYear - 1) / 400) -\n Number(this.firstDayOfWeek)\n ) % 7 // https://en.wikipedia.org/wiki/Zeller%27s_congruence\n return Math.floor((dayOfYear + offset) / 7) + 1\n },\n genWeekNumber (weekNumber: number) {\n return this.$createElement('td', [\n this.$createElement('small', {\n staticClass: 'v-date-picker-table--date__week',\n }, String(weekNumber).padStart(2, '0')),\n ])\n },\n genTBody () {\n const children = []\n const daysInMonth = new Date(this.displayedYear, this.displayedMonth + 1, 0).getDate()\n let rows = []\n let day = this.weekDaysBeforeFirstDayOfTheMonth()\n let weekNumber = this.getWeekNumber()\n\n this.showWeek && rows.push(this.genWeekNumber(weekNumber++))\n\n while (day--) rows.push(this.$createElement('td'))\n for (day = 1; day <= daysInMonth; day++) {\n const date = `${this.displayedYear}-${pad(this.displayedMonth + 1)}-${pad(day)}`\n\n rows.push(this.$createElement('td', [\n this.genButton(date, true, 'date', this.formatter),\n ]))\n\n if (rows.length % (this.showWeek ? 8 : 7) === 0) {\n children.push(this.genTR(rows))\n rows = []\n day < daysInMonth && this.showWeek && rows.push(this.genWeekNumber(weekNumber++))\n }\n }\n\n if (rows.length) {\n children.push(this.genTR(rows))\n }\n\n return this.$createElement('tbody', children)\n },\n genTR (children: VNodeChildren) {\n return [this.$createElement('tr', children)]\n },\n },\n\n render (): VNode {\n return this.genTable('v-date-picker-table v-date-picker-table--date', [\n this.genTHead(),\n this.genTBody(),\n ], this.calculateTableDate)\n },\n})\n","// Mixins\nimport DatePickerTable from './mixins/date-picker-table'\n\n// Utils\nimport { pad, createNativeLocaleFormatter } from './util'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\nimport { DatePickerFormatter } from 'types'\n\nexport default mixins(\n DatePickerTable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-month-table',\n\n computed: {\n formatter (): DatePickerFormatter {\n return this.format || createNativeLocaleFormatter(this.currentLocale, { month: 'short', timeZone: 'UTC' }, { start: 5, length: 2 })\n },\n },\n\n methods: {\n calculateTableDate (delta: number) {\n return `${parseInt(this.tableDate, 10) + Math.sign(delta || 1)}`\n },\n genTBody () {\n const children = []\n const cols = Array(3).fill(null)\n const rows = 12 / cols.length\n\n for (let row = 0; row < rows; row++) {\n const tds = cols.map((_, col) => {\n const month = row * cols.length + col\n const date = `${this.displayedYear}-${pad(month + 1)}`\n return this.$createElement('td', {\n key: month,\n }, [\n this.genButton(date, false, 'month', this.formatter),\n ])\n })\n\n children.push(this.$createElement('tr', {\n key: row,\n }, tds))\n }\n\n return this.$createElement('tbody', children)\n },\n },\n\n render (): VNode {\n return this.genTable('v-date-picker-table v-date-picker-table--month', [\n this.genTBody(),\n ], this.calculateTableDate)\n },\n})\n","import './VDatePickerYears.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Localable from '../../mixins/localable'\n\n// Utils\nimport { createNativeLocaleFormatter } from './util'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DatePickerFormatter } from 'types'\n\ninterface options extends Vue {\n $el: HTMLElement\n}\n\nexport default mixins\n/* eslint-enable indent */\n>(\n Colorable,\n Localable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-years',\n\n props: {\n format: Function as PropType,\n min: [Number, String],\n max: [Number, String],\n readonly: Boolean,\n value: [Number, String],\n },\n\n data () {\n return {\n defaultColor: 'primary',\n }\n },\n\n computed: {\n formatter (): DatePickerFormatter {\n return this.format || createNativeLocaleFormatter(this.currentLocale, { year: 'numeric', timeZone: 'UTC' }, { length: 4 })\n },\n },\n\n mounted () {\n setTimeout(() => {\n const activeItem = this.$el.getElementsByClassName('active')[0]\n if (activeItem) {\n this.$el.scrollTop = activeItem.offsetTop - this.$el.offsetHeight / 2 + activeItem.offsetHeight / 2\n } else if (this.min && !this.max) {\n this.$el.scrollTop = this.$el.scrollHeight\n } else if (!this.min && this.max) {\n this.$el.scrollTop = 0\n } else {\n this.$el.scrollTop = this.$el.scrollHeight / 2 - this.$el.offsetHeight / 2\n }\n })\n },\n\n methods: {\n genYearItem (year: number): VNode {\n const formatted = this.formatter(`${year}`)\n const active = parseInt(this.value, 10) === year\n const color = active && (this.color || 'primary')\n\n return this.$createElement('li', this.setTextColor(color, {\n key: year,\n class: { active },\n on: {\n click: () => this.$emit('input', year),\n },\n }), formatted)\n },\n\n genYearItems (): VNode[] {\n const children = []\n const selectedYear = this.value ? parseInt(this.value, 10) : new Date().getFullYear()\n const maxYear = this.max ? parseInt(this.max, 10) : (selectedYear + 100)\n const minYear = Math.min(maxYear, this.min ? parseInt(this.min, 10) : (selectedYear - 100))\n\n for (let year = maxYear; year >= minYear; year--) {\n children.push(this.genYearItem(year))\n }\n\n return children\n },\n },\n\n render (): VNode {\n return this.$createElement('ul', {\n staticClass: 'v-date-picker-years',\n ref: 'years',\n }, this.genYearItems())\n },\n})\n","// Components\nimport VDatePickerTitle from './VDatePickerTitle'\nimport VDatePickerHeader from './VDatePickerHeader'\nimport VDatePickerDateTable from './VDatePickerDateTable'\nimport VDatePickerMonthTable from './VDatePickerMonthTable'\nimport VDatePickerYears from './VDatePickerYears'\n\n// Mixins\nimport Localable from '../../mixins/localable'\nimport Picker from '../../mixins/picker'\n\n// Utils\nimport { pad, createNativeLocaleFormatter } from './util'\nimport isDateAllowed from './util/isDateAllowed'\nimport { consoleWarn } from '../../util/console'\nimport { daysInMonth } from '../VCalendar/util/timestamp'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { PropType, PropValidator } from 'vue/types/options'\nimport { VNode } from 'vue'\nimport {\n DatePickerFormatter,\n DatePickerMultipleFormatter,\n DatePickerAllowedDatesFunction,\n DatePickerEventColors,\n DatePickerEvents,\n DatePickerType,\n} from 'types'\n\ntype DatePickerValue = string | string[] | undefined\ninterface Formatters {\n year: DatePickerFormatter\n titleDate: DatePickerFormatter | DatePickerMultipleFormatter\n}\n\n// Adds leading zero to month/day if necessary, returns 'YYYY' if type = 'year',\n// 'YYYY-MM' if 'month' and 'YYYY-MM-DD' if 'date'\nfunction sanitizeDateString (dateString: string, type: 'date' | 'month' | 'year'): string {\n const [year, month = 1, date = 1] = dateString.split('-')\n return `${year}-${pad(month)}-${pad(date)}`.substr(0, { date: 10, month: 7, year: 4 }[type])\n}\n\nexport default mixins(\n Localable,\n Picker\n/* @vue/component */\n).extend({\n name: 'v-date-picker',\n\n props: {\n allowedDates: Function as PropType,\n // Function formatting the day in date picker table\n dayFormat: Function as PropType,\n disabled: Boolean,\n events: {\n type: [Array, Function, Object] as PropType,\n default: () => null,\n },\n eventColor: {\n type: [Array, Function, Object, String] as PropType,\n default: () => 'warning',\n },\n firstDayOfWeek: {\n type: [String, Number],\n default: 0,\n },\n // Function formatting the tableDate in the day/month table header\n headerDateFormat: Function as PropType,\n max: String,\n min: String,\n // Function formatting month in the months table\n monthFormat: Function as PropType,\n multiple: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n pickerDate: String,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n range: Boolean,\n reactive: Boolean,\n readonly: Boolean,\n scrollable: Boolean,\n showCurrent: {\n type: [Boolean, String],\n default: true,\n },\n selectedItemsText: {\n type: String,\n default: '$vuetify.datePicker.itemsSelected',\n },\n showWeek: Boolean,\n // Function formatting currently selected date in the picker title\n titleDateFormat: Function as PropType,\n type: {\n type: String,\n default: 'date',\n validator: (type: any) => ['date', 'month'].includes(type), // TODO: year\n } as PropValidator,\n value: [Array, String] as PropType,\n weekdayFormat: Function as PropType,\n // Function formatting the year in table header and pickup title\n yearFormat: Function as PropType,\n yearIcon: String,\n },\n\n data () {\n const now = new Date()\n return {\n activePicker: this.type.toUpperCase(),\n inputDay: null as number | null,\n inputMonth: null as number | null,\n inputYear: null as number | null,\n isReversing: false,\n now,\n // tableDate is a string in 'YYYY' / 'YYYY-M' format (leading zero for month is not required)\n tableDate: (() => {\n if (this.pickerDate) {\n return this.pickerDate\n }\n\n const date = (this.multiple || this.range ? (this.value as string[])[(this.value as string[]).length - 1] : this.value) ||\n `${now.getFullYear()}-${now.getMonth() + 1}`\n return sanitizeDateString(date as string, this.type === 'date' ? 'month' : 'year')\n })(),\n }\n },\n\n computed: {\n isMultiple (): boolean {\n return this.multiple || this.range\n },\n lastValue (): string | null {\n return this.isMultiple ? (this.value as string[])[(this.value as string[]).length - 1] : (this.value as string | null)\n },\n selectedMonths (): string | string[] | undefined {\n if (!this.value || !this.value.length || this.type === 'month') {\n return this.value\n } else if (this.isMultiple) {\n return (this.value as string[]).map(val => val.substr(0, 7))\n } else {\n return (this.value as string).substr(0, 7)\n }\n },\n current (): string | null {\n if (this.showCurrent === true) {\n return sanitizeDateString(`${this.now.getFullYear()}-${this.now.getMonth() + 1}-${this.now.getDate()}`, this.type)\n }\n\n return this.showCurrent || null\n },\n inputDate (): string {\n return this.type === 'date'\n ? `${this.inputYear}-${pad(this.inputMonth! + 1)}-${pad(this.inputDay!)}`\n : `${this.inputYear}-${pad(this.inputMonth! + 1)}`\n },\n tableMonth (): number {\n return Number((this.pickerDate || this.tableDate).split('-')[1]) - 1\n },\n tableYear (): number {\n return Number((this.pickerDate || this.tableDate).split('-')[0])\n },\n minMonth (): string | null {\n return this.min ? sanitizeDateString(this.min, 'month') : null\n },\n maxMonth (): string | null {\n return this.max ? sanitizeDateString(this.max, 'month') : null\n },\n minYear (): string | null {\n return this.min ? sanitizeDateString(this.min, 'year') : null\n },\n maxYear (): string | null {\n return this.max ? sanitizeDateString(this.max, 'year') : null\n },\n formatters (): Formatters {\n return {\n year: this.yearFormat || createNativeLocaleFormatter(this.currentLocale, { year: 'numeric', timeZone: 'UTC' }, { length: 4 }),\n titleDate: this.titleDateFormat ||\n (this.isMultiple ? this.defaultTitleMultipleDateFormatter : this.defaultTitleDateFormatter),\n }\n },\n defaultTitleMultipleDateFormatter (): DatePickerMultipleFormatter {\n return dates => {\n if (!dates.length) {\n return '-'\n }\n\n if (dates.length === 1) {\n return this.defaultTitleDateFormatter(dates[0])\n }\n\n return this.$vuetify.lang.t(this.selectedItemsText, dates.length)\n }\n },\n defaultTitleDateFormatter (): DatePickerFormatter {\n const titleFormats = {\n year: { year: 'numeric', timeZone: 'UTC' },\n month: { month: 'long', timeZone: 'UTC' },\n date: { weekday: 'short', month: 'short', day: 'numeric', timeZone: 'UTC' },\n }\n\n const titleDateFormatter = createNativeLocaleFormatter(this.currentLocale, titleFormats[this.type], {\n start: 0,\n length: { date: 10, month: 7, year: 4 }[this.type],\n })\n\n const landscapeFormatter = (date: string) => titleDateFormatter(date)\n .replace(/([^\\d\\s])([\\d])/g, (match, nonDigit, digit) => `${nonDigit} ${digit}`)\n .replace(', ', ',
')\n\n return this.landscape ? landscapeFormatter : titleDateFormatter\n },\n },\n\n watch: {\n tableDate (val: string, prev: string) {\n // Make a ISO 8601 strings from val and prev for comparision, otherwise it will incorrectly\n // compare for example '2000-9' and '2000-10'\n const sanitizeType = this.type === 'month' ? 'year' : 'month'\n this.isReversing = sanitizeDateString(val, sanitizeType) < sanitizeDateString(prev, sanitizeType)\n this.$emit('update:picker-date', val)\n },\n pickerDate (val: string | null) {\n if (val) {\n this.tableDate = val\n } else if (this.lastValue && this.type === 'date') {\n this.tableDate = sanitizeDateString(this.lastValue, 'month')\n } else if (this.lastValue && this.type === 'month') {\n this.tableDate = sanitizeDateString(this.lastValue, 'year')\n }\n },\n value (newValue: DatePickerValue, oldValue: DatePickerValue) {\n this.checkMultipleProp()\n this.setInputDate()\n\n if (!this.isMultiple && this.value && !this.pickerDate) {\n this.tableDate = sanitizeDateString(this.inputDate, this.type === 'month' ? 'year' : 'month')\n } else if (this.isMultiple && (this.value as string[]).length && !(oldValue as string[]).length && !this.pickerDate) {\n this.tableDate = sanitizeDateString(this.inputDate, this.type === 'month' ? 'year' : 'month')\n }\n },\n type (type: DatePickerType) {\n this.activePicker = type.toUpperCase()\n\n if (this.value && this.value.length) {\n const output = (this.isMultiple ? (this.value as string[]) : [this.value as string])\n .map((val: string) => sanitizeDateString(val, type))\n .filter(this.isDateAllowed)\n this.$emit('input', this.isMultiple ? output : output[0])\n }\n },\n },\n\n created () {\n this.checkMultipleProp()\n\n if (this.pickerDate !== this.tableDate) {\n this.$emit('update:picker-date', this.tableDate)\n }\n this.setInputDate()\n },\n\n methods: {\n emitInput (newInput: string) {\n if (this.range && this.value) {\n if (this.value.length === 2) {\n this.$emit('input', [newInput])\n } else {\n const output = [...this.value, newInput]\n this.$emit('input', output)\n this.$emit('change', output)\n }\n return\n }\n\n const output = this.multiple\n ? (\n (this.value as string[]).indexOf(newInput) === -1\n ? (this.value as string[]).concat([newInput])\n : (this.value as string[]).filter(x => x !== newInput)\n )\n : newInput\n\n this.$emit('input', output)\n this.multiple || this.$emit('change', newInput)\n },\n checkMultipleProp () {\n if (this.value == null) return\n const valueType = this.value.constructor.name\n const expected = this.isMultiple ? 'Array' : 'String'\n if (valueType !== expected) {\n consoleWarn(`Value must be ${this.isMultiple ? 'an' : 'a'} ${expected}, got ${valueType}`, this)\n }\n },\n isDateAllowed (value: string) {\n return isDateAllowed(value, this.min, this.max, this.allowedDates)\n },\n yearClick (value: number) {\n this.inputYear = value\n if (this.type === 'month') {\n this.tableDate = `${value}`\n } else {\n this.tableDate = `${value}-${pad((this.tableMonth || 0) + 1)}`\n }\n this.activePicker = 'MONTH'\n if (this.reactive && !this.readonly && !this.isMultiple && this.isDateAllowed(this.inputDate)) {\n this.$emit('input', this.inputDate)\n }\n },\n monthClick (value: string) {\n this.inputYear = parseInt(value.split('-')[0], 10)\n this.inputMonth = parseInt(value.split('-')[1], 10) - 1\n if (this.type === 'date') {\n if (this.inputDay) {\n this.inputDay = Math.min(this.inputDay, daysInMonth(this.inputYear, this.inputMonth + 1))\n }\n\n this.tableDate = value\n this.activePicker = 'DATE'\n if (this.reactive && !this.readonly && !this.isMultiple && this.isDateAllowed(this.inputDate)) {\n this.$emit('input', this.inputDate)\n }\n } else {\n this.emitInput(this.inputDate)\n }\n },\n dateClick (value: string) {\n this.inputYear = parseInt(value.split('-')[0], 10)\n this.inputMonth = parseInt(value.split('-')[1], 10) - 1\n this.inputDay = parseInt(value.split('-')[2], 10)\n this.emitInput(this.inputDate)\n },\n genPickerTitle () {\n return this.$createElement(VDatePickerTitle, {\n props: {\n date: this.value ? (this.formatters.titleDate as (value: any) => string)(this.value) : '',\n disabled: this.disabled,\n readonly: this.readonly,\n selectingYear: this.activePicker === 'YEAR',\n year: this.formatters.year(this.value ? `${this.inputYear}` : this.tableDate),\n yearIcon: this.yearIcon,\n value: this.isMultiple ? (this.value as string[])[0] : this.value,\n },\n slot: 'title',\n on: {\n 'update:selecting-year': (value: boolean) => this.activePicker = value ? 'YEAR' : this.type.toUpperCase(),\n },\n })\n },\n genTableHeader () {\n return this.$createElement(VDatePickerHeader, {\n props: {\n nextIcon: this.nextIcon,\n color: this.color,\n dark: this.dark,\n disabled: this.disabled,\n format: this.headerDateFormat,\n light: this.light,\n locale: this.locale,\n min: this.activePicker === 'DATE' ? this.minMonth : this.minYear,\n max: this.activePicker === 'DATE' ? this.maxMonth : this.maxYear,\n prevIcon: this.prevIcon,\n readonly: this.readonly,\n value: this.activePicker === 'DATE' ? `${pad(this.tableYear, 4)}-${pad(this.tableMonth + 1)}` : `${pad(this.tableYear, 4)}`,\n },\n on: {\n toggle: () => this.activePicker = (this.activePicker === 'DATE' ? 'MONTH' : 'YEAR'),\n input: (value: string) => this.tableDate = value,\n },\n })\n },\n genDateTable () {\n return this.$createElement(VDatePickerDateTable, {\n props: {\n allowedDates: this.allowedDates,\n color: this.color,\n current: this.current,\n dark: this.dark,\n disabled: this.disabled,\n events: this.events,\n eventColor: this.eventColor,\n firstDayOfWeek: this.firstDayOfWeek,\n format: this.dayFormat,\n light: this.light,\n locale: this.locale,\n min: this.min,\n max: this.max,\n range: this.range,\n readonly: this.readonly,\n scrollable: this.scrollable,\n showWeek: this.showWeek,\n tableDate: `${pad(this.tableYear, 4)}-${pad(this.tableMonth + 1)}`,\n value: this.value,\n weekdayFormat: this.weekdayFormat,\n },\n ref: 'table',\n on: {\n input: this.dateClick,\n 'update:table-date': (value: string) => this.tableDate = value,\n 'click:date': (value: string) => this.$emit('click:date', value),\n 'dblclick:date': (value: string) => this.$emit('dblclick:date', value),\n },\n })\n },\n genMonthTable () {\n return this.$createElement(VDatePickerMonthTable, {\n props: {\n allowedDates: this.type === 'month' ? this.allowedDates : null,\n color: this.color,\n current: this.current ? sanitizeDateString(this.current, 'month') : null,\n dark: this.dark,\n disabled: this.disabled,\n events: this.type === 'month' ? this.events : null,\n eventColor: this.type === 'month' ? this.eventColor : null,\n format: this.monthFormat,\n light: this.light,\n locale: this.locale,\n min: this.minMonth,\n max: this.maxMonth,\n range: this.range,\n readonly: this.readonly && this.type === 'month',\n scrollable: this.scrollable,\n value: this.selectedMonths,\n tableDate: `${pad(this.tableYear, 4)}`,\n },\n ref: 'table',\n on: {\n input: this.monthClick,\n 'update:table-date': (value: string) => this.tableDate = value,\n 'click:month': (value: string) => this.$emit('click:month', value),\n 'dblclick:month': (value: string) => this.$emit('dblclick:month', value),\n },\n })\n },\n genYears () {\n return this.$createElement(VDatePickerYears, {\n props: {\n color: this.color,\n format: this.yearFormat,\n locale: this.locale,\n min: this.minYear,\n max: this.maxYear,\n value: this.tableYear,\n },\n on: {\n input: this.yearClick,\n },\n })\n },\n genPickerBody () {\n const children = this.activePicker === 'YEAR' ? [\n this.genYears(),\n ] : [\n this.genTableHeader(),\n this.activePicker === 'DATE' ? this.genDateTable() : this.genMonthTable(),\n ]\n\n return this.$createElement('div', {\n key: this.activePicker,\n }, children)\n },\n setInputDate () {\n if (this.lastValue) {\n const array = this.lastValue.split('-')\n this.inputYear = parseInt(array[0], 10)\n this.inputMonth = parseInt(array[1], 10) - 1\n if (this.type === 'date') {\n this.inputDay = parseInt(array[2], 10)\n }\n } else {\n this.inputYear = this.inputYear || this.now.getFullYear()\n this.inputMonth = this.inputMonth == null ? this.inputMonth : this.now.getMonth()\n this.inputDay = this.inputDay || this.now.getDate()\n }\n },\n },\n\n render (): VNode {\n return this.genPicker('v-picker--date')\n },\n})\n","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems } 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 'types'\nimport { PropValidator, PropType } 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 as PropType,\n default: () => [],\n },\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array] as PropType,\n default: () => [],\n },\n sortDesc: {\n type: [Boolean, Array] as PropType,\n default: () => [],\n },\n customSort: {\n type: Function as PropType,\n default: sortItems,\n },\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] as PropType,\n default: () => [],\n },\n groupDesc: {\n type: [Boolean, Array] as PropType,\n default: () => [],\n },\n customGroup: {\n type: Function as PropType,\n default: groupItems,\n },\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 as PropType,\n default: searchItems,\n },\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 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.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 const props = {\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 return props\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.mustSort,\n this.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[]) {\n let sortBy = this.internalOptions.sortBy\n let sortDesc = this.internalOptions.sortDesc\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[]) {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: 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, this.internalOptions.page - 1)\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 'types'\nimport { PropValidator } from 'vue/types/options'\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.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\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n const itemsLength = this.pagination.itemsLength\n const pageStart = this.pagination.pageStart + 1\n const 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 }\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 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 Themeable from '../../mixins/themeable'\n\n// Helpers\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren, PropType } from 'vue'\nimport { DataScopeProps } from 'types'\n\n/* @vue/component */\nexport default Themeable.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 as PropType,\n default: () => [],\n },\n singleSelect: Boolean,\n expanded: {\n type: Array as PropType,\n default: () => [],\n },\n mobileBreakpoint: {\n type: [Number, String],\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 }),\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 isMobile (): boolean {\n // Guard against SSR render\n // https://github.com/vuetifyjs/vuetify/issues/7410\n if (this.$vuetify.breakpoint.width === 0) return false\n\n return this.$vuetify.breakpoint.width < parseInt(this.mobileBreakpoint, 10)\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 methods: {\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 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 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) {\n return {\n item,\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 expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any) => this.$scopedSlots.item!(this.createItemProps(item)))\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, { PropType } from 'vue'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from '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 as PropType,\n required: true,\n },\n options: {\n type: Object as PropType,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n },\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 },\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'\nimport { DataTableHeader } from 'types'\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 nativeOn: {\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 },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props) as any, // TODO: whyyy?\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: DataTableHeader[] = this.headers.filter(h => h.sortable !== false && h.value !== 'data-table-select')\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\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 '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[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) 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 './VDataTableHeader.sass'\n\nimport Vue from 'vue'\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\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 'types'\n\n// Utils\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\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 children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots[slotName]\n const regularSlot = computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({ item: props.item, header, value }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const textAlign = `text-${header.align || 'start'}`\n\n return h('td', {\n class: {\n [textAlign]: true,\n 'v-data-table__divider': header.divider,\n },\n }, children)\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', this.$slots.default),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\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[slotName]\n const regularSlot = computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({ item: props.item, header, value }))\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') {\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 './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren, PropType } from 'vue'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n} from 'types'\nimport { PropValidator } from 'vue/types/options'\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 VProgressLinear from '../VProgressLinear'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys } from '../../util/helpers'\nimport { breaking } from '../../util/console'\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) {\n let filtered = items\n search = typeof search === 'string' ? search.trim() : null\n if (search && headersWithoutCustomFilters.length) {\n filtered = items.filter(item => headersWithoutCustomFilters.some(filterFn(item, search, customFilter)))\n }\n\n if (headersWithCustomFilters.length) {\n filtered = filtered.filter(item => headersWithCustomFilters.every(filterFn(item, search, defaultFilter)))\n }\n\n return filtered\n}\n\n/* @vue/component */\nexport default VDataIterator.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 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 as PropType,\n default: defaultFilter,\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 },\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(items, search, this.headersWithCustomFilters, this.headersWithoutCustomFilters, this.customFilter)\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) {\n const props = VDataIterator.options.methods.createItemProps.call(this, item)\n\n return Object.assign(props, { headers: this.computedHeaders })\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 progress = this.$slots['progress'] ? this.$slots.progress : this.$createElement(VProgressLinear, {\n props: {\n color: this.loading === true ? 'primary' : this.loading,\n height: 2,\n indeterminate: true,\n },\n })\n\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [progress])\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 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 const children: VNodeChildrenArrayContents = [getSlot(this, 'header', data)]\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 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']!({ group, groupBy: props.options.groupBy, items, headers: this.computedHeaders, isOpen, toggle: toggleFn, remove: removeFn }),\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, `${props.options.groupBy[0]}: ${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']!({ group, groupBy: props.options.groupBy, items, headers: this.computedHeaders }),\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),\n index: i,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({ item, headers: this.computedHeaders }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map(item => this.genDefaultExpandedRow(item))\n : items.map(item => this.genDefaultSimpleRow(item))\n },\n genDefaultExpandedRow (item: any): 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, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({ item, headers: this.computedHeaders })])\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, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot(data) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\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: {\n ...classes,\n 'v-data-table__selected': data.isSelected,\n },\n props: {\n headers: this.computedHeaders,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: {\n // TODO: first argument should be the data object\n // but this is a breaking change so it's for v3\n click: () => this.$emit('click:row', item, data),\n },\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 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 }, [\n this.proxySlot('top', getSlot(this, 'top', props, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(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 as any,\n },\n })\n },\n})\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\n","// Styles\nimport './VDivider.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\nexport default Themeable.extend({\n name: 'v-divider',\n\n props: {\n inset: Boolean,\n vertical: Boolean,\n },\n\n render (h): VNode {\n // WAI-ARIA attributes\n let orientation\n if (!this.$attrs.role || this.$attrs.role === 'separator') {\n orientation = this.vertical ? 'vertical' : 'horizontal'\n }\n return h('hr', {\n class: {\n 'v-divider': true,\n 'v-divider--inset': this.inset,\n 'v-divider--vertical': this.vertical,\n ...this.themeClasses,\n },\n attrs: {\n role: 'separator',\n 'aria-orientation': orientation,\n ...this.$attrs,\n },\n on: this.$listeners,\n })\n },\n})\n"],"sourceRoot":""}