{"version":3,"sources":["webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///../../../src/components/VAutocomplete/VAutocomplete.ts"],"names":["baseMixins","mixins","VTextField","extend","name","props","autoGrow","Boolean","noResize","rowHeight","type","Number","String","default","validator","v","isNaN","parseFloat","rows","parseInt","computed","classes","this","noResizeHandle","options","call","watch","val","$nextTick","calculateInputHeight","$refs","input","_this$$refs$input","style","removeProperty","lazyValue","mounted","setTimeout","methods","height","scrollHeight","minHeight","Math","max","genInput","tag","data","attrs","onInput","e","onKeyDown","isFocused","keyCode","stopPropagation","$emit","defaultMenuProps","VSelectMenuProps","offsetY","offsetOverflow","transition","VSelect","allowOverflow","autoSelectFirst","filter","Function","item","queryText","itemText","toLocaleLowerCase","indexOf","hideNoData","menuProps","noFilter","searchInput","lazySearch","selectedIndex","computedItems","filteredItems","selectedValues","selectedItems","map","getValue","hasDisplayedItems","hideSelected","some","hasItem","length","currentRange","selectedItem","getText","isSearching","internalSearch","allItems","value","getPropertyFromItem","text","get","set","isAnyValueAllowed","isDirty","searchIsDirty","multiple","menuCanShow","$_menuProps","contentClass","trim","find","i","valueComparator","internalValue","listData","items","virtualizedItems","document","addEventListener","onCopy","select","removeEventListener","blur","updateSelf","isMenuActive","hasSlot","oldVal","activateMenu","created","setSearch","destroyed","onFilteredItemsChanged","preSelectedItem","menu","listIndex","setMenuIndex","findIndex","getTiles","onInternalSearchChanged","updateMenuDimensions","updateDimensions","changeSelectedIndex","keyCodes","left","right","backspace","delete","deleteCurrentItem","curIndex","curItem","isInteractive","getDisabled","lastIndex","nextIndex","nextItem","selectItem","setValue","clearableCallback","mergeData","getObjectValueByPath","autocomplete","domProps","genInputSlot","slot","role","genSelections","onClick","onFocus","isAppendInner","target","badInput","validity","ctrlKey","home","end","includes","onSpaceDown","onTabDown","onUpDown","preventDefault","setSelectedItems","event","currentItem","currentItemText","clipboardData","setData"],"mappings":"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","file":"js/chunk-c2d4feb0.15238f31.js","sourcesContent":["// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","// Styles\nimport './VAutocomplete.sass'\n\n// Extensions\nimport VSelect, { defaultMenuProps as VSelectMenuProps } from '../VSelect/VSelect'\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport {\n getObjectValueByPath,\n getPropertyFromItem,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { PropType, VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nconst defaultMenuProps = {\n ...VSelectMenuProps,\n offsetY: true,\n offsetOverflow: true,\n transition: false,\n}\n\n/* @vue/component */\nexport default VSelect.extend({\n name: 'v-autocomplete',\n\n props: {\n allowOverflow: {\n type: Boolean,\n default: true,\n },\n autoSelectFirst: {\n type: Boolean,\n default: false,\n },\n filter: {\n type: Function,\n default: (item: any, queryText: string, itemText: string) => {\n return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1\n },\n } as PropValidator<(item: any, queryText: string, itemText: string) => boolean>,\n hideNoData: Boolean,\n menuProps: {\n type: VSelect.options.props.menuProps.type,\n default: () => defaultMenuProps,\n },\n noFilter: Boolean,\n searchInput: {\n type: String as PropType,\n },\n },\n\n data () {\n return {\n lazySearch: this.searchInput,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSelect.options.computed.classes.call(this),\n 'v-autocomplete': true,\n 'v-autocomplete--is-selecting-index': this.selectedIndex > -1,\n }\n },\n computedItems (): object[] {\n return this.filteredItems\n },\n selectedValues (): object[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n hasDisplayedItems (): boolean {\n return this.hideSelected\n ? this.filteredItems.some(item => !this.hasItem(item))\n : this.filteredItems.length > 0\n },\n currentRange (): number {\n if (this.selectedItem == null) return 0\n\n return String(this.getText(this.selectedItem)).length\n },\n filteredItems (): object[] {\n if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems\n\n return this.allItems.filter(item => {\n const value = getPropertyFromItem(item, this.itemText)\n const text = value != null ? String(value) : ''\n\n return this.filter(item, String(this.internalSearch), text)\n })\n },\n internalSearch: {\n get (): string | null {\n return this.lazySearch\n },\n set (val: any) { // TODO: this should be `string | null` but it breaks lots of other types\n // emit update event only when the new\n // search value is different from previous\n if (this.lazySearch !== val) {\n this.lazySearch = val\n this.$emit('update:search-input', val)\n }\n },\n },\n isAnyValueAllowed (): boolean {\n return false\n },\n isDirty (): boolean {\n return this.searchIsDirty || this.selectedItems.length > 0\n },\n isSearching (): boolean {\n return (\n this.multiple &&\n this.searchIsDirty\n ) || (\n this.searchIsDirty &&\n this.internalSearch !== this.getText(this.selectedItem)\n )\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems || !this.hideNoData\n },\n $_menuProps (): object {\n const props = VSelect.options.computed.$_menuProps.call(this);\n (props as any).contentClass = `v-autocomplete__content ${(props as any).contentClass || ''}`.trim()\n return {\n ...defaultMenuProps,\n ...props,\n }\n },\n searchIsDirty (): boolean {\n return this.internalSearch != null &&\n this.internalSearch !== ''\n },\n selectedItem (): any {\n if (this.multiple) return null\n\n return this.selectedItems.find(i => {\n return this.valueComparator(this.getValue(i), this.getValue(this.internalValue))\n })\n },\n listData () {\n const data = VSelect.options.computed.listData.call(this) as any\n\n data.props = {\n ...data.props,\n items: this.virtualizedItems,\n noFilter: (\n this.noFilter ||\n !this.isSearching ||\n !this.filteredItems.length\n ),\n searchInput: this.internalSearch,\n }\n\n return data\n },\n },\n\n watch: {\n filteredItems: 'onFilteredItemsChanged',\n internalValue: 'setSearch',\n isFocused (val) {\n if (val) {\n document.addEventListener('copy', this.onCopy)\n this.$refs.input && this.$refs.input.select()\n } else {\n document.removeEventListener('copy', this.onCopy)\n this.blur()\n this.updateSelf()\n }\n },\n isMenuActive (val) {\n if (val || !this.hasSlot) return\n\n this.lazySearch = null\n },\n items (val, oldVal) {\n // If we are focused, the menu\n // is not active, hide no data is enabled,\n // and items change\n // User is probably async loading\n // items, try to activate the menu\n if (\n !(oldVal && oldVal.length) &&\n this.hideNoData &&\n this.isFocused &&\n !this.isMenuActive &&\n val.length\n ) this.activateMenu()\n },\n searchInput (val: string) {\n this.lazySearch = val\n },\n internalSearch: 'onInternalSearchChanged',\n itemText: 'updateSelf',\n },\n\n created () {\n this.setSearch()\n },\n\n destroyed () {\n document.removeEventListener('copy', this.onCopy)\n },\n\n methods: {\n onFilteredItemsChanged (val: never[], oldVal: never[]) {\n // TODO: How is the watcher triggered\n // for duplicate items? no idea\n if (val === oldVal) return\n\n if (!this.autoSelectFirst) {\n const preSelectedItem = oldVal[this.$refs.menu.listIndex]\n\n if (preSelectedItem) {\n this.setMenuIndex(val.findIndex(i => i === preSelectedItem))\n } else {\n this.setMenuIndex(-1)\n }\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n\n this.$nextTick(() => {\n if (\n !this.internalSearch ||\n (val.length !== 1 &&\n !this.autoSelectFirst)\n ) return\n\n this.$refs.menu.getTiles()\n\n if (this.autoSelectFirst && val.length) {\n this.setMenuIndex(0)\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n })\n },\n onInternalSearchChanged () {\n this.updateMenuDimensions()\n },\n updateMenuDimensions () {\n // Type from menuable is not making it through\n this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions()\n },\n changeSelectedIndex (keyCode: number) {\n // Do not allow changing of selectedIndex\n // when search is dirty\n if (this.searchIsDirty) return\n\n if (this.multiple && keyCode === keyCodes.left) {\n if (this.selectedIndex === -1) {\n this.selectedIndex = this.selectedItems.length - 1\n } else {\n this.selectedIndex--\n }\n } else if (this.multiple && keyCode === keyCodes.right) {\n if (this.selectedIndex >= this.selectedItems.length - 1) {\n this.selectedIndex = -1\n } else {\n this.selectedIndex++\n }\n } else if (keyCode === keyCodes.backspace || keyCode === keyCodes.delete) {\n this.deleteCurrentItem()\n }\n },\n deleteCurrentItem () {\n const curIndex = this.selectedIndex\n const curItem = this.selectedItems[curIndex]\n\n // Do nothing if input or item is disabled\n if (\n !this.isInteractive ||\n this.getDisabled(curItem)\n ) return\n\n const lastIndex = this.selectedItems.length - 1\n\n // Select the last item if\n // there is no selection\n if (\n this.selectedIndex === -1 &&\n lastIndex !== 0\n ) {\n this.selectedIndex = lastIndex\n\n return\n }\n\n const length = this.selectedItems.length\n const nextIndex = curIndex !== length - 1\n ? curIndex\n : curIndex - 1\n const nextItem = this.selectedItems[nextIndex]\n\n if (!nextItem) {\n this.setValue(this.multiple ? [] : null)\n } else {\n this.selectItem(curItem)\n }\n\n this.selectedIndex = nextIndex\n },\n clearableCallback () {\n this.internalSearch = null\n\n VSelect.options.methods.clearableCallback.call(this)\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.data = mergeData(input.data!, {\n attrs: {\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n },\n domProps: { value: this.internalSearch },\n })\n\n return input\n },\n genInputSlot () {\n const slot = VSelect.options.methods.genInputSlot.call(this)\n\n slot.data!.attrs!.role = 'combobox'\n\n return slot\n },\n genSelections (): VNode | never[] {\n return this.hasSlot || this.multiple\n ? VSelect.options.methods.genSelections.call(this)\n : []\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n this.selectedIndex > -1\n ? (this.selectedIndex = -1)\n : this.onFocus()\n\n if (!this.isAppendInner(e.target)) this.activateMenu()\n },\n onInput (e: Event) {\n if (\n this.selectedIndex > -1 ||\n !e.target\n ) return\n\n const target = e.target as HTMLInputElement\n const value = target.value\n\n // If typing and menu is not currently active\n if (target.value) this.activateMenu()\n\n if (!this.multiple && value === '') this.deleteCurrentItem()\n\n this.internalSearch = value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n if (\n e.ctrlKey ||\n ![keyCodes.home, keyCodes.end].includes(keyCode)\n ) {\n VSelect.options.methods.onKeyDown.call(this, e)\n }\n\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode)\n },\n onSpaceDown (e: KeyboardEvent) { /* noop */ },\n onTabDown (e: KeyboardEvent) {\n VSelect.options.methods.onTabDown.call(this, e)\n this.updateSelf()\n },\n onUpDown (e: Event) {\n // Prevent screen from scrolling\n e.preventDefault()\n\n // For autocomplete / combobox, cycling\n // interfers with native up/down behavior\n // instead activate the menu\n this.activateMenu()\n },\n selectItem (item: object) {\n VSelect.options.methods.selectItem.call(this, item)\n this.setSearch()\n },\n setSelectedItems () {\n VSelect.options.methods.setSelectedItems.call(this)\n\n // #4273 Don't replace if searching\n // #4403 Don't replace if focused\n if (!this.isFocused) this.setSearch()\n },\n setSearch () {\n // Wait for nextTick so selectedItem\n // has had time to update\n this.$nextTick(() => {\n if (\n !this.multiple ||\n !this.internalSearch ||\n !this.isMenuActive\n ) {\n this.internalSearch = (\n !this.selectedItems.length ||\n this.multiple ||\n this.hasSlot\n )\n ? null\n : this.getText(this.selectedItem)\n }\n })\n },\n updateSelf () {\n if (\n !this.searchIsDirty &&\n !this.internalValue\n ) return\n\n if (\n !this.multiple &&\n !this.valueComparator(\n this.internalSearch,\n this.getValue(this.internalValue)\n )\n ) {\n this.setSearch()\n }\n },\n hasItem (item: any): boolean {\n return this.selectedValues.indexOf(this.getValue(item)) > -1\n },\n onCopy (event: ClipboardEvent) {\n if (this.selectedIndex === -1) return\n\n const currentItem = this.selectedItems[this.selectedIndex]\n const currentItemText = this.getText(currentItem)\n event.clipboardData?.setData('text/plain', currentItemText)\n event.clipboardData?.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText)\n event.preventDefault()\n },\n },\n})\n"],"sourceRoot":""}