{"version":3,"sources":["webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDialog/index.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDatePicker/util/pad.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VData/VData.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataIterator/VDataFooter.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDialog/VDialog.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VData/index.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataIterator/VDataIterator.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataIterator/index.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataTable/mixins/header.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataTable/VDataTableHeaderMobile.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataTable/VDataTableHeader.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataTable/Row.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataTable/RowGroup.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataTable/VSimpleTable.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataTable/MobileRow.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataTable/VDataTable.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataTable/VEditDialog.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataTable/VVirtualTable.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDataTable/index.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDatePicker/VDatePickerTitle.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDatePicker/util/createNativeLocaleFormatter.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDatePicker/util/monthChange.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDatePicker/VDatePickerHeader.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDatePicker/util/eventHelpers.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDatePicker/util/sanitizeDateString.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDatePicker/util/isDateAllowed.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDatePicker/mixins/date-picker-table.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDatePicker/VDatePickerDateTable.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDatePicker/VDatePickerMonthTable.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDatePicker/VDatePickerYears.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDatePicker/VDatePicker.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDivider/VDivider.ts","webpack:///./node_modules/@gr/authentication/node_modules/vuetify/src/components/VDivider/index.ts"],"names":["VDialog","padStart","string","targetLength","padString","String","length","repeat","slice","n","Vue","extend","name","inheritAttrs","props","items","type","Array","default","options","Object","sortBy","sortDesc","Boolean","customSort","Function","sortItems","mustSort","multiSort","page","Number","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","search","customFilter","searchItems","serverItemsLength","data","internalOptions","this","wrapInArray","assign","sortDiff","groupDiff","push","fillArray","computed","itemsLength","filteredItems","pageCount","Math","ceil","pageStart","pageStop","min","isGrouped","pagination","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","group","updateOptions","originalItemsLength","computedOptions","watch","handler","old","deepEqual","deep","immediate","$emit","isArray","methods","toggle","key","oldBy","oldDesc","by","desc","byIndex","findIndex","k","splice","map","s","i","max","render","$scopedSlots","required","itemsPerPageOptions","prevIcon","nextIcon","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","genDataItemsPerPageOption","obj","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","text","$vuetify","lang","t","value","genItemsPerPageSelect","computedIPPO","find","ippo","$createElement","staticClass","VSelect","attrs","disabled","hideDetails","auto","minWidth","on","input","genPaginationInfo","children","class","genIcon","click","label","icon","VBtn","VIcon","genIcons","before","after","rtl","unshift","toString","getSlot","baseMixins","mixins","Activatable","Dependent","Detachable","Overlayable","Returnable","Stackable","Toggleable","directives","ClickOutside","dark","fullscreen","light","maxWidth","noClickAnimation","origin","persistent","retainFocus","scrollable","transition","width","activatedBy","animate","animateTimeout","isActive","stackMinZIndex","previousActiveElement","classes","contentClass","trim","contentClasses","hasActivator","$slots","activator","val","show","hideScroll","removeOverlay","unbind","focus","showScroll","genOverlay","created","$attrs","hasOwnProperty","removed","beforeMount","$nextTick","isBooted","beforeDestroy","window","animateClick","clearTimeout","setTimeout","closeConditional","e","target","_isDestroyed","$refs","content","contains","overlay","$el","activeZIndex","getMaxZIndex","document","documentElement","classList","add","call","hideOverlay","activeElement","bind","addEventListener","onFocusin","removeEventListener","onClickOutside","onKeydown","keyCode","keyCodes","esc","getOpenDependents","getActivator","includes","getOpenDependentElements","some","el","focusable","querySelectorAll","hasAttribute","genContent","showLazyContent","VThemeProvider","root","role","tabindex","undefined","getScopeIdAttrs","keydown","style","zIndex","ref","genTransition","genInnerContent","appear","include","transformOrigin","convertToUnit","getContentSlot","h","attach","genActivator","VData","Mobile","Themeable","itemKey","singleSelect","expanded","mobileBreakpoint","singleExpand","loading","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","selection","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","sanitizedFooterProps","camelizeObjectKeys","filter","item","isSelectable","reduce","getObjectValueByPath","keys","values","breakingProps","forEach","original","replacement","breaking","removedProps","prop","mounted","onKeyDown","onKeyUp","shift","toggleSelectAll","select","emit","index","x","lastEntryKey","lastEntryKeySelected","multipleSelect","start","end","currentItem","isExpanded","expand","createItemProps","v","isMobile","genEmptyWrapper","genEmpty","filteredItemsLength","noData","noResults","genItems","empty","genFooter","scopedSlots","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","$props","VDataIterator","ripple","headers","checkboxColor","sortIcon","showGroupBy","genSelectAll","indeterminate","color","VSimpleCheckbox","genSortIcon","size","header","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","active","asc","VChip","stopPropagation","genSortSelect","multiple","menuProps","closeOnContentClick","change","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","join","genHeader","scope","align","divider","groupable","functional","mobile","slots","dedupeModelListeners","rebuildSlots","mergeData","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","slot","_slot$","tag","computedSlots","columns","slotName","scopedSlot","regularSlot","textAlign","cellClass","headerClass","summaryClass","dense","fixedHeader","height","top","bottom","themeClasses","genWrapper","wrapper","hideDefaultHeader","mobileRowChildren","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","matchesColumnFilters","defaultFilter","matchesSearchTerm","Loadable","showSelect","showExpand","caption","headerProps","calculateWidths","headersLength","expandIcon","itemClass","loaderHeight","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","colspanAttrs","colspan","columnSorters","acc","filterable","sanitizedHeaderProps","computedItemsPerPage","firstOption","calcWidths","from","clientWidth","customFilterWithColumns","customSortWithHeaders","genCaption","genColgroup","genLoading","genProgress","genHeaders","VDataTableHeader","genGroupedRows","genRows","$set","genDefaultGroupedRow","isOpen","toggleFn","removeFn","remove","small","column","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","MobileRow","Row","mergeClasses","getPropertyFromItem","contextmenu","event","dblclick","genBody","body","genFoot","foot","_this$$scopedSlots$fo","genFooters","simpleProps","VSimpleTable","proxySlot","cancelText","large","eager","saveText","cancel","querySelector","genButton","fn","genActions","save","returnValue","enter","VMenu","right","closeOnClick","chunkSize","headerHeight","rowHeight","scrollTop","oldChunk","scrollDebounce","invalidateCache","totalHeight","topIndex","floor","chunkIndex","startIndex","offsetTop","stopIndex","offsetBottom","newValue","oldValue","cachedItems","table","debounce","onScroll","passive","createStyleHeight","genTable","VTableOverflow","createSimpleFunctional","PickerButton","date","readonly","selectingYear","year","yearIcon","isReversing","computedTransition","prev","genYearIcon","getYearBtn","genPickerButton","genTitleText","domProps","innerHTML","genTitleDate","createNativeLocaleFormatter","substrOptions","makeIsoString","dateString","split","month","pad","intlFormatter","Intl","DateTimeFormat","format","Date","substr","sign","Colorable","Localable","nextAriaLabel","prevAriaLabel","formatter","currentLocale","timeZone","newVal","oldVal","genBtn","ariaLabelId","calculateChange","monthChange","setTextColor","createItemTypeNativeListeners","instance","itemTypeSuffix","$listeners","eventName","endsWith","createItemTypeListeners","isDateAllowed","allowedFn","Touch","allowedDates","current","events","eventColor","range","tableDate","wheelThrottle","displayedMonth","displayedYear","throttle","wheel","genButtonClasses","isAllowed","isFloating","isCurrent","isFirst","isLast","genButtonEvents","mouseEventType","mergeListeners","isOtherMonth","setColor","setBackgroundColor","genEvents","getEventColors","eventData","arrayize","eventColors","isValidScroll","calculateTableDate","sanitizeType","sanitizeDateString","deltaY","touch","touchDirective","left","offsetX","preventDefault","to","indexOf","DatePickerTable","firstDayOfWeek","localeFirstDayOfYear","showAdjacentMonths","showWeek","weekdayFormat","day","weekdayFormatter","weekday","weekDays","first","parseInt","createRange","delta","genTHead","days","genTR","weekDaysBeforeFirstDayOfTheMonth","firstDayOfTheMonth","weekDay","getUTCDay","getWeekNumber","dayInMonth","weekNumber","genWeekNumber","genTBody","daysInMonth","getDate","prevMonthYear","prevMonth","firstDayFromPreviousMonth","cellsInRow","nextMonthYear","nextMonth","nextMonthDay","cols","fill","row","tds","_","col","defaultColor","activeItem","getElementsByClassName","offsetHeight","scrollHeight","genYearItem","formatted","genYearItems","selectedYear","getFullYear","maxYear","minYear","Picker","activePicker","dayFormat","headerDateFormat","monthFormat","nextMonthAriaLabel","nextYearAriaLabel","pickerDate","prevMonthAriaLabel","prevYearAriaLabel","reactive","showCurrent","selectedItemsText","titleDateFormat","validator","yearFormat","now","internalActivePicker","toUpperCase","inputDay","inputMonth","inputYear","multipleValue","getMonth","isMultiple","lastValue","selectedMonths","inputDate","tableMonth","tableYear","minMonth","maxMonth","formatters","titleDate","defaultTitleMultipleDateFormatter","defaultTitleDateFormatter","dates","titleFormats","titleDateFormatter","landscapeFormatter","replace","match","nonDigit","digit","landscape","checkMultipleProp","setInputDate","output","emitInput","newInput","concat","valueType","constructor","expected","consoleWarn","yearClick","monthClick","dateClick","genPickerTitle","VDatePickerTitle","genTableHeader","VDatePickerHeader","genDateTable","VDatePickerDateTable","genMonthTable","VDatePickerMonthTable","genYears","VDatePickerYears","genPickerBody","array","genPicker","inset","vertical","orientation","VDivider"],"mappings":"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","file":"js/gr-authentication~0942a3d0.77372861.js","sourcesContent":["import VDialog from './VDialog'\n\nexport { VDialog }\nexport default VDialog\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","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// 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: [String, Number],\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: [String, Number],\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 previousActiveElement: null as HTMLElement | null,\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 this.previousActiveElement?.focus()\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 // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.content.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.content.focus()\n }\n this.bind()\n })\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 const el = [...focusable].find(el => !el.hasAttribute('disabled')) as HTMLElement | undefined\n el && el.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: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n },\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: convertToUnit(this.maxWidth),\n width: 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 VData from './VData'\n\nexport { VData }\n\nexport default VData\n","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = true\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = false\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = this.$slots.loading || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = this.$slots['no-data'] || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = this.$slots['no-results'] || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import VDataIterator from './VDataIterator'\nimport VDataFooter from './VDataFooter'\n\nexport { VDataIterator, VDataFooter }\nexport default {\n $_vuetify_subcomponents: {\n VDataIterator,\n VDataFooter,\n },\n}\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","// Styles\nimport './VDataTableHeader.sass'\n\n// Components\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\n// Mixins\nimport header from './mixins/header'\n\n// Utilities\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport mergeData from '../../util/mergeData'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n ...header.options.props,\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\n\n data = mergeData(data, { props })\n\n if (props.mobile) {\n return h(VDataTableHeaderMobile, data, children)\n } else {\n return h(VDataTableHeaderDesktop, data, children)\n }\n },\n})\n","// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DataTableHeader } from 'vuetify/types'\n\n// Utils\nimport { getObjectValueByPath, wrapInArray } from '../../util/helpers'\n\nfunction needsTd (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n !['td', 'th'].includes(slot![0]?.tag!)\n}\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns = props.headers.map((header: DataTableHeader) => {\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(...wrapInArray(scopedSlot({\n item: props.item,\n isMobile: false,\n header,\n index: props.index,\n value,\n })))\n } else if (regularSlot) {\n children.push(...wrapInArray(regularSlot))\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const textAlign = `text-${header.align || 'start'}`\n\n return needsTd(children)\n ? h('td', {\n class: [\n textAlign,\n header.cellClass,\n {\n 'v-data-table__divider': header.divider,\n },\n ],\n }, children)\n : children\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', this.$slots.default),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n hideDefaultHeader: Boolean,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const classes = {\n 'v-data-table__mobile-row': true,\n }\n\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({\n item: props.item,\n isMobile: true,\n header,\n index: props.index,\n value,\n }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const mobileRowChildren = [\n h('div', {\n staticClass: 'v-data-table__mobile-row__cell',\n }, children),\n ]\n\n if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n mobileRowChildren.unshift(\n h('div', {\n staticClass: 'v-data-table__mobile-row__header',\n }, [header.text])\n )\n }\n\n return h('td', { class: classes }, mobileRowChildren)\n })\n\n return h('tr', { ...data, staticClass: 'v-data-table__mobile-table-row' }, columns)\n },\n})\n","import './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n RowClassFunction,\n DataTableItemProps,\n} from 'vuetify/types'\n\n// Components\nimport { VData } from '../VData'\nimport { VDataFooter, VDataIterator } from '../VDataIterator'\nimport VBtn from '../VBtn'\nimport VDataTableHeader from './VDataTableHeader'\n// import VVirtualTable from './VVirtualTable'\nimport VIcon from '../VIcon'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers'\nimport { breaking } from '../../util/console'\nimport { mergeClasses } from '../../util/mergeData'\n\nfunction filterFn (item: any, search: string | null, filter: DataTableFilterFunction) {\n return (header: DataTableHeader) => {\n const value = getObjectValueByPath(item, header.value)\n return header.filter ? header.filter(value, search, item) : filter(value, search, item)\n }\n}\n\nfunction searchTableItems (\n items: any[],\n search: string | null,\n headersWithCustomFilters: DataTableHeader[],\n headersWithoutCustomFilters: DataTableHeader[],\n customFilter: DataTableFilterFunction\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n // We need to match every filter to be included in the results.\n const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter))\n\n // Headers without custom filters are only filtered by the `search` property if it is defined.\n // We only need a single column to match the search term to be included in the results.\n const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter))\n\n return matchesColumnFilters && matchesSearchTerm\n })\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n).extend({\n name: 'v-data-table',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => [],\n } as PropValidator,\n showSelect: Boolean,\n checkboxColor: String,\n showExpand: Boolean,\n showGroupBy: Boolean,\n // TODO: Fix\n // virtualRows: Boolean,\n height: [Number, String],\n hideDefaultHeader: Boolean,\n caption: String,\n dense: Boolean,\n headerProps: Object,\n calculateWidths: Boolean,\n fixedHeader: Boolean,\n headersLength: Number,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n customFilter: {\n type: Function,\n default: defaultFilter,\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n },\n\n data () {\n return {\n internalGroupBy: [] as string[],\n openCache: {} as { [key: string]: boolean },\n widths: [] as number[],\n }\n },\n\n computed: {\n computedHeaders (): DataTableHeader[] {\n if (!this.headers) return []\n const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value))\n const defaultHeader = { text: '', sortable: false, width: '1px' }\n\n if (this.showSelect) {\n const index = headers.findIndex(h => h.value === 'data-table-select')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-select' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n if (this.showExpand) {\n const index = headers.findIndex(h => h.value === 'data-table-expand')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-expand' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n return headers\n },\n colspanAttrs (): object | undefined {\n return this.isMobile ? undefined : {\n colspan: this.headersLength || this.computedHeaders.length,\n }\n },\n columnSorters (): Record {\n return this.computedHeaders.reduce>((acc, header) => {\n if (header.sort) acc[header.value] = header.sort\n return acc\n }, {})\n },\n headersWithCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n headersWithoutCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n sanitizedHeaderProps (): Record {\n return camelizeObjectKeys(this.headerProps)\n },\n computedItemsPerPage (): number {\n const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage\n const itemsPerPageOptions: DataItemsPerPageOption[] | undefined = this.sanitizedFooterProps.itemsPerPageOptions\n\n if (\n itemsPerPageOptions &&\n !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)\n ) {\n const firstOption = itemsPerPageOptions[0]\n return typeof firstOption === 'object' ? firstOption.value : firstOption\n }\n\n return itemsPerPage\n },\n },\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, index: number): DataTableItemProps {\n const props = VDataIterator.options.methods.createItemProps.call(this, item, index)\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 th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${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']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item, i),\n isMobile: this.isMobile,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n index: i,\n item,\n }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map((item, index) => this.genDefaultExpandedRow(item, index))\n : items.map((item, index) => this.genDefaultSimpleRow(item, index))\n },\n genDefaultExpandedRow (item: any, index: number): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, index, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n item,\n })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, index: number, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item, index)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot({\n ...data,\n isMobile: this.isMobile,\n }) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: {\n // TODO: for click, the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: () => this.$emit('click:row', item, data),\n contextmenu: (event: MouseEvent) => this.$emit('contextmenu:row', event, data),\n dblclick: (event: MouseEvent) => this.$emit('dblclick:row', event, 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 genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","// Styles\nimport './VEditDialog.sass'\n\n// Mixins\nimport Returnable from '../../mixins/returnable'\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport { keyCodes } from '../../util/helpers'\n\n// Component\nimport VBtn from '../VBtn'\nimport VMenu from '../VMenu'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Returnable, Themeable).extend({\n name: 'v-edit-dialog',\n\n props: {\n cancelText: {\n default: 'Cancel',\n },\n large: Boolean,\n eager: Boolean,\n persistent: Boolean,\n saveText: {\n default: 'Save',\n },\n transition: {\n type: String,\n default: 'slide-x-reverse-transition',\n },\n },\n\n data () {\n return {\n isActive: false,\n }\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.$emit('open')\n setTimeout(this.focus, 50) // Give DOM time to paint\n } else {\n this.$emit('close')\n }\n },\n },\n\n methods: {\n cancel () {\n this.isActive = false\n this.$emit('cancel')\n },\n focus () {\n const input = (this.$refs.content as Element).querySelector('input')\n input && input.focus()\n },\n genButton (fn: Function, text: VNodeChildren): VNode {\n return this.$createElement(VBtn, {\n props: {\n text: true,\n color: 'primary',\n light: true,\n },\n on: { click: fn },\n }, text)\n },\n genActions (): VNode {\n return this.$createElement('div', {\n class: 'v-small-dialog__actions',\n }, [\n this.genButton(this.cancel, this.cancelText),\n this.genButton(() => {\n this.save(this.returnValue)\n this.$emit('save')\n }, this.saveText),\n ])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-small-dialog__content',\n on: {\n keydown: (e: KeyboardEvent) => {\n e.keyCode === keyCodes.esc && this.cancel()\n if (e.keyCode === keyCodes.enter) {\n this.save(this.returnValue)\n this.$emit('save')\n }\n },\n },\n ref: 'content',\n }, [this.$slots.input])\n },\n },\n\n render (h): VNode {\n return h(VMenu, {\n staticClass: 'v-small-dialog',\n class: this.themeClasses,\n props: {\n contentClass: 'v-small-dialog__menu-content',\n transition: this.transition,\n origin: 'top right',\n right: true,\n value: this.isActive,\n closeOnClick: !this.persistent,\n closeOnContentClick: false,\n eager: this.eager,\n light: this.light,\n dark: this.dark,\n },\n on: {\n input: (val: boolean) => (this.isActive = val),\n },\n scopedSlots: {\n activator: ({ on }) => {\n return h('div', {\n staticClass: 'v-small-dialog__activator',\n on,\n }, [\n h('span', {\n staticClass: 'v-small-dialog__activator__content',\n }, this.$slots.default),\n ])\n },\n },\n }, [\n this.genContent(),\n this.large ? this.genActions() : null,\n ])\n },\n})\n","import './VVirtualTable.sass'\n\n// Components\nimport VSimpleTable from './VSimpleTable'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../util/mixins'\n\n// Utiltiies\nimport { convertToUnit, debounce } from '../../util/helpers'\n\n// Types\nconst baseMixins = mixins(VSimpleTable)\n\ninterface options extends InstanceType {\n $refs: {\n table: HTMLElement\n }\n cachedItems: VNodeChildren\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-virtual-table',\n\n props: {\n chunkSize: {\n type: Number,\n default: 25,\n },\n headerHeight: {\n type: Number,\n default: 48,\n },\n items: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n rowHeight: {\n type: Number,\n default: 48,\n },\n },\n\n data: () => ({\n scrollTop: 0,\n oldChunk: 0,\n scrollDebounce: null as any,\n invalidateCache: false,\n }),\n\n computed: {\n itemsLength (): number {\n return this.items.length\n },\n totalHeight (): number {\n return (this.itemsLength * this.rowHeight) + this.headerHeight\n },\n topIndex (): number {\n return Math.floor(this.scrollTop / this.rowHeight)\n },\n chunkIndex (): number {\n return Math.floor(this.topIndex / this.chunkSize)\n },\n startIndex (): number {\n return Math.max(0, (this.chunkIndex * this.chunkSize) - this.chunkSize)\n },\n offsetTop (): number {\n return Math.max(0, this.startIndex * this.rowHeight)\n },\n stopIndex (): number {\n return Math.min(this.startIndex + (this.chunkSize * 3), this.itemsLength)\n },\n offsetBottom (): number {\n return Math.max(0, (this.itemsLength - this.stopIndex - this.startIndex) * this.rowHeight)\n },\n },\n\n watch: {\n chunkIndex (newValue, oldValue) {\n this.oldChunk = oldValue\n },\n items () {\n this.cachedItems = null\n this.$refs.table.scrollTop = 0\n },\n },\n\n created () {\n this.cachedItems = null\n },\n\n mounted () {\n this.scrollDebounce = debounce(this.onScroll, 50)\n\n this.$refs.table.addEventListener('scroll', this.scrollDebounce, { passive: true })\n },\n\n beforeDestroy () {\n this.$refs.table.removeEventListener('scroll', this.scrollDebounce)\n },\n\n methods: {\n createStyleHeight (height: number) {\n return {\n height: `${height}px`,\n }\n },\n genBody () {\n if (this.cachedItems === null || this.chunkIndex !== this.oldChunk) {\n this.cachedItems = this.genItems()\n this.oldChunk = this.chunkIndex\n }\n\n return this.$createElement('tbody', [\n this.$createElement('tr', { style: this.createStyleHeight(this.offsetTop) }),\n this.cachedItems,\n this.$createElement('tr', { style: this.createStyleHeight(this.offsetBottom) }),\n ])\n },\n genItems () {\n return this.$scopedSlots.items!({ items: this.items.slice(this.startIndex, this.stopIndex) })\n },\n onScroll (e: Event) {\n const target = e.target as Element\n this.scrollTop = target.scrollTop\n },\n genTable () {\n return this.$createElement('div', {\n ref: 'table',\n staticClass: 'v-virtual-table__table',\n }, [\n this.$createElement('table', [\n this.$slots['body.before'],\n this.genBody(),\n this.$slots['body.after'],\n ]),\n ])\n },\n genWrapper () {\n return this.$createElement('div', {\n staticClass: 'v-virtual-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.genTable(),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table v-virtual-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import { createSimpleFunctional } from '../../util/helpers'\n\nimport VDataTable from './VDataTable'\nimport VDataTableHeader from './VDataTableHeader'\nimport VEditDialog from './VEditDialog'\nimport VSimpleTable from './VSimpleTable'\nimport VVirtualTable from './VVirtualTable'\n\nconst VTableOverflow = createSimpleFunctional('v-table__overflow')\n\nexport { VDataTable, VEditDialog, VTableOverflow, VDataTableHeader, VSimpleTable, VVirtualTable }\n\nexport default {\n $_vuetify_subcomponents: {\n VDataTable,\n VDataTableHeader,\n VEditDialog,\n VTableOverflow,\n VSimpleTable,\n VVirtualTable,\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","import pad from './pad'\nimport { DatePickerFormatter } from 'vuetify/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 'vuetify/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 nextAriaLabel: String,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevAriaLabel: String,\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 ariaLabelId = change > 0 ? this.nextAriaLabel : this.prevAriaLabel\n const ariaLabel = ariaLabelId ? this.$vuetify.lang.t(ariaLabelId) : undefined\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 attrs: { 'aria-label': ariaLabel },\n props: {\n dark: this.dark,\n disabled,\n icon: true,\n light: this.light,\n },\n on: {\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 Vue from 'vue'\n\nexport function createItemTypeNativeListeners (instance: Vue, itemTypeSuffix: string, value: any) {\n return Object.keys(instance.$listeners).reduce((on, eventName) => {\n if (eventName.endsWith(itemTypeSuffix)) {\n on[eventName.slice(0, -itemTypeSuffix.length)] = (event: Event) => instance.$emit(eventName, value, event)\n }\n\n return on\n }, {} as typeof instance.$listeners)\n}\n\nexport function createItemTypeListeners (instance: Vue, itemTypeSuffix: string) {\n return Object.keys(instance.$listeners).reduce((on, eventName) => {\n if (eventName.endsWith(itemTypeSuffix)) {\n on[eventName] = instance.$listeners[eventName]\n }\n\n return on\n }, {} as typeof instance.$listeners)\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'\nimport pad from './pad'\n\nexport default (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","import { DatePickerAllowedDatesFunction } from 'vuetify/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 { createItemTypeNativeListeners, sanitizeDateString } from '../util'\nimport isDateAllowed from '../util/isDateAllowed'\nimport { mergeListeners } from '../../../util/mergeData'\nimport mixins from '../../../util/mixins'\nimport { throttle } from '../../../util/helpers'\n\n// Types\nimport {\n PropType,\n VNodeChildren,\n} from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DatePickerAllowedDatesFunction,\n DatePickerEventColors,\n DatePickerEventColorValue,\n DatePickerEvents,\n DatePickerFormatter,\n TouchWrapper,\n} from 'vuetify/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],\n default: () => null,\n } as PropValidator,\n eventColor: {\n type: [Array, Function, Object, String],\n default: () => 'warning',\n } as PropValidator,\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 wheelThrottle: null as any,\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 mounted () {\n this.wheelThrottle = throttle(this.wheel, 250)\n },\n\n methods: {\n genButtonClasses (\n isAllowed: boolean,\n isFloating: boolean,\n isSelected: boolean,\n isCurrent: boolean,\n isFirst: boolean,\n isLast: boolean,\n ) {\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 'v-date-picker--first-in-range': isFirst,\n 'v-date-picker--last-in-range': isLast,\n ...this.themeClasses,\n }\n },\n genButtonEvents (value: string, isAllowed: boolean, mouseEventType: string) {\n if (this.disabled) return undefined\n\n return mergeListeners({\n click: () => {\n if (isAllowed && !this.readonly) this.$emit('input', value)\n },\n }, createItemTypeNativeListeners(this, `:${mouseEventType}`, value))\n },\n genButton (value: string, isFloating: boolean, mouseEventType: string, formatter: DatePickerFormatter, isOtherMonth = false) {\n const isAllowed = isDateAllowed(value, this.min, this.max, this.allowedDates)\n const isSelected = this.isSelected(value) && isAllowed\n const isCurrent = value === this.current\n const setColor = isSelected ? this.setBackgroundColor : this.setTextColor\n const color = (isSelected || isCurrent) && (this.color || 'accent')\n let isFirst = false\n let isLast = false\n if (this.range && !!this.value && Array.isArray(this.value)) {\n isFirst = value === this.value[0]\n isLast = value === this.value[this.value.length - 1]\n }\n\n return this.$createElement('button', setColor(color, {\n staticClass: 'v-btn',\n class: this.genButtonClasses(\n isAllowed && !isOtherMonth,\n isFloating,\n isSelected,\n isCurrent,\n isFirst,\n isLast,\n ),\n attrs: {\n type: 'button',\n },\n domProps: {\n disabled: this.disabled || !isAllowed || isOtherMonth,\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 isValidScroll (value: number, calculateTableDate: CalculateTableDateFunction) {\n const tableDate = calculateTableDate(value)\n // tableDate is 'YYYY-MM' for DateTable and 'YYYY' for MonthTable\n const sanitizeType = tableDate.split('-').length === 1 ? 'year' : 'month'\n return (value < 0 && (this.min ? tableDate >= sanitizeDateString(this.min, sanitizeType) : true)) ||\n (value > 0 && (this.max ? tableDate <= sanitizeDateString(this.max, sanitizeType) : true))\n },\n wheel (e: WheelEvent, calculateTableDate: CalculateTableDateFunction) {\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) &&\n (this.isValidScroll(1, calculateTableDate) && this.touch(1, calculateTableDate)),\n right: (e: TouchWrapper) => (e.offsetX > 15) &&\n (this.isValidScroll(-1, calculateTableDate) && 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) => {\n e.preventDefault()\n if (this.isValidScroll(e.deltaY, calculateTableDate)) { this.wheelThrottle(e, calculateTableDate) }\n },\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 { weekNumber } from '../../util/dateTimeUtils'\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 'vuetify/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 localeFirstDayOfYear: {\n type: [String, Number],\n default: 0,\n },\n showAdjacentMonths: Boolean,\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 if (this.showWeek) {\n days.unshift(this.$createElement('th'))\n }\n\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\n return (weekDay - parseInt(this.firstDayOfWeek) + 7) % 7\n },\n getWeekNumber (dayInMonth: number) {\n return weekNumber(\n this.displayedYear,\n this.displayedMonth,\n dayInMonth,\n parseInt(this.firstDayOfWeek),\n parseInt(this.localeFirstDayOfYear)\n )\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 // eslint-disable-next-line max-statements\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\n if (this.showWeek) {\n rows.push(this.genWeekNumber(this.getWeekNumber(1)))\n }\n\n const prevMonthYear = this.displayedMonth ? this.displayedYear : this.displayedYear - 1\n const prevMonth = (this.displayedMonth + 11) % 12\n const firstDayFromPreviousMonth = new Date(this.displayedYear, this.displayedMonth, 0).getDate()\n const cellsInRow = this.showWeek ? 8 : 7\n\n while (day--) {\n const date = `${prevMonthYear}-${pad(prevMonth + 1)}-${pad(firstDayFromPreviousMonth - day)}`\n\n rows.push(this.$createElement('td', this.showAdjacentMonths ? [\n this.genButton(date, true, 'date', this.formatter, true),\n ] : []))\n }\n\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 % cellsInRow === 0) {\n children.push(this.genTR(rows))\n rows = []\n if (this.showWeek && (day < daysInMonth || this.showAdjacentMonths)) {\n rows.push(this.genWeekNumber(this.getWeekNumber(day + 7)))\n }\n }\n }\n\n const nextMonthYear = this.displayedMonth === 11 ? this.displayedYear + 1 : this.displayedYear\n const nextMonth = (this.displayedMonth + 1) % 12\n let nextMonthDay = 1\n\n while (rows.length < cellsInRow) {\n const date = `${nextMonthYear}-${pad(nextMonth + 1)}-${pad(nextMonthDay++)}`\n\n rows.push(this.$createElement('td', this.showAdjacentMonths ? [\n this.genButton(date, true, 'date', this.formatter, true),\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 'vuetify/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 {\n createItemTypeNativeListeners,\n createNativeLocaleFormatter,\n} from './util'\nimport { mergeListeners } from '../../util/mergeData'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DatePickerFormatter } from 'vuetify/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: mergeListeners({\n click: () => this.$emit('input', year),\n }, createItemTypeNativeListeners(this, ':year', year)),\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 isDateAllowed from './util/isDateAllowed'\nimport mixins from '../../util/mixins'\nimport { wrapInArray } from '../../util/helpers'\nimport { daysInMonth } from '../VCalendar/util/timestamp'\nimport { consoleWarn } from '../../util/console'\nimport {\n createItemTypeListeners,\n createNativeLocaleFormatter,\n pad,\n sanitizeDateString,\n} from './util'\n\n// Types\nimport {\n PropType,\n PropValidator,\n} from 'vue/types/options'\nimport { VNode } from 'vue'\nimport {\n DatePickerFormatter,\n DatePickerMultipleFormatter,\n DatePickerAllowedDatesFunction,\n DatePickerEventColors,\n DatePickerEvents,\n DatePickerType,\n} from 'vuetify/types'\n\ntype DatePickerValue = string | string[] | undefined\ninterface Formatters {\n year: DatePickerFormatter\n titleDate: DatePickerFormatter | DatePickerMultipleFormatter\n}\n\ntype ActivePicker = 'DATE' | 'MONTH' | 'YEAR';\n\nexport default mixins(\n Localable,\n Picker,\n/* @vue/component */\n).extend({\n name: 'v-date-picker',\n\n props: {\n activePicker: String as PropType,\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],\n default: () => null,\n } as PropValidator,\n eventColor: {\n type: [Array, Function, Object, String],\n default: () => 'warning',\n } as PropValidator,\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 localeFirstDayOfYear: {\n type: [String, Number],\n default: 0,\n },\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 nextMonthAriaLabel: {\n type: String,\n default: '$vuetify.datePicker.nextMonthAriaLabel',\n },\n nextYearAriaLabel: {\n type: String,\n default: '$vuetify.datePicker.nextYearAriaLabel',\n },\n pickerDate: String,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n prevMonthAriaLabel: {\n type: String,\n default: '$vuetify.datePicker.prevMonthAriaLabel',\n },\n prevYearAriaLabel: {\n type: String,\n default: '$vuetify.datePicker.prevYearAriaLabel',\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 showAdjacentMonths: Boolean,\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 internalActivePicker: 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 multipleValue = wrapInArray(this.value)\n const date = multipleValue[multipleValue.length - 1] ||\n (typeof this.showCurrent === 'string' ? this.showCurrent : `${now.getFullYear()}-${now.getMonth() + 1}`)\n return sanitizeDateString(date as string, this.type === 'date' ? 'month' : 'year')\n })(),\n }\n },\n\n computed: {\n multipleValue (): string[] {\n return wrapInArray(this.value)\n },\n isMultiple (): boolean {\n return this.multiple || this.range\n },\n lastValue (): string | null {\n return this.isMultiple ? this.multipleValue[this.multipleValue.length - 1] : (this.value as string | null)\n },\n selectedMonths (): string | string[] | undefined {\n if (!this.value || this.type === 'month') {\n return this.value\n } else if (this.isMultiple) {\n return this.multipleValue.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 internalActivePicker: {\n immediate: true,\n handler (val: ActivePicker) {\n this.$emit('update:active-picker', val)\n },\n },\n activePicker (val: ActivePicker) {\n this.internalActivePicker = val\n },\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 (\n (!this.isMultiple && this.value && !this.pickerDate) ||\n (this.isMultiple && this.multipleValue.length && (!oldValue || !oldValue.length) && !this.pickerDate)\n ) {\n this.tableDate = sanitizeDateString(this.inputDate, this.type === 'month' ? 'year' : 'month')\n }\n },\n type (type: DatePickerType) {\n this.internalActivePicker = type.toUpperCase()\n\n if (this.value && this.value.length) {\n const output = this.multipleValue\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) {\n if (this.multipleValue.length !== 1) {\n this.$emit('input', [newInput])\n } else {\n const output = [this.multipleValue[0], newInput]\n this.$emit('input', output)\n this.$emit('change', output)\n }\n return\n }\n\n const output = this.multiple\n ? (\n this.multipleValue.indexOf(newInput) === -1\n ? this.multipleValue.concat([newInput])\n : this.multipleValue.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): boolean {\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.internalActivePicker = '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.internalActivePicker = '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 (): VNode {\n return this.$createElement(VDatePickerTitle, {\n props: {\n date: this.value ? (this.formatters.titleDate as (value: any) => string)(this.isMultiple ? this.multipleValue : this.value) : '',\n disabled: this.disabled,\n readonly: this.readonly,\n selectingYear: this.internalActivePicker === 'YEAR',\n year: this.formatters.year(this.multipleValue.length ? `${this.inputYear}` : this.tableDate),\n yearIcon: this.yearIcon,\n value: this.multipleValue[0],\n },\n slot: 'title',\n on: {\n 'update:selecting-year': (value: boolean) => this.internalActivePicker = value ? 'YEAR' : this.type.toUpperCase(),\n },\n })\n },\n genTableHeader (): VNode {\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.internalActivePicker === 'DATE' ? this.minMonth : this.minYear,\n max: this.internalActivePicker === 'DATE' ? this.maxMonth : this.maxYear,\n nextAriaLabel: this.internalActivePicker === 'DATE' ? this.nextMonthAriaLabel : this.nextYearAriaLabel,\n prevAriaLabel: this.internalActivePicker === 'DATE' ? this.prevMonthAriaLabel : this.prevYearAriaLabel,\n prevIcon: this.prevIcon,\n readonly: this.readonly,\n value: this.internalActivePicker === 'DATE' ? `${pad(this.tableYear, 4)}-${pad(this.tableMonth + 1)}` : `${pad(this.tableYear, 4)}`,\n },\n on: {\n toggle: () => this.internalActivePicker = (this.internalActivePicker === 'DATE' ? 'MONTH' : 'YEAR'),\n input: (value: string) => this.tableDate = value,\n },\n })\n },\n genDateTable (): VNode {\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 localeFirstDayOfYear: this.localeFirstDayOfYear,\n min: this.min,\n max: this.max,\n range: this.range,\n readonly: this.readonly,\n scrollable: this.scrollable,\n showAdjacentMonths: this.showAdjacentMonths,\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 ...createItemTypeListeners(this, ':date'),\n },\n })\n },\n genMonthTable (): VNode {\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 ...createItemTypeListeners(this, ':month'),\n },\n })\n },\n genYears (): VNode {\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 ...createItemTypeListeners(this, ':year'),\n },\n })\n },\n genPickerBody (): VNode {\n const children = this.internalActivePicker === 'YEAR' ? [\n this.genYears(),\n ] : [\n this.genTableHeader(),\n this.internalActivePicker === 'DATE' ? this.genDateTable() : this.genMonthTable(),\n ]\n\n return this.$createElement('div', {\n key: this.internalActivePicker,\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","// 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","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\n"],"sourceRoot":""}