{"version":3,"sources":["webpack:///../../../src/components/VGrid/VFlex.ts","webpack:///../../../src/components/VCounter/VCounter.ts","webpack:///../../../src/components/VCounter/index.ts","webpack:///../../../src/components/VMenu/index.ts","webpack:///../../../src/components/VChip/index.ts","webpack:///../../../src/mixins/validatable/index.ts","webpack:///../../../src/components/VItemGroup/VItemGroup.ts","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///../../src/util/rebuildFunctionalSlots.ts","webpack:///../../../src/components/VAvatar/VAvatar.ts","webpack:///../../../src/mixins/comparable/index.ts","webpack:///../../../src/components/VTextField/VTextField.ts","webpack:///../../../src/components/VData/VData.ts","webpack:///../../../src/components/VDataIterator/VDataFooter.ts","webpack:///../../../src/components/VDataIterator/VDataIterator.ts","webpack:///../../../../src/components/VDataTable/mixins/header.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack:///../../../src/components/VDataTable/VDataTableHeader.ts","webpack:///../../../src/components/VDataTable/Row.ts","webpack:///../../../src/components/VDataTable/RowGroup.ts","webpack:///../../../src/components/VDataTable/VSimpleTable.ts","webpack:///../../../src/components/VDataTable/MobileRow.ts","webpack:///../../../src/components/VDataTable/VDataTable.ts","webpack:///../../../src/components/VCard/index.ts","webpack:///../../../src/components/VIcon/index.ts","webpack:///../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack:///../../../src/components/VGrid/VLayout.ts","webpack:///../../src/util/dedupeModelListeners.ts","webpack:///../../../src/components/VBtn/index.ts","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///../../../src/components/VSubheader/index.ts","webpack:///../../../src/components/VSelect/VSelectList.ts","webpack:///../../../src/components/VSelect/VSelect.ts","webpack:///../../../src/components/VLabel/VLabel.ts","webpack:///../../../src/components/VLabel/index.ts","webpack:///../../../src/components/VMessages/VMessages.ts","webpack:///../../../src/components/VMessages/index.ts","webpack:///../../../src/components/VInput/VInput.ts","webpack:///../../../src/components/VInput/index.ts","webpack:///../../../src/components/VChip/VChip.ts","webpack:///../../../src/components/VDivider/VDivider.ts","webpack:///./src/views/private/review/index.vue","webpack:///src/views/private/review/index.vue","webpack:///./src/views/private/review/index.vue?02b9","webpack:///./src/views/private/review/index.vue?fe93","webpack:///../../../src/directives/resize/index.ts","webpack:///../../../src/mixins/intersectable/index.ts","webpack:///../../../src/mixins/mobile/index.ts","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/mixins/filterable/index.ts"],"names":["Grid","mixins","Themeable","extend","name","functional","props","value","type","Number","String","default","max","render","h","ctx","parseInt","content","isGreater","staticClass","class","functionalThemeClasses","VCounter","VMenu","VChip","baseMixins","Colorable","RegistrableInject","disabled","Boolean","error","errorCount","errorMessages","Array","messages","readonly","rules","success","successMessages","validateOnBlur","required","data","errorBucket","hasColor","hasFocused","hasInput","isFocused","isResetting","lazyValue","this","valid","computed","computedColor","isDisabled","color","isDark","appIsDark","hasError","internalErrorMessages","length","hasSuccess","internalSuccessMessages","externalError","hasMessages","validationTarget","hasState","shouldValidate","genInternalMessages","internalMessages","internalValue","get","set","val","$emit","form","isInteractive","isReadonly","validations","slice","validationState","watch","handler","newVal","oldVal","deepEqual","validate","deep","$nextTick","setTimeout","beforeMount","created","register","beforeDestroy","unregister","methods","isArray","reset","resetValidation","force","index","rule","push","consoleError","BaseItemGroup","Comparable","Proxyable","activeClass","mandatory","multiple","tag","internalLazyValue","undefined","items","classes","themeClasses","selectedIndex","selectedItem","indexOf","selectedItems","filter","item","toggleMethod","getValue","selectedValues","v","valueComparator","some","intern","consoleWarn","genData","i","onClick","updateInternalValue","$on","updateMandatory","updateItem","_isDestroyed","splice","valueIndex","isActive","updateItemsState","forEach","updateMultiple","updateSingle","last","reverse","find","defaultValue","findIndex","isSame","$slots","provide","itemGroup","breakpoints","breakpointProps","reduce","offsetProps","upperFirst","orderProps","propMap","col","Object","keys","offset","order","breakpointClass","prop","className","breakpoint","replace","toLowerCase","cache","Map","Vue","cols","alignSelf","validator","str","includes","children","parent","cacheKey","classList","hasColClasses","startsWith","mergeData","rebuildFunctionalSlots","slots","slot","hasOwnProperty","Measurable","Roundable","left","right","size","roundedClasses","styles","height","convertToUnit","minWidth","width","measurableStyles","style","on","$listeners","setBackgroundColor","Function","VInput","Intersectable","onVisible","Loadable","dirtyTypes","directives","resize","ripple","inheritAttrs","appendOuterIcon","autofocus","clearable","clearIcon","counter","counterValue","filled","flat","fullWidth","label","outlined","placeholder","prefix","prependInnerIcon","persistentPlaceholder","rounded","shaped","singleLine","solo","soloInverted","suffix","badInput","labelWidth","prefixWidth","prependWidth","initialValue","isBooted","isClearing","options","call","isSingle","isSolo","isEnclosed","Validatable","computedCounterValue","toString","hasCounter","hasDetails","isDirty","_a","isLabelActive","hasLabel","labelPosition","labelValue","$vuetify","rtl","showLabel","setLabelWidth","setPrefixWidth","$attrs","breaking","mounted","$watch","tryAutofocus","requestAnimationFrame","isIntersecting","onResize","focus","onFocus","blur","e","window","$refs","input","clearableCallback","genAppendSlot","genIcon","genSlot","genPrependInnerSlot","genIconSlot","append","appendIcon","genInputSlot","prepend","unshift","genClearIcon","$createElement","genCounter","attrs$","maxlength","dark","light","$scopedSlots","_b","_c","genControl","genDefaultSlot","genFieldset","genTextFieldSlot","genProgress","attrs","genLegend","genLabel","absolute","focused","for","computedId","VLabel","span","domProps","innerHTML","genInput","listeners","assign","listeners$","change","title","inputAttrs","is","id","onBlur","onInput","keydown","onKeyDown","ref","modifiers","quiet","genMessages","showDetails","messagesNode","counterNode","genAffix","root","attachedRoot","$el","activeElement","target","validity","keyCode","keyCodes","enter","onMouseDown","preventDefault","stopPropagation","onMouseUp","hasMouseDown","Math","min","scrollWidth","offsetWidth","setPrependWidth","document","updateValue","sortBy","sortDesc","customSort","sortItems","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","search","customFilter","searchItems","serverItemsLength","internalOptions","wrapInArray","sortDiff","groupDiff","fillArray","itemsLength","filteredItems","pageCount","ceil","pageStart","pageStop","isGrouped","pagination","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","group","updateOptions","originalItemsLength","computedOptions","old","immediate","toggle","key","oldBy","oldDesc","by","desc","byIndex","k","map","s","itemsPerPageOptions","prevIcon","nextIcon","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","genDataItemsPerPageOption","obj","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","text","lang","t","genItemsPerPageSelect","computedIPPO","ippo","VSelect","hideDetails","auto","genPaginationInfo","click","icon","VBtn","VIcon","genIcons","before","after","getSlot","Mobile","VData","itemKey","singleSelect","expanded","mobileBreakpoint","singleExpand","loading","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","selection","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","sanitizedFooterProps","camelizeObjectKeys","isSelectable","getObjectValueByPath","values","breakingProps","original","replacement","removedProps","removed","addEventListener","onKeyUp","removeEventListener","shift","toggleSelectAll","select","emit","x","lastEntryKey","lastEntryKeySelected","multipleSelect","start","end","currentItem","isExpanded","expand","createItemProps","isMobile","genEmptyWrapper","genEmpty","filteredItemsLength","noData","noResults","genItems","empty","genFooter","scopedSlots","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","$props","headers","checkboxColor","sortIcon","showGroupBy","genSelectAll","indeterminate","VSimpleCheckbox","genSortIcon","header","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","active","asc","genSortSelect","menuProps","closeOnContentClick","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","join","genHeader","role","scope","align","divider","groupable","mobile","dedupeModelListeners","rebuildSlots","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","computedSlots","columns","slotName","scopedSlot","regularSlot","textAlign","cellClass","headerClass","contentClass","summaryClass","dense","fixedHeader","top","bottom","genWrapper","wrapper","hideDefaultHeader","mobileRowChildren","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","trim","matchesColumnFilters","defaultFilter","matchesSearchTerm","VDataIterator","showSelect","showExpand","caption","headerProps","calculateWidths","headersLength","expandIcon","itemClass","loaderHeight","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","colspanAttrs","colspan","columnSorters","acc","filterable","sanitizedHeaderProps","computedItemsPerPage","firstOption","groupByText","calcWidths","from","querySelectorAll","clientWidth","customFilterWithColumns","customSortWithHeaders","genCaption","genColgroup","genLoading","genHeaders","VDataTableHeader","genGroupedRows","genRows","$set","genDefaultGroupedRow","isOpen","toggleFn","removeFn","remove","small","column","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","MobileRow","Row","mergeClasses","getPropertyFromItem","contextmenu","event","dblclick","genBody","body","genFoot","foot","genFooters","simpleProps","VSimpleTable","proxySlot","VCardActions","createSimpleFunctional","VCardSubtitle","VCardText","VCardTitle","VCard","Ripple","indeterminateIcon","onIcon","offIcon","setTextColor","def","center","f","model","callback","VDivider","inset","VSubheader","action","hideSelected","itemDisabled","itemText","itemValue","noFilter","searchInput","parsedItems","tileActiveClass","staticNoDataTile","tile","mousedown","VListItem","genTileContent","genAction","inputValue","VListItemAction","genDivider","genFilteredText","escapeHTML","middle","getMaskedCharacters","genHighlight","toLocaleLowerCase","genTile","hasItem","getDisabled","_uid","needsTile","getText","VListItemContent","VListItemTitle","componentOptions","Ctor","VList","tabindex","defaultMenuProps","closeOnClick","disableKeys","openOnClick","maxHeight","VTextField","Dependent","Filterable","ClickOutside","attach","cacheItems","chips","deletableChips","disableLookup","eager","itemColor","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","keyboardLookupPrefix","keyboardLookupLastTime","allItems","filterDuplicates","concat","hasChips","computedOwns","closeConditional","include","getOpenDependentElements","dynamicHeight","hasSlot","listData","scopeId","$vnode","context","$options","_scopeId","virtualizedItems","selectItem","staticList","VSelectList","$_menuProps","menuCanShow","normalisedProps","split","p","nudgeBottom","offsetY","setSelectedItems","menu","updateDimensions","onMenuActiveChange","setMenuIndex","activateMenu","setValue","getContent","contains","arr","uniqueValues","has","findExistingIndex","genChipSelection","close","onChipInput","JSON","stringify","genCommaSelection","selections","genSelections","genHiddenInput","genMenu","cb","extraData","autocomplete","keypress","onKeyPress","genList","genListWithSlot","activator","scroll","onScroll","genSelection","genSlotSelection","selected","getMenuIndex","listIndex","isAppendInner","onEscDown","KEYBOARD_LOOKUP_THRESHOLD","now","performance","getTiles","tab","up","down","home","changeListIndex","space","onUpDown","esc","onTabDown","onSpaceDown","tiles","getAttribute","which","showMoreItems","scrollHeight","scrollTop","clientHeight","activeTile","hasClickableTiles","prevTile","nextTile","firstTile","lastTile","appendInner","position","genChildren","genMessage","message","VMessages","BindsAttrs","backgroundColor","hideSpinButtons","hint","persistentHint","prependIcon","messagesToDisplay","hasHint","$_modelEvent","validation","validationResult","beforeCreate","genContent","genPrependSlot","eventName","kebabCase","hasListener","mouseup","location","Sizeable","Routable","GroupableFactory","ToggleableFactory","chipGroup","closeIcon","closeLabel","draggable","filterIcon","link","pill","textColor","proxyClass","isClickable","isLink","hasClose","sizeableClasses","groupClasses","genFilter","VExpandXTransition","genClose","generateRouteLink","vertical","orientation","staticStyle","_vm","fetch","$event","$$v","expression","process","rowClick","handleToggleAll","_e","row","list","limit","lastIndex","load","components","uploadfolder","user","order_by","params","then","response","freeze","hide","format","component","staticRenderFns","inserted","el","binding","vnode","passive","_onResize","unbind","Resize","intersectable","Intersect","onObserve","destroyed","entries","observer","isNaN","mobileWidth","isNumber","deprecate","VGrid"],"mappings":"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","file":"js/chunk-3c4a83f0.2a1e7a1e.js","sourcesContent":["import './_grid.sass'\n\nimport Grid from './grid'\n\nexport default Grid('flex')\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 VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'form', any>('form'),\n Themeable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'validatable',\n\n props: {\n disabled: Boolean,\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n messages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n readonly: Boolean,\n rules: {\n type: Array,\n default: () => [],\n } as PropValidator,\n success: Boolean,\n successMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n validateOnBlur: Boolean,\n value: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.value,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled || (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly || (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeDestroy () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n","// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Groupable from '../../mixins/groupable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue/types'\n\nexport type GroupableInstance = InstanceType & {\n id?: string\n to?: any\n value?: any\n }\n\nexport const BaseItemGroup = mixins(\n Comparable,\n Proxyable,\n Themeable\n).extend({\n name: 'base-item-group',\n\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active',\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null,\n },\n multiple: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n data () {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n items: [] as GroupableInstance[],\n }\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-item-group': true,\n ...this.themeClasses,\n }\n },\n selectedIndex (): number {\n return (this.selectedItem && this.items.indexOf(this.selectedItem)) || -1\n },\n selectedItem (): GroupableInstance | undefined {\n if (this.multiple) return undefined\n\n return this.selectedItems[0]\n },\n selectedItems (): GroupableInstance[] {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index))\n })\n },\n selectedValues (): any[] {\n if (this.internalValue == null) return []\n\n return Array.isArray(this.internalValue)\n ? this.internalValue\n : [this.internalValue]\n },\n toggleMethod (): (v: any) => boolean {\n if (!this.multiple) {\n return (v: any) => this.valueComparator(this.internalValue, v)\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.some(intern => this.valueComparator(intern, v))\n }\n\n return () => false\n },\n },\n\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState',\n },\n\n created () {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this)\n }\n },\n\n methods: {\n\n genData (): object {\n return {\n class: this.classes,\n }\n },\n getValue (item: GroupableInstance, i: number): unknown {\n return item.value === undefined\n ? i\n : item.value\n },\n onClick (item: GroupableInstance) {\n this.updateInternalValue(\n this.getValue(item, this.items.indexOf(item))\n )\n },\n register (item: GroupableInstance) {\n const index = this.items.push(item) - 1\n\n item.$on('change', () => this.onClick(item))\n\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory()\n }\n\n this.updateItem(item, index)\n },\n unregister (item: GroupableInstance) {\n if (this._isDestroyed) return\n\n const index = this.items.indexOf(item)\n const value = this.getValue(item, index)\n\n this.items.splice(index, 1)\n\n const valueIndex = this.selectedValues.indexOf(value)\n\n // Items is not selected, do nothing\n if (valueIndex < 0) return\n\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value)\n }\n\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value)\n } else {\n this.internalValue = undefined\n }\n\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true)\n }\n },\n updateItem (item: GroupableInstance, index: number) {\n const value = this.getValue(item, index)\n\n item.isActive = this.toggleMethod(value)\n },\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState () {\n this.$nextTick(() => {\n if (this.mandatory &&\n !this.selectedItems.length\n ) {\n return this.updateMandatory()\n }\n\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem)\n })\n },\n updateInternalValue (value: any) {\n this.multiple\n ? this.updateMultiple(value)\n : this.updateSingle(value)\n },\n updateMandatory (last?: boolean) {\n if (!this.items.length) return\n\n const items = this.items.slice()\n\n if (last) items.reverse()\n\n const item = items.find(item => !item.disabled)\n\n // If no tabs are available\n // aborts mandatory value\n if (!item) return\n\n const index = this.items.indexOf(item)\n\n this.updateInternalValue(\n this.getValue(item, index)\n )\n },\n updateMultiple (value: any) {\n const defaultValue = Array.isArray(this.internalValue)\n ? this.internalValue\n : []\n const internalValue = defaultValue.slice()\n const index = internalValue.findIndex(val => this.valueComparator(val, value))\n\n if (\n this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1\n ) return\n\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max\n ) return\n\n index > -1\n ? internalValue.splice(index, 1)\n : internalValue.push(value)\n\n this.internalValue = internalValue\n },\n updateSingle (value: any) {\n const isSame = this.valueComparator(this.internalValue, value)\n\n if (this.mandatory && isSame) return\n\n this.internalValue = isSame ? undefined : value\n },\n },\n\n render (h): VNode {\n return h(this.tag, this.genData(), this.$slots.default)\n },\n})\n\nexport default BaseItemGroup.extend({\n name: 'v-item-group',\n\n provide (): object {\n return {\n itemGroup: this,\n }\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","import { CreateElement, VNode } from 'vue'\n\nexport default function rebuildFunctionalSlots (slots: { [key: string]: VNode[] | undefined }, h: CreateElement) {\n const children: VNode[] = []\n\n for (const slot in slots) {\n if (slots.hasOwnProperty(slot)) {\n children.push(h('template', { slot }, slots[slot]))\n }\n }\n\n return children\n}\n","import './VAvatar.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n Colorable,\n Measurable,\n Roundable,\n /* @vue/component */\n).extend({\n name: 'v-avatar',\n\n props: {\n left: Boolean,\n right: Boolean,\n size: {\n type: [Number, String],\n default: 48,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-avatar--left': this.left,\n 'v-avatar--right': this.right,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return {\n height: convertToUnit(this.size),\n minWidth: convertToUnit(this.size),\n width: convertToUnit(this.size),\n ...this.measurableStyles,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-avatar',\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n }\n\n return h('div', this.setBackgroundColor(this.color, data), this.$slots.default)\n },\n})\n","import Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { deepEqual } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'comparable',\n props: {\n valueComparator: {\n type: Function,\n default: deepEqual,\n } as PropValidator,\n },\n})\n","// Styles\nimport './VTextField.sass'\n\n// Extensions\nimport VInput from '../VInput'\n\n// Components\nimport VCounter from '../VCounter'\nimport VLabel from '../VLabel'\n\n// Mixins\nimport Intersectable from '../../mixins/intersectable'\nimport Loadable from '../../mixins/loadable'\nimport Validatable from '../../mixins/validatable'\n\n// Directives\nimport resize from '../../directives/resize'\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { attachedRoot } from '../../util/dom'\nimport { convertToUnit, keyCodes } from '../../util/helpers'\nimport { breaking, consoleWarn } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType } from 'vue/types'\n\nconst baseMixins = mixins(\n VInput,\n Intersectable({\n onVisible: [\n 'onResize',\n 'tryAutofocus',\n ],\n }),\n Loadable,\n)\ninterface options extends InstanceType {\n $refs: {\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\nconst dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-text-field',\n\n directives: {\n resize,\n ripple,\n },\n\n inheritAttrs: false,\n\n props: {\n appendOuterIcon: String,\n autofocus: Boolean,\n clearable: Boolean,\n clearIcon: {\n type: String,\n default: '$clear',\n },\n counter: [Boolean, Number, String],\n counterValue: Function as PropType<(value: any) => number>,\n filled: Boolean,\n flat: Boolean,\n fullWidth: Boolean,\n label: String,\n outlined: Boolean,\n placeholder: String,\n prefix: String,\n prependInnerIcon: String,\n persistentPlaceholder: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n shaped: Boolean,\n singleLine: Boolean,\n solo: Boolean,\n soloInverted: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n },\n\n data: () => ({\n badInput: false,\n labelWidth: 0,\n prefixWidth: 0,\n prependWidth: 0,\n initialValue: null,\n isBooted: false,\n isClearing: false,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-text-field': true,\n 'v-text-field--full-width': this.fullWidth,\n 'v-text-field--prefix': this.prefix,\n 'v-text-field--single-line': this.isSingle,\n 'v-text-field--solo': this.isSolo,\n 'v-text-field--solo-inverted': this.soloInverted,\n 'v-text-field--solo-flat': this.flat,\n 'v-text-field--filled': this.filled,\n 'v-text-field--is-booted': this.isBooted,\n 'v-text-field--enclosed': this.isEnclosed,\n 'v-text-field--reverse': this.reverse,\n 'v-text-field--outlined': this.outlined,\n 'v-text-field--placeholder': this.placeholder,\n 'v-text-field--rounded': this.rounded,\n 'v-text-field--shaped': this.shaped,\n }\n },\n computedColor (): string | undefined {\n const computedColor = Validatable.options.computed.computedColor.call(this)\n\n if (!this.soloInverted || !this.isFocused) return computedColor\n\n return this.color || 'primary'\n },\n computedCounterValue (): number {\n if (typeof this.counterValue === 'function') {\n return this.counterValue(this.internalValue)\n }\n return [...(this.internalValue || '').toString()].length\n },\n hasCounter (): boolean {\n return this.counter !== false && this.counter != null\n },\n hasDetails (): boolean {\n return VInput.options.computed.hasDetails.call(this) || this.hasCounter\n },\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit('input', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.lazyValue?.toString().length > 0 || this.badInput\n },\n isEnclosed (): boolean {\n return (\n this.filled ||\n this.isSolo ||\n this.outlined\n )\n },\n isLabelActive (): boolean {\n return this.isDirty || dirtyTypes.includes(this.type)\n },\n isSingle (): boolean {\n return (\n this.isSolo ||\n this.singleLine ||\n this.fullWidth ||\n // https://material.io/components/text-fields/#filled-text-field\n (this.filled && !this.hasLabel)\n )\n },\n isSolo (): boolean {\n return this.solo || this.soloInverted\n },\n labelPosition (): Record<'left' | 'right', string | number | undefined> {\n let offset = (this.prefix && !this.labelValue) ? this.prefixWidth : 0\n\n if (this.labelValue && this.prependWidth) offset -= this.prependWidth\n\n return (this.$vuetify.rtl === this.reverse) ? {\n left: offset,\n right: 'auto',\n } : {\n left: 'auto',\n right: offset,\n }\n },\n showLabel (): boolean {\n return this.hasLabel && !(this.isSingle && this.labelValue)\n },\n labelValue (): boolean {\n return this.isFocused || this.isLabelActive || this.persistentPlaceholder\n },\n },\n\n watch: {\n // labelValue: 'setLabelWidth', // moved to mounted, see #11533\n outlined: 'setLabelWidth',\n label () {\n this.$nextTick(this.setLabelWidth)\n },\n prefix () {\n this.$nextTick(this.setPrefixWidth)\n },\n isFocused: 'updateValue',\n value (val) {\n this.lazyValue = val\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('box')) {\n breaking('box', 'filled', this)\n }\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n breaking('browser-autocomplete', 'autocomplete', this)\n }\n\n /* istanbul ignore if */\n if (this.shaped && !(this.filled || this.outlined || this.isSolo)) {\n consoleWarn('shaped should be used with either filled or outlined', this)\n }\n },\n\n mounted () {\n // #11533\n this.$watch(() => this.labelValue, this.setLabelWidth)\n this.autofocus && this.tryAutofocus()\n requestAnimationFrame(() => {\n this.isBooted = true\n requestAnimationFrame(() => {\n if (!this.isIntersecting) {\n this.onResize()\n }\n })\n })\n },\n\n methods: {\n /** @public */\n focus () {\n this.onFocus()\n },\n /** @public */\n blur (e?: Event) {\n // https://github.com/vuetifyjs/vuetify/issues/5913\n // Safari tab order gets broken if called synchronous\n window.requestAnimationFrame(() => {\n this.$refs.input && this.$refs.input.blur()\n })\n },\n clearableCallback () {\n this.$refs.input && this.$refs.input.focus()\n this.$nextTick(() => this.internalValue = null)\n },\n genAppendSlot () {\n const slot = []\n\n if (this.$slots['append-outer']) {\n slot.push(this.$slots['append-outer'] as VNode[])\n } else if (this.appendOuterIcon) {\n slot.push(this.genIcon('appendOuter'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n genPrependInnerSlot () {\n const slot = []\n\n if (this.$slots['prepend-inner']) {\n slot.push(this.$slots['prepend-inner'] as VNode[])\n } else if (this.prependInnerIcon) {\n slot.push(this.genIcon('prependInner'))\n }\n\n return this.genSlot('prepend', 'inner', slot)\n },\n genIconSlot () {\n const slot = []\n\n if (this.$slots.append) {\n slot.push(this.$slots.append as VNode[])\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'inner', slot)\n },\n genInputSlot () {\n const input = VInput.options.methods.genInputSlot.call(this)\n\n const prepend = this.genPrependInnerSlot()\n\n if (prepend) {\n input.children = input.children || []\n input.children.unshift(prepend)\n }\n\n return input\n },\n genClearIcon () {\n if (!this.clearable) return null\n\n // if the text field has no content then don't display the clear icon.\n // We add an empty div because other controls depend on a ref to append inner\n if (!this.isDirty) {\n return this.genSlot('append', 'inner', [\n this.$createElement('div'),\n ])\n }\n\n return this.genSlot('append', 'inner', [\n this.genIcon('clear', this.clearableCallback),\n ])\n },\n genCounter () {\n if (!this.hasCounter) return null\n\n const max = this.counter === true ? this.attrs$.maxlength : this.counter\n\n const props = {\n dark: this.dark,\n light: this.light,\n max,\n value: this.computedCounterValue,\n }\n\n return this.$scopedSlots.counter?.({ props }) ?? this.$createElement(VCounter, { props })\n },\n genControl () {\n return VInput.options.methods.genControl.call(this)\n },\n genDefaultSlot () {\n return [\n this.genFieldset(),\n this.genTextFieldSlot(),\n this.genClearIcon(),\n this.genIconSlot(),\n this.genProgress(),\n ]\n },\n genFieldset () {\n if (!this.outlined) return null\n\n return this.$createElement('fieldset', {\n attrs: {\n 'aria-hidden': true,\n },\n }, [this.genLegend()])\n },\n genLabel () {\n if (!this.showLabel) return null\n\n const data = {\n props: {\n absolute: true,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: !this.isSingle && (this.isFocused || !!this.validationState),\n for: this.computedId,\n left: this.labelPosition.left,\n light: this.light,\n right: this.labelPosition.right,\n value: this.labelValue,\n },\n }\n\n return this.$createElement(VLabel, data, this.$slots.label || this.label)\n },\n genLegend () {\n const width = !this.singleLine && (this.labelValue || this.isDirty) ? this.labelWidth : 0\n const span = this.$createElement('span', {\n domProps: { innerHTML: '​' },\n staticClass: 'notranslate',\n })\n\n return this.$createElement('legend', {\n style: {\n width: !this.isSingle ? convertToUnit(width) : undefined,\n },\n }, [span])\n },\n genInput () {\n const listeners = Object.assign({}, this.listeners$)\n delete listeners.change // Change should not be bound externally\n const { title, ...inputAttrs } = this.attrs$\n\n return this.$createElement('input', {\n style: {},\n domProps: {\n value: (this.type === 'number' && Object.is(this.lazyValue, -0)) ? '-0' : this.lazyValue,\n },\n attrs: {\n ...inputAttrs,\n autofocus: this.autofocus,\n disabled: this.isDisabled,\n id: this.computedId,\n placeholder: this.persistentPlaceholder || this.isFocused || !this.hasLabel ? this.placeholder : undefined,\n readonly: this.isReadonly,\n type: this.type,\n },\n on: Object.assign(listeners, {\n blur: this.onBlur,\n input: this.onInput,\n focus: this.onFocus,\n keydown: this.onKeyDown,\n }),\n ref: 'input',\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n })\n },\n genMessages () {\n if (!this.showDetails) return null\n\n const messagesNode = VInput.options.methods.genMessages.call(this)\n const counterNode = this.genCounter()\n\n return this.$createElement('div', {\n staticClass: 'v-text-field__details',\n }, [\n messagesNode,\n counterNode,\n ])\n },\n genTextFieldSlot () {\n return this.$createElement('div', {\n staticClass: 'v-text-field__slot',\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n this.genInput(),\n this.suffix ? this.genAffix('suffix') : null,\n ])\n },\n genAffix (type: 'prefix' | 'suffix') {\n return this.$createElement('div', {\n class: `v-text-field__${type}`,\n ref: type,\n }, this[type])\n },\n onBlur (e?: Event) {\n this.isFocused = false\n e && this.$nextTick(() => this.$emit('blur', e))\n },\n onClick () {\n if (this.isFocused || this.isDisabled || !this.$refs.input) return\n\n this.$refs.input.focus()\n },\n onFocus (e?: Event) {\n if (!this.$refs.input) return\n\n const root = attachedRoot(this.$el)\n if (!root) return\n\n if (root.activeElement !== this.$refs.input) {\n return this.$refs.input.focus()\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n e && this.$emit('focus', e)\n }\n },\n onInput (e: Event) {\n const target = e.target as HTMLInputElement\n this.internalValue = target.value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n if (\n e.keyCode === keyCodes.enter &&\n this.lazyValue !== this.initialValue\n ) {\n this.initialValue = this.lazyValue\n this.$emit('change', this.initialValue)\n }\n\n this.$emit('keydown', e)\n },\n onMouseDown (e: Event) {\n // Prevent input from being blurred\n if (e.target !== this.$refs.input) {\n e.preventDefault()\n e.stopPropagation()\n }\n\n VInput.options.methods.onMouseDown.call(this, e)\n },\n onMouseUp (e: Event) {\n if (this.hasMouseDown) this.focus()\n\n VInput.options.methods.onMouseUp.call(this, e)\n },\n setLabelWidth () {\n if (!this.outlined) return\n\n this.labelWidth = this.$refs.label\n ? Math.min(this.$refs.label.scrollWidth * 0.75 + 6, (this.$el as HTMLElement).offsetWidth - 24)\n : 0\n },\n setPrefixWidth () {\n if (!this.$refs.prefix) return\n\n this.prefixWidth = this.$refs.prefix.offsetWidth\n },\n setPrependWidth () {\n if (!this.outlined || !this.$refs['prepend-inner']) return\n\n this.prependWidth = this.$refs['prepend-inner'].offsetWidth\n },\n tryAutofocus () {\n if (\n !this.autofocus ||\n typeof document === 'undefined' ||\n !this.$refs.input) return false\n\n const root = attachedRoot(this.$el)\n if (!root || root.activeElement === this.$refs.input) return false\n\n this.$refs.input.focus()\n\n return true\n },\n updateValue (val: boolean) {\n // Sets validationState from validatable\n this.hasColor = val\n\n if (val) {\n this.initialValue = this.lazyValue\n } else if (this.initialValue !== this.lazyValue) {\n this.$emit('change', this.lazyValue)\n }\n },\n onResize () {\n this.setLabelWidth()\n this.setPrefixWidth()\n this.setPrependWidth()\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 './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 if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = true\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = false\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = this.$slots.loading || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = this.$slots['no-data'] || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = this.$slots['no-results'] || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","// Styles\nimport './VDataTableHeader.sass'\n\n// Components\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\n// Mixins\nimport header from './mixins/header'\n\n// Utilities\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport mergeData from '../../util/mergeData'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n ...header.options.props,\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\n\n data = mergeData(data, { props })\n\n if (props.mobile) {\n return h(VDataTableHeaderMobile, data, children)\n } else {\n return h(VDataTableHeaderDesktop, data, children)\n }\n },\n})\n","// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DataTableHeader } from 'vuetify/types'\n\n// Utils\nimport { getObjectValueByPath, wrapInArray } from '../../util/helpers'\n\nfunction needsTd (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n !['td', 'th'].includes(slot![0]?.tag!)\n}\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns = props.headers.map((header: DataTableHeader) => {\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(...wrapInArray(scopedSlot({\n item: props.item,\n isMobile: false,\n header,\n index: props.index,\n value,\n })))\n } else if (regularSlot) {\n children.push(...wrapInArray(regularSlot))\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const textAlign = `text-${header.align || 'start'}`\n\n return needsTd(children)\n ? h('td', {\n class: [\n textAlign,\n header.cellClass,\n {\n 'v-data-table__divider': header.divider,\n },\n ],\n }, children)\n : children\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', this.$slots.default),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n hideDefaultHeader: Boolean,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const classes = {\n 'v-data-table__mobile-row': true,\n }\n\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({\n item: props.item,\n isMobile: true,\n header,\n index: props.index,\n value,\n }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const mobileRowChildren = [\n h('div', {\n staticClass: 'v-data-table__mobile-row__cell',\n }, children),\n ]\n\n if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n mobileRowChildren.unshift(\n h('div', {\n staticClass: 'v-data-table__mobile-row__header',\n }, [header.text])\n )\n }\n\n return h('td', { class: classes }, mobileRowChildren)\n })\n\n return h('tr', { ...data, staticClass: 'v-data-table__mobile-table-row' }, columns)\n },\n})\n","import './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n RowClassFunction,\n DataTableItemProps,\n} from 'vuetify/types'\n\n// Components\nimport { VData } from '../VData'\nimport { VDataFooter, VDataIterator } from '../VDataIterator'\nimport VBtn from '../VBtn'\nimport VDataTableHeader from './VDataTableHeader'\n// import VVirtualTable from './VVirtualTable'\nimport VIcon from '../VIcon'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers'\nimport { breaking } from '../../util/console'\nimport { mergeClasses } from '../../util/mergeData'\n\nfunction filterFn (item: any, search: string | null, filter: DataTableFilterFunction) {\n return (header: DataTableHeader) => {\n const value = getObjectValueByPath(item, header.value)\n return header.filter ? header.filter(value, search, item) : filter(value, search, item)\n }\n}\n\nfunction searchTableItems (\n items: any[],\n search: string | null,\n headersWithCustomFilters: DataTableHeader[],\n headersWithoutCustomFilters: DataTableHeader[],\n customFilter: DataTableFilterFunction\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n // We need to match every filter to be included in the results.\n const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter))\n\n // Headers without custom filters are only filtered by the `search` property if it is defined.\n // We only need a single column to match the search term to be included in the results.\n const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter))\n\n return matchesColumnFilters && matchesSearchTerm\n })\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n).extend({\n name: 'v-data-table',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => [],\n } as PropValidator,\n showSelect: Boolean,\n checkboxColor: String,\n showExpand: Boolean,\n showGroupBy: Boolean,\n // TODO: Fix\n // virtualRows: Boolean,\n height: [Number, String],\n hideDefaultHeader: Boolean,\n caption: String,\n dense: Boolean,\n headerProps: Object,\n calculateWidths: Boolean,\n fixedHeader: Boolean,\n headersLength: Number,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n customFilter: {\n type: Function,\n default: defaultFilter,\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n },\n\n data () {\n return {\n internalGroupBy: [] as string[],\n openCache: {} as { [key: string]: boolean },\n widths: [] as number[],\n }\n },\n\n computed: {\n computedHeaders (): DataTableHeader[] {\n if (!this.headers) return []\n const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value))\n const defaultHeader = { text: '', sortable: false, width: '1px' }\n\n if (this.showSelect) {\n const index = headers.findIndex(h => h.value === 'data-table-select')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-select' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n if (this.showExpand) {\n const index = headers.findIndex(h => h.value === 'data-table-expand')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-expand' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n return headers\n },\n colspanAttrs (): object | undefined {\n return this.isMobile ? undefined : {\n colspan: this.headersLength || this.computedHeaders.length,\n }\n },\n columnSorters (): Record {\n return this.computedHeaders.reduce>((acc, header) => {\n if (header.sort) acc[header.value] = header.sort\n return acc\n }, {})\n },\n headersWithCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n headersWithoutCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n sanitizedHeaderProps (): Record {\n return camelizeObjectKeys(this.headerProps)\n },\n computedItemsPerPage (): number {\n const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage\n const itemsPerPageOptions: DataItemsPerPageOption[] | undefined = this.sanitizedFooterProps.itemsPerPageOptions\n\n if (\n itemsPerPageOptions &&\n !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)\n ) {\n const firstOption = itemsPerPageOptions[0]\n return typeof firstOption === 'object' ? firstOption.value : firstOption\n }\n\n return itemsPerPage\n },\n 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(items, search, this.headersWithCustomFilters, this.headersWithoutCustomFilters, this.customFilter)\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any, index: number): DataTableItemProps {\n const props = VDataIterator.options.methods.createItemProps.call(this, item, index)\n\n return Object.assign(props, { headers: this.computedHeaders })\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${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 props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: {\n // TODO: for click, the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: () => this.$emit('click:row', item, data),\n contextmenu: (event: MouseEvent) => this.$emit('contextmenu:row', event, data),\n dblclick: (event: MouseEvent) => this.$emit('dblclick:row', event, data),\n },\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","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","import VIcon from './VIcon'\n\nexport { VIcon }\nexport default VIcon\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","import './_grid.sass'\n\nimport Grid from './grid'\n\nexport default Grid('layout')\n","import { VNodeData } from 'vue'\n\n/**\n * Removes duplicate `@input` listeners when\n * using v-model with functional components\n *\n * @see https://github.com/vuetifyjs/vuetify/issues/4460\n */\nexport default function dedupeModelListeners (data: VNodeData): void {\n if (data.model && data.on && data.on.input) {\n if (Array.isArray(data.on.input)) {\n const i = data.on.input.indexOf(data.model.callback)\n if (i > -1) data.on.input.splice(i, 1)\n } else {\n delete data.on.input\n }\n }\n}\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport {\n escapeHTML,\n getPropertyFromItem,\n} from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n attrs: {\n role: undefined,\n },\n on: {\n mousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n },\n }\n\n return this.$createElement(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return this.$createElement(VListItemAction, [\n this.$createElement(VSimpleCheckbox, {\n props: {\n color: this.color,\n value: inputValue,\n ripple: false,\n },\n on: {\n input: () => this.$emit('select', item),\n },\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return this.$createElement(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return escapeHTML(text)\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return `${escapeHTML(start)}${this.genHighlight(middle)}${escapeHTML(end)}`\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string): string {\n return `${escapeHTML(text)}`\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n attrs: {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n },\n on: {\n mousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n click: () => disabled || this.$emit('select', item),\n },\n props: {\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n },\n }\n\n if (!this.$scopedSlots.item) {\n return this.$createElement(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$scopedSlots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? this.$createElement(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n const innerHTML = this.genFilteredText(this.getText(item))\n\n return this.$createElement(VListItemContent,\n [this.$createElement(VListItemTitle, {\n domProps: { innerHTML },\n })]\n )\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.options.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item'])\n\n this.$slots['append-item'] && children.push(this.$slots['append-item'])\n\n return this.$createElement(VList, {\n staticClass: 'v-select-list',\n class: this.themeClasses,\n attrs: {\n role: 'listbox',\n tabindex: -1,\n },\n props: { dense: this.dense },\n }, children)\n },\n})\n","// Styles\nimport '../VTextField/VTextField.sass'\nimport './VSelect.sass'\n\n// Components\nimport VChip from '../VChip'\nimport VMenu from '../VMenu'\nimport VSelectList from './VSelectList'\n\n// Extensions\nimport VInput from '../VInput'\nimport VTextField from '../VTextField/VTextField'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Dependent from '../../mixins/dependent'\nimport Filterable from '../../mixins/filterable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { getPropertyFromItem, getObjectValueByPath, keyCodes } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, VNodeDirective, PropType, VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\nexport const defaultMenuProps = {\n closeOnClick: false,\n closeOnContentClick: false,\n disableKeys: true,\n openOnClick: false,\n maxHeight: 304,\n}\n\n// Types\nconst baseMixins = mixins(\n VTextField,\n Comparable,\n Dependent,\n Filterable\n)\n\ninterface options extends InstanceType {\n $refs: {\n menu: InstanceType\n content: HTMLElement\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n 'append-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-select',\n\n directives: {\n ClickOutside,\n },\n\n props: {\n appendIcon: {\n type: String,\n default: '$dropdown',\n },\n attach: {\n type: null as unknown as PropType,\n default: false,\n },\n cacheItems: Boolean,\n chips: Boolean,\n clearable: Boolean,\n deletableChips: Boolean,\n disableLookup: Boolean,\n eager: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemColor: {\n type: String,\n default: 'primary',\n },\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n menuProps: {\n type: [String, Array, Object],\n default: () => defaultMenuProps,\n },\n multiple: Boolean,\n openOnClear: Boolean,\n returnObject: Boolean,\n smallChips: Boolean,\n },\n\n data () {\n return {\n cachedItems: this.cacheItems ? this.items : [],\n menuIsBooted: false,\n isMenuActive: false,\n lastItem: 20,\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n lazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n selectedIndex: -1,\n selectedItems: [] as any[],\n keyboardLookupPrefix: '',\n keyboardLookupLastTime: 0,\n }\n },\n\n computed: {\n /* All items that the select has */\n allItems (): object[] {\n return this.filterDuplicates(this.cachedItems.concat(this.items))\n },\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-select': true,\n 'v-select--chips': this.hasChips,\n 'v-select--chips--small': this.smallChips,\n 'v-select--is-menu-active': this.isMenuActive,\n 'v-select--is-multi': this.multiple,\n }\n },\n /* Used by other components to overwrite */\n computedItems (): object[] {\n return this.allItems\n },\n computedOwns (): string {\n return `list-${this._uid}`\n },\n computedCounterValue (): number {\n const value = this.multiple\n ? this.selectedItems\n : (this.getText(this.selectedItems[0]) ?? '').toString()\n\n if (typeof this.counterValue === 'function') {\n return this.counterValue(value)\n }\n\n return value.length\n },\n directives (): VNodeDirective[] | undefined {\n return this.isFocused ? [{\n name: 'click-outside',\n value: {\n handler: this.blur,\n closeConditional: this.closeConditional,\n include: () => this.getOpenDependentElements(),\n },\n }] : undefined\n },\n dynamicHeight () {\n return 'auto'\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n hasSlot (): boolean {\n return Boolean(this.hasChips || this.$scopedSlots.selection)\n },\n isDirty (): boolean {\n return this.selectedItems.length > 0\n },\n listData (): object {\n const scopeId = this.$vnode && (this.$vnode.context!.$options as { [key: string]: any })._scopeId\n const attrs = scopeId ? {\n [scopeId]: true,\n } : {}\n\n return {\n attrs: {\n ...attrs,\n id: this.computedOwns,\n },\n props: {\n action: this.multiple,\n color: this.itemColor,\n dense: this.dense,\n hideSelected: this.hideSelected,\n items: this.virtualizedItems,\n itemDisabled: this.itemDisabled,\n itemText: this.itemText,\n itemValue: this.itemValue,\n noDataText: this.$vuetify.lang.t(this.noDataText),\n selectedItems: this.selectedItems,\n },\n on: {\n select: this.selectItem,\n },\n scopedSlots: {\n item: this.$scopedSlots.item,\n },\n }\n },\n staticList (): VNode {\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n consoleError('assert: staticList should not be called if slots are used')\n }\n\n return this.$createElement(VSelectList, this.listData)\n },\n virtualizedItems (): object[] {\n return (this.$_menuProps as any).auto\n ? this.computedItems\n : this.computedItems.slice(0, this.lastItem)\n },\n menuCanShow: () => true,\n $_menuProps (): object {\n let normalisedProps = typeof this.menuProps === 'string'\n ? this.menuProps.split(',')\n : this.menuProps\n\n if (Array.isArray(normalisedProps)) {\n normalisedProps = normalisedProps.reduce((acc, p) => {\n acc[p.trim()] = true\n return acc\n }, {})\n }\n\n return {\n ...defaultMenuProps,\n eager: this.eager,\n value: this.menuCanShow && this.isMenuActive,\n nudgeBottom: normalisedProps.offsetY ? 1 : 0, // convert to int\n ...normalisedProps,\n }\n },\n },\n\n watch: {\n internalValue (val) {\n this.initialValue = val\n this.setSelectedItems()\n\n if (this.multiple) {\n this.$nextTick(() => {\n this.$refs.menu?.updateDimensions()\n })\n }\n },\n isMenuActive (val) {\n window.setTimeout(() => this.onMenuActiveChange(val))\n },\n items: {\n immediate: true,\n handler (val) {\n if (this.cacheItems) {\n // Breaks vue-test-utils if\n // this isn't calculated\n // on the next tick\n this.$nextTick(() => {\n this.cachedItems = this.filterDuplicates(this.cachedItems.concat(val))\n })\n }\n\n this.setSelectedItems()\n },\n },\n },\n\n methods: {\n /** @public */\n blur (e?: Event) {\n VTextField.options.methods.blur.call(this, e)\n this.isMenuActive = false\n this.isFocused = false\n this.selectedIndex = -1\n this.setMenuIndex(-1)\n },\n /** @public */\n activateMenu () {\n if (\n !this.isInteractive ||\n this.isMenuActive\n ) return\n\n this.isMenuActive = true\n },\n clearableCallback () {\n this.setValue(this.multiple ? [] : null)\n this.setMenuIndex(-1)\n this.$nextTick(() => this.$refs.input && this.$refs.input.focus())\n\n if (this.openOnClear) this.isMenuActive = true\n },\n closeConditional (e: Event) {\n if (!this.isMenuActive) return true\n\n return (\n !this._isDestroyed &&\n\n // Click originates from outside the menu content\n // Multiple selects don't close when an item is clicked\n (!this.getContent() ||\n !this.getContent().contains(e.target as Node)) &&\n\n // Click originates from outside the element\n this.$el &&\n !this.$el.contains(e.target as Node) &&\n e.target !== this.$el\n )\n },\n filterDuplicates (arr: any[]) {\n const uniqueValues = new Map()\n for (let index = 0; index < arr.length; ++index) {\n const item = arr[index]\n\n // Do not return null values if existant (#14421)\n if (item == null) {\n continue\n }\n // Do not deduplicate headers or dividers (#12517)\n if (item.header || item.divider) {\n uniqueValues.set(item, item)\n continue\n }\n\n const val = this.getValue(item)\n\n // TODO: comparator\n !uniqueValues.has(val) && uniqueValues.set(val, item)\n }\n return Array.from(uniqueValues.values())\n },\n findExistingIndex (item: object) {\n const itemValue = this.getValue(item)\n\n return (this.internalValue || []).findIndex((i: object) => this.valueComparator(this.getValue(i), itemValue))\n },\n getContent () {\n return this.$refs.menu && this.$refs.menu.$refs.content\n },\n genChipSelection (item: object, index: number) {\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n const isInteractive = !isDisabled && this.isInteractive\n\n return this.$createElement(VChip, {\n staticClass: 'v-chip--select',\n attrs: { tabindex: -1 },\n props: {\n close: this.deletableChips && isInteractive,\n disabled: isDisabled,\n inputValue: index === this.selectedIndex,\n small: this.smallChips,\n },\n on: {\n click: (e: MouseEvent) => {\n if (!isInteractive) return\n\n e.stopPropagation()\n\n this.selectedIndex = index\n },\n 'click:close': () => this.onChipInput(item),\n },\n key: JSON.stringify(this.getValue(item)),\n }, this.getText(item))\n },\n genCommaSelection (item: object, index: number, last: boolean) {\n const color = index === this.selectedIndex && this.computedColor\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-select__selection v-select__selection--comma',\n class: {\n 'v-select__selection--disabled': isDisabled,\n },\n key: JSON.stringify(this.getValue(item)),\n }), `${this.getText(item)}${last ? '' : ', '}`)\n },\n genDefaultSlot (): (VNode | VNode[] | null)[] {\n const selections = this.genSelections()\n const input = this.genInput()\n\n // If the return is an empty array\n // push the input\n if (Array.isArray(selections)) {\n selections.push(input)\n // Otherwise push it into children\n } else {\n selections.children = selections.children || []\n selections.children.push(input)\n }\n\n return [\n this.genFieldset(),\n this.$createElement('div', {\n staticClass: 'v-select__slot',\n directives: this.directives,\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n selections,\n this.suffix ? this.genAffix('suffix') : null,\n this.genClearIcon(),\n this.genIconSlot(),\n this.genHiddenInput(),\n ]),\n this.genMenu(),\n this.genProgress(),\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData?: VNodeData\n ) {\n const icon = VInput.options.methods.genIcon.call(this, type, cb, extraData)\n\n if (type === 'append') {\n // Don't allow the dropdown icon to be focused\n icon.children![0].data = mergeData(icon.children![0].data!, {\n attrs: {\n tabindex: icon.children![0].componentOptions!.listeners && '-1',\n 'aria-hidden': 'true',\n 'aria-label': undefined,\n },\n })\n }\n\n return icon\n },\n genInput (): VNode {\n const input = VTextField.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n\n input.data = mergeData(input.data!, {\n domProps: { value: null },\n attrs: {\n readonly: true,\n type: 'text',\n 'aria-readonly': String(this.isReadonly),\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n placeholder: (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) ? this.placeholder : undefined,\n },\n on: { keypress: this.onKeyPress },\n })\n\n return input\n },\n genHiddenInput (): VNode {\n return this.$createElement('input', {\n domProps: { value: this.lazyValue },\n attrs: {\n type: 'hidden',\n name: this.attrs$.name,\n },\n })\n },\n genInputSlot (): VNode {\n const render = VTextField.options.methods.genInputSlot.call(this)\n\n render.data!.attrs = {\n ...render.data!.attrs,\n role: 'button',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': String(this.isMenuActive),\n 'aria-owns': this.computedOwns,\n }\n\n return render\n },\n genList (): VNode {\n // If there's no slots, we can use a cached VNode to improve performance\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n return this.genListWithSlot()\n } else {\n return this.staticList\n }\n },\n genListWithSlot (): VNode {\n const slots = ['prepend-item', 'no-data', 'append-item']\n .filter(slotName => this.$slots[slotName])\n .map(slotName => this.$createElement('template', {\n slot: slotName,\n }, this.$slots[slotName]))\n // Requires destructuring due to Vue\n // modifying the `on` property when passed\n // as a referenced object\n return this.$createElement(VSelectList, {\n ...this.listData,\n }, slots)\n },\n genMenu (): VNode {\n const props = this.$_menuProps as any\n props.activator = this.$refs['input-slot']\n\n // Attach to root el so that\n // menu covers prepend/append icons\n if (\n // TODO: make this a computed property or helper or something\n this.attach === '' || // If used as a boolean prop ()\n this.attach === true || // If bound to a boolean ()\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) {\n props.attach = this.$el\n } else {\n props.attach = this.attach\n }\n\n return this.$createElement(VMenu, {\n attrs: { role: undefined },\n props,\n on: {\n input: (val: boolean) => {\n this.isMenuActive = val\n this.isFocused = val\n },\n scroll: this.onScroll,\n },\n ref: 'menu',\n }, [this.genList()])\n },\n genSelections (): VNode {\n let length = this.selectedItems.length\n const children = new Array(length)\n\n let genSelection\n if (this.$scopedSlots.selection) {\n genSelection = this.genSlotSelection\n } else if (this.hasChips) {\n genSelection = this.genChipSelection\n } else {\n genSelection = this.genCommaSelection\n }\n\n while (length--) {\n children[length] = genSelection(\n this.selectedItems[length],\n length,\n length === children.length - 1\n )\n }\n\n return this.$createElement('div', {\n staticClass: 'v-select__selections',\n }, children)\n },\n genSlotSelection (item: object, index: number): VNode[] | undefined {\n return this.$scopedSlots.selection!({\n attrs: {\n class: 'v-chip--select',\n },\n parent: this,\n item,\n index,\n select: (e: Event) => {\n e.stopPropagation()\n this.selectedIndex = index\n },\n selected: index === this.selectedIndex,\n disabled: !this.isInteractive,\n })\n },\n getMenuIndex () {\n return this.$refs.menu ? (this.$refs.menu as { [key: string]: any }).listIndex : -1\n },\n getDisabled (item: object) {\n return getPropertyFromItem(item, this.itemDisabled, false)\n },\n getText (item: object) {\n return getPropertyFromItem(item, this.itemText, item)\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n onBlur (e?: Event) {\n e && this.$emit('blur', e)\n },\n onChipInput (item: object) {\n if (this.multiple) this.selectItem(item)\n else this.setValue(null)\n // If all items have been deleted,\n // open `v-menu`\n if (this.selectedItems.length === 0) {\n this.isMenuActive = true\n } else {\n this.isMenuActive = false\n }\n this.selectedIndex = -1\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n if (!this.isAppendInner(e.target)) {\n this.isMenuActive = true\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n this.$emit('focus')\n }\n\n this.$emit('click', e)\n },\n onEscDown (e: Event) {\n e.preventDefault()\n if (this.isMenuActive) {\n e.stopPropagation()\n this.isMenuActive = false\n }\n },\n onKeyPress (e: KeyboardEvent) {\n if (\n this.multiple ||\n !this.isInteractive ||\n this.disableLookup\n ) return\n\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n const now = performance.now()\n if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n this.keyboardLookupPrefix = ''\n }\n this.keyboardLookupPrefix += e.key.toLowerCase()\n this.keyboardLookupLastTime = now\n\n const index = this.allItems.findIndex(item => {\n const text = (this.getText(item) ?? '').toString()\n\n return text.toLowerCase().startsWith(this.keyboardLookupPrefix)\n })\n const item = this.allItems[index]\n if (index !== -1) {\n this.lastItem = Math.max(this.lastItem, index + 5)\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.isReadonly && e.keyCode !== keyCodes.tab) return\n\n const keyCode = e.keyCode\n const menu = this.$refs.menu\n\n this.$emit('keydown', e)\n\n if (!menu) return\n\n // If menu is active, allow default\n // listIndex change from menu\n if (this.isMenuActive && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end, keyCodes.enter].includes(keyCode)) {\n this.$nextTick(() => {\n menu.changeListIndex(e)\n this.$emit('update:list-index', menu.listIndex)\n })\n }\n\n // If enter, space, open menu\n if ([\n keyCodes.enter,\n keyCodes.space,\n ].includes(keyCode)) this.activateMenu()\n\n // If menu is not active, up/down/home/end can do\n // one of 2 things. If multiple, opens the\n // menu, if not, will cycle through all\n // available options\n if (\n !this.isMenuActive &&\n [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end].includes(keyCode)\n ) return this.onUpDown(e)\n\n // If escape deactivate the menu\n if (keyCode === keyCodes.esc) return this.onEscDown(e)\n\n // If tab - select item or close menu\n if (keyCode === keyCodes.tab) return this.onTabDown(e)\n\n // If space preventDefault\n if (keyCode === keyCodes.space) return this.onSpaceDown(e)\n },\n onMenuActiveChange (val: boolean) {\n // If menu is closing and mulitple\n // or menuIndex is already set\n // skip menu index recalculation\n if (\n (this.multiple && !val) ||\n this.getMenuIndex() > -1\n ) return\n\n const menu = this.$refs.menu\n\n if (!menu || !this.isDirty) return\n\n // When menu opens, set index of first active item\n this.$refs.menu.getTiles()\n for (let i = 0; i < menu.tiles.length; i++) {\n if (menu.tiles[i].getAttribute('aria-selected') === 'true') {\n this.setMenuIndex(i)\n break\n }\n }\n },\n onMouseUp (e: MouseEvent) {\n // eslint-disable-next-line sonarjs/no-collapsible-if\n if (\n this.hasMouseDown &&\n e.which !== 3 &&\n this.isInteractive\n ) {\n // If append inner is present\n // and the target is itself\n // or inside, toggle menu\n if (this.isAppendInner(e.target)) {\n this.$nextTick(() => (this.isMenuActive = !this.isMenuActive))\n }\n }\n\n VTextField.options.methods.onMouseUp.call(this, e)\n },\n onScroll () {\n if (!this.isMenuActive) {\n requestAnimationFrame(() => (this.getContent().scrollTop = 0))\n } else {\n if (this.lastItem > this.computedItems.length) return\n\n const showMoreItems = (\n this.getContent().scrollHeight -\n (this.getContent().scrollTop +\n this.getContent().clientHeight)\n ) < 200\n\n if (showMoreItems) {\n this.lastItem += 20\n }\n }\n },\n onSpaceDown (e: KeyboardEvent) {\n e.preventDefault()\n },\n onTabDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n const activeTile = menu.activeTile\n\n // An item that is selected by\n // menu-index should toggled\n if (\n !this.multiple &&\n activeTile &&\n this.isMenuActive\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n activeTile.click()\n } else {\n // If we make it here,\n // the user has no selected indexes\n // and is probably tabbing out\n this.blur(e)\n }\n },\n onUpDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n e.preventDefault()\n\n // Multiple selects do not cycle their value\n // when pressing up or down, instead activate\n // the menu\n if (this.multiple) return this.activateMenu()\n\n const keyCode = e.keyCode\n\n // Cycle through available values to achieve\n // select native behavior\n menu.isBooted = true\n\n window.requestAnimationFrame(() => {\n menu.getTiles()\n\n if (!menu.hasClickableTiles) return this.activateMenu()\n\n switch (keyCode) {\n case keyCodes.up:\n menu.prevTile()\n break\n case keyCodes.down:\n menu.nextTile()\n break\n case keyCodes.home:\n menu.firstTile()\n break\n case keyCodes.end:\n menu.lastTile()\n break\n }\n this.selectItem(this.allItems[this.getMenuIndex()])\n })\n },\n selectItem (item: object) {\n if (!this.multiple) {\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.isMenuActive = false\n } else {\n const internalValue = (this.internalValue || []).slice()\n const i = this.findExistingIndex(item)\n\n i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item)\n this.setValue(internalValue.map((i: object) => {\n return this.returnObject ? i : this.getValue(i)\n }))\n\n // There is no item to re-highlight\n // when selections are hidden\n if (this.hideSelected) {\n this.setMenuIndex(-1)\n } else {\n const index = this.allItems.indexOf(item)\n if (~index) {\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n }\n }\n },\n setMenuIndex (index: number) {\n this.$refs.menu && ((this.$refs.menu as { [key: string]: any }).listIndex = index)\n },\n setSelectedItems () {\n const selectedItems = []\n const values = !this.multiple || !Array.isArray(this.internalValue)\n ? [this.internalValue]\n : this.internalValue\n\n for (const value of values) {\n const index = this.allItems.findIndex(v => this.valueComparator(\n this.getValue(v),\n this.getValue(value)\n ))\n\n if (index > -1) {\n selectedItems.push(this.allItems[index])\n }\n }\n\n this.selectedItems = selectedItems\n },\n setValue (value: any) {\n if (!this.valueComparator(value, this.internalValue)) {\n this.internalValue = value\n this.$emit('change', value)\n }\n },\n isAppendInner (target: any) {\n // return true if append inner is present\n // and the target is itself or inside\n const appendInner = this.$refs['append-inner']\n\n return appendInner && (appendInner === target || appendInner.contains(target))\n },\n },\n})\n","// Styles\nimport './VLabel.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-label',\n\n functional: true,\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n focused: Boolean,\n for: String,\n left: {\n type: [Number, String],\n default: 0,\n },\n right: {\n type: [Number, String],\n default: 'auto',\n },\n value: Boolean,\n },\n\n render (h, ctx): VNode {\n const { children, listeners, props } = ctx\n const data = {\n staticClass: 'v-label',\n class: {\n 'v-label--active': props.value,\n 'v-label--is-disabled': props.disabled,\n ...functionalThemeClasses(ctx),\n },\n attrs: {\n for: props.for,\n 'aria-hidden': !props.for,\n },\n on: listeners,\n style: {\n left: convertToUnit(props.left),\n right: convertToUnit(props.right),\n position: props.absolute ? 'absolute' : 'relative',\n },\n ref: 'label',\n }\n\n return h('label', Colorable.options.methods.setTextColor(props.focused && props.color, data), children)\n },\n})\n","import VLabel from './VLabel'\n\nexport { VLabel }\nexport default VLabel\n","// Styles\nimport './VMessages.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../util/mixins'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-messages',\n\n props: {\n value: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n },\n\n methods: {\n genChildren () {\n return this.$createElement('transition-group', {\n staticClass: 'v-messages__wrapper',\n attrs: {\n name: 'message-transition',\n tag: 'div',\n },\n }, this.value.map(this.genMessage))\n },\n genMessage (message: string, key: number) {\n return this.$createElement('div', {\n staticClass: 'v-messages__message',\n key,\n }, getSlot(this, 'default', { message, key }) || [message])\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-messages',\n class: this.themeClasses,\n }), [this.genChildren()])\n },\n})\n","import VMessages from './VMessages'\n\nexport { VMessages }\nexport default VMessages\n","// Styles\nimport './VInput.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VLabel from '../VLabel'\nimport VMessages from '../VMessages'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Validatable from '../../mixins/validatable'\n\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n kebabCase,\n} from '../../util/helpers'\nimport mergeData from '../../util/mergeData'\n\n// Types\nimport { VNode, VNodeData, PropType } from 'vue'\nimport mixins from '../../util/mixins'\nimport { InputValidationRule } from 'vuetify/types'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Validatable,\n)\n\ninterface options extends InstanceType {\n /* eslint-disable-next-line camelcase */\n $_modelEvent: string\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-input',\n\n inheritAttrs: false,\n\n props: {\n appendIcon: String,\n backgroundColor: {\n type: String,\n default: '',\n },\n dense: Boolean,\n height: [Number, String],\n hideDetails: [Boolean, String] as PropType,\n hideSpinButtons: Boolean,\n hint: String,\n id: String,\n label: String,\n loading: Boolean,\n persistentHint: Boolean,\n prependIcon: String,\n value: null as any as PropType,\n },\n\n data () {\n return {\n lazyValue: this.value,\n hasMouseDown: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-input--has-state': this.hasState,\n 'v-input--hide-details': !this.showDetails,\n 'v-input--is-label-active': this.isLabelActive,\n 'v-input--is-dirty': this.isDirty,\n 'v-input--is-disabled': this.isDisabled,\n 'v-input--is-focused': this.isFocused,\n // .loading === '' so we can't just cast to boolean\n 'v-input--is-loading': this.loading !== false && this.loading != null,\n 'v-input--is-readonly': this.isReadonly,\n 'v-input--dense': this.dense,\n 'v-input--hide-spin-buttons': this.hideSpinButtons,\n ...this.themeClasses,\n }\n },\n computedId (): string {\n return this.id || `input-${this._uid}`\n },\n hasDetails (): boolean {\n return this.messagesToDisplay.length > 0\n },\n hasHint (): boolean {\n return !this.hasMessages &&\n !!this.hint &&\n (this.persistentHint || this.isFocused)\n },\n hasLabel (): boolean {\n return !!(this.$slots.label || this.label)\n },\n // Proxy for `lazyValue`\n // This allows an input\n // to function without\n // a provided model\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit(this.$_modelEvent, val)\n },\n },\n isDirty (): boolean {\n return !!this.lazyValue\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n messagesToDisplay (): string[] {\n if (this.hasHint) return [this.hint]\n\n if (!this.hasMessages) return []\n\n return this.validations.map((validation: string | InputValidationRule) => {\n if (typeof validation === 'string') return validation\n\n const validationResult = validation(this.internalValue)\n\n return typeof validationResult === 'string' ? validationResult : ''\n }).filter(message => message !== '')\n },\n showDetails (): boolean {\n return this.hideDetails === false || (this.hideDetails === 'auto' && this.hasDetails)\n },\n },\n\n watch: {\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeCreate () {\n // v-radio-group needs to emit a different event\n // https://github.com/vuetifyjs/vuetify/issues/4752\n this.$_modelEvent = (this.$options.model && this.$options.model.event) || 'input'\n },\n\n methods: {\n genContent () {\n return [\n this.genPrependSlot(),\n this.genControl(),\n this.genAppendSlot(),\n ]\n },\n genControl () {\n return this.$createElement('div', {\n staticClass: 'v-input__control',\n attrs: { title: this.attrs$.title },\n }, [\n this.genInputSlot(),\n this.genMessages(),\n ])\n },\n genDefaultSlot () {\n return [\n this.genLabel(),\n this.$slots.default,\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData: VNodeData = {}\n ) {\n const icon = (this as any)[`${type}Icon`]\n const eventName = `click:${kebabCase(type)}`\n const hasListener = !!(this.listeners$[eventName] || cb)\n\n const data = mergeData({\n attrs: {\n 'aria-label': hasListener ? kebabCase(type).split('-')[0] + ' icon' : undefined,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n light: this.light,\n },\n on: !hasListener\n ? undefined\n : {\n click: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n\n this.$emit(eventName, e)\n cb && cb(e)\n },\n // Container has g event that will\n // trigger menu open if enclosed\n mouseup: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n },\n },\n }, extraData)\n\n return this.$createElement('div', {\n staticClass: `v-input__icon`,\n class: type ? `v-input__icon--${kebabCase(type)}` : undefined,\n }, [\n this.$createElement(\n VIcon,\n data,\n icon\n ),\n ])\n },\n genInputSlot () {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n staticClass: 'v-input__slot',\n style: { height: convertToUnit(this.height) },\n on: {\n click: this.onClick,\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n },\n ref: 'input-slot',\n }), [this.genDefaultSlot()])\n },\n genLabel () {\n if (!this.hasLabel) return null\n\n return this.$createElement(VLabel, {\n props: {\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: this.hasState,\n for: this.computedId,\n light: this.light,\n },\n }, this.$slots.label || this.label)\n },\n genMessages () {\n if (!this.showDetails) return null\n\n return this.$createElement(VMessages, {\n props: {\n color: this.hasHint ? '' : this.validationState,\n dark: this.dark,\n light: this.light,\n value: this.messagesToDisplay,\n },\n attrs: {\n role: this.hasMessages ? 'alert' : null,\n },\n scopedSlots: {\n default: props => getSlot(this, 'message', props),\n },\n })\n },\n genSlot (\n type: string,\n location: string,\n slot: (VNode | VNode[])[]\n ) {\n if (!slot.length) return null\n\n const ref = `${type}-${location}`\n\n return this.$createElement('div', {\n staticClass: `v-input__${ref}`,\n ref,\n }, slot)\n },\n genPrependSlot () {\n const slot = []\n\n if (this.$slots.prepend) {\n slot.push(this.$slots.prepend)\n } else if (this.prependIcon) {\n slot.push(this.genIcon('prepend'))\n }\n\n return this.genSlot('prepend', 'outer', slot)\n },\n genAppendSlot () {\n const slot = []\n\n // Append icon for text field was really\n // an appended inner icon, v-text-field\n // will overwrite this method in order to obtain\n // backwards compat\n if (this.$slots.append) {\n slot.push(this.$slots.append)\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n onClick (e: Event) {\n this.$emit('click', e)\n },\n onMouseDown (e: Event) {\n this.hasMouseDown = true\n this.$emit('mousedown', e)\n },\n onMouseUp (e: Event) {\n this.hasMouseDown = false\n this.$emit('mouseup', e)\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.validationState, {\n staticClass: 'v-input',\n class: this.classes,\n }), this.genContent())\n },\n})\n","import VInput from './VInput'\n\nexport { VInput }\nexport default VInput\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'\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 this.$slots.default,\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","// 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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-layout',{attrs:{\"wrap\":\"\"}},[_c('v-flex',[_c('section',[_c('v-card',{staticClass:\"mt-3\",staticStyle:{\"border\":\"1px solid #E0E0E0\"},attrs:{\"flat\":\"\"}},[_c('v-card-text',[_c('v-row',[_c('v-col',{staticClass:\"d-flex align-center\",attrs:{\"cols\":\"12\",\"md\":\"8\"}},[(_vm.selected.row.length === 1)?_c('div',{staticClass:\"mr-3\"},[_c('v-btn',{staticClass:\"body-2 text-capitalize font-weight-bold d-flex align-center text-second\",staticStyle:{\"background\":\"#e0e0e0\"},attrs:{\"to\":`submission/${_vm.selected.row[0].ajuan_layanan_kode}/${_vm.selected.row[0].review_ajuan_id}`,\"elevation\":\"0\"}},[_c('v-icon',{attrs:{\"size\":\"18\"}},[_vm._v(\"mdi-information-outline\")]),_c('span',{staticClass:\"ml-1\"},[_vm._v(\"\\n Detail\\n \")])],1)],1):_vm._e()]),_c('v-col',{staticClass:\"d-flex align-center justify-end\",attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{directives:[{name:\"uppercase\",rawName:\"v-uppercase\"}],staticClass:\"mr-3\",attrs:{\"dense\":\"\",\"single-line\":\"\",\"hide-details\":\"\",\"color\":\"#ff64ad\",\"placeholder\":\"Cari . . .\",\"append-icon\":\"mdi-magnify\",\"clearable\":\"\"},on:{\"click:clear\":function($event){_vm.search = ''; _vm.fetch();},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.fetch()}},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1)],1)],1),_c('v-data-table',{ref:\"table-grid\",staticClass:\"table-grid\",attrs:{\"height\":`calc(100vh - ${_vm.pagination.total_data > 0 ? '300px' : '228px'})`,\"show-select\":true,\"single-select\":true,\"loading\":_vm.process.load,\"loading-text\":\"Sedang memuat data . . .\",\"loader-height\":\"5\",\"no-results-text\":\"Belum ada data\",\"options\":_vm.options,\"headers\":_vm.headers,\"items\":_vm.list.data,\"items-per-page\":100,\"item-key\":\"id\",\"hide-default-footer\":\"\"},on:{\"update:options\":function($event){_vm.options=$event},\"click:row\":_vm.rowClick,\"toggle-select-all\":function($event){return _vm.handleToggleAll($event)}},scopedSlots:_vm._u([{key:`item.index`,fn:function({ index }){return [_vm._v(\"\\n \"+_vm._s(_vm.lastIndex + index)+\"\\n \")]}}],null,true),model:{value:(_vm.selected.row),callback:function ($$v) {_vm.$set(_vm.selected, \"row\", $$v)},expression:\"selected.row\"}},[_c('v-progress-linear',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.process.load),expression:\"process.load\"}],attrs:{\"slot\":\"progress\",\"color\":\"white\",\"indeterminate\":\"\"},slot:\"progress\"})],1),(_vm.pagination.total_data > 0)?_c('pagination',{attrs:{\"model\":_vm.pagination},on:{\"changePage\":function($event){return _vm.fetch($event)},\"reloadPage\":function($event){return _vm.fetch($event)}}}):_vm._e()],1)],1)])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=115ada2d&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ResizeVNodeDirective extends VNodeDirective {\n value?: () => void\n options?: boolean | AddEventListenerOptions\n}\n\nfunction inserted (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n const callback = binding.value!\n const options = binding.options || { passive: true }\n\n window.addEventListener('resize', callback, options)\n\n el._onResize = Object(el._onResize)\n el._onResize![vnode.context!._uid] = {\n callback,\n options,\n }\n\n if (!binding.modifiers || !binding.modifiers.quiet) {\n callback()\n }\n}\n\nfunction unbind (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n if (!el._onResize?.[vnode.context!._uid]) return\n\n const { callback, options } = el._onResize[vnode.context!._uid]!\n\n window.removeEventListener('resize', callback, options)\n\n delete el._onResize[vnode.context!._uid]\n}\n\nexport const Resize = {\n inserted,\n unbind,\n}\n\nexport default Resize\n","// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n return Vue.extend({\n name: 'intersectable',\n\n data: () => ({\n isIntersecting: false,\n }),\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isIntersecting = isIntersecting\n\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n","// Types\nimport { BreakpointName } from 'vuetify/types/services/breakpoint'\nimport { deprecate } from '../../util/console'\nimport Vue, { PropType } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'mobile',\n\n props: {\n mobileBreakpoint: {\n type: [Number, String] as PropType,\n default (): number | BreakpointName | undefined {\n // Avoid destroying unit\n // tests for users\n return this.$vuetify\n ? this.$vuetify.breakpoint.mobileBreakpoint\n : undefined\n },\n validator: v => (\n !isNaN(Number(v)) ||\n ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n ),\n },\n },\n\n computed: {\n isMobile (): boolean {\n const {\n mobile,\n width,\n name,\n mobileBreakpoint,\n } = this.$vuetify.breakpoint\n\n // Check if local mobileBreakpoint matches\n // the application's mobileBreakpoint\n if (mobileBreakpoint === this.mobileBreakpoint) return mobile\n\n const mobileWidth = parseInt(this.mobileBreakpoint, 10)\n const isNumber = !isNaN(mobileWidth)\n\n return isNumber\n ? width < mobileWidth\n : name === this.mobileBreakpoint\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n deprecate('mobile-break-point', 'mobile-breakpoint', this)\n }\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'filterable',\n\n props: {\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n },\n})\n"],"sourceRoot":""}