{"version":3,"file":"js/chunk-vendors-9aa0cdd5.a78479cf.js","mappings":"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","sources":["webpack://i4proportal/../../../src/components/VBtn/VBtn.ts","webpack://i4proportal/../../../src/components/VBtn/index.ts","webpack://i4proportal/../../../src/components/VCard/VCard.ts","webpack://i4proportal/../../../src/components/VCard/index.ts","webpack://i4proportal/../../../src/components/VCarousel/VCarousel.ts","webpack://i4proportal/../../../src/components/VCarousel/VCarouselItem.ts","webpack://i4proportal/../../../src/components/VCheckbox/VCheckbox.ts","webpack://i4proportal/../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack://i4proportal/../../../src/components/VChipGroup/VChipGroup.ts","webpack://i4proportal/../../../src/components/VChip/VChip.ts","webpack://i4proportal/../../../src/components/VChip/index.ts","webpack://i4proportal/../../../../src/components/VColorPicker/util/index.ts","webpack://i4proportal/../../../src/components/VColorPicker/VColorPickerPreview.ts","webpack://i4proportal/../../../src/components/VColorPicker/VColorPickerCanvas.ts","webpack://i4proportal/../../../src/components/VColorPicker/VColorPickerEdit.ts","webpack://i4proportal/../../../src/components/VColorPicker/VColorPickerSwatches.ts","webpack://i4proportal/../../../src/components/VColorPicker/VColorPicker.ts","webpack://i4proportal/../../../src/components/VCombobox/VCombobox.ts","webpack://i4proportal/../../../src/components/VCounter/VCounter.ts","webpack://i4proportal/../../../src/components/VCounter/index.ts","webpack://i4proportal/../../../src/components/VDataIterator/VDataFooter.ts","webpack://i4proportal/../../../src/components/VDataIterator/VDataIterator.ts","webpack://i4proportal/../../../../src/components/VDataTable/mixins/header.ts","webpack://i4proportal/../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack://i4proportal/../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack://i4proportal/../../../src/components/VDataTable/VDataTableHeader.ts","webpack://i4proportal/../../../src/components/VDataTable/Row.ts","webpack://i4proportal/../../../src/components/VDataTable/RowGroup.ts","webpack://i4proportal/../../../src/components/VDataTable/MobileRow.ts","webpack://i4proportal/../../../src/components/VDataTable/VDataTable.ts","webpack://i4proportal/../../../src/components/VDataTable/VSimpleTable.ts","webpack://i4proportal/../../../src/components/VData/VData.ts","webpack://i4proportal/../../../src/components/VDatePicker/VDatePickerTitle.ts","webpack://i4proportal/../../../../src/components/VDatePicker/util/createNativeLocaleFormatter.ts","webpack://i4proportal/../../../../src/components/VDatePicker/util/monthChange.ts","webpack://i4proportal/../../../src/components/VDatePicker/VDatePickerHeader.ts","webpack://i4proportal/../../../../src/components/VDatePicker/util/eventHelpers.ts","webpack://i4proportal/../../../../src/components/VDatePicker/util/sanitizeDateString.ts","webpack://i4proportal/../../../../src/components/VDatePicker/util/isDateAllowed.ts","webpack://i4proportal/../../../../src/components/VDatePicker/mixins/date-picker-table.ts","webpack://i4proportal/../../../src/components/VDatePicker/VDatePickerDateTable.ts","webpack://i4proportal/../../../src/components/VDatePicker/VDatePickerMonthTable.ts","webpack://i4proportal/../../../src/components/VDatePicker/VDatePickerYears.ts","webpack://i4proportal/../../../../src/components/VCalendar/util/timestamp.ts","webpack://i4proportal/../../../src/components/VDatePicker/VDatePicker.ts","webpack://i4proportal/../../../../src/components/VDatePicker/util/pad.ts","webpack://i4proportal/../../../src/components/VDialog/VDialog.ts","webpack://i4proportal/../../../src/components/VDivider/VDivider.ts","webpack://i4proportal/../../../src/components/VDivider/index.ts"],"sourcesContent":["// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, getSlot(this))\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, getSlot(this, 'loader') || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n getSlot(this),\n ])\n },\n})\n","import VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\n}\n","// Styles\nimport './VCarousel.sass'\n\n// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport VProgressLinear from '../VProgressLinear'\n\n// Mixins\n// TODO: Move this into core components v2.0\nimport ButtonGroup from '../../mixins/button-group'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\nexport default VWindow.extend({\n name: 'v-carousel',\n\n props: {\n continuous: {\n type: Boolean,\n default: true,\n },\n cycle: Boolean,\n delimiterIcon: {\n type: String,\n default: '$delimiter',\n },\n height: {\n type: [Number, String],\n default: 500,\n },\n hideDelimiters: Boolean,\n hideDelimiterBackground: Boolean,\n interval: {\n type: [Number, String],\n default: 6000,\n validator: (value: string | number) => value > 0,\n },\n mandatory: {\n type: Boolean,\n default: true,\n },\n progress: Boolean,\n progressColor: String,\n showArrows: {\n type: Boolean,\n default: true,\n },\n verticalDelimiters: {\n type: String as PropType<'' | 'left' | 'right'>,\n default: undefined,\n },\n },\n\n // pass down the parent's theme\n provide (): object {\n return {\n parentTheme: this.theme,\n }\n },\n\n data () {\n return {\n internalHeight: this.height,\n slideTimeout: undefined as number | undefined,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.options.computed.classes.call(this),\n 'v-carousel': true,\n 'v-carousel--hide-delimiter-background': this.hideDelimiterBackground,\n 'v-carousel--vertical-delimiters': this.isVertical,\n }\n },\n isDark (): boolean {\n return this.dark || !this.light\n },\n isVertical (): boolean {\n return this.verticalDelimiters != null\n },\n },\n\n watch: {\n internalValue: 'restartTimeout',\n interval: 'restartTimeout',\n height (val, oldVal) {\n if (val === oldVal || !val) return\n this.internalHeight = val\n },\n cycle (val) {\n if (val) {\n this.restartTimeout()\n } else {\n clearTimeout(this.slideTimeout)\n this.slideTimeout = undefined\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('hide-controls')) {\n breaking('hide-controls', ':show-arrows=\"false\"', this)\n }\n },\n\n mounted () {\n this.startTimeout()\n },\n\n methods: {\n genControlIcons () {\n if (this.isVertical) return null\n\n return VWindow.options.methods.genControlIcons.call(this)\n },\n genDelimiters (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-carousel__controls',\n style: {\n left: this.verticalDelimiters === 'left' && this.isVertical ? 0 : 'auto',\n right: this.verticalDelimiters === 'right' ? 0 : 'auto',\n },\n }, [this.genItems()])\n },\n genItems (): VNode {\n const length = this.items.length\n const children = []\n\n for (let i = 0; i < length; i++) {\n const child = this.$createElement(VBtn, {\n staticClass: 'v-carousel__controls__item',\n attrs: {\n 'aria-label': this.$vuetify.lang.t('$vuetify.carousel.ariaLabel.delimiter', i + 1, length),\n },\n props: {\n icon: true,\n small: true,\n value: this.getValue(this.items[i], i),\n },\n key: i,\n }, [\n this.$createElement(VIcon, {\n props: { size: 18 },\n }, this.delimiterIcon),\n ])\n\n children.push(child)\n }\n\n return this.$createElement(ButtonGroup, {\n props: {\n value: this.internalValue,\n mandatory: this.mandatory,\n },\n on: {\n change: (val: unknown) => {\n this.internalValue = val\n },\n },\n }, children)\n },\n genProgress () {\n return this.$createElement(VProgressLinear, {\n staticClass: 'v-carousel__progress',\n props: {\n color: this.progressColor,\n value: (this.internalIndex + 1) / this.items.length * 100,\n },\n })\n },\n restartTimeout () {\n this.slideTimeout && clearTimeout(this.slideTimeout)\n this.slideTimeout = undefined\n\n window.requestAnimationFrame(this.startTimeout)\n },\n startTimeout () {\n if (!this.cycle) return\n\n this.slideTimeout = window.setTimeout(this.next, +this.interval > 0 ? +this.interval : 6000)\n },\n },\n\n render (h): VNode {\n const render = VWindow.options.render.call(this, h)\n\n render.data!.style = `height: ${convertToUnit(this.height)};`\n\n /* istanbul ignore else */\n if (!this.hideDelimiters) {\n render.children!.push(this.genDelimiters())\n }\n\n /* istanbul ignore else */\n if (this.progress || this.progressColor) {\n render.children!.push(this.genProgress())\n }\n\n return render\n },\n})\n","// Extensions\nimport VWindowItem from '../VWindow/VWindowItem'\n\n// Components\nimport { VImg } from '../VImg'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\nimport Routable from '../../mixins/routable'\n\n// Types\nconst baseMixins = mixins(\n VWindowItem,\n Routable\n)\n\ninterface options extends ExtractVue {\n parentTheme: {\n isDark: boolean\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-carousel-item',\n\n inject: {\n parentTheme: {\n default: {\n isDark: false,\n },\n },\n },\n\n // pass down the parent's theme\n provide (): object {\n return {\n theme: this.parentTheme,\n }\n },\n\n inheritAttrs: false,\n\n methods: {\n genDefaultSlot () {\n return [\n this.$createElement(VImg, {\n staticClass: 'v-carousel__item',\n props: {\n ...this.$attrs,\n height: this.windowGroup.internalHeight,\n },\n on: this.$listeners,\n scopedSlots: {\n placeholder: this.$scopedSlots.placeholder,\n },\n }, getSlot(this)),\n ]\n },\n genWindowItem () {\n const { tag, data } = this.generateRouteLink()\n\n data.staticClass = 'v-window-item'\n data.directives!.push({\n name: 'show',\n value: this.isActive,\n })\n\n return this.$createElement(tag, data, this.genDefaultSlot())\n },\n },\n})\n","// Styles\nimport './VCheckbox.sass'\nimport '../../styles/components/_selection-controls.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VInput from '../VInput'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-checkbox',\n\n props: {\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n },\n\n data () {\n return {\n inputIndeterminate: this.indeterminate,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls': true,\n 'v-input--checkbox': true,\n 'v-input--indeterminate': this.inputIndeterminate,\n }\n },\n computedIcon (): string {\n if (this.inputIndeterminate) {\n return this.indeterminateIcon\n } else if (this.isActive) {\n return this.onIcon\n } else {\n return this.offIcon\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.isDisabled && !this.inputIndeterminate) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n },\n\n watch: {\n indeterminate (val) {\n // https://github.com/vuetifyjs/vuetify/issues/8270\n this.$nextTick(() => (this.inputIndeterminate = val))\n },\n inputIndeterminate (val) {\n this.$emit('update:indeterminate', val)\n },\n isActive () {\n if (!this.indeterminate) return\n this.inputIndeterminate = false\n },\n },\n\n methods: {\n genCheckbox () {\n const { title, ...checkboxAttrs } = this.attrs$\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.dense,\n dark: this.dark,\n light: this.light,\n },\n }), this.computedIcon),\n this.genInput('checkbox', {\n ...checkboxAttrs,\n 'aria-checked': this.inputIndeterminate\n ? 'mixed'\n : this.isActive.toString(),\n }),\n this.genRipple(this.setTextColor(this.rippleState)),\n ])\n },\n genDefaultSlot () {\n return [\n this.genCheckbox(),\n this.genLabel(),\n ]\n },\n },\n})\n","import './VSimpleCheckbox.sass'\n\nimport Ripple from '../../directives/ripple'\n\nimport Vue, { VNode, VNodeDirective } from 'vue'\nimport { VIcon } from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-simple-checkbox',\n\n functional: true,\n\n directives: {\n Ripple,\n },\n\n props: {\n ...Colorable.options.props,\n ...Themeable.options.props,\n disabled: Boolean,\n ripple: {\n type: Boolean,\n default: true,\n },\n value: Boolean,\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n },\n\n render (h, { props, data, listeners }): VNode {\n const children = []\n let icon = props.offIcon\n if (props.indeterminate) icon = props.indeterminateIcon\n else if (props.value) icon = props.onIcon\n\n children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n props: {\n disabled: props.disabled,\n dark: props.dark,\n light: props.light,\n },\n }), icon))\n\n if (props.ripple && !props.disabled) {\n const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n staticClass: 'v-input--selection-controls__ripple',\n directives: [{\n def: Ripple,\n name: 'ripple',\n value: { center: true },\n }] as VNodeDirective[],\n }))\n\n children.push(ripple)\n }\n\n return h('div',\n mergeData(data, {\n class: {\n 'v-simple-checkbox': true,\n 'v-simple-checkbox--disabled': props.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (data.on && data.on.input && !props.disabled) {\n wrapInArray(data.on.input).forEach(f => f(!props.value))\n }\n },\n },\n }), [\n h('div', { staticClass: 'v-input--selection-controls__input' }, children),\n ])\n },\n})\n","// Styles\nimport './VChipGroup.sass'\n\n// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n BaseSlideGroup,\n Colorable\n).extend({\n name: 'v-chip-group',\n\n provide () {\n return {\n chipGroup: this,\n }\n },\n\n props: {\n column: Boolean,\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-chip-group': true,\n 'v-chip-group--column': this.column,\n }\n },\n },\n\n watch: {\n column (val) {\n if (val) this.scrollOffset = 0\n\n this.$nextTick(this.onResize)\n },\n },\n\n methods: {\n genData () {\n return this.setTextColor(this.color, {\n ...BaseSlideGroup.options.methods.genData.call(this),\n })\n },\n },\n})\n","// Styles\nimport './VChip.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Components\nimport { VExpandXTransition } from '../transitions'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport { breaking } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { PropValidator, PropType } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Sizeable,\n Routable,\n Themeable,\n GroupableFactory('chipGroup'),\n ToggleableFactory('inputValue')\n).extend({\n name: 'v-chip',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.chipGroup) return ''\n\n return this.chipGroup.activeClass\n },\n } as any as PropValidator,\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span',\n },\n textColor: String,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-chip--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses,\n }\n },\n hasClose (): boolean {\n return Boolean(this.close)\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.chipGroup\n )\n },\n },\n\n created () {\n const breakingProps = [\n ['outline', 'outlined'],\n ['selected', 'input-value'],\n ['value', 'active'],\n ['@input', '@active.sync'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n\n this.chipGroup && this.toggle()\n },\n genFilter (): VNode {\n const children = []\n\n if (this.isActive) {\n children.push(\n this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: { left: true },\n }, this.filterIcon)\n )\n }\n\n return this.$createElement(VExpandXTransition, children)\n },\n genClose (): VNode {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true,\n size: 18,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n this.$emit('click:close')\n this.$emit('update:active', false)\n },\n },\n }, this.closeIcon)\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-chip__content',\n }, [\n this.filter && this.genFilter(),\n getSlot(this),\n this.hasClose && this.genClose(),\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genContent()]\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs!.tabindex,\n }\n data.directives!.push({\n name: 'show',\n value: this.active,\n })\n data = this.setBackgroundColor(this.color, data)\n\n const color = this.textColor || (this.outlined && this.color)\n\n return h(tag, this.setTextColor(color, data), children)\n },\n})\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","// Utilities\nimport {\n HSVA,\n HSVAtoRGBA,\n HSVAtoHex,\n RGBA,\n Hex,\n RGBAtoHSVA,\n HexToHSVA,\n HSLA,\n HSVAtoHSLA,\n RGBAtoHex,\n HSLAtoHSVA,\n parseHex,\n Hexa,\n} from '../../../util/colorUtils'\n\nexport interface VColorPickerColor {\n alpha: number\n hex: Hex\n hexa: Hexa\n hsla: HSLA\n hsva: HSVA\n hue: number\n rgba: RGBA\n}\n\nexport function fromHSVA (hsva: HSVA): VColorPickerColor {\n hsva = { ...hsva }\n const hexa = HSVAtoHex(hsva)\n const hsla = HSVAtoHSLA(hsva)\n const rgba = HSVAtoRGBA(hsva)\n return {\n alpha: hsva.a,\n hex: hexa.substr(0, 7),\n hexa,\n hsla,\n hsva,\n hue: hsva.h,\n rgba,\n }\n}\n\nexport function fromHSLA (hsla: HSLA): VColorPickerColor {\n const hsva = HSLAtoHSVA(hsla)\n const hexa = HSVAtoHex(hsva)\n const rgba = HSVAtoRGBA(hsva)\n return {\n alpha: hsva.a,\n hex: hexa.substr(0, 7),\n hexa,\n hsla,\n hsva,\n hue: hsva.h,\n rgba,\n }\n}\n\nexport function fromRGBA (rgba: RGBA): VColorPickerColor {\n const hsva = RGBAtoHSVA(rgba)\n const hexa = RGBAtoHex(rgba)\n const hsla = HSVAtoHSLA(hsva)\n return {\n alpha: hsva.a,\n hex: hexa.substr(0, 7),\n hexa,\n hsla,\n hsva,\n hue: hsva.h,\n rgba,\n }\n}\n\nexport function fromHexa (hexa: Hexa): VColorPickerColor {\n const hsva = HexToHSVA(hexa)\n const hsla = HSVAtoHSLA(hsva)\n const rgba = HSVAtoRGBA(hsva)\n return {\n alpha: hsva.a,\n hex: hexa.substr(0, 7),\n hexa,\n hsla,\n hsva,\n hue: hsva.h,\n rgba,\n }\n}\n\nexport function fromHex (hex: Hex): VColorPickerColor {\n return fromHexa(parseHex(hex))\n}\n\nfunction has (obj: object, key: string[]) {\n return key.every(k => obj.hasOwnProperty(k))\n}\n\nexport function parseColor (color: any, oldColor: VColorPickerColor | null) {\n if (!color) return fromRGBA({ r: 255, g: 0, b: 0, a: 1 })\n\n if (typeof color === 'string') {\n if (color === 'transparent') return fromHexa('#00000000')\n\n const hex = parseHex(color)\n\n if (oldColor && hex === oldColor.hexa) return oldColor\n else return fromHexa(hex)\n }\n\n if (typeof color === 'object') {\n if (color.hasOwnProperty('alpha')) return color\n\n const a = color.hasOwnProperty('a') ? parseFloat(color.a) : 1\n\n if (has(color, ['r', 'g', 'b'])) {\n if (oldColor && color === oldColor.rgba) return oldColor\n else return fromRGBA({ ...color, a })\n } else if (has(color, ['h', 's', 'l'])) {\n if (oldColor && color === oldColor.hsla) return oldColor\n else return fromHSLA({ ...color, a })\n } else if (has(color, ['h', 's', 'v'])) {\n if (oldColor && color === oldColor.hsva) return oldColor\n else return fromHSVA({ ...color, a })\n }\n }\n\n return fromRGBA({ r: 255, g: 0, b: 0, a: 1 })\n}\n\nfunction stripAlpha (color: any, stripAlpha: boolean) {\n if (stripAlpha) {\n const { a, ...rest } = color\n\n return rest\n }\n\n return color\n}\n\nexport function extractColor (color: VColorPickerColor, input: any) {\n if (input == null) return color\n\n if (typeof input === 'string') {\n return input.length === 7 ? color.hex : color.hexa\n }\n\n if (typeof input === 'object') {\n const shouldStrip = typeof input.a === 'number' && input.a === 0 ? !!input.a : !input.a\n if (has(input, ['r', 'g', 'b'])) return stripAlpha(color.rgba, shouldStrip)\n else if (has(input, ['h', 's', 'l'])) return stripAlpha(color.hsla, shouldStrip)\n else if (has(input, ['h', 's', 'v'])) return stripAlpha(color.hsva, shouldStrip)\n }\n\n return color\n}\n\nexport function hasAlpha (color: any) {\n if (!color) return false\n\n if (typeof color === 'string') {\n return color.length > 7\n }\n\n if (typeof color === 'object') {\n return has(color, ['a']) || has(color, ['alpha'])\n }\n\n return false\n}\n","// Styles\nimport './VColorPickerPreview.sass'\n\n// Components\nimport VSlider from '../VSlider/VSlider'\n\n// Utilities\nimport { RGBtoCSS, RGBAtoCSS } from '../../util/colorUtils'\n\n// Types\nimport Vue, { VNode, VNodeData, PropType } from 'vue'\nimport { VColorPickerColor, fromHSVA } from './util'\n\nexport default Vue.extend({\n name: 'v-color-picker-preview',\n\n props: {\n color: Object as PropType,\n disabled: Boolean,\n hideAlpha: Boolean,\n },\n\n methods: {\n genAlpha (): VNode {\n return this.genTrack({\n staticClass: 'v-color-picker__alpha',\n props: {\n thumbColor: 'grey lighten-2',\n hideDetails: true,\n value: this.color.alpha,\n step: 0,\n min: 0,\n max: 1,\n },\n style: {\n backgroundImage: this.disabled\n ? undefined\n : `linear-gradient(to ${this.$vuetify.rtl ? 'left' : 'right'}, transparent, ${RGBtoCSS(this.color.rgba)})`,\n },\n on: {\n input: (val: number) => this.color.alpha !== val && this.$emit('update:color', fromHSVA({ ...this.color.hsva, a: val })),\n },\n })\n },\n genSliders (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-color-picker__sliders',\n }, [\n this.genHue(),\n !this.hideAlpha && this.genAlpha(),\n ])\n },\n genDot (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-color-picker__dot',\n }, [\n this.$createElement('div', {\n style: {\n background: RGBAtoCSS(this.color.rgba),\n },\n }),\n ])\n },\n genHue (): VNode {\n return this.genTrack({\n staticClass: 'v-color-picker__hue',\n props: {\n thumbColor: 'grey lighten-2',\n hideDetails: true,\n value: this.color.hue,\n step: 0,\n min: 0,\n max: 360,\n },\n on: {\n input: (val: number) => this.color.hue !== val && this.$emit('update:color', fromHSVA({ ...this.color.hsva, h: val })),\n },\n })\n },\n genTrack (options: VNodeData): VNode {\n return this.$createElement(VSlider, {\n class: 'v-color-picker__track',\n ...options,\n props: {\n disabled: this.disabled,\n ...options.props,\n },\n })\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-color-picker__preview',\n class: {\n 'v-color-picker__preview--hide-alpha': this.hideAlpha,\n },\n }, [\n this.genDot(),\n this.genSliders(),\n ])\n },\n})\n","// Styles\nimport './VColorPickerCanvas.sass'\n\n// Helpers\nimport { clamp, convertToUnit } from '../../util/helpers'\nimport { fromHSVA, VColorPickerColor, fromRGBA } from './util'\n\n// Types\nimport Vue, { VNode, PropType } from 'vue'\n\nexport default Vue.extend({\n name: 'v-color-picker-canvas',\n\n props: {\n color: {\n type: Object as PropType,\n default: () => fromRGBA({ r: 255, g: 0, b: 0, a: 1 }),\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n height: {\n type: [Number, String],\n default: 150,\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n data () {\n return {\n boundingRect: {\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n } as ClientRect,\n }\n },\n\n computed: {\n dot (): { x: number, y: number} {\n if (!this.color) return { x: 0, y: 0 }\n\n return {\n x: this.color.hsva.s * parseInt(this.width, 10),\n y: (1 - this.color.hsva.v) * parseInt(this.height, 10),\n }\n },\n },\n\n watch: {\n 'color.hue': 'updateCanvas',\n },\n\n mounted () {\n this.updateCanvas()\n },\n\n methods: {\n emitColor (x: number, y: number) {\n const { left, top, width, height } = this.boundingRect\n\n this.$emit('update:color', fromHSVA({\n h: this.color.hue,\n s: clamp(x - left, 0, width) / width,\n v: 1 - clamp(y - top, 0, height) / height,\n a: this.color.alpha,\n }))\n },\n updateCanvas () {\n if (!this.color) return\n\n const canvas = this.$refs.canvas as HTMLCanvasElement\n const ctx = canvas.getContext('2d')\n\n if (!ctx) return\n\n const saturationGradient = ctx.createLinearGradient(0, 0, canvas.width, 0)\n saturationGradient.addColorStop(0, 'hsla(0, 0%, 100%, 1)') // white\n saturationGradient.addColorStop(1, `hsla(${this.color.hue}, 100%, 50%, 1)`)\n ctx.fillStyle = saturationGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n\n const valueGradient = ctx.createLinearGradient(0, 0, 0, canvas.height)\n valueGradient.addColorStop(0, 'hsla(0, 0%, 100%, 0)') // transparent\n valueGradient.addColorStop(1, 'hsla(0, 0%, 0%, 1)') // black\n ctx.fillStyle = valueGradient\n ctx.fillRect(0, 0, canvas.width, canvas.height)\n },\n handleClick (e: MouseEvent) {\n if (this.disabled) return\n\n this.boundingRect = this.$el.getBoundingClientRect()\n this.emitColor(e.clientX, e.clientY)\n },\n handleMouseDown (e: MouseEvent) {\n // To prevent selection while moving cursor\n e.preventDefault()\n\n if (this.disabled) return\n\n this.boundingRect = this.$el.getBoundingClientRect()\n\n window.addEventListener('mousemove', this.handleMouseMove)\n window.addEventListener('mouseup', this.handleMouseUp)\n },\n handleMouseMove (e: MouseEvent) {\n if (this.disabled) return\n\n this.emitColor(e.clientX, e.clientY)\n },\n handleMouseUp () {\n window.removeEventListener('mousemove', this.handleMouseMove)\n window.removeEventListener('mouseup', this.handleMouseUp)\n },\n genCanvas (): VNode {\n return this.$createElement('canvas', {\n ref: 'canvas',\n attrs: {\n width: this.width,\n height: this.height,\n },\n })\n },\n genDot (): VNode {\n const radius = parseInt(this.dotSize, 10) / 2\n const x = convertToUnit(this.dot.x - radius)\n const y = convertToUnit(this.dot.y - radius)\n\n return this.$createElement('div', {\n staticClass: 'v-color-picker__canvas-dot',\n class: {\n 'v-color-picker__canvas-dot--disabled': this.disabled,\n },\n style: {\n width: convertToUnit(this.dotSize),\n height: convertToUnit(this.dotSize),\n transform: `translate(${x}, ${y})`,\n },\n })\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-color-picker__canvas',\n style: {\n width: convertToUnit(this.width),\n height: convertToUnit(this.height),\n },\n on: {\n click: this.handleClick,\n mousedown: this.handleMouseDown,\n },\n }, [\n this.genCanvas(),\n this.genDot(),\n ])\n },\n})\n","// Styles\nimport './VColorPickerEdit.sass'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Helpers\nimport { parseHex } from '../../util/colorUtils'\n\n// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { VColorPickerColor, fromRGBA, fromHexa, fromHSLA } from './util'\n\ntype Input = [string, number, string]\n\nexport type Mode = {\n inputs?: Input[]\n from: Function\n}\n\nexport const modes = {\n rgba: {\n inputs: [\n ['r', 255, 'int'],\n ['g', 255, 'int'],\n ['b', 255, 'int'],\n ['a', 1, 'float'],\n ],\n from: fromRGBA,\n },\n hsla: {\n inputs: [\n ['h', 360, 'int'],\n ['s', 1, 'float'],\n ['l', 1, 'float'],\n ['a', 1, 'float'],\n ],\n from: fromHSLA,\n },\n hexa: {\n from: fromHexa,\n },\n} as { [key: string]: Mode }\n\nexport default Vue.extend({\n name: 'v-color-picker-edit',\n\n props: {\n color: Object as PropType,\n disabled: Boolean,\n hideAlpha: Boolean,\n hideModeSwitch: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n },\n\n data () {\n return {\n modes,\n internalMode: this.mode,\n }\n },\n\n computed: {\n currentMode (): Mode {\n return this.modes[this.internalMode]\n },\n },\n\n watch: {\n mode (mode) {\n this.internalMode = mode\n },\n },\n\n created () {\n this.internalMode = this.mode\n },\n\n methods: {\n getValue (v: any, type: string) {\n if (type === 'float') return Math.round(v * 100) / 100\n else if (type === 'int') return Math.round(v)\n else return 0\n },\n parseValue (v: string, type: string) {\n if (type === 'float') return parseFloat(v)\n else if (type === 'int') return parseInt(v, 10) || 0\n else return 0\n },\n changeMode () {\n const modes = Object.keys(this.modes)\n const index = modes.indexOf(this.internalMode)\n const newMode = modes[(index + 1) % modes.length]\n this.internalMode = newMode\n this.$emit('update:mode', newMode)\n },\n genInput (target: string, attrs: any, value: any, on: any): VNode {\n return this.$createElement('div', {\n staticClass: 'v-color-picker__input',\n }, [\n this.$createElement('input', {\n key: target,\n attrs,\n domProps: {\n value,\n },\n on,\n }),\n this.$createElement('span', target.toUpperCase()),\n ])\n },\n genInputs (): VNode[] | VNode {\n if (this.internalMode === 'hexa') {\n const hex = this.color.hexa\n const value = this.hideAlpha && hex.endsWith('FF') ? hex.substr(0, 7) : hex\n return this.genInput(\n 'hex',\n {\n maxlength: this.hideAlpha ? 7 : 9,\n disabled: this.disabled,\n },\n value,\n {\n change: (e: Event) => {\n const el = e.target as HTMLInputElement\n this.$emit('update:color', this.currentMode.from(parseHex(el.value)))\n },\n }\n )\n } else {\n const inputs = this.hideAlpha ? this.currentMode.inputs!.slice(0, -1) : this.currentMode.inputs!\n return inputs.map(([target, max, type]) => {\n const value = this.color[this.internalMode as keyof VColorPickerColor] as any\n return this.genInput(\n target,\n {\n type: 'number',\n min: 0,\n max,\n step: type === 'float' ? '0.01' : type === 'int' ? '1' : undefined,\n disabled: this.disabled,\n },\n this.getValue(value[target], type),\n {\n input: (e: Event) => {\n const el = e.target as HTMLInputElement\n const newVal = this.parseValue(el.value || '0', type)\n\n this.$emit('update:color', this.currentMode.from(\n Object.assign({}, value, { [target]: newVal }),\n this.color.alpha\n ))\n },\n }\n )\n })\n }\n },\n genSwitch (): VNode {\n return this.$createElement(VBtn, {\n props: {\n small: true,\n icon: true,\n disabled: this.disabled,\n },\n on: {\n click: this.changeMode,\n },\n }, [\n this.$createElement(VIcon, '$unfold'),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-color-picker__edit',\n }, [\n this.genInputs(),\n !this.hideModeSwitch && this.genSwitch(),\n ])\n },\n})\n","// Styles\nimport './VColorPickerSwatches.sass'\n\n// Components\nimport VIcon from '../VIcon'\n\n// Helpers\nimport colors from '../../util/colors'\nimport { VColorPickerColor, fromHex, parseColor } from './util'\nimport { convertToUnit, deepEqual } from '../../util/helpers'\nimport mixins from '../../util/mixins'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode, PropType } from 'vue'\nimport { contrastRatio } from '../../util/colorUtils'\n\nfunction parseDefaultColors (colors: Record>) {\n return Object.keys(colors).map(key => {\n const color = colors[key]\n return color.base ? [\n color.base,\n color.darken4,\n color.darken3,\n color.darken2,\n color.darken1,\n color.lighten1,\n color.lighten2,\n color.lighten3,\n color.lighten4,\n color.lighten5,\n ] : [\n color.black,\n color.white,\n color.transparent,\n ]\n })\n}\n\nconst white = fromHex('#FFFFFF').rgba\nconst black = fromHex('#000000').rgba\n\nexport default mixins(Themeable).extend({\n name: 'v-color-picker-swatches',\n\n props: {\n swatches: {\n type: Array as PropType,\n default: () => parseDefaultColors(colors),\n },\n disabled: Boolean,\n color: Object as PropType,\n maxWidth: [Number, String],\n maxHeight: [Number, String],\n },\n\n methods: {\n genColor (color: string) {\n const content = this.$createElement('div', {\n style: {\n background: color,\n },\n }, [\n deepEqual(this.color, parseColor(color, null)) && this.$createElement(VIcon, {\n props: {\n small: true,\n dark: contrastRatio(this.color.rgba, white) > 2 && this.color.alpha > 0.5,\n light: contrastRatio(this.color.rgba, black) > 2 && this.color.alpha > 0.5,\n },\n }, '$success'),\n ])\n\n return this.$createElement('div', {\n staticClass: 'v-color-picker__color',\n on: {\n // TODO: Less hacky way of catching transparent\n click: () => this.disabled || this.$emit('update:color', fromHex(color === 'transparent' ? '#00000000' : color)),\n },\n }, [content])\n },\n genSwatches () {\n return this.swatches.map(swatch => {\n const colors = swatch.map(this.genColor)\n\n return this.$createElement('div', {\n staticClass: 'v-color-picker__swatch',\n }, colors)\n })\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-color-picker__swatches',\n style: {\n maxWidth: convertToUnit(this.maxWidth),\n maxHeight: convertToUnit(this.maxHeight),\n },\n }, [\n this.$createElement('div', this.genSwatches()),\n ])\n },\n})\n","// Styles\nimport './VColorPicker.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\nimport VColorPickerPreview from './VColorPickerPreview'\nimport VColorPickerCanvas from './VColorPickerCanvas'\nimport VColorPickerEdit, { Mode, modes } from './VColorPickerEdit'\nimport VColorPickerSwatches from './VColorPickerSwatches'\n\n// Helpers\nimport { VColorPickerColor, parseColor, fromRGBA, extractColor, hasAlpha } from './util'\nimport mixins from '../../util/mixins'\nimport { deepEqual } from '../../util/helpers'\n\n// Mixins\nimport Elevatable from '../../mixins/elevatable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\nexport default mixins(Elevatable, Themeable).extend({\n name: 'v-color-picker',\n\n props: {\n canvasHeight: {\n type: [String, Number],\n default: 150,\n },\n disabled: Boolean,\n dotSize: {\n type: [Number, String],\n default: 10,\n },\n flat: Boolean,\n hideCanvas: Boolean,\n hideSliders: Boolean,\n hideInputs: Boolean,\n hideModeSwitch: Boolean,\n mode: {\n type: String,\n default: 'rgba',\n validator: (v: string) => Object.keys(modes).includes(v),\n },\n showSwatches: Boolean,\n swatches: Array as PropType,\n swatchesMaxHeight: {\n type: [Number, String],\n default: 150,\n },\n value: {\n type: [Object, String],\n },\n width: {\n type: [Number, String],\n default: 300,\n },\n },\n\n data: () => ({\n internalValue: fromRGBA({ r: 255, g: 0, b: 0, a: 1 }),\n }),\n\n computed: {\n hideAlpha (): boolean {\n if (!this.value) return false\n\n return !hasAlpha(this.value)\n },\n },\n\n watch: {\n value: {\n handler (color: any) {\n this.updateColor(parseColor(color, this.internalValue))\n },\n immediate: true,\n },\n },\n\n methods: {\n updateColor (color: VColorPickerColor) {\n this.internalValue = color\n const value = extractColor(this.internalValue, this.value)\n\n if (!deepEqual(value, this.value)) {\n this.$emit('input', value)\n this.$emit('update:color', this.internalValue)\n }\n },\n genCanvas (): VNode {\n return this.$createElement(VColorPickerCanvas, {\n props: {\n color: this.internalValue,\n disabled: this.disabled,\n dotSize: this.dotSize,\n width: this.width,\n height: this.canvasHeight,\n },\n on: {\n 'update:color': this.updateColor,\n },\n })\n },\n genControls (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-color-picker__controls',\n }, [\n !this.hideSliders && this.genPreview(),\n !this.hideInputs && this.genEdit(),\n ])\n },\n genEdit (): VNode {\n return this.$createElement(VColorPickerEdit, {\n props: {\n color: this.internalValue,\n disabled: this.disabled,\n hideAlpha: this.hideAlpha,\n hideModeSwitch: this.hideModeSwitch,\n mode: this.mode,\n },\n on: {\n 'update:color': this.updateColor,\n 'update:mode': (v: Mode) => this.$emit('update:mode', v),\n },\n })\n },\n genPreview (): VNode {\n return this.$createElement(VColorPickerPreview, {\n props: {\n color: this.internalValue,\n disabled: this.disabled,\n hideAlpha: this.hideAlpha,\n },\n on: {\n 'update:color': this.updateColor,\n },\n })\n },\n genSwatches (): VNode {\n return this.$createElement(VColorPickerSwatches, {\n props: {\n dark: this.dark,\n light: this.light,\n disabled: this.disabled,\n swatches: this.swatches,\n color: this.internalValue,\n maxHeight: this.swatchesMaxHeight,\n },\n on: {\n 'update:color': this.updateColor,\n },\n })\n },\n },\n\n render (h): VNode {\n return h(VSheet, {\n staticClass: 'v-color-picker',\n class: {\n 'v-color-picker--flat': this.flat,\n ...this.themeClasses,\n ...this.elevationClasses,\n },\n props: {\n maxWidth: this.width,\n },\n }, [\n !this.hideCanvas && this.genCanvas(),\n (!this.hideSliders || !this.hideInputs) && this.genControls(),\n this.showSwatches && this.genSwatches(),\n ])\n },\n})\n","// Styles\nimport '../VAutocomplete/VAutocomplete.sass'\n\n// Extensions\nimport VSelect from '../VSelect/VSelect'\nimport VAutocomplete from '../VAutocomplete/VAutocomplete'\n\n// Utils\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n/* @vue/component */\nexport default VAutocomplete.extend({\n name: 'v-combobox',\n\n props: {\n delimiters: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n returnObject: {\n type: Boolean,\n default: true,\n },\n },\n\n data: () => ({\n editingIndex: -1,\n }),\n\n computed: {\n computedCounterValue (): number {\n return this.multiple\n ? this.selectedItems.length\n : (this.internalSearch || '').toString().length\n },\n hasSlot (): boolean {\n return VSelect.options.computed.hasSlot.call(this) || this.multiple\n },\n isAnyValueAllowed (): boolean {\n return true\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems ||\n (!!this.$slots['no-data'] && !this.hideNoData)\n },\n searchIsDirty (): boolean {\n return this.internalSearch != null\n },\n },\n\n methods: {\n onInternalSearchChanged (val: any) {\n if (\n val &&\n this.multiple &&\n this.delimiters.length\n ) {\n const delimiter = this.delimiters.find(d => val.endsWith(d))\n if (delimiter != null) {\n this.internalSearch = val.slice(0, val.length - delimiter.length)\n this.updateTags()\n }\n }\n\n this.updateMenuDimensions()\n },\n genInput () {\n const input = VAutocomplete.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n input.data!.on!.paste = this.onPaste\n\n return input\n },\n genChipSelection (item: object, index: number) {\n const chip = VSelect.options.methods.genChipSelection.call(this, item, index)\n\n // Allow user to update an existing value\n if (this.multiple) {\n chip.componentOptions!.listeners! = {\n ...chip.componentOptions!.listeners!,\n dblclick: () => {\n this.editingIndex = index\n this.internalSearch = this.getText(item)\n this.selectedIndex = -1\n },\n }\n }\n\n return chip\n },\n onChipInput (item: object) {\n VSelect.options.methods.onChipInput.call(this, item)\n\n this.editingIndex = -1\n },\n // Requires a manual definition\n // to overwrite removal in v-autocomplete\n onEnterDown (e: Event) {\n e.preventDefault()\n // If has menu index, let v-select-list handle\n if (this.getMenuIndex() > -1) return\n\n this.$nextTick(this.updateSelf)\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n if (\n e.ctrlKey ||\n ![keyCodes.home, keyCodes.end].includes(keyCode)\n ) {\n VSelect.options.methods.onKeyDown.call(this, e)\n }\n\n // If user is at selection index of 0\n // create a new tag\n if (this.multiple &&\n keyCode === keyCodes.left &&\n this.$refs.input.selectionStart === 0\n ) {\n this.updateSelf()\n } else if (keyCode === keyCodes.enter) {\n this.onEnterDown(e)\n }\n\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode)\n },\n onTabDown (e: KeyboardEvent) {\n // When adding tags, if searching and\n // there is not a filtered options,\n // add the value to the tags list\n if (this.multiple &&\n this.internalSearch &&\n this.getMenuIndex() === -1\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n return this.updateTags()\n }\n\n VAutocomplete.options.methods.onTabDown.call(this, e)\n },\n selectItem (item: object) {\n // Currently only supports items:\n if (this.editingIndex > -1) {\n this.updateEditing()\n } else {\n VAutocomplete.options.methods.selectItem.call(this, item)\n\n // if selected item contains search value,\n // remove the search string\n if (\n this.internalSearch &&\n this.multiple &&\n this.getText(item).toLocaleLowerCase().includes(this.internalSearch.toLocaleLowerCase())\n ) {\n this.internalSearch = null\n }\n }\n },\n setSelectedItems () {\n if (this.internalValue == null ||\n this.internalValue === ''\n ) {\n this.selectedItems = []\n } else {\n this.selectedItems = this.multiple ? this.internalValue : [this.internalValue]\n }\n },\n setValue (value?: any) {\n VSelect.options.methods.setValue.call(this, value === undefined ? this.internalSearch : value)\n },\n updateEditing () {\n const value = this.internalValue.slice()\n const index = this.selectedItems.findIndex(item =>\n this.getText(item) === this.internalSearch)\n\n // If user enters a duplicate text on chip edit,\n // don't add it, move it to the end of the list\n if (index > -1) {\n const item = typeof value[index] === 'object'\n ? Object.assign({}, value[index])\n : value[index]\n\n value.splice(index, 1)\n value.push(item)\n } else {\n value[this.editingIndex] = this.internalSearch\n }\n\n this.setValue(value)\n this.editingIndex = -1\n this.internalSearch = null\n },\n updateCombobox () {\n // If search is not dirty, do nothing\n if (!this.searchIsDirty) return\n\n // The internal search is not matching\n // the internal value, update the input\n if (this.internalSearch !== this.getText(this.internalValue)) this.setValue()\n\n // Reset search if using slot to avoid a double input\n const isUsingSlot = Boolean(this.$scopedSlots.selection) || this.hasChips\n if (isUsingSlot) this.internalSearch = null\n },\n updateSelf () {\n this.multiple ? this.updateTags() : this.updateCombobox()\n },\n updateTags () {\n const menuIndex = this.getMenuIndex()\n\n // If the user is not searching\n // and no menu item is selected\n // or if the search is empty\n // do nothing\n if ((menuIndex < 0 && !this.searchIsDirty) ||\n !this.internalSearch) return\n\n if (this.editingIndex > -1) {\n return this.updateEditing()\n }\n\n const index = this.selectedItems.findIndex(item =>\n this.internalSearch === this.getText(item))\n\n // If the duplicate item is an object,\n // copy it, so that it can be added again later\n const itemToSelect = index > -1 && typeof this.selectedItems[index] === 'object'\n ? Object.assign({}, this.selectedItems[index])\n : this.internalSearch\n\n // If it already exists, do nothing\n // this might need to change to bring\n // the duplicated item to the last entered\n if (index > -1) {\n const internalValue = this.internalValue.slice()\n internalValue.splice(index, 1)\n\n this.setValue(internalValue)\n }\n\n // If menu index is greater than 1\n // the selection is handled elsewhere\n // TODO: find out where\n if (menuIndex > -1) return (this.internalSearch = null)\n\n this.selectItem(itemToSelect)\n\n this.internalSearch = null\n },\n onPaste (event: ClipboardEvent) {\n this.$emit('paste', event)\n if (!this.multiple || this.searchIsDirty) return\n\n const pastedItemText = event.clipboardData?.getData('text/vnd.vuetify.autocomplete.item+plain')\n if (pastedItemText && this.findExistingIndex(pastedItemText as any) === -1) {\n event.preventDefault()\n VSelect.options.methods.selectItem.call(this, pastedItemText as any)\n }\n },\n clearableCallback () {\n this.editingIndex = -1\n\n VAutocomplete.options.methods.clearableCallback.call(this)\n },\n },\n})\n","// Styles\nimport './VCounter.sass'\n\n// Mixins\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-counter',\n\n functional: true,\n\n props: {\n value: {\n type: [Number, String],\n default: '',\n },\n max: [Number, String],\n },\n\n render (h, ctx): VNode {\n const { props } = ctx\n const max = parseInt(props.max, 10)\n const value = parseInt(props.value, 10)\n const content = max ? `${value} / ${max}` : String(props.value)\n const isGreater = max && (value > max)\n\n return h('div', {\n staticClass: 'v-counter',\n class: {\n 'error--text': isGreater,\n ...functionalThemeClasses(ctx),\n },\n }, content)\n },\n})\n","import VCounter from './VCounter'\n\nexport { VCounter }\nexport default VCounter\n","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n this.shiftKeyDown = e.keyCode === keyCodes.shift || e.shiftKey\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode === keyCodes.shift || !e.shiftKey) {\n this.shiftKeyDown = false\n }\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = getSlot(this, 'loading') || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = getSlot(this, 'noData') || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = getSlot(this, 'noResults') || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","// Styles\nimport './VDataTableHeader.sass'\n\n// Components\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\n// Mixins\nimport header from './mixins/header'\n\n// Utilities\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport mergeData from '../../util/mergeData'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n ...header.options.props,\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\n\n data = mergeData(data, { props })\n\n if (props.mobile) {\n return h(VDataTableHeaderMobile, data, children)\n } else {\n return h(VDataTableHeaderDesktop, data, children)\n }\n },\n})\n","// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DataTableHeader } from 'vuetify/types'\n\n// Utils\nimport { getObjectValueByPath, wrapInArray } from '../../util/helpers'\n\nfunction needsTd (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n !['td', 'th'].includes(slot![0]?.tag!)\n}\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns = props.headers.map((header: DataTableHeader) => {\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(...wrapInArray(scopedSlot({\n item: props.item,\n isMobile: false,\n header,\n index: props.index,\n value,\n })))\n } else if (regularSlot) {\n children.push(...wrapInArray(regularSlot))\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const textAlign = `text-${header.align || 'start'}`\n\n return needsTd(children)\n ? h('td', {\n class: [\n textAlign,\n header.cellClass,\n {\n 'v-data-table__divider': header.divider,\n },\n ],\n }, children)\n : children\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n hideDefaultHeader: Boolean,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const classes = {\n 'v-data-table__mobile-row': true,\n }\n\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({\n item: props.item,\n isMobile: true,\n header,\n index: props.index,\n value,\n }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const mobileRowChildren = [\n h('div', {\n staticClass: 'v-data-table__mobile-row__cell',\n }, children),\n ]\n\n if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n mobileRowChildren.unshift(\n h('div', {\n staticClass: 'v-data-table__mobile-row__header',\n }, [header.text])\n )\n }\n\n return h('td', { class: classes }, mobileRowChildren)\n })\n\n return h('tr', { ...data, staticClass: 'v-data-table__mobile-table-row' }, columns)\n },\n})\n","import './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n RowClassFunction,\n RowStyleFunction,\n DataTableItemProps,\n DataTableFilterMode,\n} from 'vuetify/types'\n\n// Components\nimport { VData } from '../VData'\nimport { VDataFooter, VDataIterator } from '../VDataIterator'\nimport VBtn from '../VBtn'\nimport VDataTableHeader from './VDataTableHeader'\n// import VVirtualTable from './VVirtualTable'\nimport VIcon from '../VIcon'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Mouse from '../../mixins/mouse'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers'\nimport { breaking } from '../../util/console'\nimport { mergeClasses, mergeStyles } from '../../util/mergeData'\n\nfunction filterFn (item: any, search: string | null, filter: DataTableFilterFunction) {\n return (header: DataTableHeader) => {\n const value = getObjectValueByPath(item, header.value)\n return header.filter ? header.filter(value, search, item) : filter(value, search, item)\n }\n}\n\nfunction searchTableItems (\n items: any[],\n search: string | null,\n headersWithCustomFilters: DataTableHeader[],\n headersWithoutCustomFilters: DataTableHeader[],\n customFilter: DataTableFilterFunction,\n filterMode: DataTableFilterMode,\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n if (filterMode === 'union') {\n // If the `search` property is empty and there are no custom filters in use, there is nothing to do.\n if (!(search && headersWithoutCustomFilters.length) && !headersWithCustomFilters.length) return items\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n if (headersWithCustomFilters.length && headersWithCustomFilters.every(filterFn(item, search, defaultFilter))) {\n return true\n }\n\n // Otherwise, the `search` property is used to filter columns without a custom filter.\n return (search && headersWithoutCustomFilters.some(filterFn(item, search, customFilter)))\n })\n } else if (filterMode === 'intersection') {\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n // We need to match every filter to be included in the results.\n const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter))\n\n // Headers without custom filters are only filtered by the `search` property if it is defined.\n // We only need a single column to match the search term to be included in the results.\n const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter))\n\n return matchesColumnFilters && matchesSearchTerm\n })\n } else {\n return items\n }\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n Mouse,\n).extend({\n name: 'v-data-table',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => [],\n } as PropValidator,\n showSelect: Boolean,\n checkboxColor: String,\n showExpand: Boolean,\n showGroupBy: Boolean,\n // TODO: Fix\n // virtualRows: Boolean,\n height: [Number, String],\n hideDefaultHeader: Boolean,\n caption: String,\n dense: Boolean,\n headerProps: Object,\n calculateWidths: Boolean,\n fixedHeader: Boolean,\n headersLength: Number,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n customFilter: {\n type: Function,\n default: defaultFilter,\n } as PropValidator,\n filterMode: {\n type: String,\n default: 'intersection',\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n itemStyle: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n },\n\n data () {\n return {\n internalGroupBy: [] as string[],\n openCache: {} as { [key: string]: boolean },\n widths: [] as number[],\n }\n },\n\n computed: {\n computedHeaders (): DataTableHeader[] {\n if (!this.headers) return []\n const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value))\n const defaultHeader = { text: '', sortable: false, width: '1px' }\n\n if (this.showSelect) {\n const index = headers.findIndex(h => h.value === 'data-table-select')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-select' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n if (this.showExpand) {\n const index = headers.findIndex(h => h.value === 'data-table-expand')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-expand' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n return headers\n },\n colspanAttrs (): object | undefined {\n return this.isMobile ? undefined : {\n colspan: this.headersLength || this.computedHeaders.length,\n }\n },\n columnSorters (): Record {\n return this.computedHeaders.reduce>((acc, header) => {\n if (header.sort) acc[header.value] = header.sort\n return acc\n }, {})\n },\n headersWithCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n headersWithoutCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n sanitizedHeaderProps (): Record {\n return camelizeObjectKeys(this.headerProps)\n },\n computedItemsPerPage (): number {\n const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage\n const itemsPerPageOptions: DataItemsPerPageOption[] | undefined = this.sanitizedFooterProps.itemsPerPageOptions\n\n if (\n itemsPerPageOptions &&\n !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)\n ) {\n const firstOption = itemsPerPageOptions[0]\n return typeof firstOption === 'object' ? firstOption.value : firstOption\n }\n\n return itemsPerPage\n },\n groupByText (): string {\n return this.headers?.find(header => header.value === this.internalGroupBy?.[0])?.text ?? ''\n },\n },\n\n created () {\n const breakingProps = [\n ['sort-icon', 'header-props.sort-icon'],\n ['hide-headers', 'hide-default-header'],\n ['select-all', 'show-select'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n mounted () {\n // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n // const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n // if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n // }\n\n if (this.calculateWidths) {\n window.addEventListener('resize', this.calcWidths)\n this.calcWidths()\n }\n },\n\n beforeDestroy () {\n if (this.calculateWidths) {\n window.removeEventListener('resize', this.calcWidths)\n }\n },\n\n methods: {\n calcWidths () {\n this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth)\n },\n customFilterWithColumns (items: any[], search: string) {\n return searchTableItems(\n items,\n search,\n this.headersWithCustomFilters,\n this.headersWithoutCustomFilters,\n this.customFilter,\n this.filterMode\n )\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any, index: number): DataTableItemProps {\n const data = {\n ...VDataIterator.options.methods.createItemProps.call(this, item, index),\n headers: this.computedHeaders,\n }\n\n return {\n ...data,\n attrs: {\n class: {\n 'v-data-table__selected': data.isSelected,\n },\n },\n on: {\n ...this.getDefaultMouseEventHandlers(':row', () => data, true),\n // TODO: the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: (event: MouseEvent) => this.$emit('click:row', item, data, event),\n },\n }\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${this.groupByText}: ${group}`, remove])\n\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [column]))\n }\n\n if (this.$scopedSlots['group.summary']) {\n children.push(this.$createElement('template', { slot: 'column.summary' }, [\n this.$scopedSlots['group.summary']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item, i),\n isMobile: this.isMobile,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n index: i,\n item,\n }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map((item, index) => this.genDefaultExpandedRow(item, index))\n : items.map((item, index) => this.genDefaultSimpleRow(item, index))\n },\n genDefaultExpandedRow (item: any, index: number): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, index, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n item,\n })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, index: number, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item, index)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot({\n ...data,\n isMobile: this.isMobile,\n }) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n style: mergeStyles({}, getPropertyFromItem(item, this.itemStyle)),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: data.on,\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n 'v-data-table--selectable': this.showSelect,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import './VSimpleTable.sass'\n\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', getSlot(this)),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n getSlot(this, 'top'),\n this.genWrapper(),\n getSlot(this, 'bottom'),\n ])\n },\n})\n","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","import './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'\nimport { getSlot } from '../../util/helpers'\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 }, getSlot(this) || [this.formatter(String(this.value))])])\n\n const transition = this.$createElement('transition', {\n props: {\n name: (this.isReversing === !this.$vuetify.rtl) ? 'tab-reverse-transition' : 'tab-transition',\n },\n }, [header])\n\n return this.$createElement('div', {\n staticClass: 'v-date-picker-header__value',\n class: {\n 'v-date-picker-header__value--disabled': this.disabled,\n },\n }, [transition])\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-date-picker-header',\n class: {\n 'v-date-picker-header--disabled': this.disabled,\n ...this.themeClasses,\n },\n }, [\n this.genBtn(-1),\n this.genHeader(),\n this.genBtn(+1),\n ])\n },\n})\n","import Vue from 'vue'\n\nexport function createItemTypeNativeListeners (instance: Vue, itemTypeSuffix: string, value: any) {\n return Object.keys(instance.$listeners).reduce((on, eventName) => {\n if (eventName.endsWith(itemTypeSuffix)) {\n on[eventName.slice(0, -itemTypeSuffix.length)] = (event: Event) => instance.$emit(eventName, value, event)\n }\n\n return on\n }, {} as typeof instance.$listeners)\n}\n\nexport function createItemTypeListeners (instance: Vue, itemTypeSuffix: string) {\n return Object.keys(instance.$listeners).reduce((on, eventName) => {\n if (eventName.endsWith(itemTypeSuffix)) {\n on[eventName] = instance.$listeners[eventName]\n }\n\n return on\n }, {} as typeof instance.$listeners)\n}\n","// Adds leading zero to month/day if necessary, returns 'YYYY' if type = 'year',\n// 'YYYY-MM' if 'month' and 'YYYY-MM-DD' if 'date'\nimport pad from './pad'\n\nexport default (dateString: string, type: 'date' | 'month' | 'year'): string => {\n const [year, month = 1, date = 1] = dateString.split('-')\n return `${year}-${pad(month)}-${pad(date)}`.substr(0, { date: 10, month: 7, year: 4 }[type])\n}\n","import { DatePickerAllowedDatesFunction } from 'vuetify/types'\n\nexport default function isDateAllowed (date: string, min: string, max: string, allowedFn: DatePickerAllowedDatesFunction | undefined) {\n return (!allowedFn || allowedFn(date)) &&\n (!min || date >= min.substr(0, 10)) &&\n (!max || date <= max)\n}\n","import '../VDatePickerTable.sass'\n\n// Directives\nimport Touch from '../../../directives/touch'\n\n// Mixins\nimport Colorable from '../../../mixins/colorable'\nimport Localable from '../../../mixins/localable'\nimport Themeable from '../../../mixins/themeable'\n\n// Utils\nimport { createItemTypeNativeListeners, sanitizeDateString } from '../util'\nimport isDateAllowed from '../util/isDateAllowed'\nimport { mergeListeners } from '../../../util/mergeData'\nimport mixins from '../../../util/mixins'\nimport { throttle } from '../../../util/helpers'\n\n// Types\nimport {\n PropType,\n VNodeChildren,\n} from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DatePickerAllowedDatesFunction,\n DatePickerEventColors,\n DatePickerEventColorValue,\n DatePickerEvents,\n DatePickerFormatter,\n TouchWrapper,\n} from 'vuetify/types'\n\ntype CalculateTableDateFunction = (v: number) => string\n\nexport default mixins(\n Colorable,\n Localable,\n Themeable\n/* @vue/component */\n).extend({\n directives: { Touch },\n\n props: {\n allowedDates: Function as PropType,\n current: String,\n disabled: Boolean,\n format: Function as PropType,\n events: {\n type: [Array, Function, Object],\n default: () => null,\n } as PropValidator,\n eventColor: {\n type: [Array, Function, Object, String],\n default: () => 'warning',\n } as PropValidator,\n min: String,\n max: String,\n range: Boolean,\n readonly: Boolean,\n scrollable: Boolean,\n tableDate: {\n type: String,\n required: true,\n },\n value: [String, Array] as PropType,\n },\n\n data: () => ({\n isReversing: false,\n wheelThrottle: null as any,\n }),\n\n computed: {\n computedTransition (): string {\n return (this.isReversing === !this.$vuetify.rtl) ? 'tab-reverse-transition' : 'tab-transition'\n },\n displayedMonth (): number {\n return Number(this.tableDate.split('-')[1]) - 1\n },\n displayedYear (): number {\n return Number(this.tableDate.split('-')[0])\n },\n },\n\n watch: {\n tableDate (newVal: string, oldVal: string) {\n this.isReversing = newVal < oldVal\n },\n },\n\n mounted () {\n this.wheelThrottle = throttle(this.wheel, 250)\n },\n\n methods: {\n genButtonClasses (\n isAllowed: boolean,\n isFloating: boolean,\n isSelected: boolean,\n isCurrent: boolean,\n isFirst: boolean,\n isLast: boolean,\n ) {\n return {\n 'v-size--default': !isFloating,\n 'v-date-picker-table__current': isCurrent,\n 'v-btn--active': isSelected,\n 'v-btn--flat': !isAllowed || this.disabled,\n 'v-btn--text': isSelected === isCurrent,\n 'v-btn--rounded': isFloating,\n 'v-btn--disabled': !isAllowed || this.disabled,\n 'v-btn--outlined': isCurrent && !isSelected,\n 'v-date-picker--first-in-range': isFirst,\n 'v-date-picker--last-in-range': isLast,\n ...this.themeClasses,\n }\n },\n genButtonEvents (value: string, isAllowed: boolean, mouseEventType: string) {\n if (this.disabled) return undefined\n\n return mergeListeners({\n click: () => {\n if (isAllowed && !this.readonly) this.$emit('input', value)\n },\n }, createItemTypeNativeListeners(this, `:${mouseEventType}`, value))\n },\n genButton (value: string, isFloating: boolean, mouseEventType: string, formatter: DatePickerFormatter, isOtherMonth = false) {\n const isAllowed = isDateAllowed(value, this.min, this.max, this.allowedDates)\n const isSelected = this.isSelected(value) && isAllowed\n const isCurrent = value === this.current\n const setColor = isSelected ? this.setBackgroundColor : this.setTextColor\n const color = (isSelected || isCurrent) && (this.color || 'accent')\n let isFirst = false\n let isLast = false\n if (this.range && !!this.value && Array.isArray(this.value)) {\n isFirst = value === this.value[0]\n isLast = value === this.value[this.value.length - 1]\n }\n\n return this.$createElement('button', setColor(color, {\n staticClass: 'v-btn',\n class: this.genButtonClasses(\n isAllowed && !isOtherMonth,\n isFloating,\n isSelected,\n isCurrent,\n isFirst,\n isLast,\n ),\n attrs: {\n type: 'button',\n },\n domProps: {\n disabled: this.disabled || !isAllowed || isOtherMonth,\n },\n on: this.genButtonEvents(value, isAllowed, mouseEventType),\n }), [\n this.$createElement('div', {\n staticClass: 'v-btn__content',\n }, [formatter(value)]),\n this.genEvents(value),\n ])\n },\n getEventColors (date: string) {\n const arrayize = (v: string | string[]) => Array.isArray(v) ? v : [v]\n let eventData: boolean | DatePickerEventColorValue\n let eventColors: string[] = []\n\n if (Array.isArray(this.events)) {\n eventData = this.events.includes(date)\n } else if (this.events instanceof Function) {\n eventData = this.events(date) || false\n } else if (this.events) {\n eventData = this.events[date] || false\n } else {\n eventData = false\n }\n\n if (!eventData) {\n return []\n } else if (eventData !== true) {\n eventColors = arrayize(eventData)\n } else if (typeof this.eventColor === 'string') {\n eventColors = [this.eventColor]\n } else if (typeof this.eventColor === 'function') {\n eventColors = arrayize(this.eventColor(date))\n } else if (Array.isArray(this.eventColor)) {\n eventColors = this.eventColor\n } else {\n eventColors = arrayize(this.eventColor[date])\n }\n\n return eventColors.filter(v => v)\n },\n genEvents (date: string) {\n const eventColors = this.getEventColors(date)\n\n return eventColors.length ? this.$createElement('div', {\n staticClass: 'v-date-picker-table__events',\n }, eventColors.map(color => this.$createElement('div', this.setBackgroundColor(color)))) : null\n },\n isValidScroll (value: number, calculateTableDate: CalculateTableDateFunction) {\n const tableDate = calculateTableDate(value)\n // tableDate is 'YYYY-MM' for DateTable and 'YYYY' for MonthTable\n const sanitizeType = tableDate.split('-').length === 1 ? 'year' : 'month'\n return (value < 0 && (this.min ? tableDate >= sanitizeDateString(this.min, sanitizeType) : true)) ||\n (value > 0 && (this.max ? tableDate <= sanitizeDateString(this.max, sanitizeType) : true))\n },\n wheel (e: WheelEvent, calculateTableDate: CalculateTableDateFunction) {\n this.$emit('update:table-date', calculateTableDate(e.deltaY))\n },\n touch (value: number, calculateTableDate: CalculateTableDateFunction) {\n this.$emit('update:table-date', calculateTableDate(value))\n },\n genTable (staticClass: string, children: VNodeChildren, calculateTableDate: CalculateTableDateFunction) {\n const transition = this.$createElement('transition', {\n props: { name: this.computedTransition },\n }, [this.$createElement('table', { key: this.tableDate }, children)])\n\n const touchDirective = {\n name: 'touch',\n value: {\n left: (e: TouchWrapper) => (e.offsetX < -15) &&\n (this.isValidScroll(1, calculateTableDate) && this.touch(1, calculateTableDate)),\n right: (e: TouchWrapper) => (e.offsetX > 15) &&\n (this.isValidScroll(-1, calculateTableDate) && this.touch(-1, calculateTableDate)),\n },\n }\n\n return this.$createElement('div', {\n staticClass,\n class: {\n 'v-date-picker-table--disabled': this.disabled,\n ...this.themeClasses,\n },\n on: (!this.disabled && this.scrollable) ? {\n wheel: (e: WheelEvent) => {\n e.preventDefault()\n if (this.isValidScroll(e.deltaY, calculateTableDate)) { this.wheelThrottle(e, calculateTableDate) }\n },\n } : undefined,\n directives: [touchDirective],\n }, [transition])\n },\n isSelected (value: string): boolean {\n if (Array.isArray(this.value)) {\n if (this.range && this.value.length === 2) {\n const [from, to] = [...this.value].sort()\n return from <= value && value <= to\n } else {\n return this.value.indexOf(value) !== -1\n }\n }\n\n return value === this.value\n },\n },\n})\n","// Mixins\nimport DatePickerTable from './mixins/date-picker-table'\n\n// Utils\nimport { weekNumber } from '../../util/dateTimeUtils'\nimport { pad, createNativeLocaleFormatter, monthChange } from './util'\nimport { createRange } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, VNodeChildren, PropType } from 'vue'\nimport { DatePickerFormatter } from 'vuetify/types'\n\nexport default mixins(\n DatePickerTable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-date-table',\n\n props: {\n firstDayOfWeek: {\n type: [String, Number],\n default: 0,\n },\n localeFirstDayOfYear: {\n type: [String, Number],\n default: 0,\n },\n showAdjacentMonths: Boolean,\n showWeek: Boolean,\n weekdayFormat: Function as PropType,\n },\n\n computed: {\n formatter (): DatePickerFormatter {\n return this.format || createNativeLocaleFormatter(this.currentLocale, { day: 'numeric', timeZone: 'UTC' }, { start: 8, length: 2 })\n },\n weekdayFormatter (): DatePickerFormatter | undefined {\n return this.weekdayFormat || createNativeLocaleFormatter(this.currentLocale, { weekday: 'narrow', timeZone: 'UTC' })\n },\n weekDays (): string[] {\n const first = parseInt(this.firstDayOfWeek, 10)\n\n return this.weekdayFormatter\n ? createRange(7).map(i => this.weekdayFormatter!(`2017-01-${first + i + 15}`)) // 2017-01-15 is Sunday\n : createRange(7).map(i => ['S', 'M', 'T', 'W', 'T', 'F', 'S'][(i + first) % 7])\n },\n },\n\n methods: {\n calculateTableDate (delta: number) {\n return monthChange(this.tableDate, Math.sign(delta || 1))\n },\n genTHead () {\n const days = this.weekDays.map(day => this.$createElement('th', day))\n if (this.showWeek) {\n days.unshift(this.$createElement('th'))\n }\n\n return this.$createElement('thead', this.genTR(days))\n },\n // Returns number of the days from the firstDayOfWeek to the first day of the current month\n weekDaysBeforeFirstDayOfTheMonth () {\n const firstDayOfTheMonth = new Date(`${this.displayedYear}-${pad(this.displayedMonth + 1)}-01T00:00:00+00:00`)\n const weekDay = firstDayOfTheMonth.getUTCDay()\n\n return (weekDay - parseInt(this.firstDayOfWeek) + 7) % 7\n },\n getWeekNumber (dayInMonth: number) {\n return weekNumber(\n this.displayedYear,\n this.displayedMonth,\n dayInMonth,\n parseInt(this.firstDayOfWeek),\n parseInt(this.localeFirstDayOfYear)\n )\n },\n genWeekNumber (weekNumber: number) {\n return this.$createElement('td', [\n this.$createElement('small', {\n staticClass: 'v-date-picker-table--date__week',\n }, String(weekNumber).padStart(2, '0')),\n ])\n },\n // eslint-disable-next-line max-statements\n genTBody () {\n const children = []\n const daysInMonth = new Date(this.displayedYear, this.displayedMonth + 1, 0).getDate()\n let rows = []\n let day = this.weekDaysBeforeFirstDayOfTheMonth()\n\n if (this.showWeek) {\n rows.push(this.genWeekNumber(this.getWeekNumber(1)))\n }\n\n const prevMonthYear = this.displayedMonth ? this.displayedYear : this.displayedYear - 1\n const prevMonth = (this.displayedMonth + 11) % 12\n const firstDayFromPreviousMonth = new Date(this.displayedYear, this.displayedMonth, 0).getDate()\n const cellsInRow = this.showWeek ? 8 : 7\n\n while (day--) {\n const date = `${prevMonthYear}-${pad(prevMonth + 1)}-${pad(firstDayFromPreviousMonth - day)}`\n\n rows.push(this.$createElement('td', this.showAdjacentMonths ? [\n this.genButton(date, true, 'date', this.formatter, true),\n ] : []))\n }\n\n for (day = 1; day <= daysInMonth; day++) {\n const date = `${this.displayedYear}-${pad(this.displayedMonth + 1)}-${pad(day)}`\n\n rows.push(this.$createElement('td', [\n this.genButton(date, true, 'date', this.formatter),\n ]))\n\n if (rows.length % cellsInRow === 0) {\n children.push(this.genTR(rows))\n rows = []\n if (this.showWeek && (day < daysInMonth || this.showAdjacentMonths)) {\n rows.push(this.genWeekNumber(this.getWeekNumber(day + 7)))\n }\n }\n }\n\n const nextMonthYear = this.displayedMonth === 11 ? this.displayedYear + 1 : this.displayedYear\n const nextMonth = (this.displayedMonth + 1) % 12\n let nextMonthDay = 1\n\n while (rows.length < cellsInRow) {\n const date = `${nextMonthYear}-${pad(nextMonth + 1)}-${pad(nextMonthDay++)}`\n\n rows.push(this.$createElement('td', this.showAdjacentMonths ? [\n this.genButton(date, true, 'date', this.formatter, true),\n ] : []))\n }\n\n if (rows.length) {\n children.push(this.genTR(rows))\n }\n\n return this.$createElement('tbody', children)\n },\n genTR (children: VNodeChildren) {\n return [this.$createElement('tr', children)]\n },\n },\n\n render (): VNode {\n return this.genTable('v-date-picker-table v-date-picker-table--date', [\n this.genTHead(),\n this.genTBody(),\n ], this.calculateTableDate)\n },\n})\n","// Mixins\nimport DatePickerTable from './mixins/date-picker-table'\n\n// Utils\nimport { pad, createNativeLocaleFormatter } from './util'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\nimport { DatePickerFormatter } from 'vuetify/types'\n\nexport default mixins(\n DatePickerTable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-month-table',\n\n computed: {\n formatter (): DatePickerFormatter {\n return this.format || createNativeLocaleFormatter(this.currentLocale, { month: 'short', timeZone: 'UTC' }, { start: 5, length: 2 })\n },\n },\n\n methods: {\n calculateTableDate (delta: number) {\n return `${parseInt(this.tableDate, 10) + Math.sign(delta || 1)}`\n },\n genTBody () {\n const children = []\n const cols = Array(3).fill(null)\n const rows = 12 / cols.length\n\n for (let row = 0; row < rows; row++) {\n const tds = cols.map((_, col) => {\n const month = row * cols.length + col\n const date = `${this.displayedYear}-${pad(month + 1)}`\n return this.$createElement('td', {\n key: month,\n }, [\n this.genButton(date, false, 'month', this.formatter),\n ])\n })\n\n children.push(this.$createElement('tr', {\n key: row,\n }, tds))\n }\n\n return this.$createElement('tbody', children)\n },\n },\n\n render (): VNode {\n return this.genTable('v-date-picker-table v-date-picker-table--month', [\n this.genTBody(),\n ], this.calculateTableDate)\n },\n})\n","import './VDatePickerYears.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Localable from '../../mixins/localable'\n\n// Utils\nimport {\n createItemTypeNativeListeners,\n createNativeLocaleFormatter,\n} from './util'\nimport { mergeListeners } from '../../util/mergeData'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DatePickerFormatter } from 'vuetify/types'\n\ninterface options extends Vue {\n $el: HTMLElement\n}\n\nexport default mixins\n/* eslint-enable indent */\n>(\n Colorable,\n Localable\n/* @vue/component */\n).extend({\n name: 'v-date-picker-years',\n\n props: {\n format: Function as PropType,\n min: [Number, String],\n max: [Number, String],\n readonly: Boolean,\n value: [Number, String],\n },\n\n data () {\n return {\n defaultColor: 'primary',\n }\n },\n\n computed: {\n formatter (): DatePickerFormatter {\n return this.format || createNativeLocaleFormatter(this.currentLocale, { year: 'numeric', timeZone: 'UTC' }, { length: 4 })\n },\n },\n\n mounted () {\n setTimeout(() => {\n const activeItem = this.$el.getElementsByClassName('active')[0]\n if (activeItem) {\n this.$el.scrollTop = activeItem.offsetTop - this.$el.offsetHeight / 2 + activeItem.offsetHeight / 2\n } else if (this.min && !this.max) {\n this.$el.scrollTop = this.$el.scrollHeight\n } else if (!this.min && this.max) {\n this.$el.scrollTop = 0\n } else {\n this.$el.scrollTop = this.$el.scrollHeight / 2 - this.$el.offsetHeight / 2\n }\n })\n },\n\n methods: {\n genYearItem (year: number): VNode {\n const formatted = this.formatter(`${year}`)\n const active = parseInt(this.value, 10) === year\n const color = active && (this.color || 'primary')\n\n return this.$createElement('li', this.setTextColor(color, {\n key: year,\n class: { active },\n on: mergeListeners({\n click: () => this.$emit('input', year),\n }, createItemTypeNativeListeners(this, ':year', year)),\n }), formatted)\n },\n\n genYearItems (): VNode[] {\n const children = []\n const selectedYear = this.value ? parseInt(this.value, 10) : new Date().getFullYear()\n const maxYear = this.max ? parseInt(this.max, 10) : (selectedYear + 100)\n const minYear = Math.min(maxYear, this.min ? parseInt(this.min, 10) : (selectedYear - 100))\n\n for (let year = maxYear; year >= minYear; year--) {\n children.push(this.genYearItem(year))\n }\n\n return children\n },\n },\n\n render (): VNode {\n return this.$createElement('ul', {\n staticClass: 'v-date-picker-years',\n ref: 'years',\n }, this.genYearItems())\n },\n})\n","import { CalendarTimestamp, CalendarFormatter } from 'vuetify/types'\nimport { isLeapYear } from '../../../util/dateTimeUtils'\n\nexport const PARSE_REGEX = /^(\\d{4})-(\\d{1,2})(-(\\d{1,2}))?([^\\d]+(\\d{1,2}))?(:(\\d{1,2}))?(:(\\d{1,2}))?$/\nexport const PARSE_TIME = /(\\d\\d?)(:(\\d\\d?)|)(:(\\d\\d?)|)/\n\nexport const DAYS_IN_MONTH: number[] = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nexport const DAYS_IN_MONTH_LEAP: number[] = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nexport const DAYS_IN_MONTH_MIN = 28\nexport const DAYS_IN_MONTH_MAX = 31\nexport const MONTH_MAX = 12\nexport const MONTH_MIN = 1\nexport const DAY_MIN = 1\nexport const DAYS_IN_WEEK = 7\nexport const MINUTES_IN_HOUR = 60\nexport const MINUTE_MAX = 59\nexport const MINUTES_IN_DAY = 24 * 60\nexport const HOURS_IN_DAY = 24\nexport const HOUR_MAX = 23\nexport const FIRST_HOUR = 0\nexport const OFFSET_YEAR = 10000\nexport const OFFSET_MONTH = 100\nexport const OFFSET_HOUR = 100\nexport const OFFSET_TIME = 10000\n\ntype CalendarTimestampFormatOptions = (timestamp: CalendarTimestamp, short: boolean) => object\ntype CalendarTimestampOperation = (timestamp: CalendarTimestamp) => CalendarTimestamp\nexport type VTime = number | string | {\n hour: number\n minute: number\n}\n\nexport type VTimestampInput = number | string | Date;\n\nexport function getStartOfWeek (timestamp: CalendarTimestamp, weekdays: number[], today?: CalendarTimestamp): CalendarTimestamp {\n const start = copyTimestamp(timestamp)\n findWeekday(start, weekdays[0], prevDay)\n updateFormatted(start)\n if (today) {\n updateRelative(start, today, start.hasTime)\n }\n\n return start\n}\n\nexport function getEndOfWeek (timestamp: CalendarTimestamp, weekdays: number[], today?: CalendarTimestamp): CalendarTimestamp {\n const end = copyTimestamp(timestamp)\n findWeekday(end, weekdays[weekdays.length - 1])\n updateFormatted(end)\n if (today) {\n updateRelative(end, today, end.hasTime)\n }\n\n return end\n}\n\nexport function getStartOfMonth (timestamp: CalendarTimestamp): CalendarTimestamp {\n const start = copyTimestamp(timestamp)\n start.day = DAY_MIN\n updateWeekday(start)\n updateFormatted(start)\n\n return start\n}\n\nexport function getEndOfMonth (timestamp: CalendarTimestamp): CalendarTimestamp {\n const end = copyTimestamp(timestamp)\n end.day = daysInMonth(end.year, end.month)\n updateWeekday(end)\n updateFormatted(end)\n\n return end\n}\n\nexport function validateTime (input: any): input is VTime {\n return (typeof input === 'number' && isFinite(input)) ||\n (!!PARSE_TIME.exec(input)) ||\n (typeof input === 'object' && isFinite(input.hour) && isFinite(input.minute))\n}\n\nexport function parseTime (input: any): number | false {\n if (typeof input === 'number') {\n // when a number is given, it's minutes since 12:00am\n return input\n } else if (typeof input === 'string') {\n // when a string is given, it's a hh:mm:ss format where seconds are optional\n const parts = PARSE_TIME.exec(input)\n if (!parts) {\n return false\n }\n\n return parseInt(parts[1]) * 60 + parseInt(parts[3] || 0)\n } else if (typeof input === 'object') {\n // when an object is given, it must have hour and minute\n if (typeof input.hour !== 'number' || typeof input.minute !== 'number') {\n return false\n }\n\n return input.hour * 60 + input.minute\n } else {\n // unsupported type\n return false\n }\n}\n\nexport function validateTimestamp (input: any): input is VTimestampInput {\n return (typeof input === 'number' && isFinite(input)) ||\n (typeof input === 'string' && !!PARSE_REGEX.exec(input)) ||\n (input instanceof Date)\n}\n\nexport function parseTimestamp (input: VTimestampInput, required?: false, now?: CalendarTimestamp): CalendarTimestamp | null\nexport function parseTimestamp (input: VTimestampInput, required: true, now?: CalendarTimestamp): CalendarTimestamp\nexport function parseTimestamp (input: VTimestampInput, required = false, now?: CalendarTimestamp): CalendarTimestamp | null {\n if (typeof input === 'number' && isFinite(input)) {\n input = new Date(input)\n }\n\n if (input instanceof Date) {\n const date: CalendarTimestamp = parseDate(input)\n\n if (now) {\n updateRelative(date, now, date.hasTime)\n }\n\n return date\n }\n\n if (typeof input !== 'string') {\n if (required) {\n throw new Error(`${input} is not a valid timestamp. It must be a Date, number of milliseconds since Epoch, or a string in the format of YYYY-MM-DD or YYYY-MM-DD hh:mm. Zero-padding is optional and seconds are ignored.`)\n }\n return null\n }\n\n // YYYY-MM-DD hh:mm:ss\n const parts = PARSE_REGEX.exec(input)\n\n if (!parts) {\n if (required) {\n throw new Error(`${input} is not a valid timestamp. It must be a Date, number of milliseconds since Epoch, or a string in the format of YYYY-MM-DD or YYYY-MM-DD hh:mm. Zero-padding is optional and seconds are ignored.`)\n }\n\n return null\n }\n\n const timestamp: CalendarTimestamp = {\n date: input,\n time: '',\n year: parseInt(parts[1]),\n month: parseInt(parts[2]),\n day: parseInt(parts[4]) || 1,\n hour: parseInt(parts[6]) || 0,\n minute: parseInt(parts[8]) || 0,\n weekday: 0,\n hasDay: !!parts[4],\n hasTime: !!(parts[6] && parts[8]),\n past: false,\n present: false,\n future: false,\n }\n\n updateWeekday(timestamp)\n updateFormatted(timestamp)\n\n if (now) {\n updateRelative(timestamp, now, timestamp.hasTime)\n }\n\n return timestamp\n}\n\nexport function parseDate (date: Date): CalendarTimestamp {\n return updateFormatted({\n date: '',\n time: '',\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n weekday: date.getDay(),\n hour: date.getHours(),\n minute: date.getMinutes(),\n hasDay: true,\n hasTime: true,\n past: false,\n present: true,\n future: false,\n })\n}\n\nexport function getDayIdentifier (timestamp: { year: number, month: number, day: number }): number {\n return timestamp.year * OFFSET_YEAR + timestamp.month * OFFSET_MONTH + timestamp.day\n}\n\nexport function getTimeIdentifier (timestamp: { hour: number, minute: number }): number {\n return timestamp.hour * OFFSET_HOUR + timestamp.minute\n}\n\nexport function getTimestampIdentifier (timestamp: CalendarTimestamp): number {\n return getDayIdentifier(timestamp) * OFFSET_TIME + getTimeIdentifier(timestamp)\n}\n\nexport function updateRelative (timestamp: CalendarTimestamp, now: CalendarTimestamp, time = false): CalendarTimestamp {\n let a = getDayIdentifier(now)\n let b = getDayIdentifier(timestamp)\n let present = a === b\n\n if (timestamp.hasTime && time && present) {\n a = getTimeIdentifier(now)\n b = getTimeIdentifier(timestamp)\n present = a === b\n }\n\n timestamp.past = b < a\n timestamp.present = present\n timestamp.future = b > a\n\n return timestamp\n}\n\nexport function isTimedless (input: VTimestampInput): input is (Date | number) {\n return (input instanceof Date) || (typeof input === 'number' && isFinite(input))\n}\n\nexport function updateHasTime (timestamp: CalendarTimestamp, hasTime: boolean, now?: CalendarTimestamp): CalendarTimestamp {\n if (timestamp.hasTime !== hasTime) {\n timestamp.hasTime = hasTime\n if (!hasTime) {\n timestamp.hour = HOUR_MAX\n timestamp.minute = MINUTE_MAX\n timestamp.time = getTime(timestamp)\n }\n if (now) {\n updateRelative(timestamp, now, timestamp.hasTime)\n }\n }\n\n return timestamp\n}\n\nexport function updateMinutes (timestamp: CalendarTimestamp, minutes: number, now?: CalendarTimestamp): CalendarTimestamp {\n timestamp.hasTime = true\n timestamp.hour = Math.floor(minutes / MINUTES_IN_HOUR)\n timestamp.minute = minutes % MINUTES_IN_HOUR\n timestamp.time = getTime(timestamp)\n if (now) {\n updateRelative(timestamp, now, true)\n }\n\n return timestamp\n}\n\nexport function updateWeekday (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.weekday = getWeekday(timestamp)\n\n return timestamp\n}\n\nexport function updateFormatted (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.time = getTime(timestamp)\n timestamp.date = getDate(timestamp)\n\n return timestamp\n}\n\nexport function getWeekday (timestamp: CalendarTimestamp): number {\n if (timestamp.hasDay) {\n const _ = Math.floor\n const k = timestamp.day\n const m = ((timestamp.month + 9) % MONTH_MAX) + 1\n const C = _(timestamp.year / 100)\n const Y = (timestamp.year % 100) - (timestamp.month <= 2 ? 1 : 0)\n\n return (((k + _(2.6 * m - 0.2) - 2 * C + Y + _(Y / 4) + _(C / 4)) % 7) + 7) % 7\n }\n\n return timestamp.weekday\n}\n\nexport function daysInMonth (year: number, month: number) {\n return isLeapYear(year) ? DAYS_IN_MONTH_LEAP[month] : DAYS_IN_MONTH[month]\n}\n\nexport function copyTimestamp (timestamp: CalendarTimestamp): CalendarTimestamp {\n const { date, time, year, month, day, weekday, hour, minute, hasDay, hasTime, past, present, future } = timestamp\n\n return { date, time, year, month, day, weekday, hour, minute, hasDay, hasTime, past, present, future }\n}\n\nexport function padNumber (x: number, length: number): string {\n let padded = String(x)\n while (padded.length < length) {\n padded = '0' + padded\n }\n\n return padded\n}\n\nexport function getDate (timestamp: CalendarTimestamp): string {\n let str = `${padNumber(timestamp.year, 4)}-${padNumber(timestamp.month, 2)}`\n\n if (timestamp.hasDay) str += `-${padNumber(timestamp.day, 2)}`\n\n return str\n}\n\nexport function getTime (timestamp: CalendarTimestamp): string {\n if (!timestamp.hasTime) {\n return ''\n }\n\n return `${padNumber(timestamp.hour, 2)}:${padNumber(timestamp.minute, 2)}`\n}\n\nexport function nextMinutes (timestamp: CalendarTimestamp, minutes: number): CalendarTimestamp {\n timestamp.minute += minutes\n while (timestamp.minute > MINUTES_IN_HOUR) {\n timestamp.minute -= MINUTES_IN_HOUR\n timestamp.hour++\n if (timestamp.hour >= HOURS_IN_DAY) {\n nextDay(timestamp)\n timestamp.hour = FIRST_HOUR\n }\n }\n\n return timestamp\n}\n\nexport function nextDay (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.day++\n timestamp.weekday = (timestamp.weekday + 1) % DAYS_IN_WEEK\n if (timestamp.day > DAYS_IN_MONTH_MIN && timestamp.day > daysInMonth(timestamp.year, timestamp.month)) {\n timestamp.day = DAY_MIN\n timestamp.month++\n if (timestamp.month > MONTH_MAX) {\n timestamp.month = MONTH_MIN\n timestamp.year++\n }\n }\n\n return timestamp\n}\n\nexport function prevDay (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.day--\n timestamp.weekday = (timestamp.weekday + 6) % DAYS_IN_WEEK\n if (timestamp.day < DAY_MIN) {\n timestamp.month--\n if (timestamp.month < MONTH_MIN) {\n timestamp.year--\n timestamp.month = MONTH_MAX\n }\n timestamp.day = daysInMonth(timestamp.year, timestamp.month)\n }\n\n return timestamp\n}\n\nexport function relativeDays (\n timestamp: CalendarTimestamp,\n mover: CalendarTimestampOperation = nextDay,\n days = 1\n): CalendarTimestamp {\n while (--days >= 0) mover(timestamp)\n\n return timestamp\n}\n\nexport function diffMinutes (min: CalendarTimestamp, max: CalendarTimestamp) {\n const Y = (max.year - min.year) * 525600\n const M = (max.month - min.month) * 43800\n const D = (max.day - min.day) * 1440\n const h = (max.hour - min.hour) * 60\n const m = (max.minute - min.minute)\n\n return Y + M + D + h + m\n}\n\nexport function findWeekday (timestamp: CalendarTimestamp, weekday: number,\n mover: CalendarTimestampOperation = nextDay, maxDays = 6): CalendarTimestamp {\n while (timestamp.weekday !== weekday && --maxDays >= 0) mover(timestamp)\n\n return timestamp\n}\n\nexport function getWeekdaySkips (weekdays: number[]): number[] {\n const skips: number[] = [1, 1, 1, 1, 1, 1, 1]\n const filled: number[] = [0, 0, 0, 0, 0, 0, 0]\n for (let i = 0; i < weekdays.length; i++) {\n filled[weekdays[i]] = 1\n }\n for (let k = 0; k < DAYS_IN_WEEK; k++) {\n let skip = 1\n for (let j = 1; j < DAYS_IN_WEEK; j++) {\n const next = (k + j) % DAYS_IN_WEEK\n if (filled[next]) {\n break\n }\n skip++\n }\n skips[k] = filled[k] * skip\n }\n\n return skips\n}\n\nexport function timestampToDate (timestamp: CalendarTimestamp): Date {\n const time = `${padNumber(timestamp.hour, 2)}:${padNumber(timestamp.minute, 2)}`\n const date = timestamp.date\n\n return new Date(`${date}T${time}:00+00:00`)\n}\n\nexport function createDayList (\n start: CalendarTimestamp,\n end: CalendarTimestamp,\n now: CalendarTimestamp,\n weekdaySkips: number[],\n max = 42,\n min = 0\n): CalendarTimestamp[] {\n const stop = getDayIdentifier(end)\n const days: CalendarTimestamp[] = []\n let current = copyTimestamp(start)\n let currentIdentifier = 0\n let stopped = currentIdentifier === stop\n\n if (stop < getDayIdentifier(start)) {\n throw new Error('End date is earlier than start date.')\n }\n\n while ((!stopped || days.length < min) && days.length < max) {\n currentIdentifier = getDayIdentifier(current)\n stopped = stopped || currentIdentifier === stop\n if (weekdaySkips[current.weekday] === 0) {\n current = nextDay(current)\n continue\n }\n const day = copyTimestamp(current)\n updateFormatted(day)\n updateRelative(day, now)\n days.push(day)\n current = relativeDays(current, nextDay, weekdaySkips[current.weekday])\n }\n\n if (!days.length) throw new Error('No dates found using specified start date, end date, and weekdays.')\n\n return days\n}\n\nexport function createIntervalList (timestamp: CalendarTimestamp, first: number,\n minutes: number, count: number, now?: CalendarTimestamp): CalendarTimestamp[] {\n const intervals: CalendarTimestamp[] = []\n\n for (let i = 0; i < count; i++) {\n const mins = first + (i * minutes)\n const int = copyTimestamp(timestamp)\n intervals.push(updateMinutes(int, mins, now))\n }\n\n return intervals\n}\n\nexport function createNativeLocaleFormatter (locale: string, getOptions: CalendarTimestampFormatOptions): CalendarFormatter {\n const emptyFormatter: CalendarFormatter = (_t, _s) => ''\n\n if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return emptyFormatter\n }\n\n return (timestamp, short) => {\n try {\n const intlFormatter = new Intl.DateTimeFormat(locale || undefined, getOptions(timestamp, short))\n\n return intlFormatter.format(timestampToDate(timestamp))\n } catch (e) {\n return ''\n }\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 } as const\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 const [year, month] = value.split('-')\n\n this.inputYear = parseInt(year, 10)\n this.inputMonth = parseInt(month, 10) - 1\n\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 const [year, month, day] = value.split('-')\n\n this.inputYear = parseInt(year, 10)\n this.inputMonth = parseInt(month, 10) - 1\n this.inputDay = parseInt(day, 10)\n\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","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","// 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'\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 Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Activatable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n directives: { ClickOutside },\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: [String, Number],\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$scopedSlots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeDestroy () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.options.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.dialog?.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.dialog?.focus()\n }\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n this.$refs.dialog &&\n // It isn't the document or the dialog body\n ![document, this.$refs.dialog].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.dialog.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.dialog.querySelectorAll('button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]')) 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: 'dialog',\n 'aria-modal': this.hideOverlay ? undefined : 'true',\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 attrs: {\n tabindex: this.isActive ? 0 : undefined,\n },\n ref: 'dialog',\n directives: [\n {\n name: 'click-outside',\n value: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n },\n { name: 'show', value: this.isActive },\n ],\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","// Styles\nimport './VDivider.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\nexport default Themeable.extend({\n name: 'v-divider',\n\n props: {\n inset: Boolean,\n vertical: Boolean,\n },\n\n render (h): VNode {\n // WAI-ARIA attributes\n let orientation\n if (!this.$attrs.role || this.$attrs.role === 'separator') {\n orientation = this.vertical ? 'vertical' : 'horizontal'\n }\n return h('hr', {\n class: {\n 'v-divider': true,\n 'v-divider--inset': this.inset,\n 'v-divider--vertical': this.vertical,\n ...this.themeClasses,\n },\n attrs: {\n role: 'separator',\n 'aria-orientation': orientation,\n ...this.$attrs,\n },\n on: this.$listeners,\n })\n },\n})\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\n"],"names":["baseMixins","mixins","VSheet","Routable","Positionable","Sizeable","GroupableFactory","ToggleableFactory","extend","name","props","activeClass","type","String","default","this","btnToggle","block","Boolean","depressed","fab","icon","loading","outlined","plain","retainFocusOnClick","rounded","tag","text","tile","value","data","proxyClass","computed","classes","_objectSpread","options","call","absolute","bottom","disabled","isElevated","fixed","hasBg","left","right","isRound","to","top","themeClasses","groupClasses","elevationClasses","sizeableClasses","computedElevation","Elevatable","computedRipple","defaultRipple","circle","_a","ripple","elevation","Number","styles","measurableStyles","created","_this","breakingProps","forEach","_ref","_ref2","_slicedToArray","original","replacement","$attrs","hasOwnProperty","breaking","methods","click","e","detail","$el","blur","$emit","toggle","genContent","$createElement","staticClass","getSlot","genLoader","class","VProgressCircular","indeterminate","size","width","render","h","children","_this$generateRouteLi","generateRouteLink","setColor","setBackgroundColor","setTextColor","attrs","includes","_typeof","JSON","stringify","color","VBtn","Loadable","flat","hover","img","link","loaderHeight","raised","isClickable","style","background","concat","genProgress","key","tabindex","VCardActions","createSimpleFunctional","VCardSubtitle","VCardText","VCardTitle","VCard","VWindow","continuous","cycle","delimiterIcon","height","hideDelimiters","hideDelimiterBackground","interval","validator","mandatory","progress","progressColor","showArrows","verticalDelimiters","undefined","provide","parentTheme","theme","internalHeight","slideTimeout","isVertical","isDark","dark","light","watch","internalValue","val","oldVal","restartTimeout","clearTimeout","mounted","startTimeout","genControlIcons","genDelimiters","genItems","length","items","i","child","$vuetify","lang","t","small","getValue","VIcon","push","ButtonGroup","on","change","VProgressLinear","internalIndex","window","requestAnimationFrame","setTimeout","next","convertToUnit","VWindowItem","inject","inheritAttrs","genDefaultSlot","VImg","windowGroup","$listeners","scopedSlots","placeholder","$scopedSlots","genWindowItem","directives","isActive","Selectable","indeterminateIcon","offIcon","onIcon","inputIndeterminate","VInput","computedIcon","validationState","isDisabled","hasError","shouldValidate","hasSuccess","hasColor","computedColor","$nextTick","genCheckbox","_this$attrs$","attrs$","checkboxAttrs","title","_objectWithoutProperties","_excluded","dense","genInput","toString","genRipple","rippleState","genLabel","Vue","functional","Ripple","Colorable","Themeable","listeners","def","center","mergeData","stopPropagation","input","wrapInArray","f","BaseSlideGroup","chipGroup","column","scrollOffset","onResize","genData","active","close","closeIcon","closeLabel","draggable","filter","filterIcon","label","pill","textColor","isLink","hasClose","genFilter","VExpandXTransition","genClose","_this2","preventDefault","VChip","fromHSVA","hsva","hexa","HSVAtoHex","hsla","HSVAtoHSLA","rgba","HSVAtoRGBA","alpha","a","hex","substr","hue","fromHSLA","HSLAtoHSVA","fromRGBA","RGBAtoHSVA","RGBAtoHex","fromHexa","HexToHSVA","fromHex","parseHex","has","obj","every","k","parseColor","oldColor","r","g","b","parseFloat","stripAlpha","rest","extractColor","shouldStrip","hasAlpha","Object","hideAlpha","genAlpha","genTrack","thumbColor","hideDetails","step","min","max","backgroundImage","rtl","RGBtoCSS","genSliders","genHue","genDot","RGBAtoCSS","VSlider","dotSize","boundingRect","dot","x","s","parseInt","y","v","updateCanvas","emitColor","_this$boundingRect","clamp","canvas","$refs","ctx","getContext","saturationGradient","createLinearGradient","addColorStop","fillStyle","fillRect","valueGradient","handleClick","getBoundingClientRect","clientX","clientY","handleMouseDown","addEventListener","handleMouseMove","handleMouseUp","removeEventListener","genCanvas","ref","radius","transform","mousedown","modes","inputs","from","hideModeSwitch","mode","keys","internalMode","currentMode","Math","round","parseValue","changeMode","index","indexOf","newMode","target","domProps","toUpperCase","genInputs","endsWith","maxlength","el","slice","map","newVal","assign","_defineProperty","genSwitch","parseDefaultColors","colors","base","darken4","darken3","darken2","darken1","lighten1","lighten2","lighten3","lighten4","lighten5","black","white","transparent","swatches","Array","maxWidth","maxHeight","genColor","content","deepEqual","contrastRatio","genSwatches","swatch","canvasHeight","hideCanvas","hideSliders","hideInputs","showSwatches","swatchesMaxHeight","handler","updateColor","immediate","VColorPickerCanvas","genControls","genPreview","genEdit","VColorPickerEdit","VColorPickerPreview","VColorPickerSwatches","VAutocomplete","delimiters","returnObject","editingIndex","computedCounterValue","multiple","selectedItems","internalSearch","hasSlot","VSelect","isAnyValueAllowed","menuCanShow","isFocused","hasDisplayedItems","$slots","hideNoData","searchIsDirty","onInternalSearchChanged","delimiter","find","d","updateTags","updateMenuDimensions","paste","onPaste","genChipSelection","item","chip","componentOptions","dblclick","getText","selectedIndex","onChipInput","onEnterDown","getMenuIndex","updateSelf","onKeyDown","keyCode","ctrlKey","keyCodes","home","end","selectionStart","enter","changeSelectedIndex","onTabDown","selectItem","updateEditing","toLocaleLowerCase","setSelectedItems","setValue","findIndex","splice","updateCombobox","isUsingSlot","selection","hasChips","_this3","menuIndex","itemToSelect","event","pastedItemText","clipboardData","getData","findExistingIndex","clearableCallback","isGreater","functionalThemeClasses","required","pagination","itemsPerPageOptions","prevIcon","nextIcon","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disablePagination","disableItemsPerPage","pageText","disableNextPageIcon","itemsPerPage","page","itemsLength","pageStop","computedDataItemsPerPageOptions","option","genDataItemsPerPageOption","updateOptions","onFirstPage","onPreviousPage","onNextPage","onLastPage","pageCount","onChangeItemsPerPage","genItemsPerPageSelect","computedIPPO","ippo","auto","minWidth","genPaginationInfo","pageStart","genIcon","genIcons","before","after","unshift","Mobile","VData","itemKey","singleSelect","expanded","mobileBreakpoint","singleExpand","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","isSelected","someItems","some","sanitizedFooterProps","camelizeObjectKeys","isSelectable","_this4","reduce","getObjectValueByPath","old","values","_this5","_this6","_this7","removedProps","prop","removed","onKeyUp","beforeDestroy","shift","shiftKey","toggleSelectAll","select","_this8","arguments","emit","lastEntryKey","lastEntryKeySelected","multipleSelect","start","currentItem","isExpanded","expand","createItemProps","_this9","isMobile","genEmptyWrapper","genEmpty","originalItemsLength","filteredItemsLength","noData","noResults","_this10","empty","genFooter","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","_this11","$props","headers","sortBy","sortDesc","groupBy","groupDesc","multiSort","mustSort","checkboxColor","sortIcon","showGroupBy","disableSort","genSelectAll","VSimpleCheckbox","genSortIcon","header","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","asc","desc","genSortSelect","menuProps","closeOnContentClick","_toConsumableArray","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","join","genHeader","role","scope","align","divider","_this$getAria","groupable","mobile","slots","dedupeModelListeners","rebuildSlots","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","slot","computedSlots","columns","slotName","scopedSlot","regularSlot","apply","textAlign","cellClass","headerClass","contentClass","summaryClass","hideDefaultHeader","mobileRowChildren","filterFn","search","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","customFilter","filterMode","trim","defaultFilter","matchesColumnFilters","matchesSearchTerm","VDataIterator","Mouse","showSelect","showExpand","caption","headerProps","calculateWidths","fixedHeader","headersLength","expandIcon","Function","itemClass","itemStyle","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","colspanAttrs","colspan","columnSorters","acc","sort","filterable","sanitizedHeaderProps","computedItemsPerPage","firstOption","groupByText","_c","_b","calcWidths","querySelectorAll","clientWidth","customFilterWithColumns","customSortWithHeaders","locale","customSort","getDefaultMouseEventHandlers","genCaption","genColgroup","genLoading","genHeaders","group","VDataTableHeader","groupedItems","genGroupedRows","genRows","$set","genDefaultGroupedRow","isOpen","toggleFn","removeFn","remove","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","MobileRow","Row","mergeClasses","getPropertyFromItem","mergeStyles","genBody","body","genFoot","foot","genFooters","simpleProps","VSimpleTable","proxySlot","genWrapper","wrapper","sortItems","customGroup","groupItems","disableFiltering","searchItems","serverItemsLength","internalOptions","_internalOptions$sort","_internalOptions$grou","_internalOptions","sortDiff","groupDiff","fillArray","filteredItems","ceil","isGrouped","computedItems","paginateItems","scopedProps","sortArray","computedOptions","deep","isArray","oldBy","oldDesc","by","byIndex","_this$toggle","_this$toggle2","PickerButton","date","readonly","selectingYear","year","yearIcon","isReversing","computedTransition","prev","genYearIcon","getYearBtn","genPickerButton","genTitleText","innerHTML","genTitleDate","createNativeLocaleFormatter","substrOptions","makeIsoString","dateString","_dateString$trim$spli","split","_dateString$trim$spli2","month","pad","intlFormatter","Intl","DateTimeFormat","format","Date","sign","_value$split$map","_value$split$map2","Localable","nextAriaLabel","prevAriaLabel","formatter","currentLocale","timeZone","genBtn","ariaLabelId","calculateChange","_String$split$map","_String$split$map2","monthChange","transition","createItemTypeNativeListeners","instance","itemTypeSuffix","eventName","createItemTypeListeners","_dateString$split","_dateString$split2","_dateString$split2$","_dateString$split2$2","isDateAllowed","allowedFn","Touch","allowedDates","current","events","eventColor","range","scrollable","tableDate","wheelThrottle","displayedMonth","displayedYear","throttle","wheel","genButtonClasses","isAllowed","isFloating","isCurrent","isFirst","isLast","genButtonEvents","mouseEventType","mergeListeners","genButton","isOtherMonth","genEvents","getEventColors","eventData","arrayize","eventColors","isValidScroll","calculateTableDate","sanitizeType","sanitizeDateString","deltaY","touch","genTable","touchDirective","offsetX","_sort","_sort2","DatePickerTable","firstDayOfWeek","localeFirstDayOfYear","showAdjacentMonths","showWeek","weekdayFormat","day","weekdayFormatter","weekday","weekDays","first","createRange","delta","genTHead","days","genTR","weekDaysBeforeFirstDayOfTheMonth","firstDayOfTheMonth","weekDay","getUTCDay","getWeekNumber","dayInMonth","weekNumber","genWeekNumber","padStart","genTBody","daysInMonth","getDate","prevMonthYear","prevMonth","firstDayFromPreviousMonth","cellsInRow","nextMonthYear","nextMonth","nextMonthDay","cols","fill","_loop","row","tds","_","col","defaultColor","activeItem","getElementsByClassName","scrollTop","offsetTop","offsetHeight","scrollHeight","genYearItem","formatted","genYearItems","selectedYear","getFullYear","maxYear","minYear","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP","isLeapYear","Picker","activePicker","dayFormat","headerDateFormat","monthFormat","nextMonthAriaLabel","nextYearAriaLabel","pickerDate","prevMonthAriaLabel","prevYearAriaLabel","reactive","showCurrent","selectedItemsText","titleDateFormat","yearFormat","now","internalActivePicker","inputDay","inputMonth","inputYear","multipleValue","getMonth","isMultiple","lastValue","selectedMonths","inputDate","tableMonth","tableYear","minMonth","maxMonth","formatters","titleDate","defaultTitleMultipleDateFormatter","defaultTitleDateFormatter","dates","titleFormats","titleDateFormatter","landscapeFormatter","replace","match","nonDigit","digit","landscape","newValue","oldValue","checkMultipleProp","setInputDate","output","emitInput","newInput","valueType","constructor","expected","consoleWarn","yearClick","monthClick","_value$split","_value$split2","dateClick","_value$split3","_value$split4","genPickerTitle","VDatePickerTitle","genTableHeader","VDatePickerHeader","genDateTable","VDatePickerDateTable","genMonthTable","VDatePickerMonthTable","genYears","VDatePickerYears","genPickerBody","array","genPicker","string","targetLength","padString","repeat","n","Dependent","Detachable","Overlayable","Returnable","Stackable","Activatable","ClickOutside","fullscreen","noClickAnimation","origin","persistent","retainFocus","activatedBy","animate","animateTimeout","stackMinZIndex","previousActiveElement","contentClasses","hasActivator","activator","show","hideScroll","removeOverlay","unbind","focus","showScroll","genOverlay","beforeMount","isBooted","animateClick","closeConditional","_isDestroyed","contains","overlay","activeZIndex","getMaxZIndex","document","documentElement","classList","add","hideOverlay","dialog","activeElement","bind","onFocusin","onClickOutside","onKeydown","esc","getOpenDependents","getActivator","getOpenDependentElements","focusable","hasAttribute","matches","showLazyContent","VThemeProvider","root","getScopeIdAttrs","keydown","zIndex","genTransition","genInnerContent","appear","include","transformOrigin","getContentSlot","attach","genActivator","inset","vertical","orientation","VDivider"],"sourceRoot":""}