{"version":3,"sources":["webpack:///../../../src/components/VGrid/VRow.ts","webpack:///../../../src/components/VDialog/VDialog.ts","webpack:///../../../src/components/VMenu/index.ts","webpack:///../../../src/components/VChip/index.ts","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///./src/views/log-management/components/DetailDialog.vue?2001","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///../../../src/components/VPagination/VPagination.ts","webpack:///./src/views/log-management/components/DetailDialog.vue?939f","webpack:///./src/views/log-management/ListPage.vue?29f5","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/VCheckbox/VSimpleCheckbox.ts","webpack:///../../../src/components/VBtn/index.ts","webpack:///../../../src/components/VCard/VCard.ts","webpack:///../../../src/components/VDivider/VDivider.ts","webpack:///../../../src/components/VDivider/index.ts","webpack:///../../../src/components/VSubheader/VSubheader.ts","webpack:///../../../src/components/VSubheader/index.ts","webpack:///../../../src/components/VSelect/VSelectList.ts","webpack:///../../../src/mixins/filterable/index.ts","webpack:///../../../src/components/VSelect/VSelect.ts","webpack:///./src/views/log-management/ListPage.vue?6b31","webpack:///./src/views/log-management/components/DetailDialog.vue?4f63","webpack:///src/views/log-management/components/DetailDialog.vue","webpack:///./src/views/log-management/components/DetailDialog.vue?df4c","webpack:///./src/views/log-management/components/DetailDialog.vue","webpack:///src/views/log-management/ListPage.vue","webpack:///./src/views/log-management/ListPage.vue?d2cf","webpack:///./src/views/log-management/ListPage.vue","webpack:///../../../src/components/VChip/VChip.ts","webpack:///./src/views/log-management/ListPage.vue?9a85","webpack:///../../../src/mixins/menuable/index.ts","webpack:///../../../src/components/VMenu/VMenu.ts","webpack:///../../../src/mixins/mobile/index.ts","webpack:///../../../src/components/VOverlay/VOverlay.ts","webpack:///../../../src/components/VOverlay/index.ts","webpack:///../../../src/mixins/overlayable/index.ts"],"names":["breakpoints","ALIGNMENT","makeProps","prefix","def","reduce","props","val","upperFirst","alignValidator","str","includes","alignProps","type","String","default","validator","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","Object","keys","justify","alignContent","classMap","breakpointClass","prop","className","breakpoint","replace","toLowerCase","cache","Map","Vue","extend","name","functional","tag","dense","Boolean","noGutters","render","h","data","children","cacheKey","classList","get","forEach","value","push","set","mergeData","staticClass","class","baseMixins","mixins","Dependent","Detachable","Overlayable","Returnable","Stackable","Activatable","directives","ClickOutside","dark","disabled","fullscreen","light","maxWidth","Number","noClickAnimation","origin","persistent","retainFocus","scrollable","transition","width","activatedBy","animate","animateTimeout","stackMinZIndex","previousActiveElement","computed","classes","this","contentClass","trim","isActive","contentClasses","hasActivator","$slots","activator","$scopedSlots","watch","show","hideScroll","removeOverlay","unbind","focus","showScroll","genOverlay","created","$attrs","hasOwnProperty","removed","beforeMount","$nextTick","isBooted","beforeDestroy","window","methods","animateClick","clearTimeout","setTimeout","closeConditional","e","target","_isDestroyed","$refs","content","contains","overlay","$el","activeZIndex","getMaxZIndex","document","documentElement","add","options","call","hideOverlay","activeElement","bind","addEventListener","onFocusin","removeEventListener","onClickOutside","$emit","onKeydown","keyCode","keyCodes","esc","getOpenDependents","length","getActivator","getOpenDependentElements","some","el","focusable","querySelectorAll","find","hasAttribute","genContent","showLazyContent","$createElement","VThemeProvider","root","attrs","role","tabindex","undefined","getScopeIdAttrs","on","keydown","style","zIndex","ref","genTransition","genInnerContent","appear","handler","include","transformOrigin","convertToUnit","getContentSlot","attach","genActivator","VMenu","VChip","breakpointProps","offsetProps","orderProps","col","offset","order","cols","alignSelf","parent","hasColClasses","startsWith","fixRegExpWellKnownSymbolLogic","anObject","requireObjectCoercible","sameValue","toString","getMethod","regExpExec","SEARCH","nativeSearch","maybeCallNative","regexp","O","searcher","RegExp","string","rx","S","res","done","previousLastIndex","lastIndex","result","index","Colorable","Intersectable","onVisible","Themeable","Resize","circle","nextIcon","prevIcon","totalVisible","pageAriaLabel","currentPageAriaLabel","previousAriaLabel","nextAriaLabel","wrapperAriaLabel","maxButtons","selected","themeClasses","items","parseInt","maxLength","Math","min","max","range","even","left","floor","right","firstItem","lastItem","start","end","secondItem","beforeLastItem","init","onResize","parentElement","clientWidth","innerWidth","next","preventDefault","previous","from","to","i","genIcon","icon","fn","label","click","VIcon","genItem","color","isCurrentPage","ariaLabel","setBackgroundColor","$vuetify","lang","t","genItems","map","key","isNaN","genList","modifiers","quiet","rtl","inheritAttrs","Array","sortBy","sortDesc","customSort","Function","sortItems","mustSort","multiSort","page","itemsPerPage","groupBy","groupDesc","customGroup","groupItems","locale","disableSort","disablePagination","disableFiltering","search","customFilter","searchItems","serverItemsLength","internalOptions","wrapInArray","assign","sortDiff","groupDiff","fillArray","itemsLength","filteredItems","pageCount","ceil","pageStart","pageStop","isGrouped","pagination","slice","computedItems","paginateItems","groupedItems","scopedProps","sort","sortArray","group","updateOptions","originalItemsLength","computedOptions","old","deepEqual","deep","immediate","isArray","toggle","oldBy","oldDesc","by","desc","byIndex","findIndex","k","splice","s","required","itemsPerPageOptions","firstIcon","lastIcon","itemsPerPageText","itemsPerPageAllText","showFirstLastPage","showCurrentPage","disableItemsPerPage","pageText","disableNextPageIcon","computedDataItemsPerPageOptions","option","genDataItemsPerPageOption","obj","onFirstPage","onPreviousPage","onNextPage","onLastPage","onChangeItemsPerPage","text","genItemsPerPageSelect","computedIPPO","ippo","VSelect","hideDetails","auto","minWidth","input","genPaginationInfo","VBtn","genIcons","before","after","unshift","getSlot","Mobile","VData","itemKey","singleSelect","expanded","mobileBreakpoint","singleExpand","loading","noResultsText","noDataText","loadingText","hideDefaultFooter","footerProps","selectableKey","selection","expansion","internalCurrentItems","shiftKeyDown","lastEntry","everyItem","selectableItems","every","isSelected","someItems","sanitizedFooterProps","camelizeObjectKeys","filter","item","isSelectable","getObjectValueByPath","values","breakingProps","original","replacement","breaking","removedProps","mounted","onKeyDown","onKeyUp","shift","toggleSelectAll","select","emit","x","lastEntryKey","lastEntryKeySelected","multipleSelect","currentItem","isExpanded","expand","createItemProps","v","isMobile","genEmptyWrapper","genEmpty","filteredItemsLength","noData","noResults","empty","genFooter","scopedSlots","getPrefixedScopedSlots","VDataFooter","genDefaultScopedSlot","outerProps","$props","ripple","headers","checkboxColor","sortIcon","showGroupBy","genSelectAll","indeterminate","VSimpleCheckbox","genSortIcon","size","header","sortByText","genSortChip","sortIndex","beingSorted","isDesc","sortable","active","asc","stopPropagation","genSortSelect","multiple","menuProps","closeOnContentClick","change","sortHeaders","th","tr","genGroupByToggle","getAria","$t","ariaSort","join","genHeader","scope","divider","groupable","dedupeModelListeners","model","indexOf","callback","rebuildFunctionalSlots","slots","slot","mobile","rebuildSlots","VDataTableHeaderMobile","VDataTableHeaderDesktop","needsTd","_slot$","computedSlots","columns","slotName","scopedSlot","regularSlot","textAlign","cellClass","headerClass","summaryClass","fixedHeader","height","top","bottom","genWrapper","wrapper","hideDefaultHeader","mobileRowChildren","filterFn","searchTableItems","headersWithCustomFilters","headersWithoutCustomFilters","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","calcWidths","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","MobileRow","Row","mergeClasses","getPropertyFromItem","contextmenu","event","dblclick","genBody","body","genFoot","foot","_this$$scopedSlots$fo","genFooters","simpleProps","VSimpleTable","proxySlot","indeterminateIcon","onIcon","offIcon","listeners","setTextColor","center","f","Routable","VSheet","flat","hover","img","link","raised","isClickable","styles","background","generateRouteLink","inset","vertical","orientation","$listeners","VDivider","VSubheader","action","hideSelected","itemDisabled","itemText","itemValue","noFilter","searchInput","selectedItems","parsedItems","getValue","tileActiveClass","staticNoDataTile","tile","mousedown","VListItem","genTileContent","genAction","inputValue","VListItemAction","genDivider","genFilteredText","escapeHTML","getMaskedCharacters","middle","genHighlight","toLocaleLowerCase","genTile","hasItem","getDisabled","id","_uid","activeClass","needsTile","innerHTML","getText","VListItemContent","VListItemTitle","domProps","componentOptions","Ctor","VList","defaultMenuProps","closeOnClick","disableKeys","openOnClick","maxHeight","VTextField","Comparable","Filterable","appendIcon","cacheItems","chips","clearable","deletableChips","disableLookup","eager","itemColor","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lazyValue","selectedIndex","keyboardLookupPrefix","keyboardLookupLastTime","allItems","filterDuplicates","concat","hasChips","computedOwns","computedCounterValue","counterValue","isFocused","blur","dynamicHeight","hasSlot","isDirty","listData","scopeId","$vnode","context","$options","_scopeId","virtualizedItems","selectItem","staticList","consoleError","VSelectList","$_menuProps","menuCanShow","normalisedProps","split","p","nudgeBottom","offsetY","internalValue","initialValue","setSelectedItems","menu","updateDimensions","onMenuActiveChange","setMenuIndex","activateMenu","isInteractive","clearableCallback","setValue","getContent","arr","uniqueValues","has","findExistingIndex","valueComparator","genChipSelection","isDisabled","close","onChipInput","JSON","stringify","genCommaSelection","last","computedColor","genDefaultSlot","selections","genSelections","genInput","genFieldset","genLabel","genAffix","suffix","genClearIcon","genIconSlot","genHiddenInput","genMenu","cb","extraData","VInput","readonly","isReadonly","autocomplete","placeholder","persistentPlaceholder","hasLabel","keypress","onKeyPress","attrs$","genInputSlot","genListWithSlot","scroll","onScroll","genSelection","genSlotSelection","getMenuIndex","listIndex","onBlur","onClick","isAppendInner","onEscDown","KEYBOARD_LOOKUP_THRESHOLD","now","performance","getTiles","tab","up","down","home","enter","changeListIndex","space","onUpDown","onTabDown","onSpaceDown","tiles","getAttribute","onMouseUp","hasMouseDown","which","showMoreItems","scrollHeight","scrollTop","clientHeight","requestAnimationFrame","activeTile","hasClickableTiles","prevTile","nextTile","firstTile","lastTile","appendInner","_vm","_h","_c","_self","_v","logList","limit","_handleSorting","_u","disabledInputSearch","$$v","expression","filterOptions","$event","_handleSearchBtnClick","proxy","_s","formatDate","created_at","activity","_handleDetailBtnClick","staticStyle","firstNumInCurrentPage","totalNumInCurrentPage","totalData","totalPage","_handlePaginationChange","staticRenderFns","visible","_l","idx","valueKey","logDetail","headerField","mapState","dateHelper","_handleToggleVisibility","component","VCard","VCol","VDialog","VRow","components","DetailDialog","sorting","mapActions","_handleFetchList","onFilter","params","request","descending","nextVal","prevVal","VDataTable","VPagination","Sizeable","GroupableFactory","ToggleableFactory","chipGroup","closeIcon","closeLabel","draggable","filterIcon","outlined","pill","textColor","proxyClass","isLink","hasClose","sizeableClasses","groupClasses","genFilter","VExpandXTransition","genClose","positionableFactory","allowOverflow","nudgeLeft","nudgeRight","nudgeTop","nudgeWidth","offsetOverflow","positionX","positionY","activatorNode","absoluteX","absoluteY","activatorFixed","dimensions","offsetTop","offsetLeft","relativeYOffset","hasJustFocused","hasWindow","inputActivator","isContentActive","pageWidth","pageYOffset","stackClass","computedLeft","a","c","activatorLeft","offsetX","computedTop","absoluteYOffset","callDeactivate","callActivate","absolutePosition","activate","calcLeft","menuWidth","calcXOverflow","calcTop","calcYOverflow","xOverflow","getOffsetLeft","documentHeight","getInnerHeight","toTop","contentHeight","totalHeight","isOverflowing","deactivate","checkForPageYOffset","getOffsetTop","checkActivatorFixed","getComputedStyle","position","offsetParent","genActivatorListeners","clientX","clientY","innerHeight","pageXOffset","scrollLeft","getRoundedBoundedClientRect","rect","getBoundingClientRect","round","measure","marginLeft","marginTop","sneakPeek","display","startTransition","Promise","resolve","absolute","offsetRect","Delayable","Roundable","Menuable","provide","isInMenu","theme","openOnHover","calculatedTopAuto","defaultOffset","resizeTimeout","calculatedLeft","parseFloat","calculatedMinWidth","calcLeftAuto","calculatedMaxHeight","calculatedMaxWidth","calculatedTop","tabIndex","prev","goTo","appOffset","duration","container","then","calcTopAuto","calcScrollPosition","querySelector","maxScrollTop","offsetHeight","tileDistanceFromMenuTop","firstTileOffsetTop","genActivatorAttributes","attributes","genDirectives","rootThemeClasses","roundedClasses","menuable__content__active","mouseenter","mouseEnterHandler","mouseleave","mouseLeaveHandler","runDelay","_this$$refs$content","relatedTarget","offsetWidth","arg","mobileWidth","isNumber","deprecate","Toggleable","opacity","__scrim","computedOpacity","VOverlay","overlayColor","overlayOpacity","animationFrame","createOverlay","propsData","$mount","parentNode","insertBefore","firstChild","getZIndex","addOnceEventListener","removeChild","$destroy","cancelAnimationFrame","scrollListener","tagName","isContentEditable","pageup","pagedown","deltaY","checkPath","hasScrollbar","nodeType","Node","ELEMENT_NODE","overflowY","overflowX","scrollWidth","shouldScroll","alreadyAtStart","alreadyAtEnd","dir","shiftKey","deltaX","delta","scrollingUp","scrollingDown","isInside","path","composedPath","dialog","getSelection","anchorNode","smAndDown","addPassiveEventListener","passive"],"mappings":"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","file":"js/chunk-639c7b42.774e0345.js","sourcesContent":["import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Activatable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n directives: { ClickOutside },\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: [String, Number],\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$scopedSlots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeDestroy () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.options.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.content.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.content.focus()\n }\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n // It isn't the document or the dialog body\n ![document, this.$refs.content].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.content.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.content.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled')) as HTMLElement | undefined\n el && el.focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [\n this.$createElement('div', {\n class: this.contentClasses,\n attrs: {\n role: 'dialog',\n tabindex: this.isActive ? 0 : undefined,\n 'aria-modal': this.hideOverlay ? undefined : 'true',\n ...this.getScopeIdAttrs(),\n },\n on: { keydown: this.onKeydown },\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n appear: true,\n },\n }, [content])\n },\n genInnerContent () {\n const data: VNodeData = {\n class: this.classes,\n ref: 'dialog',\n directives: [\n {\n name: 'click-outside',\n value: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n },\n { name: 'show', value: this.isActive },\n ],\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailDialog.vue?vue&type=style&index=0&lang=css&\"","'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 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 = regexp == undefined ? 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","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) {\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","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailDialog.vue?vue&type=style&index=1&id=79f3796c&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListPage.vue?vue&type=style&index=1&id=e20517ea&scoped=true&lang=css&\"","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = true\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = false\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = this.$slots.loading || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = this.$slots['no-data'] || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = this.$slots['no-results'] || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","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 },\n\n created () {\n const breakingProps = [\n ['sort-icon', 'header-props.sort-icon'],\n ['hide-headers', 'hide-default-header'],\n ['select-all', 'show-select'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n mounted () {\n // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n // const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n // if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n // }\n\n if (this.calculateWidths) {\n window.addEventListener('resize', this.calcWidths)\n this.calcWidths()\n }\n },\n\n beforeDestroy () {\n if (this.calculateWidths) {\n window.removeEventListener('resize', this.calcWidths)\n }\n },\n\n methods: {\n calcWidths () {\n this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth)\n },\n customFilterWithColumns (items: any[], search: string) {\n return searchTableItems(items, search, this.headersWithCustomFilters, this.headersWithoutCustomFilters, this.customFilter)\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any, index: number): DataTableItemProps {\n const props = VDataIterator.options.methods.createItemProps.call(this, item, index)\n\n return Object.assign(props, { headers: this.computedHeaders })\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${props.options.groupBy[0]}: ${group}`, remove])\n\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [column]))\n }\n\n if (this.$scopedSlots['group.summary']) {\n children.push(this.$createElement('template', { slot: 'column.summary' }, [\n this.$scopedSlots['group.summary']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item, i),\n isMobile: this.isMobile,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n index: i,\n item,\n }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map((item, index) => this.genDefaultExpandedRow(item, index))\n : items.map((item, index) => this.genDefaultSimpleRow(item, index))\n },\n genDefaultExpandedRow (item: any, index: number): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, index, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n item,\n })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, index: number, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item, index)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot({\n ...data,\n isMobile: this.isMobile,\n }) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: {\n // TODO: for click, the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: () => this.$emit('click:row', item, data),\n contextmenu: (event: MouseEvent) => this.$emit('contextmenu:row', event, data),\n dblclick: (event: MouseEvent) => this.$emit('dblclick:row', event, data),\n },\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import './VSimpleCheckbox.sass'\n\nimport ripple from '../../directives/ripple'\n\nimport Vue, { VNode, VNodeDirective } from 'vue'\nimport { VIcon } from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-simple-checkbox',\n\n functional: true,\n\n directives: {\n ripple,\n },\n\n props: {\n ...Colorable.options.props,\n ...Themeable.options.props,\n disabled: Boolean,\n ripple: {\n type: Boolean,\n default: true,\n },\n value: Boolean,\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n },\n\n render (h, { props, data, listeners }): VNode {\n const children = []\n let icon = props.offIcon\n if (props.indeterminate) icon = props.indeterminateIcon\n else if (props.value) icon = props.onIcon\n\n children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n props: {\n disabled: props.disabled,\n dark: props.dark,\n light: props.light,\n },\n }), icon))\n\n if (props.ripple && !props.disabled) {\n const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n staticClass: 'v-input--selection-controls__ripple',\n directives: [{\n name: 'ripple',\n value: { center: true },\n }] as VNodeDirective[],\n }))\n\n children.push(ripple)\n }\n\n return h('div',\n mergeData(data, {\n class: {\n 'v-simple-checkbox': true,\n 'v-simple-checkbox--disabled': props.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (data.on && data.on.input && !props.disabled) {\n wrapInArray(data.on.input).forEach(f => f(!props.value))\n }\n },\n },\n }), [\n h('div', { staticClass: 'v-input--selection-controls__input' }, children),\n ])\n },\n})\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","// Styles\nimport './VDivider.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\nexport default Themeable.extend({\n name: 'v-divider',\n\n props: {\n inset: Boolean,\n vertical: Boolean,\n },\n\n render (h): VNode {\n // WAI-ARIA attributes\n let orientation\n if (!this.$attrs.role || this.$attrs.role === 'separator') {\n orientation = this.vertical ? 'vertical' : 'horizontal'\n }\n return h('hr', {\n class: {\n 'v-divider': true,\n 'v-divider--inset': this.inset,\n 'v-divider--vertical': this.vertical,\n ...this.themeClasses,\n },\n attrs: {\n role: 'separator',\n 'aria-orientation': orientation,\n ...this.$attrs,\n },\n on: this.$listeners,\n })\n },\n})\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport {\n escapeHTML,\n getPropertyFromItem,\n} from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n attrs: {\n role: undefined,\n },\n on: {\n mousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n },\n }\n\n return this.$createElement(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return this.$createElement(VListItemAction, [\n this.$createElement(VSimpleCheckbox, {\n props: {\n color: this.color,\n value: inputValue,\n ripple: false,\n },\n on: {\n input: () => this.$emit('select', item),\n },\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return this.$createElement(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return escapeHTML(text)\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return `${escapeHTML(start)}${this.genHighlight(middle)}${escapeHTML(end)}`\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string): string {\n return `${escapeHTML(text)}`\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n attrs: {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n },\n on: {\n mousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n click: () => disabled || this.$emit('select', item),\n },\n props: {\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n },\n }\n\n if (!this.$scopedSlots.item) {\n return this.$createElement(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$scopedSlots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? this.$createElement(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n const innerHTML = this.genFilteredText(this.getText(item))\n\n return this.$createElement(VListItemContent,\n [this.$createElement(VListItemTitle, {\n domProps: { innerHTML },\n })]\n )\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.options.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item'])\n\n this.$slots['append-item'] && children.push(this.$slots['append-item'])\n\n return this.$createElement(VList, {\n staticClass: 'v-select-list',\n class: this.themeClasses,\n attrs: {\n role: 'listbox',\n tabindex: -1,\n },\n props: { dense: this.dense },\n }, children)\n },\n})\n","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 ) 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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-row',{staticClass:\"log-list-wrapper\",attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('h2',{staticClass:\"primary--text font-weight-bold mb-4\"},[_vm._v(\"Log Management\")])]),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-data-table',{staticClass:\"data-table-container elevation-1\",attrs:{\"headers\":_vm.columns,\"items\":_vm.logList,\"items-per-page\":_vm.limit,\"loading\":_vm.loading,\"custom-sort\":function (items, keys, desc) { return _vm._handleSorting(items, keys, desc); },\"hide-default-footer\":\"\"},scopedSlots:_vm._u([{key:\"top\",fn:function(){return [_c('v-row',{staticClass:\"list-filter-container\",attrs:{\"no-gutters\":\"\",\"align\":\"center\"}},[_c('v-col',{staticClass:\"py-4 px-5\"},[_c('h3',{staticClass:\"primary--text font-weight-bold\"},[_vm._v(\"Log\")])]),_c('v-col',{staticClass:\"px-5\"},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-text-field',{staticClass:\"search-input-filter\",attrs:{\"id\":\"search\",\"name\":\"search\",\"type\":\"text\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"\",\"disabled\":_vm.disabledInputSearch},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1),_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('v-select',{staticClass:\"select-input-filter\",attrs:{\"id\":\"filter\",\"items\":_vm.filterOptions,\"item-text\":\"label\",\"item-value\":\"value\",\"placeholder\":\"Select Column\",\"height\":\"40\",\"solo\":\"\",\"dense\":\"\",\"hide-details\":\"\"},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}})],1),_c('v-col',{attrs:{\"cols\":\"1\"}},[_c('v-btn',{staticClass:\"button-search primary\",attrs:{\"min-width\":\"40\",\"width\":\"40\",\"height\":\"39\"},on:{\"click\":function($event){return _vm._handleSearchBtnClick()}}},[_c('v-icon',[_vm._v(\"mdi-magnify\")])],1)],1)],1)],1)],1)]},proxy:true},{key:\"item.created_at\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(_vm.formatDate(item.created_at))+\" \")]}},{key:\"item.activity\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(item.activity)+\" \")]}},{key:\"item.actions\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-icon',{staticClass:\"mr-2 blue lighten-4 blue--text pa-1 rounded-lg\",attrs:{\"small\":\"\"},on:{\"click\":function($event){return _vm._handleDetailBtnClick(item.id)}}},[_vm._v(\"mdi-share\")])]}},{key:\"footer\",fn:function(){return [_c('div',{staticClass:\"pagination-container d-flex\"},[_c('div',{staticClass:\"col-6 pa-0 px-4 align-self-center\",staticStyle:{\"font-size\":\"14\"}},[_c('span',{staticClass:\"primary--text font-weight-bold\"},[_vm._v(\" Showing \"+_vm._s(_vm.firstNumInCurrentPage)+\" to \"+_vm._s(_vm.totalNumInCurrentPage)+\" of \"+_vm._s(_vm.totalData)+\" entries \")])]),_c('div',{staticClass:\"col-6 px-0 py-2\"},[_c('v-pagination',{staticClass:\"pagination-content\",attrs:{\"length\":_vm.totalPage,\"total-visible\":6},on:{\"input\":function($event){return _vm._handlePaginationChange()}},model:{value:(_vm.page),callback:function ($$v) {_vm.page=$$v},expression:\"page\"}})],1)])]},proxy:true}],null,true)})],1),_c('v-col',[_c('DetailDialog',{ref:\"detail_dialog\"})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"width\":\"1100\",\"content-class\":\"logs-details-dialog\",\"persistent\":\"\"},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:\"visible\"}},[_c('v-card',{staticClass:\"dialog-container\"},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('h1',{staticClass:\"primary--text font-weight-bold mb-4\"},[_vm._v(\"Log Review\")])]),_c('v-col',{staticClass:\"dialog-content-container\",attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"dialog-content-header\",attrs:{\"cols\":\"12\"}},[_c('h3',[_vm._v(\"Identification\")])]),_c('div',{staticClass:\"dialog-content-body\",attrs:{\"cols\":\"12\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},_vm._l((_vm.headerField),function(item,idx){return _c('v-col',{key:idx,staticClass:\"mb-4\",staticStyle:{\"font-size\":\"18px\"},attrs:{\"cols\":item.cols}},[_c('span',{staticStyle:{\"color\":\"#069241\"}},[_vm._v(_vm._s(item.label))]),_c('br'),(item.valueKey == 'created_at')?_c('span',{staticStyle:{\"color\":\"#000000\"}},[_vm._v(\" \"+_vm._s(_vm.formatDate(_vm.logDetail[item.valueKey]))+\" \")]):(item.valueKey == 'activity')?_c('span',{staticStyle:{\"color\":\"#000000\"}},[_vm._v(\" \"+_vm._s(_vm.logDetail[item.valueKey] || _vm.logDetail[item.valueKey])+\" \")]):_c('span',{staticStyle:{\"color\":\"#000000\"}},[_vm._v(\" \"+_vm._s(_vm.logDetail[item.valueKey])+\" \")])])}),1)],1)]),_c('v-col',{staticClass:\"mt-3\",staticStyle:{\"text-align\":\"right\"},attrs:{\"cols\":\"12\"}},[_c('v-btn',{staticClass:\"button-footer-close primary white--text ml-2\",attrs:{\"width\":\"120\",\"height\":\"40\",\"depressed\":\"\"},on:{\"click\":function($event){_vm.visible = false}}},[_vm._v(\" Close \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailDialog.vue?vue&type=template&id=79f3796c&scoped=true&\"\nimport script from \"./DetailDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailDialog.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./DetailDialog.vue?vue&type=style&index=1&id=79f3796c&scoped=true&lang=css&\"\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 \"79f3796c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCol,VDialog,VRow})\n","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListPage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListPage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ListPage.vue?vue&type=template&id=e20517ea&scoped=true&\"\nimport script from \"./ListPage.vue?vue&type=script&lang=js&\"\nexport * from \"./ListPage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ListPage.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./ListPage.vue?vue&type=style&index=1&id=e20517ea&scoped=true&lang=css&\"\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 \"e20517ea\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VPagination } from 'vuetify/lib/components/VPagination';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCol,VDataTable,VIcon,VPagination,VRow,VSelect,VTextField})\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","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListPage.vue?vue&type=style&index=0&lang=css&\"","// 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) return\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","// Types\nimport { BreakpointName } from 'vuetify/types/services/breakpoint'\nimport { deprecate } from '../../util/console'\nimport Vue, { PropType } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'mobile',\n\n props: {\n mobileBreakpoint: {\n type: [Number, String] as PropType,\n default (): number | BreakpointName | undefined {\n // Avoid destroying unit\n // tests for users\n return this.$vuetify\n ? this.$vuetify.breakpoint.mobileBreakpoint\n : undefined\n },\n validator: v => (\n !isNaN(Number(v)) ||\n ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n ),\n },\n },\n\n computed: {\n isMobile (): boolean {\n const {\n mobile,\n width,\n name,\n mobileBreakpoint,\n } = this.$vuetify.breakpoint\n\n // Check if local mobileBreakpoint matches\n // the application's mobileBreakpoint\n if (mobileBreakpoint === this.mobileBreakpoint) return mobile\n\n const mobileWidth = parseInt(this.mobileBreakpoint, 10)\n const isNumber = !isNaN(mobileWidth)\n\n return isNumber\n ? width < mobileWidth\n : name === this.mobileBreakpoint\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n deprecate('mobile-break-point', 'mobile-breakpoint', this)\n }\n },\n})\n","// Styles\nimport './VOverlay.sass'\n\n// Mixins\nimport Colorable from './../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from './../../mixins/toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Themeable,\n Toggleable\n).extend({\n name: 'v-overlay',\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: '#212121',\n },\n dark: {\n type: Boolean,\n default: true,\n },\n opacity: {\n type: [Number, String],\n default: 0.46,\n },\n value: {\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 5,\n },\n },\n\n computed: {\n __scrim (): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-overlay__scrim',\n style: {\n opacity: this.computedOpacity,\n },\n })\n\n return this.$createElement('div', data)\n },\n classes (): object {\n return {\n 'v-overlay--absolute': this.absolute,\n 'v-overlay--active': this.isActive,\n ...this.themeClasses,\n }\n },\n computedOpacity (): number {\n return Number(this.isActive ? this.opacity : 0)\n },\n styles (): object {\n return {\n zIndex: this.zIndex,\n }\n },\n },\n\n methods: {\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-overlay__content',\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n const children = [this.__scrim]\n\n if (this.isActive) children.push(this.genContent())\n\n return h('div', {\n staticClass: 'v-overlay',\n on: this.$listeners,\n class: this.classes,\n style: this.styles,\n }, children)\n },\n})\n","import VOverlay from './VOverlay'\n\nexport { VOverlay }\n\nexport default VOverlay\n","// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath,\n} from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\n\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\ninterface Stackable extends Vue {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeDestroy () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n const overlay = new VOverlay({\n propsData: {\n absolute: this.absolute,\n value: false,\n color: this.overlayColor,\n opacity: this.overlayOpacity,\n },\n })\n\n overlay.$mount()\n\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n parent && parent.insertBefore(overlay.$el, parent.firstChild)\n\n this.overlay = overlay\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlay.$destroy()\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent & KeyboardEvent) {\n if (e.type === 'keydown') {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd)) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener as EventHandlerNonNull, { passive: false })\n window.addEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener as EventHandlerNonNull)\n window.removeEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n },\n },\n})\n"],"sourceRoot":""}