{"version":3,"sources":["webpack:///./src/components/BaseDataView.vue?a27d","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///../../../src/components/VMenu/index.ts","webpack:///../../../src/components/VChip/index.ts","webpack:///./node_modules/lodash/_baseGetTag.js","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/util/dedupeModelListeners.ts","webpack:///../../src/util/rebuildFunctionalSlots.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/VPagination/VPagination.ts","webpack:///./src/components/BaseTable.vue","webpack:///./src/components/BaseTable.vue?d82d","webpack:///./src/components/BaseTable.vue?1036","webpack:///./src/components/BaseTable.vue?22c0","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./src/components/GroupedSelect.vue?a433","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack:///./src/components/BaseDataView.vue","webpack:///./src/components/BaseDataView.vue?20b9","webpack:///./src/components/BaseDataView.vue?d49e","webpack:///./src/components/BaseDataView.vue?418c","webpack:///../../../src/components/VBtn/index.ts","webpack:///./node_modules/core-js/modules/es.number.max-safe-integer.js","webpack:///./node_modules/lodash/debounce.js","webpack:///../../../src/components/VAutocomplete/VAutocomplete.ts","webpack:///./src/components/GroupedSelect.vue","webpack:///./src/components/GroupedSelect.vue?5443","webpack:///./src/components/GroupedSelect.vue?b86c","webpack:///./src/components/GroupedSelect.vue?c2b7","webpack:///./node_modules/lodash/toNumber.js","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/mixins/filterable/index.ts","webpack:///../../../src/components/VSelect/VSelect.ts","webpack:///./src/icslogger.ts","webpack:///../../../src/components/VChip/VChip.ts","webpack:///../../../src/mixins/menuable/index.ts","webpack:///../../../src/components/VMenu/VMenu.ts","webpack:///./src/components/BaseTable.vue?ac8e","webpack:///./node_modules/lodash/isSymbol.js"],"names":["Symbol","objectProto","Object","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","getRawTag","value","isOwn","call","tag","unmasked","e","result","module","exports","isObjectLike","isObject","type","objectToString","freeGlobal","freeSelf","self","root","Function","VMenu","VChip","nullTag","undefinedTag","baseGetTag","Vue","extend","name","inheritAttrs","props","items","Array","default","options","sortBy","String","sortDesc","Boolean","customSort","sortItems","mustSort","multiSort","page","Number","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","search","customFilter","searchItems","serverItemsLength","data","internalOptions","this","wrapInArray","assign","_internalOptions$sort","_internalOptions$grou","_internalOptions","sortDiff","length","groupDiff","push","apply","_toConsumableArray","fillArray","computed","itemsLength","filteredItems","pageCount","Math","ceil","pageStart","pageStop","min","isGrouped","pagination","slice","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","group","updateOptions","originalItemsLength","computedOptions","_objectSpread","watch","handler","old","deepEqual","deep","immediate","$emit","isArray","methods","toggle","key","oldBy","oldDesc","by","desc","byIndex","findIndex","k","splice","_this$toggle","_this$toggle2","_this","map","s","i","max","concat","render","$scopedSlots","required","itemsPerPageOptions","prevIcon","nextIcon","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","_typeof","genDataItemsPerPageOption","obj","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","text","$vuetify","lang","t","genItemsPerPageSelect","computedIPPO","find","ippo","$createElement","staticClass","VSelect","attrs","disabled","hideDetails","auto","minWidth","on","input","genPaginationInfo","children","class","genIcon","click","label","icon","VBtn","VIcon","genIcons","before","after","rtl","unshift","getSlot","mixins","Mobile","Themeable","VData","itemKey","singleSelect","expanded","mobileBreakpoint","singleExpand","loading","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","selection","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","_this2","some","sanitizedFooterProps","camelizeObjectKeys","_this3","filter","item","isSelectable","_this4","reduce","getObjectValueByPath","keys","values","_this5","_this6","includes","created","_this7","breakingProps","forEach","_ref","_ref2","_slicedToArray","original","replacement","$attrs","breaking","removedProps","prop","removed","mounted","window","addEventListener","onKeyDown","onKeyUp","beforeDestroy","removeEventListener","keyCode","keyCodes","shift","shiftKey","toggleSelectAll","select","_this8","arguments","emit","index","x","lastEntryKey","lastEntryKeySelected","multipleSelect","start","end","currentItem","isExpanded","expand","createItemProps","_this9","v","isMobile","genEmptyWrapper","content","genEmpty","filteredItemsLength","$slots","noData","noResults","genItems","_this10","empty","genFooter","scopedSlots","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","_this11","$props","directives","ripple","headers","checkboxColor","sortIcon","showGroupBy","genSelectAll","indeterminate","color","_a","VSimpleCheckbox","genSortIcon","size","header","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","active","asc","stopPropagation","genSortSelect","multiple","menuProps","closeOnContentClick","change","h","width","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","join","genHeader","role","scope","style","convertToUnit","align","divider","_this$getAria","groupable","dedupeModelListeners","model","indexOf","callback","rebuildFunctionalSlots","slots","slot","functional","mobile","rebuildSlots","mergeData","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","computedSlots","columns","slotName","scopedSlot","regularSlot","textAlign","cellClass","headerClass","contentClass","summaryClass","dense","fixedHeader","height","classes","top","bottom","themeClasses","genWrapper","wrapper","hideDefaultHeader","mobileRowChildren","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","trim","matchesColumnFilters","defaultFilter","matchesSearchTerm","VDataIterator","Loadable","showSelect","showExpand","caption","headerProps","calculateWidths","headersLength","expandIcon","itemClass","loaderHeight","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","colspanAttrs","colspan","columnSorters","acc","filterable","sanitizedHeaderProps","computedItemsPerPage","firstOption","groupByText","_c","_b","calcWidths","from","$el","querySelectorAll","clientWidth","customFilterWithColumns","customSortWithHeaders","genCaption","genColgroup","genLoading","genProgress","genHeaders","VDataTableHeader","genGroupedRows","genRows","$set","genDefaultGroupedRow","isOpen","toggleFn","removeFn","remove","small","column","RowGroup","genScopedRows","genDefaultRows","rows","genDefaultExpandedRow","genDefaultSimpleRow","headerRow","expandedRow","val","MobileRow","Row","mergeClasses","getPropertyFromItem","event","contextmenu","dblclick","genBody","body","genFoot","foot","genFooters","simpleProps","VSimpleTable","proxySlot","Colorable","Intersectable","onVisible","Resize","circle","validator","totalVisible","pageAriaLabel","currentPageAriaLabel","previousAriaLabel","nextAriaLabel","wrapperAriaLabel","maxButtons","selected","parseInt","isNaN","MAX_SAFE_INTEGER","maxLength","range","even","left","floor","right","firstItem","lastItem","secondItem","beforeLastItem","init","beforeMount","onResize","$nextTick","setTimeout","parentElement","innerWidth","next","preventDefault","previous","to","fn","genItem","isCurrentPage","setBackgroundColor","genList","modifiers","quiet","_vm","_v","_s","$event","staticStyle","filterValues","expression","clickable","subHeaders","_u","_ref3","staticRenderFns","_step","filters","selectModels","_iterator","_createForOfIteratorHelper","n","done","i18n","err","f","defaultSelected","sortDescProp","sortByProp","beforeUpdate","_step2","_iterator2","headersPrep","newHeader","pages","expandRow","prevRow","pop","changeSort","a","b","aValue","resolve","bValue","moment","isAfter","toLowerCase","localeCompare","logFilter","debounce","logger","info","title","JSON","stringify","component","now","Date","reWhitespace","trimmedEndIndex","string","test","charAt","global","fixRegExpWellKnownSymbolLogic","anObject","isNullOrUndefined","requireObjectCoercible","sameValue","getMethod","regExpExec","SEARCH","nativeSearch","maybeCallNative","regexp","O","searcher","RegExp","rx","S","res","previousLastIndex","lastIndex","reTrimStart","baseTrim","replace","Ripple","indeterminateIcon","onIcon","offIcon","listeners","setTextColor","dark","light","def","center","$","target","stat","nonConfigurable","nonWritable","toNumber","FUNC_ERROR_TEXT","nativeMax","nativeMin","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","clearTimeout","flush","debounced","isInvoking","defaultMenuProps","VSelectMenuProps","offsetY","offsetOverflow","transition","autoSelectFirst","queryText","itemText","toLocaleLowerCase","hideNoData","noFilter","searchInput","lazySearch","selectedIndex","selectedValues","selectedItems","getValue","hasDisplayedItems","hideSelected","hasItem","currentRange","selectedItem","getText","isSearching","internalSearch","allItems","get","set","isAnyValueAllowed","isDirty","searchIsDirty","menuCanShow","isFocused","$_menuProps","valueComparator","internalValue","listData","virtualizedItems","document","onCopy","$refs","blur","updateSelf","isMenuActive","hasSlot","oldVal","activateMenu","setSearch","destroyed","onFilteredItemsChanged","preSelectedItem","menu","listIndex","setMenuIndex","getTiles","onInternalSearchChanged","updateMenuDimensions","updateDimensions","changeSelectedIndex","backspace","delete","deleteCurrentItem","curIndex","curItem","isInteractive","getDisabled","nextIndex","nextItem","selectItem","setValue","clearableCallback","genInput","VTextField","autocomplete","domProps","genInputSlot","genSelections","onClick","onFocus","isAppendInner","onInput","badInput","validity","ctrlKey","home","onSpaceDown","onTabDown","onUpDown","setSelectedItems","currentItemText","clipboardData","setData","groupKey","itemsGrouped","objectsByKeyValue","groupedItemArray","_i","_Object$keys","groupMembers","itemValue","isSymbol","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","valueOf","isBinary","VDivider","inset","$listeners","VSubheader","action","itemDisabled","parsedItems","tileActiveClass","staticNoDataTile","tile","mousedown","VListItem","genTileContent","genAction","inputValue","VListItemAction","genDivider","genFilteredText","_this$getMaskedCharac","getMaskedCharacters","middle","genHighlight","genTile","_ref$disabled","_ref$value","id","_uid","activeClass","parent","needsTile","VListItemContent","VListItemTitle","componentOptions","Ctor","VList","tabindex","closeOnClick","disableKeys","openOnClick","maxHeight","baseMixins","Comparable","Dependent","Filterable","ClickOutside","appendIcon","attach","cacheItems","chips","clearable","deletableChips","disableLookup","eager","itemColor","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","lazyValue","keyboardLookupPrefix","keyboardLookupLastTime","filterDuplicates","hasChips","computedOwns","computedCounterValue","counterValue","closeConditional","include","getOpenDependentElements","dynamicHeight","scopeId","$vnode","context","$options","_scopeId","_defineProperty","staticList","consoleError","VSelectList","normalisedProps","split","p","nudgeBottom","initialValue","onMenuActiveChange","focus","_isDestroyed","getContent","contains","arr","uniqueValues","Map","has","findExistingIndex","genChipSelection","isDisabled","close","onChipInput","genCommaSelection","last","computedColor","genDefaultSlot","selections","genFieldset","genLabel","prefix","genAffix","suffix","genClearIcon","genIconSlot","genHiddenInput","genMenu","cb","extraData","VInput","readonly","isReadonly","placeholder","persistentPlaceholder","hasLabel","keypress","onKeyPress","attrs$","genListWithSlot","activator","scroll","onScroll","ref","genSelection","genSlotSelection","getMenuIndex","onBlur","onEscDown","metaKey","altKey","KEYBOARD_LOOKUP_THRESHOLD","performance","startsWith","_this12","tab","up","down","enter","changeListIndex","space","esc","tiles","getAttribute","onMouseUp","_this13","hasMouseDown","which","_this14","showMoreItems","scrollHeight","scrollTop","clientHeight","requestAnimationFrame","activeTile","_this15","isBooted","hasClickableTiles","prevTile","nextTile","firstTile","lastTile","_this16","_this17","_loop","appendInner","debug","message","LoggerService","postLogMessage","level","warn","error","Sizeable","Routable","GroupableFactory","ToggleableFactory","chipGroup","closeIcon","closeLabel","draggable","filterIcon","link","outlined","pill","textColor","proxyClass","isClickable","isLink","hasClose","sizeableClasses","groupClasses","genFilter","isActive","VExpandXTransition","genClose","genContent","_this$generateRouteLi","generateRouteLink","Stackable","positionableFactory","Activatable","Detachable","allowOverflow","maxWidth","nudgeLeft","nudgeRight","nudgeTop","nudgeWidth","positionX","positionY","zIndex","activatorNode","absoluteX","absoluteY","activatedBy","activatorFixed","dimensions","offsetTop","offsetLeft","relativeYOffset","hasJustFocused","hasWindow","inputActivator","isContentActive","pageWidth","pageYOffset","stackClass","stackMinZIndex","computedLeft","c","activatorLeft","offsetX","computedTop","hasActivator","absoluteYOffset","callDeactivate","callActivate","absolutePosition","activate","calcLeft","menuWidth","calcXOverflow","calcTop","calcYOverflow","xOverflow","getOffsetLeft","documentHeight","getInnerHeight","toTop","contentHeight","totalHeight","isOverflowing","deactivate","checkForPageYOffset","getOffsetTop","checkActivatorFixed","el","getActivator","getComputedStyle","position","offsetParent","genActivatorListeners","clientX","clientY","innerHeight","documentElement","pageXOffset","scrollLeft","getRoundedBoundedClientRect","rect","getBoundingClientRect","round","measure","marginLeft","marginTop","sneakPeek","display","startTransition","Promise","absolute","offsetRect","Delayable","Returnable","Roundable","Menuable","provide","isInMenu","theme","openOnHover","origin","calculatedTopAuto","defaultOffset","resizeTimeout","calculatedLeft","parseFloat","calculatedMinWidth","calcLeftAuto","calculatedMaxHeight","calculatedMaxWidth","calculatedTop","tabIndex","styles","transformOrigin","activeZIndex","prev","classList","add","goTo","appOffset","duration","container","then","calcTopAuto","calcScrollPosition","querySelector","maxScrollTop","offsetHeight","tileDistanceFromMenuTop","firstTileOffsetTop","genActivatorAttributes","attributes","keydown","genTransition","genDirectives","getScopeIdAttrs","rootThemeClasses","roundedClasses","menuable__content__active","mouseenter","mouseEnterHandler","mouseleave","mouseLeaveHandler","getContentSlot","runDelay","relatedTarget","offsetWidth","arg","genActivator","showLazyContent","VThemeProvider","symbolTag"],"mappings":"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","file":"js/chunk-5e147950.1e6ec2f6.js","sourcesContent":["export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseDataView.vue?vue&type=style&index=0&id=6b584c72&prod&lang=less&scoped=true&\"","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\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 this.shiftKeyDown = e.keyCode === keyCodes.shift || e.shiftKey\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode === keyCodes.shift || !e.shiftKey) {\n this.shiftKeyDown = false\n }\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = 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","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 { 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 './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: (event: MouseEvent) => this.$emit('click:row', item, data, event),\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 './VPagination.sass'\n\nimport VIcon from '../VIcon'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Intersectable from '../../mixins/intersectable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, CreateElement, VNodeChildrenArrayContents } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Intersectable({ onVisible: ['init'] }),\n Themeable\n).extend({\n name: 'v-pagination',\n\n directives: { Resize },\n\n props: {\n circle: Boolean,\n disabled: Boolean,\n length: {\n type: Number,\n default: 0,\n validator: (val: number) => val % 1 === 0,\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n totalVisible: [Number, String],\n value: {\n type: Number,\n default: 0,\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page',\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage',\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous',\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next',\n },\n wrapperAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.wrapper',\n },\n },\n\n data () {\n return {\n maxButtons: 0,\n selected: null as number | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-pagination': true,\n 'v-pagination--circle': this.circle,\n 'v-pagination--disabled': this.disabled,\n ...this.themeClasses,\n }\n },\n\n items (): (string | number)[] {\n const totalVisible = parseInt(this.totalVisible, 10)\n\n if (totalVisible === 0 || isNaN(this.length) || this.length > Number.MAX_SAFE_INTEGER) {\n return []\n }\n\n const maxLength = Math.min(\n Math.max(0, totalVisible) || this.length,\n Math.max(0, this.maxButtons) || this.length,\n this.length\n )\n\n if (this.length <= maxLength) {\n return this.range(1, this.length)\n }\n\n const even = maxLength % 2 === 0 ? 1 : 0\n const left = Math.floor(maxLength / 2)\n const right = this.length - left + 1 + even\n\n if (this.value > left && this.value < right) {\n const firstItem = 1\n const lastItem = this.length\n const start = this.value - left + 2\n const end = this.value + left - 2 - even\n const secondItem = start - 1 === firstItem + 1 ? 2 : '...'\n const beforeLastItem = end + 1 === lastItem - 1 ? end + 1 : '...'\n\n return [1, secondItem, ...this.range(start, end), beforeLastItem, this.length]\n } else if (this.value === left) {\n const end = this.value + left - 1 - even\n return [...this.range(1, end), '...', this.length]\n } else if (this.value === right) {\n const start = this.value - left + 1\n return [1, '...', ...this.range(start, this.length)]\n } else {\n return [\n ...this.range(1, left),\n '...',\n ...this.range(right, this.length),\n ]\n }\n },\n },\n\n watch: {\n value () {\n this.init()\n },\n },\n\n beforeMount () {\n this.init()\n },\n\n methods: {\n init () {\n this.selected = null\n\n this.onResize()\n this.$nextTick(this.onResize)\n // TODO: Change this (f75dee3a, cbdf7caa)\n setTimeout(() => (this.selected = this.value), 100)\n },\n onResize () {\n const width = this.$el && this.$el.parentElement\n ? this.$el.parentElement.clientWidth\n : window.innerWidth\n\n this.maxButtons = Math.floor((width - 96) / 42)\n },\n next (e: Event) {\n e.preventDefault()\n this.$emit('input', this.value + 1)\n this.$emit('next')\n },\n previous (e: Event) {\n e.preventDefault()\n this.$emit('input', this.value - 1)\n this.$emit('previous')\n },\n range (from: number, to: number) {\n const range = []\n\n from = from > 0 ? from : 1\n\n for (let i = from; i <= to; i++) {\n range.push(i)\n }\n\n return range\n },\n genIcon (h: CreateElement, icon: string, disabled: boolean, fn: EventListener, label: String): VNode {\n return h('li', [\n h('button', {\n staticClass: 'v-pagination__navigation',\n class: {\n 'v-pagination__navigation--disabled': disabled,\n },\n attrs: {\n disabled,\n type: 'button',\n 'aria-label': label,\n },\n on: disabled ? {} : { click: fn },\n }, [h(VIcon, [icon])]),\n ])\n },\n genItem (h: CreateElement, i: string | number): VNode {\n const color: string | false = (i === this.value) && (this.color || 'primary')\n const isCurrentPage = i === this.value\n const ariaLabel = isCurrentPage ? this.currentPageAriaLabel : this.pageAriaLabel\n\n return h('button', this.setBackgroundColor(color, {\n staticClass: 'v-pagination__item',\n class: {\n 'v-pagination__item--active': i === this.value,\n },\n attrs: {\n type: 'button',\n 'aria-current': isCurrentPage,\n 'aria-label': this.$vuetify.lang.t(ariaLabel, i),\n },\n on: {\n click: () => this.$emit('input', i),\n },\n }), [i.toString()])\n },\n genItems (h: CreateElement): VNode[] {\n return this.items.map((i, index) => {\n return h('li', { key: index }, [\n isNaN(Number(i)) ? h('span', { class: 'v-pagination__more' }, [i.toString()]) : this.genItem(h, i),\n ])\n })\n },\n genList (h: CreateElement, children: VNodeChildrenArrayContents): VNode {\n return h('ul', {\n directives: [{\n modifiers: { quiet: true },\n name: 'resize',\n value: this.onResize,\n }],\n class: this.classes,\n }, children)\n },\n },\n\n render (h): VNode {\n const children = [\n this.genIcon(h,\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon,\n this.value <= 1,\n this.previous,\n this.$vuetify.lang.t(this.previousAriaLabel)),\n this.genItems(h),\n this.genIcon(h,\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon,\n this.value >= this.length,\n this.next,\n this.$vuetify.lang.t(this.nextAriaLabel)),\n ]\n\n return h('nav', {\n attrs: {\n role: 'navigation',\n 'aria-label': this.$vuetify.lang.t(this.wrapperAriaLabel),\n },\n }, [this.genList(h, children)])\n },\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-data-table',{attrs:{\"headers\":_vm.headersPrep,\"items\":_vm.items,\"loading\":_vm.loading,\"options\":_vm.pagination,\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc,\"custom-sort\":_vm.customSort,\"footer-props\":{\n itemsPerPageOptions: [5, 10, 25, 50, 100],\n itemsPerPageText: _vm.$t('TABLE.ROWS_PER_PAGE')\n },\"must-sort\":\"\",\"id\":\"main\",\"hide-default-header\":\"\",\"item-key\":_vm.itemKey,\"expanded\":_vm.expanded,\"single-expand\":\"\",\"loader-height\":\"2\"},on:{\"update:options\":function($event){return _vm.$emit('update:pagination', $event)},\"update:sort-by\":function($event){return _vm.$emit('update:sort-by-prop', $event)},\"update:sort-desc\":function($event){return _vm.$emit('update:sort-desc-prop', $event)}},scopedSlots:_vm._u([{key:\"loading\",fn:function(){return [_c('v-progress-circular',{attrs:{\"size\":\"18\",\"width\":\"2\",\"color\":\"primary\",\"indeterminate\":\"\",\"id\":\"progress\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"TABLE.LOADING\")))])]},proxy:true},{key:\"no-data\",fn:function(){return [_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.loading),expression:\"!loading\"}],staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.$t(\"TABLE.EMPTY\")))])]},proxy:true},{key:\"header\",fn:function({ props }){return [_c('thead',{staticClass:\"v-data-table-header\"},[_c('tr',_vm._l((props.headers),function(header){return _c('th',{key:header.text,class:[\n 'column',\n header.sortable !== false ? 'sortable' : '',\n !!_vm.sortDesc ? 'desc' : 'asc',\n header.value === _vm.sortBy ? 'active' : '',\n 'text-xs-left'\n ],attrs:{\"role\":\"columnheader\"},on:{\"click\":function($event){(header.sortable === undefined || header.sortable) &&\n _vm.changeSort(header.value)}}},[_c('span',[_vm._v(_vm._s(_vm.$t(header.text)))]),(header.sortable)?_c('v-icon',{staticClass:\"v-data-table-header__icon\",attrs:{\"small\":\"\"}},[_vm._v(\"arrow_upward\")]):_vm._e()],1)}),0),_c('tr',_vm._l((props.headers),function(header){return _c('th',{key:header.text,staticClass:\"text-left\"},[(header.filterable && !header.filterValues)?_c('v-text-field',{staticClass:\"txt_ics\",attrs:{\"name\":'filter-' + header.value,\"id\":'filter-' + header.value},on:{\"input\":function($event){return _vm.filter($event, header.value)}}}):_vm._e(),(!header.filterable)?_c('div',{staticStyle:{\"visibility\":\"hidden\",\"width\":\"60px\"}}):_vm._e(),(header.filterable && header.filterValues)?_c('v-select',{staticClass:\"txt_ics\",attrs:{\"items\":header.filterValues,\"name\":'filter-' + header.value,\"id\":'filter-' + header.value,\"menu-props\":{ transition: 'scale-transition' }},on:{\"input\":function($event){return _vm.filter($event, header.value)}},model:{value:(_vm.defaultSelected[header.value]),callback:function ($$v) {_vm.$set(_vm.defaultSelected, header.value, $$v)},expression:\"defaultSelected[header.value]\"}}):_vm._e()],1)}),0)])]}},{key:\"item\",fn:function(props){return [_c('tr',{class:[\n 'main-row',\n { clickable: _vm.subHeaders.length > 0 },\n { zebra: props.index % 2 === 0 }\n ],on:{\"click\":function($event){_vm.subHeaders.length > 0 && _vm.expandRow(props.item)}}},[_vm._t(\"rowContent\",null,{\"item\":props.item})],2)]}},{key:\"expanded-item\",fn:function(props){return [_c('tr',[_c('td',{staticClass:\"sub-cell\",attrs:{\"colspan\":props.headers.length}},[_c('v-data-table',{staticClass:\"elevation-1\",attrs:{\"hide-default-header\":\"\",\"hide-default-footer\":\"\",\"headers\":_vm.subHeaders,\"items\":[props.item]},scopedSlots:_vm._u([{key:\"item\",fn:function(subProps){return [_vm._t(\"subRowContent\",null,{\"item\":subProps.item})]}},{key:\"header\",fn:function({ props: { headers } }){return [_c('thead',{staticClass:\"v-data-table-header\"},[_c('tr',_vm._l((headers),function(header){return _c('th',{key:header.text,class:['column', 'text-xs-left'],attrs:{\"role\":\"columnheader\"}},[_vm._v(\" \"+_vm._s(_vm.$t(header.text))+\" \")])}),0)])]}}],null,true)})],1)])]}},{key:\"pageText\",fn:function({ pageStart, pageStop, itemsLength }){return [_vm._v(\" \"+_vm._s(pageStart)+\" - \"+_vm._s(pageStop)+\" \"+_vm._s(_vm.$t(\"TABLE.OF\"))+\" \"+_vm._s(itemsLength)+\" \")]}}],null,true)}),_c('div',{staticClass:\"pb-2 hidden-sm-and-down\",attrs:{\"id\":\"pagination\"}},[_c('v-pagination',{attrs:{\"length\":_vm.pages,\"total-visible\":\"6\"},model:{value:(_vm.pagination.page),callback:function ($$v) {_vm.$set(_vm.pagination, \"page\", $$v)},expression:\"pagination.page\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport i18n from \"@/plugins/i18n\";\r\nimport debounce from \"lodash/debounce\";\r\nimport logger from \"@/icslogger\";\r\nimport moment from \"moment\";\r\nimport { resolve } from \"@/mixins\";\r\nexport default Vue.extend({\r\n name: \"base-table\",\r\n data() {\r\n const filters: any = {};\r\n const selectModels: string[] = [];\r\n for (const header of this.headers) {\r\n if (header.value !== \"\") {\r\n filters[header.value] = \"\";\r\n }\r\n if (header.filterValues) {\r\n selectModels[header.value] = i18n.t(\"FILTER.CHOOSE\").toString();\r\n }\r\n }\r\n const expanded: any[] = [];\r\n return {\r\n filters,\r\n expanded,\r\n defaultSelected: selectModels,\r\n sortDesc: this.sortDescProp,\r\n sortBy: this.sortByProp\r\n };\r\n },\r\n beforeUpdate: function() {\r\n for (let header of this.headers) {\r\n if (\r\n header.filterValues &&\r\n !header.filterValues.includes(this.defaultSelected[header.value])\r\n ) {\r\n this.defaultSelected[header.value] = i18n.t(\"FILTER.CHOOSE\").toString();\r\n }\r\n }\r\n },\r\n computed: {\r\n headersPrep(): any[] {\r\n return this.headers.map(header => {\r\n const newHeader = Object.assign({}, header);\r\n if (newHeader.filterValues) {\r\n newHeader.filterValues = [i18n.t(\"FILTER.CHOOSE\")];\r\n newHeader.filterValues = newHeader.filterValues.concat(\r\n header.filterValues\r\n );\r\n }\r\n return newHeader;\r\n });\r\n },\r\n pages(): number {\r\n if (\r\n this.pagination.itemsPerPage == null ||\r\n this.pagination.serverItemsLength == null\r\n ) {\r\n return 0;\r\n }\r\n return Math.ceil(\r\n this.pagination.serverItemsLength / this.pagination.itemsPerPage\r\n );\r\n }\r\n },\r\n methods: {\r\n expandRow(value: any) {\r\n const prevRow = this.expanded.pop();\r\n if (prevRow !== value) {\r\n this.expanded.push(value);\r\n }\r\n },\r\n changeSort(column: any): void {\r\n if (this.sortBy === column) {\r\n this.sortDesc = !this.sortDesc;\r\n } else {\r\n this.sortBy = column;\r\n this.sortDesc = false;\r\n }\r\n },\r\n customSort(items: any[], index: any[], isDesc: any[]): any[] {\r\n // console.error(items,index, isDesc);\r\n items.sort((a: any, b: any) => {\r\n const aValue: any = resolve(index[0], a);\r\n const bValue: any = resolve(index[0], b);\r\n if (index[0] === \"date\" || index[0] === \"createdAt\" || index[0] === \"creationDate\" || index[0] === \"activatedAt\" || index[0] == \"lastLogin\") {\r\n if (!isDesc[0]) {\r\n if (aValue === \"\") {\r\n return -1;\r\n }\r\n if (bValue === \"\") {\r\n return 1;\r\n }\r\n return moment(aValue).isAfter(bValue) ? 1 : -1;\r\n } else {\r\n if (aValue === \"\") {\r\n return 1;\r\n }\r\n if (bValue === \"\") {\r\n return -1;\r\n }\r\n return !moment(aValue).isAfter(bValue) ? 1 : -1;\r\n }\r\n } else {\r\n if (!isDesc[0]) {\r\n if (aValue == null || aValue == \"\") {\r\n return -1;\r\n } \r\n if (bValue == null || bValue == \"\") {\r\n return 1;\r\n }\r\n return (\r\n aValue.toString().trim().toLowerCase().localeCompare(bValue.toString().trim().toLowerCase())\r\n );\r\n // return a[index[0]].trim() < b[index[0]].trim() ? -1 : 1;\r\n } else {\r\n if (aValue == null || aValue == \"\") {\r\n return 1;\r\n } \r\n if (bValue== null || bValue == \"\") {\r\n return -1;\r\n }\r\n return (\r\n bValue.toString().trim().toLowerCase().localeCompare(aValue.toString().trim().toLowerCase())\r\n );\r\n // return b[index[0]].toLowerCase().trim() < a[index[0]].trim() ? -1 : 1;\r\n }\r\n }\r\n });\r\n return items;\r\n },\r\n filter(value: any, column: any): void {\r\n if (column !== \"\") {\r\n if (value === i18n.t(\"FILTER.CHOOSE\")) {\r\n value = \"\";\r\n }\r\n this.filters[column] = value;\r\n this.$emit(\"filterChanged\", this.filters);\r\n this.logFilter(this.filters);\r\n }\r\n },\r\n logFilter: debounce(function(this: any, filters: any): void {\r\n logger.info(\"Filter table \" + this.title, JSON.stringify(filters));\r\n }, 1000)\r\n },\r\n props: {\r\n loading: Boolean,\r\n headers: Array as () => any[],\r\n subHeaders: Array as () => any[],\r\n items: Array as () => any[],\r\n pagination: Object,\r\n itemKey: String,\r\n sortByProp: String,\r\n sortDescProp: Boolean\r\n }\r\n});\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseTable.vue?vue&type=template&id=26c6a913&\"\nimport script from \"./BaseTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseTable.vue?vue&type=style&index=0&id=26c6a913&prod&lang=less&\"\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","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupedSelect.vue?vue&type=style&index=0&id=53e8e706&prod&lang=less&\"","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, SEARCH);\n return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-card',{staticClass:\"rounded-card\"},[_c('v-card-title',{staticClass:\"base-data-view-header\"},[_c('h1',[_vm._v(_vm._s(_vm.title))]),_c('v-spacer'),_vm._t(\"menu\")],2),_vm._t(\"content\")],2)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nexport default Vue.extend({\r\n props: {\r\n title: String\r\n }\r\n});\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseDataView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseDataView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BaseDataView.vue?vue&type=template&id=6b584c72&scoped=true&\"\nimport script from \"./BaseDataView.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseDataView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BaseDataView.vue?vue&type=style&index=0&id=6b584c72&prod&lang=less&scoped=true&\"\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 \"6b584c72\",\n null\n \n)\n\nexport default component.exports","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","var $ = require('../internals/export');\n\n// `Number.MAX_SAFE_INTEGER` constant\n// https://tc39.es/ecma262/#sec-number.max_safe_integer\n$({ target: 'Number', stat: true, nonConfigurable: true, nonWritable: true }, {\n MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF\n});\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","// Styles\nimport './VAutocomplete.sass'\n\n// Extensions\nimport VSelect, { defaultMenuProps as VSelectMenuProps } from '../VSelect/VSelect'\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport {\n getObjectValueByPath,\n getPropertyFromItem,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { PropType, VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nconst defaultMenuProps = {\n ...VSelectMenuProps,\n offsetY: true,\n offsetOverflow: true,\n transition: false,\n}\n\n/* @vue/component */\nexport default VSelect.extend({\n name: 'v-autocomplete',\n\n props: {\n autoSelectFirst: {\n type: Boolean,\n default: false,\n },\n filter: {\n type: Function,\n default: (item: any, queryText: string, itemText: string) => {\n return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1\n },\n } as PropValidator<(item: any, queryText: string, itemText: string) => boolean>,\n hideNoData: Boolean,\n menuProps: {\n type: VSelect.options.props.menuProps.type,\n default: () => defaultMenuProps,\n },\n noFilter: Boolean,\n searchInput: {\n type: String as PropType,\n },\n },\n\n data () {\n return {\n lazySearch: this.searchInput,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSelect.options.computed.classes.call(this),\n 'v-autocomplete': true,\n 'v-autocomplete--is-selecting-index': this.selectedIndex > -1,\n }\n },\n computedItems (): object[] {\n return this.filteredItems\n },\n selectedValues (): object[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n hasDisplayedItems (): boolean {\n return this.hideSelected\n ? this.filteredItems.some(item => !this.hasItem(item))\n : this.filteredItems.length > 0\n },\n currentRange (): number {\n if (this.selectedItem == null) return 0\n\n return String(this.getText(this.selectedItem)).length\n },\n filteredItems (): object[] {\n if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems\n\n return this.allItems.filter(item => {\n const value = getPropertyFromItem(item, this.itemText)\n const text = value != null ? String(value) : ''\n\n return this.filter(item, String(this.internalSearch), text)\n })\n },\n internalSearch: {\n get (): string | null {\n return this.lazySearch\n },\n set (val: any) { // TODO: this should be `string | null` but it breaks lots of other types\n // emit update event only when the new\n // search value is different from previous\n if (this.lazySearch !== val) {\n this.lazySearch = val\n this.$emit('update:search-input', val)\n }\n },\n },\n isAnyValueAllowed (): boolean {\n return false\n },\n isDirty (): boolean {\n return this.searchIsDirty || this.selectedItems.length > 0\n },\n isSearching (): boolean {\n return (\n this.multiple &&\n this.searchIsDirty\n ) || (\n this.searchIsDirty &&\n this.internalSearch !== this.getText(this.selectedItem)\n )\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems || !this.hideNoData\n },\n $_menuProps (): object {\n const props = VSelect.options.computed.$_menuProps.call(this);\n (props as any).contentClass = `v-autocomplete__content ${(props as any).contentClass || ''}`.trim()\n return {\n ...defaultMenuProps,\n ...props,\n }\n },\n searchIsDirty (): boolean {\n return this.internalSearch != null &&\n this.internalSearch !== ''\n },\n selectedItem (): any {\n if (this.multiple) return null\n\n return this.selectedItems.find(i => {\n return this.valueComparator(this.getValue(i), this.getValue(this.internalValue))\n })\n },\n listData () {\n const data = VSelect.options.computed.listData.call(this) as any\n\n data.props = {\n ...data.props,\n items: this.virtualizedItems,\n noFilter: (\n this.noFilter ||\n !this.isSearching ||\n !this.filteredItems.length\n ),\n searchInput: this.internalSearch,\n }\n\n return data\n },\n },\n\n watch: {\n filteredItems: 'onFilteredItemsChanged',\n internalValue: 'setSearch',\n isFocused (val) {\n if (val) {\n document.addEventListener('copy', this.onCopy)\n this.$refs.input && this.$refs.input.select()\n } else {\n document.removeEventListener('copy', this.onCopy)\n this.blur()\n this.updateSelf()\n }\n },\n isMenuActive (val) {\n if (val || !this.hasSlot) return\n\n this.lazySearch = null\n },\n items (val, oldVal) {\n // If we are focused, the menu\n // is not active, hide no data is enabled,\n // and items change\n // User is probably async loading\n // items, try to activate the menu\n if (\n !(oldVal && oldVal.length) &&\n this.hideNoData &&\n this.isFocused &&\n !this.isMenuActive &&\n val.length\n ) this.activateMenu()\n },\n searchInput (val: string) {\n this.lazySearch = val\n },\n internalSearch: 'onInternalSearchChanged',\n itemText: 'updateSelf',\n },\n\n created () {\n this.setSearch()\n },\n\n destroyed () {\n document.removeEventListener('copy', this.onCopy)\n },\n\n methods: {\n onFilteredItemsChanged (val: never[], oldVal: never[]) {\n // TODO: How is the watcher triggered\n // for duplicate items? no idea\n if (val === oldVal) return\n\n if (!this.autoSelectFirst) {\n const preSelectedItem = oldVal[this.$refs.menu.listIndex]\n\n if (preSelectedItem) {\n this.setMenuIndex(val.findIndex(i => i === preSelectedItem))\n } else {\n this.setMenuIndex(-1)\n }\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n\n this.$nextTick(() => {\n if (\n !this.internalSearch ||\n (val.length !== 1 &&\n !this.autoSelectFirst)\n ) return\n\n this.$refs.menu.getTiles()\n\n if (this.autoSelectFirst && val.length) {\n this.setMenuIndex(0)\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n })\n },\n onInternalSearchChanged () {\n this.updateMenuDimensions()\n },\n updateMenuDimensions () {\n // Type from menuable is not making it through\n this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions()\n },\n changeSelectedIndex (keyCode: number) {\n // Do not allow changing of selectedIndex\n // when search is dirty\n if (this.searchIsDirty) return\n\n if (this.multiple && keyCode === keyCodes.left) {\n if (this.selectedIndex === -1) {\n this.selectedIndex = this.selectedItems.length - 1\n } else {\n this.selectedIndex--\n }\n } else if (this.multiple && keyCode === keyCodes.right) {\n if (this.selectedIndex >= this.selectedItems.length - 1) {\n this.selectedIndex = -1\n } else {\n this.selectedIndex++\n }\n } else if (keyCode === keyCodes.backspace || keyCode === keyCodes.delete) {\n this.deleteCurrentItem()\n }\n },\n deleteCurrentItem () {\n const curIndex = this.selectedIndex\n const curItem = this.selectedItems[curIndex]\n\n // Do nothing if input or item is disabled\n if (\n !this.isInteractive ||\n this.getDisabled(curItem)\n ) return\n\n const lastIndex = this.selectedItems.length - 1\n\n // Select the last item if\n // there is no selection\n if (\n this.selectedIndex === -1 &&\n lastIndex !== 0\n ) {\n this.selectedIndex = lastIndex\n\n return\n }\n\n const length = this.selectedItems.length\n const nextIndex = curIndex !== length - 1\n ? curIndex\n : curIndex - 1\n const nextItem = this.selectedItems[nextIndex]\n\n if (!nextItem) {\n this.setValue(this.multiple ? [] : null)\n } else {\n this.selectItem(curItem)\n }\n\n this.selectedIndex = nextIndex\n },\n clearableCallback () {\n this.internalSearch = null\n\n VSelect.options.methods.clearableCallback.call(this)\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.data = mergeData(input.data!, {\n attrs: {\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n },\n domProps: { value: this.internalSearch },\n })\n\n return input\n },\n genInputSlot () {\n const slot = VSelect.options.methods.genInputSlot.call(this)\n\n slot.data!.attrs!.role = 'combobox'\n\n return slot\n },\n genSelections (): VNode | never[] {\n return this.hasSlot || this.multiple\n ? VSelect.options.methods.genSelections.call(this)\n : []\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n this.selectedIndex > -1\n ? (this.selectedIndex = -1)\n : this.onFocus()\n\n if (!this.isAppendInner(e.target)) this.activateMenu()\n },\n onInput (e: Event) {\n if (\n this.selectedIndex > -1 ||\n !e.target\n ) return\n\n const target = e.target as HTMLInputElement\n const value = target.value\n\n // If typing and menu is not currently active\n if (target.value) this.activateMenu()\n\n if (!this.multiple && value === '') this.deleteCurrentItem()\n\n this.internalSearch = value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n if (\n e.ctrlKey ||\n ![keyCodes.home, keyCodes.end].includes(keyCode)\n ) {\n VSelect.options.methods.onKeyDown.call(this, e)\n }\n\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode)\n },\n onSpaceDown (e: KeyboardEvent) { /* noop */ },\n onTabDown (e: KeyboardEvent) {\n VSelect.options.methods.onTabDown.call(this, e)\n this.updateSelf()\n },\n onUpDown (e: Event) {\n // Prevent screen from scrolling\n e.preventDefault()\n\n // For autocomplete / combobox, cycling\n // interfers with native up/down behavior\n // instead activate the menu\n this.activateMenu()\n },\n selectItem (item: object) {\n VSelect.options.methods.selectItem.call(this, item)\n this.setSearch()\n },\n setSelectedItems () {\n VSelect.options.methods.setSelectedItems.call(this)\n\n // #4273 Don't replace if searching\n // #4403 Don't replace if focused\n if (!this.isFocused) this.setSearch()\n },\n setSearch () {\n // Wait for nextTick so selectedItem\n // has had time to update\n this.$nextTick(() => {\n if (\n !this.multiple ||\n !this.internalSearch ||\n !this.isMenuActive\n ) {\n this.internalSearch = (\n !this.selectedItems.length ||\n this.multiple ||\n this.hasSlot\n )\n ? null\n : this.getText(this.selectedItem)\n }\n })\n },\n updateSelf () {\n if (\n !this.searchIsDirty &&\n !this.internalValue\n ) return\n\n if (\n !this.multiple &&\n !this.valueComparator(\n this.internalSearch,\n this.getValue(this.internalValue)\n )\n ) {\n this.setSearch()\n }\n },\n hasItem (item: any): boolean {\n return this.selectedValues.indexOf(this.getValue(item)) > -1\n },\n onCopy (event: ClipboardEvent) {\n if (this.selectedIndex === -1) return\n\n const currentItem = this.selectedItems[this.selectedIndex]\n const currentItemText = this.getText(currentItem)\n event.clipboardData?.setData('text/plain', currentItemText)\n event.clipboardData?.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText)\n event.preventDefault()\n },\n },\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-autocomplete',{attrs:{\"placeholder\":_vm.label,\"items\":_vm.itemsGrouped,\"prepend-icon\":_vm.icon,\"item-text\":_vm.itemText,\"item-value\":_vm.itemValue,\"group-key\":_vm.groupKey,\"chips\":\"\",\"multiple\":\"\",\"color\":\"rgba(0,0,0,0.87)\",\"menu-props\":{ transition: 'scale-transition' }},scopedSlots:_vm._u([{key:\"selection\",fn:function(data){return [_c('v-chip',{staticClass:\"chip--select-multi\",attrs:{\"input-value\":data.selected,\"close\":\"\"},on:{\"click:close\":function($event){return _vm.remove(data.item)}}},[_vm._v(_vm._s(data.item[_vm.itemText]))])]}},{key:\"item\",fn:function(data){return [(typeof data.item !== 'object')?[_c('v-list-item-content',{domProps:{\"textContent\":_vm._s(data.item)}})]:[_c('v-list-item-action',[(_vm.isSelected(data.item))?_c('v-icon',[_vm._v(\"check\")]):_vm._e()],1),_c('v-list-item-content',[_c('v-list-item-title',{domProps:{\"innerHTML\":_vm._s(data.item[_vm.itemText])}})],1)]]}}]),model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport logger from \"@/icslogger\";\r\nexport default Vue.extend({\r\n name: \"grouped-select\",\r\n data() {\r\n return {\r\n selected: this.selectedItems || []\r\n };\r\n },\r\n watch: {\r\n selected() {\r\n this.$emit(\"selectionChanged\", this.selected);\r\n logger.info(\"Realestate filter changed\", JSON.stringify(this.selected));\r\n },\r\n selectedItems() {\r\n this.selected = this.selectedItems;\r\n }\r\n },\r\n computed: {\r\n itemsGrouped(): any[] {\r\n if (!this.groupKey) {\r\n return this.items;\r\n }\r\n const groupKey = this.groupKey;\r\n const groupedItems = this.items.reduce((objectsByKeyValue, obj) => {\r\n const value = obj[groupKey];\r\n objectsByKeyValue[value] = (objectsByKeyValue[value] || []).concat(obj);\r\n return objectsByKeyValue;\r\n }, {});\r\n let groupedItemArray: any[] = [];\r\n for (const group of Object.keys(groupedItems)) {\r\n groupedItemArray.push({ header: group });\r\n const groupMembers = groupedItems[group];\r\n groupedItemArray = groupedItemArray.concat(groupMembers);\r\n groupedItemArray.push({ divider: true });\r\n }\r\n return groupedItemArray;\r\n }\r\n },\r\n methods: {\r\n isSelected(item: any): boolean {\r\n const index = (this.selected as any[]).indexOf(item[this.itemValue]);\r\n return index > -1;\r\n },\r\n remove(item: any): void {\r\n const index = (this.selected as any[]).indexOf(item[this.itemValue]);\r\n if (index >= 0) {\r\n this.selected.splice(index, 1);\r\n }\r\n }\r\n },\r\n props: {\r\n items: Array as () => any[],\r\n selectedItems: Array as () => any[],\r\n itemText: String,\r\n itemValue: String,\r\n groupKey: String,\r\n label: String,\r\n icon: String\r\n }\r\n});\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupedSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupedSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GroupedSelect.vue?vue&type=template&id=53e8e706&\"\nimport script from \"./GroupedSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./GroupedSelect.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GroupedSelect.vue?vue&type=style&index=0&id=53e8e706&prod&lang=less&\"\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","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\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 { getPropertyFromItem } 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 text\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return [start, this.genHighlight(middle), end]\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string) {\n return this.$createElement('span', { staticClass: 'v-list-item__mask' }, 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 return this.$createElement(VListItemContent, [\n this.$createElement(VListItemTitle, [\n this.genFilteredText(this.getText(item)),\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","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","// 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 e.key.length > 1 ||\n e.ctrlKey || e.metaKey || e.altKey\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","import { LoggerService } from \"@/services\";\r\nexport default {\r\n debug(action: string, message: string) {\r\n LoggerService.postLogMessage({ action, message, level: \"DEBUG\" });\r\n },\r\n info(action: string, message: string) {\r\n LoggerService.postLogMessage({ action, message, level: \"INFO\" });\r\n },\r\n warn(action: string, message: string) {\r\n LoggerService.postLogMessage({ action, message, level: \"WARN\" });\r\n },\r\n error(action: string, message: string) {\r\n LoggerService.postLogMessage({ action, message, level: \"ERROR\" });\r\n }\r\n};\r\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","// Mixins\nimport Stackable from '../stackable'\nimport { factory as positionableFactory } from '../positionable'\nimport Activatable from '../activatable'\nimport Detachable from '../detachable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Stackable,\n positionableFactory(['top', 'right', 'bottom', 'left', 'absolute']),\n Activatable,\n Detachable,\n)\n\ninterface dimensions {\n top: number\n left: number\n bottom: number\n right: number\n width: number\n height: number\n offsetTop: number\n scrollHeight: number\n offsetLeft: number\n}\n\ninterface options extends ExtractVue {\n attach: boolean | string | Element\n offsetY: boolean\n offsetX: boolean\n dimensions: {\n activator: dimensions\n content: dimensions\n }\n $refs: {\n content: HTMLElement\n activator: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'menuable',\n\n props: {\n allowOverflow: Boolean,\n light: Boolean,\n dark: Boolean,\n maxWidth: {\n type: [Number, String],\n default: 'auto',\n },\n minWidth: [Number, String],\n nudgeBottom: {\n type: [Number, String],\n default: 0,\n },\n nudgeLeft: {\n type: [Number, String],\n default: 0,\n },\n nudgeRight: {\n type: [Number, String],\n default: 0,\n },\n nudgeTop: {\n type: [Number, String],\n default: 0,\n },\n nudgeWidth: {\n type: [Number, String],\n default: 0,\n },\n offsetOverflow: Boolean,\n positionX: {\n type: Number,\n default: null,\n },\n positionY: {\n type: Number,\n default: null,\n },\n zIndex: {\n type: [Number, String],\n default: null,\n },\n },\n\n data: () => ({\n activatorNode: [] as VNode[],\n absoluteX: 0,\n absoluteY: 0,\n activatedBy: null as EventTarget | null,\n activatorFixed: false,\n dimensions: {\n activator: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n offsetLeft: 0,\n },\n content: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n },\n },\n relativeYOffset: 0,\n hasJustFocused: false,\n hasWindow: false,\n inputActivator: false,\n isContentActive: false,\n pageWidth: 0,\n pageYOffset: 0,\n stackClass: 'v-menu__content--active',\n stackMinZIndex: 6,\n }),\n\n computed: {\n computedLeft () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n const activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0\n const minWidth = Math.max(a.width, c.width)\n let left = 0\n left += activatorLeft\n if (this.left || (this.$vuetify.rtl && !this.right)) left -= (minWidth - a.width)\n if (this.offsetX) {\n const maxWidth = isNaN(Number(this.maxWidth))\n ? a.width\n : Math.min(a.width, Number(this.maxWidth))\n\n left += this.left ? -maxWidth : a.width\n }\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return left\n },\n computedTop () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n let top = 0\n\n if (this.top) top += a.height - c.height\n if (this.attach !== false) top += a.offsetTop\n else top += a.top + this.pageYOffset\n if (this.offsetY) top += this.top ? -a.height : a.height\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n\n return top\n },\n hasActivator (): boolean {\n return !!this.$slots.activator || !!this.$scopedSlots.activator || !!this.activator || !!this.inputActivator\n },\n absoluteYOffset (): number {\n return this.pageYOffset - this.relativeYOffset\n },\n },\n\n watch: {\n disabled (val) {\n val && this.callDeactivate()\n },\n isActive (val) {\n if (this.disabled) return\n\n val ? this.callActivate() : this.callDeactivate()\n },\n positionX: 'updateDimensions',\n positionY: 'updateDimensions',\n },\n\n beforeMount () {\n this.hasWindow = typeof window !== 'undefined'\n\n if (this.hasWindow) {\n window.addEventListener('resize', this.updateDimensions, false)\n }\n },\n\n beforeDestroy () {\n if (this.hasWindow) {\n window.removeEventListener('resize', this.updateDimensions, false)\n }\n },\n\n methods: {\n absolutePosition () {\n return {\n offsetTop: this.positionY || this.absoluteY,\n offsetLeft: this.positionX || this.absoluteX,\n scrollHeight: 0,\n top: this.positionY || this.absoluteY,\n bottom: this.positionY || this.absoluteY,\n left: this.positionX || this.absoluteX,\n right: this.positionX || this.absoluteX,\n height: 0,\n width: 0,\n }\n },\n activate () {},\n calcLeft (menuWidth: number) {\n return convertToUnit(this.attach !== false\n ? this.computedLeft\n : this.calcXOverflow(this.computedLeft, menuWidth))\n },\n calcTop () {\n return convertToUnit(this.attach !== false\n ? this.computedTop\n : this.calcYOverflow(this.computedTop))\n },\n calcXOverflow (left: number, menuWidth: number) {\n const xOverflow = left + menuWidth - this.pageWidth + 12\n\n if ((!this.left || this.right) && xOverflow > 0) {\n left = Math.max(left - xOverflow, 0)\n } else {\n left = Math.max(left, 12)\n }\n\n return left + this.getOffsetLeft()\n },\n calcYOverflow (top: number) {\n const documentHeight = this.getInnerHeight()\n const toTop = this.absoluteYOffset + documentHeight\n const activator = this.dimensions.activator\n const contentHeight = this.dimensions.content.height\n const totalHeight = top + contentHeight\n const isOverflowing = toTop < totalHeight\n\n // If overflowing bottom and offset\n // TODO: set 'bottom' position instead of 'top'\n if (isOverflowing &&\n this.offsetOverflow &&\n // If we don't have enough room to offset\n // the overflow, don't offset\n activator.top > contentHeight\n ) {\n top = this.pageYOffset + (activator.top - contentHeight)\n // If overflowing bottom\n } else if (isOverflowing && !this.allowOverflow) {\n top = toTop - contentHeight - 12\n // If overflowing top\n } else if (top < this.absoluteYOffset && !this.allowOverflow) {\n top = this.absoluteYOffset + 12\n }\n\n return top < 12 ? 12 : top\n },\n callActivate () {\n if (!this.hasWindow) return\n\n this.activate()\n },\n callDeactivate () {\n this.isContentActive = false\n\n this.deactivate()\n },\n checkForPageYOffset () {\n if (this.hasWindow) {\n this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop()\n }\n },\n checkActivatorFixed () {\n if (this.attach !== false) {\n this.activatorFixed = false\n return\n }\n let el = this.getActivator()\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n this.activatorFixed = true\n return\n }\n el = el.offsetParent as HTMLElement\n }\n this.activatorFixed = false\n },\n deactivate () {},\n genActivatorListeners () {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this)\n\n const onClick = listeners.click\n\n if (onClick) {\n listeners.click = (e: MouseEvent & KeyboardEvent & FocusEvent) => {\n if (this.openOnClick) {\n onClick && onClick(e)\n }\n\n this.absoluteX = e.clientX\n this.absoluteY = e.clientY\n }\n }\n\n return listeners\n },\n getInnerHeight () {\n if (!this.hasWindow) return 0\n\n return window.innerHeight ||\n document.documentElement.clientHeight\n },\n getOffsetLeft () {\n if (!this.hasWindow) return 0\n\n return window.pageXOffset ||\n document.documentElement.scrollLeft\n },\n getOffsetTop () {\n if (!this.hasWindow) return 0\n\n return window.pageYOffset ||\n document.documentElement.scrollTop\n },\n getRoundedBoundedClientRect (el: Element) {\n const rect = el.getBoundingClientRect()\n return {\n top: Math.round(rect.top),\n left: Math.round(rect.left),\n bottom: Math.round(rect.bottom),\n right: Math.round(rect.right),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n }\n },\n measure (el: HTMLElement) {\n if (!el || !this.hasWindow) return null\n\n const rect = this.getRoundedBoundedClientRect(el)\n\n // Account for activator margin\n if (this.attach !== false) {\n const style = window.getComputedStyle(el)\n\n rect.left = parseInt(style.marginLeft!)\n rect.top = parseInt(style.marginTop!)\n }\n\n return rect\n },\n sneakPeek (cb: () => void) {\n requestAnimationFrame(() => {\n const el = this.$refs.content\n\n if (!el || el.style.display !== 'none') {\n cb()\n return\n }\n\n el.style.display = 'inline-block'\n cb()\n el.style.display = 'none'\n })\n },\n startTransition () {\n return new Promise(resolve => requestAnimationFrame(() => {\n this.isContentActive = this.hasJustFocused = this.isActive\n resolve()\n }))\n },\n updateDimensions () {\n this.hasWindow = typeof window !== 'undefined'\n this.checkActivatorFixed()\n this.checkForPageYOffset()\n this.pageWidth = document.documentElement.clientWidth\n\n const dimensions: any = {\n activator: { ...this.dimensions.activator },\n content: { ...this.dimensions.content },\n }\n\n // Activator should already be shown\n if (!this.hasActivator || this.absolute) {\n dimensions.activator = this.absolutePosition()\n } else {\n const activator = this.getActivator()\n if (!activator) return\n\n dimensions.activator = this.measure(activator)\n dimensions.activator.offsetLeft = activator.offsetLeft\n if (this.attach !== false) {\n // account for css padding causing things to not line up\n // this is mostly for v-autocomplete, hopefully it won't break anything\n dimensions.activator.offsetTop = activator.offsetTop\n } else {\n dimensions.activator.offsetTop = 0\n }\n }\n\n // Display and hide to get dimensions\n this.sneakPeek(() => {\n if (this.$refs.content) {\n if (this.$refs.content.offsetParent) {\n const offsetRect = this.getRoundedBoundedClientRect(this.$refs.content.offsetParent)\n\n this.relativeYOffset = window.pageYOffset + offsetRect.top\n dimensions.activator.top -= this.relativeYOffset\n dimensions.activator.left -= window.pageXOffset + offsetRect.left\n }\n\n dimensions.content = this.measure(this.$refs.content)\n }\n\n this.dimensions = dimensions\n })\n },\n },\n})\n","// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\nimport Returnable from '../../mixins/returnable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\nimport goTo from '../../services/goto'\n\n// Types\nimport { VNode, VNodeDirective, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Delayable,\n Returnable,\n Roundable,\n Themeable,\n Menuable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-menu',\n\n directives: {\n ClickOutside,\n Resize,\n },\n\n provide (): object {\n return {\n isInMenu: true,\n // Pass theme through to default slot\n theme: this.theme,\n }\n },\n\n props: {\n auto: Boolean,\n closeOnClick: {\n type: Boolean,\n default: true,\n },\n closeOnContentClick: {\n type: Boolean,\n default: true,\n },\n disabled: Boolean,\n disableKeys: Boolean,\n maxHeight: {\n type: [Number, String],\n default: 'auto',\n },\n offsetX: Boolean,\n offsetY: Boolean,\n openOnHover: Boolean,\n origin: {\n type: String,\n default: 'top left',\n },\n transition: {\n type: [Boolean, String],\n default: 'v-menu-transition',\n },\n },\n\n data () {\n return {\n calculatedTopAuto: 0,\n defaultOffset: 8,\n hasJustFocused: false,\n listIndex: -1,\n resizeTimeout: 0,\n selectedIndex: null as null | number,\n tiles: [] as HTMLElement[],\n }\n },\n\n computed: {\n activeTile (): HTMLElement | undefined {\n return this.tiles[this.listIndex]\n },\n calculatedLeft (): string {\n const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth))\n\n if (!this.auto) return this.calcLeft(menuWidth) || '0'\n\n return convertToUnit(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0'\n },\n calculatedMaxHeight (): string {\n const height = this.auto\n ? '200px'\n : convertToUnit(this.maxHeight)\n\n return height || '0'\n },\n calculatedMaxWidth (): string {\n return convertToUnit(this.maxWidth) || '0'\n },\n calculatedMinWidth (): string {\n if (this.minWidth) {\n return convertToUnit(this.minWidth) || '0'\n }\n\n const minWidth = Math.min(\n this.dimensions.activator.width +\n Number(this.nudgeWidth) +\n (this.auto ? 16 : 0),\n Math.max(this.pageWidth - 24, 0)\n )\n\n const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth))\n ? minWidth\n : parseInt(this.calculatedMaxWidth)\n\n return convertToUnit(Math.min(\n calculatedMaxWidth,\n minWidth\n )) || '0'\n },\n calculatedTop (): string {\n const top = !this.auto\n ? this.calcTop()\n : convertToUnit(this.calcYOverflow(this.calculatedTopAuto))\n\n return top || '0'\n },\n hasClickableTiles (): boolean {\n return Boolean(this.tiles.find(tile => tile.tabIndex > -1))\n },\n styles (): object {\n return {\n maxHeight: this.calculatedMaxHeight,\n minWidth: this.calculatedMinWidth,\n maxWidth: this.calculatedMaxWidth,\n top: this.calculatedTop,\n left: this.calculatedLeft,\n transformOrigin: this.origin,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n watch: {\n isActive (val) {\n if (!val) this.listIndex = -1\n },\n isContentActive (val) {\n this.hasJustFocused = val\n },\n listIndex (next, prev) {\n if (next in this.tiles) {\n const tile = this.tiles[next]\n tile.classList.add('v-list-item--highlighted')\n const scrollTop = this.$refs.content.scrollTop\n const contentHeight = this.$refs.content.clientHeight\n\n if (scrollTop > tile.offsetTop - 8) {\n goTo(tile.offsetTop - tile.clientHeight, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\n goTo(tile.offsetTop - contentHeight + tile.clientHeight * 2, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n }\n }\n\n prev in this.tiles &&\n this.tiles[prev].classList.remove('v-list-item--highlighted')\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n mounted () {\n this.isActive && this.callActivate()\n },\n\n methods: {\n activate () {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions()\n // Start the transition\n requestAnimationFrame(() => {\n // Once transitioning, calculate scroll and top position\n this.startTransition().then(() => {\n if (this.$refs.content) {\n this.calculatedTopAuto = this.calcTopAuto()\n this.auto && (this.$refs.content.scrollTop = this.calcScrollPosition())\n }\n })\n })\n },\n calcScrollPosition () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement\n const maxScrollTop = $el.scrollHeight - $el.offsetHeight\n\n return activeTile\n ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2))\n : $el.scrollTop\n },\n calcLeftAuto () {\n return parseInt(this.dimensions.activator.left - this.defaultOffset * 2)\n },\n calcTopAuto () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement | null\n\n if (!activeTile) {\n this.selectedIndex = null\n }\n\n if (this.offsetY || !activeTile) {\n return this.computedTop\n }\n\n this.selectedIndex = Array.from(this.tiles).indexOf(activeTile)\n\n const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition()\n const firstTileOffsetTop = ($el.querySelector('.v-list-item') as HTMLElement).offsetTop\n\n return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1\n },\n changeListIndex (e: KeyboardEvent) {\n // For infinite scroll and autocomplete, re-evaluate children\n this.getTiles()\n\n if (!this.isActive || !this.hasClickableTiles) {\n return\n } else if (e.keyCode === keyCodes.tab) {\n this.isActive = false\n return\n } else if (e.keyCode === keyCodes.down) {\n this.nextTile()\n } else if (e.keyCode === keyCodes.up) {\n this.prevTile()\n } else if (e.keyCode === keyCodes.end) {\n this.lastTile()\n } else if (e.keyCode === keyCodes.home) {\n this.firstTile()\n } else if (e.keyCode === keyCodes.enter && this.listIndex !== -1) {\n this.tiles[this.listIndex].click()\n } else { return }\n // One of the conditions was met, prevent default action (#2988)\n e.preventDefault()\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n\n return this.isActive &&\n !this._isDestroyed &&\n this.closeOnClick &&\n !this.$refs.content.contains(target)\n },\n genActivatorAttributes () {\n const attributes = Activatable.options.methods.genActivatorAttributes.call(this)\n\n if (this.activeTile && this.activeTile.id) {\n return {\n ...attributes,\n 'aria-activedescendant': this.activeTile.id,\n }\n }\n\n return attributes\n },\n genActivatorListeners () {\n const listeners = Menuable.options.methods.genActivatorListeners.call(this)\n\n if (!this.disableKeys) {\n listeners.keydown = this.onKeyDown\n }\n\n return listeners\n },\n genTransition (): VNode {\n const content = this.genContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n }, [content])\n },\n genDirectives (): VNodeDirective[] {\n const directives: VNodeDirective[] = [{\n name: 'show',\n value: this.isContentActive,\n }]\n\n // Do not add click outside for hover menu\n if (!this.openOnHover && this.closeOnClick) {\n directives.push({\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: () => [this.$el, ...this.getOpenDependentElements()],\n },\n })\n }\n\n return directives\n },\n genContent (): VNode {\n const options = {\n attrs: {\n ...this.getScopeIdAttrs(),\n role: 'role' in this.$attrs ? this.$attrs.role : 'menu',\n },\n staticClass: 'v-menu__content',\n class: {\n ...this.rootThemeClasses,\n ...this.roundedClasses,\n 'v-menu__content--auto': this.auto,\n 'v-menu__content--fixed': this.activatorFixed,\n menuable__content__active: this.isActive,\n [this.contentClass.trim()]: true,\n },\n style: this.styles,\n directives: this.genDirectives(),\n ref: 'content',\n on: {\n click: (e: Event) => {\n const target = e.target as HTMLElement\n\n if (target.getAttribute('disabled')) return\n if (this.closeOnContentClick) this.isActive = false\n },\n keydown: this.onKeyDown,\n },\n } as VNodeData\n\n if (this.$listeners.scroll) {\n options.on = options.on || {}\n options.on.scroll = this.$listeners.scroll\n }\n\n if (!this.disabled && this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseenter = this.mouseEnterHandler\n }\n\n if (this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseleave = this.mouseLeaveHandler\n }\n\n return this.$createElement('div', options, this.getContentSlot())\n },\n getTiles () {\n if (!this.$refs.content) return\n\n this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item, .v-divider, .v-subheader'))\n },\n mouseEnterHandler () {\n this.runDelay('open', () => {\n if (this.hasJustFocused) return\n\n this.hasJustFocused = true\n })\n },\n mouseLeaveHandler (e: MouseEvent) {\n // Prevent accidental re-activation\n this.runDelay('close', () => {\n if (this.$refs.content?.contains(e.relatedTarget as HTMLElement)) return\n\n requestAnimationFrame(() => {\n this.isActive = false\n this.callDeactivate()\n })\n })\n },\n nextTile () {\n const tile = this.tiles[this.listIndex + 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = -1\n this.nextTile()\n\n return\n }\n\n this.listIndex++\n if (tile.tabIndex === -1) this.nextTile()\n },\n prevTile () {\n const tile = this.tiles[this.listIndex - 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = this.tiles.length\n this.prevTile()\n\n return\n }\n\n this.listIndex--\n if (tile.tabIndex === -1) this.prevTile()\n },\n lastTile () {\n const tile = this.tiles[this.tiles.length - 1]\n\n if (!tile) return\n\n this.listIndex = this.tiles.length - 1\n\n if (tile.tabIndex === -1) this.prevTile()\n },\n firstTile () {\n const tile = this.tiles[0]\n\n if (!tile) return\n\n this.listIndex = 0\n\n if (tile.tabIndex === -1) this.nextTile()\n },\n onKeyDown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc) {\n // Wait for dependent elements to close first\n setTimeout(() => { this.isActive = false })\n const activator = this.getActivator()\n this.$nextTick(() => activator && activator.focus())\n } else if (\n !this.isActive &&\n [keyCodes.up, keyCodes.down].includes(e.keyCode)\n ) {\n this.isActive = true\n }\n\n // Allow for isActive watcher to generate tile list\n this.$nextTick(() => this.changeListIndex(e))\n },\n onResize () {\n if (!this.isActive) return\n\n // Account for screen resize\n // and orientation change\n // eslint-disable-next-line no-unused-expressions\n this.$refs.content.offsetWidth\n this.updateDimensions()\n\n // When resizing to a smaller width\n // content width is evaluated before\n // the new activator width has been\n // set, causing it to not size properly\n // hacky but will revisit in the future\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.updateDimensions, 100)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-menu',\n class: {\n 'v-menu--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n directives: [{\n arg: '500',\n name: 'resize',\n value: this.onResize,\n }],\n }\n\n return h('div', data, [\n !this.activator && this.genActivator(),\n this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [this.genTransition()]),\n ]),\n ])\n },\n})\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseTable.vue?vue&type=style&index=0&id=26c6a913&prod&lang=less&\"","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n"],"sourceRoot":""}