{"version":3,"sources":["webpack:///./src/components/user/verification.vue","webpack:///src/components/user/verification.vue","webpack:///./src/components/user/verification.vue?1926","webpack:///./src/components/user/verification.vue?9a2b","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/util/rebuildFunctionalSlots.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/VCheckbox/VSimpleCheckbox.ts","webpack:///../../../src/components/VGrid/VLayout.ts","webpack:///../../src/util/dedupeModelListeners.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/mixins/intersectable/index.ts","webpack:///../../../src/mixins/filterable/index.ts"],"names":["fn","attrs","staticClass","dialog","snackbar","value","callback","$set","expression","_vm","message","success","_v","_c","selected","row","staticStyle","directives","rawName","type","model","$$v","ref","list","data","options","rowClick","handleToggleAll","scopedSlots","key","total_data","staticRenderFns","search","headers","limit","pagination","lastIndex","process","load","error","components","watch","handler","page","deep","computed","user","mounted","methods","sort","order_by","params","then","response","text","width","sortable","freeze","hide","align","component","mixins","Themeable","extend","name","functional","props","Number","String","default","max","render","h","ctx","parseInt","content","isGreater","class","functionalThemeClasses","VCounter","VMenu","VChip","baseMixins","Colorable","RegistrableInject","disabled","Boolean","errorCount","errorMessages","Array","messages","readonly","rules","successMessages","validateOnBlur","required","errorBucket","hasColor","hasFocused","hasInput","isFocused","isResetting","lazyValue","this","valid","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","newVal","oldVal","deepEqual","validate","$nextTick","setTimeout","beforeMount","created","register","beforeDestroy","unregister","isArray","reset","resetValidation","force","index","rule","push","consoleError","rebuildFunctionalSlots","slots","children","slot","hasOwnProperty","VInput","Intersectable","onVisible","Loadable","dirtyTypes","resize","ripple","inheritAttrs","appendOuterIcon","autofocus","clearable","clearIcon","counter","counterValue","Function","filled","flat","fullWidth","label","outlined","placeholder","prefix","prependInnerIcon","persistentPlaceholder","reverse","rounded","shaped","singleLine","solo","soloInverted","suffix","badInput","labelWidth","prefixWidth","prependWidth","initialValue","isBooted","isClearing","classes","call","isSingle","isSolo","isEnclosed","Validatable","computedCounterValue","toString","hasCounter","hasDetails","isDirty","_a","isLabelActive","includes","hasLabel","labelPosition","offset","labelValue","$vuetify","rtl","left","right","showLabel","setLabelWidth","setPrefixWidth","$attrs","breaking","consoleWarn","$watch","tryAutofocus","requestAnimationFrame","isIntersecting","onResize","focus","onFocus","blur","e","window","$refs","input","clearableCallback","genAppendSlot","$slots","genIcon","genSlot","genPrependInnerSlot","genIconSlot","append","appendIcon","genInputSlot","prepend","unshift","genClearIcon","$createElement","genCounter","attrs$","maxlength","dark","light","$scopedSlots","_b","genControl","genDefaultSlot","genFieldset","genTextFieldSlot","genProgress","genLegend","genLabel","absolute","focused","for","computedId","VLabel","span","domProps","innerHTML","style","undefined","convertToUnit","genInput","listeners","Object","assign","listeners$","change","title","inputAttrs","is","id","on","onBlur","onInput","keydown","onKeyDown","modifiers","quiet","genMessages","showDetails","messagesNode","counterNode","genAffix","onClick","root","attachedRoot","$el","activeElement","target","validity","keyCode","keyCodes","enter","onMouseDown","preventDefault","stopPropagation","onMouseUp","hasMouseDown","Math","min","scrollWidth","offsetWidth","setPrependWidth","document","updateValue","Vue","items","sortBy","sortDesc","customSort","sortItems","mustSort","multiSort","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","customFilter","searchItems","serverItemsLength","internalOptions","wrapInArray","sortDiff","groupDiff","fillArray","itemsLength","filteredItems","pageCount","ceil","pageStart","pageStop","isGrouped","computedItems","paginateItems","groupedItems","scopedProps","sortArray","group","updateOptions","originalItemsLength","computedOptions","old","immediate","toggle","oldBy","oldDesc","by","desc","byIndex","findIndex","k","splice","map","s","i","itemsPerPageOptions","prevIcon","nextIcon","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","genDataItemsPerPageOption","obj","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","lang","t","genItemsPerPageSelect","computedIPPO","find","ippo","VSelect","hideDetails","auto","minWidth","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","some","sanitizedFooterProps","camelizeObjectKeys","filter","item","isSelectable","reduce","getObjectValueByPath","keys","values","breakingProps","forEach","original","replacement","removedProps","prop","removed","addEventListener","onKeyUp","removeEventListener","shift","toggleSelectAll","select","emit","x","lastEntryKey","lastEntryKeySelected","multipleSelect","start","end","currentItem","isExpanded","expand","createItemProps","v","isMobile","genEmptyWrapper","genEmpty","filteredItemsLength","noData","noResults","genItems","empty","genFooter","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","$props","checkboxColor","sortIcon","showGroupBy","genSelectAll","indeterminate","VSimpleCheckbox","genSortIcon","size","header","sortByText","genSortChip","sortIndex","beingSorted","isDesc","active","asc","genSortSelect","multiple","menuProps","closeOnContentClick","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","join","genHeader","role","scope","divider","groupable","mobile","dedupeModelListeners","rebuildSlots","mergeData","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","tag","computedSlots","columns","slotName","scopedSlot","regularSlot","textAlign","cellClass","headerClass","contentClass","summaryClass","dense","fixedHeader","height","top","bottom","themeClasses","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","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","Ripple","indeterminateIcon","onIcon","offIcon","setTextColor","def","center","f","Grid","indexOf","VDivider","inset","$listeners","VSubheader","action","hideSelected","itemDisabled","itemText","itemValue","noFilter","searchInput","selectedItems","parsedItems","getValue","tileActiveClass","staticNoDataTile","tile","mousedown","VListItem","genTileContent","genAction","inputValue","VListItemAction","genDivider","genFilteredText","escapeHTML","middle","getMaskedCharacters","genHighlight","toLocaleLowerCase","genTile","hasItem","getDisabled","_uid","activeClass","parent","needsTile","getText","VListItemContent","VListItemTitle","componentOptions","Ctor","VList","tabindex","defaultMenuProps","closeOnClick","disableKeys","openOnClick","maxHeight","VTextField","Comparable","Dependent","Filterable","ClickOutside","attach","cacheItems","chips","deletableChips","disableLookup","eager","itemColor","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","selectedIndex","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","_isDestroyed","getContent","contains","arr","uniqueValues","Map","has","findExistingIndex","valueComparator","genChipSelection","close","onChipInput","JSON","stringify","genCommaSelection","last","selections","genSelections","genHiddenInput","genMenu","cb","extraData","autocomplete","keypress","onKeyPress","genList","genListWithSlot","activator","scroll","onScroll","genSelection","genSlotSelection","getMenuIndex","listIndex","isAppendInner","onEscDown","KEYBOARD_LOOKUP_THRESHOLD","now","performance","toLowerCase","startsWith","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","VMessages","BindsAttrs","backgroundColor","hideSpinButtons","hint","persistentHint","prependIcon","messagesToDisplay","hasHint","$_modelEvent","validation","validationResult","beforeCreate","genContent","genPrependSlot","eventName","kebabCase","hasListener","mouseup","setBackgroundColor","location","Sizeable","Routable","GroupableFactory","ToggleableFactory","chipGroup","closeIcon","closeLabel","draggable","filterIcon","link","pill","textColor","proxyClass","isClickable","isLink","hasClose","sizeableClasses","groupClasses","genFilter","isActive","VExpandXTransition","genClose","generateRouteLink","intersectable","Intersect","inserted","onObserve","destroyed","unbind","entries","observer"],"mappings":"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","file":"js/chunk-4b6a31a4.93eff077.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"fill-height\"},[_c('v-snackbar',{attrs:{\"top\":\"\",\"right\":\"\",\"color\":\"#ff64ad\"},scopedSlots:_vm._u([{key:\"action\",fn:function({ attrs }){return [_c('v-btn',_vm._b({staticClass:\"body-1 font-weight-bold text-capitalize\",attrs:{\"color\":\"white\",\"icon\":\"\"},on:{\"click\":function($event){_vm.dialog.snackbar = false}}},'v-btn',attrs,false),[_c('v-icon',[_vm._v(\"mdi-close-circle-outline\")])],1)]}}]),model:{value:(_vm.dialog.snackbar),callback:function ($$v) {_vm.$set(_vm.dialog, \"snackbar\", $$v)},expression:\"dialog.snackbar\"}},[_c('span',{staticClass:\"body-1 font-weight-light white--text\",domProps:{\"innerHTML\":_vm._s(_vm.message.success)}})]),_c('v-layout',{attrs:{\"wrap\":\"\"}},[_c('v-flex',[_c('section',[_c('v-card',{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\":`/user/verification/${_vm.selected.row[0].rvd_token}`,\"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 ? '330px' : '258px'})`,\"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!./verification.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!./verification.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./verification.vue?vue&type=template&id=ea525a5e&\"\nimport script from \"./verification.vue?vue&type=script&lang=js&\"\nexport * from \"./verification.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","// 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","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","// 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 './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 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","// 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","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":""}