{"version":3,"sources":["webpack:///../../../src/components/VGrid/VRow.ts","webpack:///../../../src/components/VDialog/VDialog.ts","webpack:///../../../src/components/VDatePicker/VDatePickerTitle.ts","webpack:///../../../../src/components/VDatePicker/util/createNativeLocaleFormatter.ts","webpack:///../../../../src/components/VDatePicker/util/monthChange.ts","webpack:///../../../src/components/VDatePicker/VDatePickerHeader.ts","webpack:///../../../../src/components/VDatePicker/util/eventHelpers.ts","webpack:///../../../../src/components/VDatePicker/util/sanitizeDateString.ts","webpack:///../../../../src/components/VDatePicker/util/isDateAllowed.ts","webpack:///../../../../src/components/VDatePicker/mixins/date-picker-table.ts","webpack:///../../../src/components/VDatePicker/VDatePickerDateTable.ts","webpack:///../../../src/components/VDatePicker/VDatePickerMonthTable.ts","webpack:///../../../src/components/VDatePicker/VDatePickerYears.ts","webpack:///../../../src/components/VDatePicker/VDatePicker.ts","webpack:///../../../src/components/VData/index.ts","webpack:///../../../src/components/VGrid/VSpacer.ts","webpack:///../../../src/components/VData/VData.ts","webpack:///../../../src/components/VDialog/index.ts","webpack:///../../../src/components/VForm/VForm.ts","webpack:///../../../src/components/VDataIterator/index.ts","webpack:///../../../../src/components/VDatePicker/util/pad.ts","webpack:///../../../src/components/VHover/VHover.ts","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///../../../src/components/VGrid/VLayout.ts","webpack:///../../../src/components/VGrid/VFlex.ts","webpack:///../../../src/components/VGrid/index.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///../../../../src/components/VDataTable/mixins/header.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack:///../../../src/components/VDataTable/VDataTableHeader.ts","webpack:///../../../src/components/VDataTable/Row.ts","webpack:///../../../src/components/VDataTable/RowGroup.ts","webpack:///../../../src/components/VDataTable/VSimpleTable.ts","webpack:///../../../src/components/VDataTable/MobileRow.ts","webpack:///../../../src/components/VDataTable/VDataTable.ts","webpack:///../../../src/components/VDataTable/VEditDialog.ts","webpack:///../../../src/components/VDataTable/VVirtualTable.ts","webpack:///../../../src/components/VDataTable/index.ts","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VDataIterator/VDataIterator.ts","webpack:///../../../src/components/VFooter/VFooter.ts","webpack:///../../../src/components/VDivider/VDivider.ts","webpack:///../../../src/components/VForm/index.ts","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VFileInput/VFileInput.ts","webpack:///../../../src/components/VDataIterator/VDataFooter.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanels.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanel.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanelContent.ts","webpack:///../../../src/components/VExpansionPanel/VExpansionPanelHeader.ts"],"names":["breakpoints","ALIGNMENT","makeProps","props","prefix","def","alignValidator","str","alignProps","type","default","validator","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","Object","justify","alignContent","classMap","breakpointClass","className","val","breakpoint","prop","cache","name","functional","tag","dense","noGutters","render","children","cacheKey","String","classList","value","h","data","staticClass","class","baseMixins","directives","ClickOutside","dark","disabled","fullscreen","light","maxWidth","noClickAnimation","origin","persistent","retainFocus","scrollable","transition","width","activatedBy","animate","animateTimeout","isActive","this","stackMinZIndex","previousActiveElement","computed","classes","contentClasses","hasActivator","Boolean","$slots","$scopedSlots","watch","created","$attrs","hasOwnProperty","beforeMount","beforeDestroy","window","unbind","methods","animateClick","closeConditional","target","e","_isDestroyed","$refs","content","contains","overlay","$el","activeZIndex","hideScroll","document","show","bind","onClickOutside","onKeydown","getOpenDependents","activator","onFocusin","getOpenDependentElements","some","el","focusable","querySelectorAll","genContent","showLazyContent","root","attrs","role","tabindex","on","keydown","style","zIndex","ref","genTransition","$createElement","appear","genInnerContent","handler","include","transformOrigin","undefined","attach","mixins","date","readonly","selectingYear","year","Number","yearIcon","isReversing","computedTransition","genYearIcon","VIcon","getYearBtn","genPickerButton","genTitleText","domProps","innerHTML","key","genTitleDate","createNativeLocaleFormatter","substrOptions","start","length","makeIsoString","dateString","pad","month","intlFormatter","Intl","locale","Date","format","min","max","nextAriaLabel","nextIcon","prevAriaLabel","prevIcon","required","formatter","timeZone","newVal","genBtn","ariaLabelId","change","ariaLabel","$vuetify","lang","t","calculateChange","VBtn","icon","click","monthChange","genHeader","color","header","setTextColor","themeClasses","instance","eventName","itemTypeSuffix","event","allowedFn","Touch","allowedDates","current","events","Array","Function","eventColor","range","tableDate","wheelThrottle","displayedMonth","split","displayedYear","mounted","genButtonClasses","isAllowed","isSelected","isCurrent","genButtonEvents","createItemTypeNativeListeners","genButton","isOtherMonth","setColor","mouseEventType","genEvents","getEventColors","arrayize","v","eventColors","eventData","includes","isValidScroll","calculateTableDate","sanitizeType","sanitizeDateString","wheel","touch","genTable","touchDirective","left","right","from","indexOf","firstDayOfWeek","localeFirstDayOfYear","showAdjacentMonths","showWeek","weekdayFormat","day","weekdayFormatter","weekday","weekDays","first","parseInt","i","Math","delta","genTHead","days","map","genTR","weekDaysBeforeFirstDayOfTheMonth","firstDayOfTheMonth","weekDay","getWeekNumber","genWeekNumber","genTBody","daysInMonth","rows","prevMonthYear","prevMonth","firstDayFromPreviousMonth","cellsInRow","nextMonthYear","nextMonth","nextMonthDay","cols","row","tds","defaultColor","setTimeout","activeItem","genYearItem","formatted","active","genYearItems","selectedYear","maxYear","minYear","activePicker","dayFormat","headerDateFormat","monthFormat","multiple","nextMonthAriaLabel","nextYearAriaLabel","pickerDate","prevMonthAriaLabel","prevYearAriaLabel","reactive","showCurrent","selectedItemsText","titleDateFormat","yearFormat","now","internalActivePicker","inputDay","inputMonth","inputYear","multipleValue","isMultiple","lastValue","selectedMonths","getFullYear","getMonth","inputDate","tableMonth","tableYear","minMonth","maxMonth","formatters","titleDate","defaultTitleMultipleDateFormatter","dates","defaultTitleDateFormatter","titleFormats","titleDateFormatter","landscapeFormatter","nonDigit","landscape","immediate","prev","oldValue","output","emitInput","newInput","concat","filter","x","$emit","checkMultipleProp","valueType","constructor","expected","console","isDateAllowed","yearClick","monthClick","dateClick","genPickerTitle","slot","genTableHeader","toggle","input","genDateTable","VDatePickerDateTable","createItemTypeListeners","genMonthTable","VDatePickerMonthTable","genYears","genPickerBody","setInputDate","array","genPicker","inheritAttrs","items","options","sortBy","sortDesc","customSort","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","disableSort","disablePagination","disableFiltering","search","customFilter","serverItemsLength","internalOptions","sortDiff","groupDiff","itemsLength","filteredItems","pageCount","pageStart","pageStop","isGrouped","pagination","computedItems","sortItems","paginateItems","groupedItems","groupItems","scopedProps","sort","sortArray","group","updateOptions","originalItemsLength","computedOptions","deep","by","oldBy","desc","oldDesc","byIndex","k","s","provide","form","lazyValidation","inputs","watchers","errorBag","errors","watchInput","watcher","_uid","valid","shouldValidate","validate","reset","resetErrorBag","resetValidation","register","unregister","found","find","unwatch","novalidate","attrs$","submit","padStart","string","targetLength","padString","n","onMouseEnter","onMouseLeave","element","hover","mouseenter","mouseleave","breakpointProps","offsetProps","orderProps","col","offset","order","alignSelf","parent","hasColClasses","VContainer","VCol","VRow","VSpacer","id","fluid","ripple","headers","checkboxColor","sortIcon","everyItem","someItems","showGroupBy","singleSelect","genSelectAll","indeterminate","VSimpleCheckbox","genSortIcon","size","sortByText","genSortChip","sortIndex","findIndex","beingSorted","isDesc","sortable","asc","VChip","genSortSelect","VSelect","label","hideDetails","menuProps","closeOnContentClick","scopedSlots","selection","sortHeaders","text","th","tr","genGroupByToggle","getAria","$t","ariaSort","scope","minWidth","mobile","slots","dedupeModelListeners","mergeData","VDataTableHeaderMobile","VDataTableHeaderDesktop","index","item","rtl","computedSlots","columns","slotName","scopedSlot","regularSlot","isMobile","textAlign","divider","headerClass","contentClass","summaryClass","fixedHeader","height","genWrapper","wrapper","hideDefaultHeader","mobileRowChildren","filterFn","searchTableItems","matchesColumnFilters","headersWithCustomFilters","matchesSearchTerm","headersWithoutCustomFilters","showSelect","showExpand","caption","headerProps","calculateWidths","headersLength","expandIcon","itemClass","loaderHeight","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","colspanAttrs","colspan","columnSorters","reduce","acc","sanitizedHeaderProps","computedItemsPerPage","itemsPerPageOptions","sanitizedFooterProps","firstOption","breakingProps","original","replacement","calcWidths","customFilterWithColumns","customSortWithHeaders","createItemProps","VDataIterator","genCaption","genColgroup","genLoading","genHeaders","toggleSelectAll","genEmptyWrapper","genItems","empty","genEmpty","genGroupedRows","genRows","genDefaultGroupedRow","isOpen","toggleFn","removeFn","remove","small","column","RowGroup","genScopedRows","genDefaultRows","isExpanded","genDefaultExpandedRow","headerRow","genDefaultSimpleRow","expandedRow","MobileRow","contextmenu","dblclick","genBody","expand","select","body","genFoot","genFooters","itemsPerPageText","VDataFooter","genDefaultScopedSlot","simpleProps","proxySlot","VData","cancelText","large","eager","saveText","cancel","focus","fn","genActions","VMenu","closeOnClick","chunkSize","headerHeight","rowHeight","scrollTop","oldChunk","scrollDebounce","invalidateCache","totalHeight","topIndex","chunkIndex","startIndex","offsetTop","stopIndex","offsetBottom","passive","createStyleHeight","cachedItems","slice","onScroll","VTableOverflow","itemKey","expanded","mobileBreakpoint","singleExpand","loading","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","expansion","internalCurrentItems","shiftKeyDown","lastEntry","selectableItems","every","keys","removedProps","onKeyDown","onKeyUp","isSelectable","emit","multipleSelect","old","end","currentItem","noData","filteredItemsLength","noResults","genFooter","outerProps","inset","padless","applicationProperty","VSheet","app","computedBottom","application","computedLeft","computedRight","isPositioned","absolute","styles","isNaN","bottom","updateApplication","setBackgroundColor","vertical","orientation","$listeners","VTextField","model","chips","clearable","counterSizeString","counterString","hideInput","placeholder","prependIcon","showSize","smallChips","truncateLength","computedCounterValue","fileCount","lazyValue","bytes","internalArrayValue","base","internalValue","get","set","isDirty","isLabelActive","isFocused","file","truncatedText","hasChips","clearableCallback","genChips","genControl","display","genInput","genPrependSlot","genIcon","genSlot","genSelectionText","genSelections","genTextFieldSlot","node","onInput","files","truncateText","charsKeepOneSide","firstIcon","lastIcon","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","genDataItemsPerPageOption","genItemsPerPageSelect","computedIPPO","ippo","auto","genPaginationInfo","genIcons","before","after","expansionPanels","accordion","flat","popout","tile","updateItem","getValue","nextValue","toggleMethod","nextIsActive","groupClasses","isDisabled","isReadonly","registerContent","unregisterContent","registerHeader","vm","unregisterHeader","onClick","isBooted","expansionPanel","disableIconRotate","hideActions","hasMousedown","mousedown","mouseup","open"],"mappings":"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","file":"js/chunk-vendors~ff5aaa04.ea268b7e.js","sourcesContent":["import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\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: {\n type: [String, Number],\n default: 'none',\n },\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: {\n type: [String, Number],\n default: 'auto',\n },\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n isActive: !!this.value,\n stackMinZIndex: 200,\n 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 this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.content.focus()\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: this.maxWidth === 'none' ? undefined : convertToUnit(this.maxWidth),\n width: this.width === 'auto' ? undefined : convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n attrs: { role: 'dialog' },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","import './VDatePickerTitle.sass'\n\n// Components\nimport VIcon from '../VIcon'\n\n// Mixins\nimport PickerButton from '../../mixins/picker-button'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n PickerButton\n/* @vue/component */\n).extend({\n name: 'v-date-picker-title',\n\n props: {\n date: {\n type: String,\n default: '',\n },\n disabled: Boolean,\n readonly: Boolean,\n selectingYear: Boolean,\n value: {\n type: String,\n },\n year: {\n type: [Number, String],\n default: '',\n },\n yearIcon: {\n type: String,\n },\n },\n\n data: () => ({\n isReversing: false,\n }),\n\n computed: {\n computedTransition (): string {\n return this.isReversing ? 'picker-reverse-transition' : 'picker-transition'\n },\n },\n\n watch: {\n value (val: string, prev: string) {\n this.isReversing = val < prev\n },\n },\n\n methods: {\n genYearIcon (): VNode {\n return this.$createElement(VIcon, {\n props: {\n dark: true,\n },\n }, this.yearIcon)\n },\n getYearBtn (): VNode {\n return this.genPickerButton('selectingYear', true, [\n String(this.year),\n this.yearIcon ? this.genYearIcon() : null,\n ], false, 'v-date-picker-title__year')\n },\n genTitleText (): VNode {\n return this.$createElement('transition', {\n props: {\n name: this.computedTransition,\n },\n }, [\n this.$createElement('div', {\n domProps: { innerHTML: this.date || ' ' },\n key: this.value,\n }),\n ])\n },\n genTitleDate (): VNode {\n return this.genPickerButton('selectingYear', false, [this.genTitleText()], false, 'v-date-picker-title__date')\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-date-picker-title',\n class: {\n 'v-date-picker-title--disabled': this.disabled,\n },\n }, [\n this.getYearBtn(),\n this.genTitleDate(),\n ])\n },\n})\n","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 (isAllowed: boolean, isFloating: boolean, isSelected: boolean, isCurrent: boolean) {\n return {\n 'v-size--default': !isFloating,\n 'v-date-picker-table__current': isCurrent,\n 'v-btn--active': isSelected,\n 'v-btn--flat': !isAllowed || this.disabled,\n 'v-btn--text': isSelected === isCurrent,\n 'v-btn--rounded': isFloating,\n 'v-btn--disabled': !isAllowed || this.disabled,\n 'v-btn--outlined': isCurrent && !isSelected,\n ...this.themeClasses,\n }\n },\n genButtonEvents (value: string, isAllowed: boolean, mouseEventType: string) {\n if (this.disabled) return undefined\n\n return 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\n return this.$createElement('button', setColor(color, {\n staticClass: 'v-btn',\n class: this.genButtonClasses(isAllowed && !isOtherMonth, isFloating, isSelected, isCurrent),\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) ||\n (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","import VData from './VData'\n\nexport { VData }\n\nexport default VData\n","import './_grid.sass'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer')\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 VDialog from './VDialog'\n\nexport { VDialog }\nexport default VDialog\n","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\n\ntype ErrorBag = Record\ntype VInputInstance = InstanceType\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.$set(this.errorBag, input._uid, val)\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input._uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i._uid === input._uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found._uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n this.$delete(this.errorBag, found._uid)\n },\n },\n\n render (h): VNode {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$,\n },\n on: {\n submit: (e: Event) => this.$emit('submit', e),\n },\n }, this.$slots.default)\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","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","// Mixins\nimport Delayable from '../../mixins/delayable'\nimport Toggleable from '../../mixins/toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport { VNode, ScopedSlotChildren } from 'vue/types/vnode'\n\nexport default mixins(\n Delayable,\n Toggleable\n /* @vue/component */\n).extend({\n name: 'v-hover',\n\n props: {\n disabled: {\n type: Boolean,\n default: false,\n },\n value: {\n type: Boolean,\n default: undefined,\n },\n },\n\n methods: {\n onMouseEnter () {\n this.runDelay('open')\n },\n onMouseLeave () {\n this.runDelay('close')\n },\n },\n\n render (): VNode {\n if (!this.$scopedSlots.default && this.value === undefined) {\n consoleWarn('v-hover is missing a default scopedSlot or bound value', this)\n\n return null as any\n }\n\n let element: VNode | ScopedSlotChildren\n\n /* istanbul ignore else */\n if (this.$scopedSlots.default) {\n element = this.$scopedSlots.default({ hover: this.isActive })\n }\n\n if (Array.isArray(element) && element.length === 1) {\n element = element[0]\n }\n\n if (!element || Array.isArray(element) || !element.tag) {\n consoleWarn('v-hover should only contain a single element', this)\n\n return element as any\n }\n\n if (!this.disabled) {\n element.data = element.data || {}\n this._g(element.data, {\n mouseenter: this.onMouseEnter,\n mouseleave: this.onMouseLeave,\n })\n }\n\n return element\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","import './_grid.sass'\n\nimport Grid from './grid'\n\nexport default Grid('layout')\n","import './_grid.sass'\n\nimport Grid from './grid'\n\nexport default Grid('flex')\n","import VContainer from './VContainer'\nimport VCol from './VCol'\nimport VRow from './VRow'\nimport VSpacer from './VSpacer'\nimport VLayout from './VLayout'\nimport VFlex from './VFlex'\n\nexport {\n VContainer,\n VCol,\n VRow,\n VSpacer,\n VLayout,\n VFlex,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VContainer,\n VCol,\n VRow,\n VSpacer,\n VLayout,\n VFlex,\n },\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from '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[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 } from '../../util/helpers'\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: VNode[] = props.headers.map((header: DataTableHeader) => {\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots[slotName]\n const regularSlot = computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({\n item: props.item,\n isMobile: false,\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 textAlign = `text-${header.align || 'start'}`\n\n return h('td', {\n class: [\n textAlign,\n header.cellClass,\n {\n 'v-data-table__divider': header.divider,\n },\n ],\n }, children)\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n '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[slotName]\n const regularSlot = 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 }, [\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 VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\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 => x.name === item.name)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) this.multipleSelect(value, emit, selection, index)\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","// Styles\nimport './VFooter.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue/types/vnode'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Applicationable('footer', [\n 'height',\n 'inset',\n ]),\n SSRBootable\n).extend({\n name: 'v-footer',\n\n props: {\n height: {\n default: 'auto',\n type: [Number, String],\n },\n inset: Boolean,\n padless: Boolean,\n tag: {\n type: String,\n default: 'footer',\n },\n },\n\n computed: {\n applicationProperty (): string {\n return this.inset ? 'insetFooter' : 'footer'\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-footer--absolute': this.absolute,\n 'v-footer--fixed': !this.absolute && (this.app || this.fixed),\n 'v-footer--padless': this.padless,\n 'v-footer--inset': this.inset,\n }\n },\n computedBottom (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app\n ? this.$vuetify.application.bottom\n : 0\n },\n computedLeft (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app && this.inset\n ? this.$vuetify.application.left\n : 0\n },\n computedRight (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app && this.inset\n ? this.$vuetify.application.right\n : 0\n },\n isPositioned (): boolean {\n return Boolean(\n this.absolute ||\n this.fixed ||\n this.app\n )\n },\n styles (): object {\n const height = parseInt(this.height)\n\n return {\n ...VSheet.options.computed.styles.call(this),\n height: isNaN(height) ? height : convertToUnit(height),\n left: convertToUnit(this.computedLeft),\n right: convertToUnit(this.computedRight),\n bottom: convertToUnit(this.computedBottom),\n }\n },\n },\n\n methods: {\n updateApplication () {\n const height = parseInt(this.height)\n\n return isNaN(height)\n ? this.$el ? this.$el.clientHeight : 0\n : height\n },\n },\n\n render (h): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-footer',\n class: this.classes,\n style: this.styles,\n })\n\n return h(this.tag, data, this.$slots.default)\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 VForm from './VForm'\n\nexport { VForm }\nexport default VForm\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","// Styles\nimport './VFileInput.sass'\n\n// Extensions\nimport VTextField from '../VTextField'\n\n// Components\nimport { VChip } from '../VChip'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n// Utilities\nimport { deepEqual, humanReadableFileSize, wrapInArray } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport { mergeStyles } from '../../util/mergeData'\n\nexport default VTextField.extend({\n name: 'v-file-input',\n\n model: {\n prop: 'value',\n event: 'change',\n },\n\n props: {\n chips: Boolean,\n clearable: {\n type: Boolean,\n default: true,\n },\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n placeholder: String,\n prependIcon: {\n type: String,\n default: '$file',\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n showSize: {\n type: [Boolean, Number],\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n } as PropValidator,\n smallChips: Boolean,\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n type: {\n type: String,\n default: 'file',\n },\n value: {\n default: undefined,\n validator: val => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n } as PropValidator,\n },\n\n computed: {\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-file-input': true,\n }\n },\n computedCounterValue (): string {\n const fileCount = (this.isMultiple && this.lazyValue)\n ? this.lazyValue.length\n : (this.lazyValue instanceof File) ? 1 : 0\n\n if (!this.showSize) return this.$vuetify.lang.t(this.counterString, fileCount)\n\n const bytes = this.internalArrayValue.reduce((bytes: number, { size = 0 }: File) => {\n return bytes + size\n }, 0)\n\n return this.$vuetify.lang.t(\n this.counterSizeString,\n fileCount,\n humanReadableFileSize(bytes, this.base === 1024)\n )\n },\n internalArrayValue (): File[] {\n return wrapInArray(this.internalValue)\n },\n internalValue: {\n get (): File[] {\n return this.lazyValue\n },\n set (val: File | File[]) {\n this.lazyValue = val\n this.$emit('change', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.internalArrayValue.length > 0\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n isMultiple (): boolean {\n return this.$attrs.hasOwnProperty('multiple')\n },\n text (): string[] {\n if (!this.isDirty && (this.isFocused || !this.hasLabel)) return [this.placeholder]\n\n return this.internalArrayValue.map((file: File) => {\n const {\n name = '',\n size = 0,\n } = file\n\n const truncatedText = this.truncateText(name)\n\n return !this.showSize\n ? truncatedText\n : `${truncatedText} (${humanReadableFileSize(size, this.base === 1024)})`\n })\n },\n base (): 1000 | 1024 | undefined {\n return typeof this.showSize !== 'boolean' ? this.showSize : undefined\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n },\n\n watch: {\n readonly: {\n handler (v) {\n if (v === true) consoleError('readonly is not supported on ', this)\n },\n immediate: true,\n },\n value (v) {\n const value = this.isMultiple ? v : v ? [v] : []\n if (!deepEqual(value, this.$refs.input.files)) {\n // When the input value is changed programatically, clear the\n // internal input's value so that the `onInput` handler\n // can be triggered again if the user re-selects the exact\n // same file(s). Ideally, `input.files` should be\n // manipulated directly but that property is readonly.\n this.$refs.input.value = ''\n }\n },\n },\n\n methods: {\n clearableCallback () {\n this.internalValue = this.isMultiple ? [] : null\n this.$refs.input.value = ''\n },\n genChips () {\n if (!this.isDirty) return []\n\n return this.text.map((text, index) => this.$createElement(VChip, {\n props: { small: this.smallChips },\n on: {\n 'click:close': () => {\n const internalValue = this.internalValue\n internalValue.splice(index, 1)\n this.internalValue = internalValue // Trigger the watcher\n },\n },\n }, [text]))\n },\n genControl () {\n const render = VTextField.options.methods.genControl.call(this)\n\n if (this.hideInput) {\n render.data!.style = mergeStyles(\n render.data!.style,\n { display: 'none' }\n )\n }\n\n return render\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n // We should not be setting value\n // programmatically on the input\n // when it is using type=\"file\"\n delete input.data!.domProps!.value\n\n // This solves an issue in Safari where\n // nothing happens when adding a file\n // do to the input event not firing\n // https://github.com/vuetifyjs/vuetify/issues/7941\n delete input.data!.on!.input\n input.data!.on!.change = this.onInput\n\n return [this.genSelections(), input]\n },\n genPrependSlot () {\n if (!this.prependIcon) return null\n\n const icon = this.genIcon('prepend', () => {\n this.$refs.input.click()\n })\n\n return this.genSlot('prepend', 'outer', [icon])\n },\n genSelectionText (): string[] {\n const length = this.text.length\n\n if (length < 2) return this.text\n if (this.showSize && !this.counter) return [this.computedCounterValue]\n return [this.$vuetify.lang.t(this.counterString, length)]\n },\n genSelections () {\n const children = []\n\n if (this.isDirty && this.$scopedSlots.selection) {\n this.internalArrayValue.forEach((file: File, index: number) => {\n if (!this.$scopedSlots.selection) return\n\n children.push(\n this.$scopedSlots.selection({\n text: this.text[index],\n file,\n index,\n })\n )\n })\n } else {\n children.push(this.hasChips && this.isDirty ? this.genChips() : this.genSelectionText())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-file-input__text',\n class: {\n 'v-file-input__text--placeholder': this.placeholder && !this.isDirty,\n 'v-file-input__text--chips': this.hasChips && !this.$scopedSlots.selection,\n },\n }, children)\n },\n genTextFieldSlot () {\n const node = VTextField.options.methods.genTextFieldSlot.call(this)\n\n node.data!.on = {\n ...(node.data!.on || {}),\n click: () => this.$refs.input.click(),\n }\n\n return node\n },\n onInput (e: Event) {\n const files = [...(e.target as HTMLInputElement).files || []]\n\n this.internalValue = this.isMultiple ? files : files[0]\n\n // Set initialValue here otherwise isFocused\n // watcher in VTextField will emit a change\n // event whenever the component is blurred\n this.initialValue = this.internalValue\n },\n onKeyDown (e: KeyboardEvent) {\n this.$emit('keydown', e)\n },\n truncateText (str: string) {\n if (str.length < Number(this.truncateLength)) return str\n const charsKeepOneSide = Math.floor((Number(this.truncateLength) - 1) / 2)\n return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`\n },\n },\n})\n","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// Styles\nimport './VExpansionPanel.sass'\n\n// Components\nimport { BaseItemGroup, GroupableInstance } from '../VItemGroup/VItemGroup'\nimport VExpansionPanel from './VExpansionPanel'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\ninterface VExpansionPanelInstance extends InstanceType {}\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-expansion-panels',\n\n provide (): object {\n return {\n expansionPanels: this,\n }\n },\n\n props: {\n accordion: Boolean,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n focusable: Boolean,\n inset: Boolean,\n popout: Boolean,\n readonly: Boolean,\n tile: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-expansion-panels': true,\n 'v-expansion-panels--accordion': this.accordion,\n 'v-expansion-panels--flat': this.flat,\n 'v-expansion-panels--hover': this.hover,\n 'v-expansion-panels--focusable': this.focusable,\n 'v-expansion-panels--inset': this.inset,\n 'v-expansion-panels--popout': this.popout,\n 'v-expansion-panels--tile': this.tile,\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('expand')) {\n breaking('expand', 'multiple', this)\n }\n\n /* istanbul ignore next */\n if (\n Array.isArray(this.value) &&\n this.value.length > 0 &&\n typeof this.value[0] === 'boolean'\n ) {\n breaking(':value=\"[true, false, true]\"', ':value=\"[0, 2]\"', this)\n }\n },\n\n methods: {\n updateItem (item: GroupableInstance & VExpansionPanelInstance, index: number) {\n const value = this.getValue(item, index)\n const nextValue = this.getValue(item, index + 1)\n\n item.isActive = this.toggleMethod(value)\n item.nextIsActive = this.toggleMethod(nextValue)\n },\n },\n})\n","// Components\nimport VExpansionPanels from './VExpansionPanels'\nimport VExpansionPanelHeader from './VExpansionPanelHeader'\nimport VExpansionPanelContent from './VExpansionPanelContent'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VExpansionPanelHeaderInstance = InstanceType\ntype VExpansionPanelContentInstance = InstanceType\n\nexport default mixins(\n GroupableFactory<'expansionPanels', typeof VExpansionPanels>('expansionPanels', 'v-expansion-panel', 'v-expansion-panels'),\n RegistrableProvide('expansionPanel', true)\n /* @vue/component */\n).extend({\n name: 'v-expansion-panel',\n\n props: {\n disabled: Boolean,\n readonly: Boolean,\n },\n\n data () {\n return {\n content: null as VExpansionPanelContentInstance | null,\n header: null as VExpansionPanelHeaderInstance | null,\n nextIsActive: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-expansion-panel--active': this.isActive,\n 'v-expansion-panel--next-active': this.nextIsActive,\n 'v-expansion-panel--disabled': this.isDisabled,\n ...this.groupClasses,\n }\n },\n isDisabled (): boolean {\n return this.expansionPanels.disabled || this.disabled\n },\n isReadonly (): boolean {\n return this.expansionPanels.readonly || this.readonly\n },\n },\n\n methods: {\n registerContent (vm: VExpansionPanelContentInstance) {\n this.content = vm\n },\n unregisterContent () {\n this.content = null\n },\n registerHeader (vm: VExpansionPanelHeaderInstance) {\n this.header = vm\n vm.$on('click', this.onClick)\n },\n unregisterHeader () {\n this.header = null\n },\n onClick (e: MouseEvent) {\n if (e.detail) this.header!.$el.blur()\n\n this.$emit('click', e)\n\n this.isReadonly || this.isDisabled || this.toggle()\n },\n toggle () {\n /* istanbul ignore else */\n if (this.content) this.content.isBooted = true\n this.$nextTick(() => this.$emit('change'))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-expansion-panel',\n class: this.classes,\n attrs: {\n 'aria-expanded': String(this.isActive),\n },\n }, getSlot(this))\n },\n})\n","// Components\nimport VExpansionPanel from './VExpansionPanel'\nimport { VExpandTransition } from '../transitions'\n\n// Mixins\nimport Bootable from '../../mixins/bootable'\nimport Colorable from '../../mixins/colorable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, VueConstructor } from 'vue'\n\nconst baseMixins = mixins(\n Bootable,\n Colorable,\n RegistrableInject<'expansionPanel', VueConstructor>('expansionPanel', 'v-expansion-panel-content', 'v-expansion-panel')\n)\n\ninterface options extends ExtractVue {\n expansionPanel: InstanceType\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-expansion-panel-content',\n\n computed: {\n isActive (): boolean {\n return this.expansionPanel.isActive\n },\n },\n\n created () {\n this.expansionPanel.registerContent(this)\n },\n\n beforeDestroy () {\n this.expansionPanel.unregisterContent()\n },\n\n render (h): VNode {\n return h(VExpandTransition, this.showLazyContent(() => [\n h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-expansion-panel-content',\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }), [\n h('div', { class: 'v-expansion-panel-content__wrap' }, getSlot(this)),\n ]),\n ]))\n },\n})\n","// Components\nimport { VFadeTransition } from '../transitions'\nimport VExpansionPanel from './VExpansionPanel'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, VueConstructor } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'expansionPanel', VueConstructor>('expansionPanel', 'v-expansion-panel-header', 'v-expansion-panel')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n expansionPanel: InstanceType\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-expansion-panel-header',\n\n directives: { ripple },\n\n props: {\n disableIconRotate: Boolean,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n hideActions: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: false,\n },\n },\n\n data: () => ({\n hasMousedown: false,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-expansion-panel-header--active': this.isActive,\n 'v-expansion-panel-header--mousedown': this.hasMousedown,\n }\n },\n isActive (): boolean {\n return this.expansionPanel.isActive\n },\n isDisabled (): boolean {\n return this.expansionPanel.isDisabled\n },\n isReadonly (): boolean {\n return this.expansionPanel.isReadonly\n },\n },\n\n created () {\n this.expansionPanel.registerHeader(this)\n },\n\n beforeDestroy () {\n this.expansionPanel.unregisterHeader()\n },\n\n methods: {\n onClick (e: MouseEvent) {\n this.$emit('click', e)\n },\n genIcon () {\n const icon = getSlot(this, 'actions') ||\n [this.$createElement(VIcon, this.expandIcon)]\n\n return this.$createElement(VFadeTransition, [\n this.$createElement('div', {\n staticClass: 'v-expansion-panel-header__icon',\n class: {\n 'v-expansion-panel-header__icon--disable-rotate': this.disableIconRotate,\n },\n directives: [{\n name: 'show',\n value: !this.isDisabled,\n }],\n }, icon),\n ])\n },\n },\n\n render (h): VNode {\n return h('button', this.setBackgroundColor(this.color, {\n staticClass: 'v-expansion-panel-header',\n class: this.classes,\n attrs: {\n tabindex: this.isDisabled ? -1 : null,\n type: 'button',\n 'aria-expanded': this.isActive,\n },\n directives: [{\n name: 'ripple',\n value: this.ripple,\n }],\n on: {\n ...this.$listeners,\n click: this.onClick,\n mousedown: () => (this.hasMousedown = true),\n mouseup: () => (this.hasMousedown = false),\n },\n }), [\n getSlot(this, 'default', { open: this.isActive }, true),\n this.hideActions || this.genIcon(),\n ])\n },\n})\n"],"sourceRoot":""}