{"version":3,"file":"VAutocomplete-BUrLXwhI.js","sources":["../../../node_modules/.pnpm/vuetify@2.7.2_vue@2.7.16/node_modules/vuetify/lib/components/VAutocomplete/VAutocomplete.js"],"sourcesContent":["// Styles\nimport \"../../../src/components/VAutocomplete/VAutocomplete.sass\"; // Extensions\n\nimport VSelect, { defaultMenuProps as VSelectMenuProps } from '../VSelect/VSelect';\nimport VTextField from '../VTextField/VTextField'; // Utilities\n\nimport mergeData from '../../util/mergeData';\nimport { getObjectValueByPath, getPropertyFromItem, keyCodes } from '../../util/helpers';\nconst defaultMenuProps = { ...VSelectMenuProps,\n offsetY: true,\n offsetOverflow: true,\n transition: false\n};\n/* @vue/component */\n\nexport default VSelect.extend({\n name: 'v-autocomplete',\n props: {\n autoSelectFirst: {\n type: Boolean,\n default: false\n },\n filter: {\n type: Function,\n default: (item, queryText, itemText) => {\n return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1;\n }\n },\n hideNoData: Boolean,\n menuProps: {\n type: VSelect.options.props.menuProps.type,\n default: () => defaultMenuProps\n },\n noFilter: Boolean,\n searchInput: {\n type: String\n }\n },\n\n data() {\n return {\n lazySearch: this.searchInput\n };\n },\n\n computed: {\n classes() {\n return { ...VSelect.options.computed.classes.call(this),\n 'v-autocomplete': true,\n 'v-autocomplete--is-selecting-index': this.selectedIndex > -1\n };\n },\n\n computedItems() {\n return this.filteredItems;\n },\n\n selectedValues() {\n return this.selectedItems.map(item => this.getValue(item));\n },\n\n hasDisplayedItems() {\n return this.hideSelected ? this.filteredItems.some(item => !this.hasItem(item)) : this.filteredItems.length > 0;\n },\n\n currentRange() {\n if (this.selectedItem == null) return 0;\n return String(this.getText(this.selectedItem)).length;\n },\n\n filteredItems() {\n if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems;\n return this.allItems.filter(item => {\n const value = getPropertyFromItem(item, this.itemText);\n const text = value != null ? String(value) : '';\n return this.filter(item, String(this.internalSearch), text);\n });\n },\n\n internalSearch: {\n get() {\n return this.lazySearch;\n },\n\n set(val) {\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 },\n\n isAnyValueAllowed() {\n return false;\n },\n\n isDirty() {\n return this.searchIsDirty || this.selectedItems.length > 0;\n },\n\n isSearching() {\n return this.multiple && this.searchIsDirty || this.searchIsDirty && this.internalSearch !== this.getText(this.selectedItem);\n },\n\n menuCanShow() {\n if (!this.isFocused) return false;\n return this.hasDisplayedItems || !this.hideNoData;\n },\n\n $_menuProps() {\n const props = VSelect.options.computed.$_menuProps.call(this);\n props.contentClass = `v-autocomplete__content ${props.contentClass || ''}`.trim();\n return { ...defaultMenuProps,\n ...props\n };\n },\n\n searchIsDirty() {\n return this.internalSearch != null && this.internalSearch !== '';\n },\n\n selectedItem() {\n if (this.multiple) return null;\n return this.selectedItems.find(i => {\n return this.valueComparator(this.getValue(i), this.getValue(this.internalValue));\n });\n },\n\n listData() {\n const data = VSelect.options.computed.listData.call(this);\n data.props = { ...data.props,\n items: this.virtualizedItems,\n noFilter: this.noFilter || !this.isSearching || !this.filteredItems.length,\n searchInput: this.internalSearch\n };\n return data;\n }\n\n },\n watch: {\n filteredItems: 'onFilteredItemsChanged',\n internalValue: 'setSearch',\n\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\n isMenuActive(val) {\n if (val || !this.hasSlot) return;\n this.lazySearch = null;\n },\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 (!(oldVal && oldVal.length) && this.hideNoData && this.isFocused && !this.isMenuActive && val.length) this.activateMenu();\n },\n\n searchInput(val) {\n this.lazySearch = val;\n },\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, oldVal) {\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\n this.$emit('update:list-index', this.$refs.menu.listIndex);\n }\n\n this.$nextTick(() => {\n if (!this.internalSearch || val.length !== 1 && !this.autoSelectFirst) return;\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\n onInternalSearchChanged() {\n this.updateMenuDimensions();\n },\n\n updateMenuDimensions() {\n // Type from menuable is not making it through\n this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions();\n },\n\n changeSelectedIndex(keyCode) {\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\n deleteCurrentItem() {\n const curIndex = this.selectedIndex;\n const curItem = this.selectedItems[curIndex]; // Do nothing if input or item is disabled\n\n if (!this.isInteractive || this.getDisabled(curItem)) return;\n const lastIndex = this.selectedItems.length - 1; // Select the last item if\n // there is no selection\n\n if (this.selectedIndex === -1 && lastIndex !== 0) {\n this.selectedIndex = lastIndex;\n return;\n }\n\n const length = this.selectedItems.length;\n const nextIndex = curIndex !== length - 1 ? curIndex : 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\n clearableCallback() {\n this.internalSearch = null;\n VSelect.options.methods.clearableCallback.call(this);\n },\n\n genInput() {\n const input = VTextField.options.methods.genInput.call(this);\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: {\n value: this.internalSearch\n }\n });\n return input;\n },\n\n genInputSlot() {\n const slot = VSelect.options.methods.genInputSlot.call(this);\n slot.data.attrs.role = 'combobox';\n return slot;\n },\n\n genSelections() {\n return this.hasSlot || this.multiple ? VSelect.options.methods.genSelections.call(this) : [];\n },\n\n onClick(e) {\n if (!this.isInteractive) return;\n this.selectedIndex > -1 ? this.selectedIndex = -1 : this.onFocus();\n if (!this.isAppendInner(e.target)) this.activateMenu();\n },\n\n onInput(e) {\n if (this.selectedIndex > -1 || !e.target) return;\n const target = e.target;\n const value = target.value; // If typing and menu is not currently active\n\n if (target.value) this.activateMenu();\n if (!this.multiple && value === '') this.deleteCurrentItem();\n this.internalSearch = value;\n this.badInput = target.validity && target.validity.badInput;\n },\n\n onKeyDown(e) {\n const keyCode = e.keyCode;\n\n if (e.ctrlKey || ![keyCodes.home, keyCodes.end].includes(keyCode)) {\n VSelect.options.methods.onKeyDown.call(this, e);\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\n\n this.changeSelectedIndex(keyCode);\n },\n\n onSpaceDown(e) {},\n\n onTabDown(e) {\n VSelect.options.methods.onTabDown.call(this, e);\n this.updateSelf();\n },\n\n onUpDown(e) {\n // Prevent screen from scrolling\n e.preventDefault(); // For autocomplete / combobox, cycling\n // interfers with native up/down behavior\n // instead activate the menu\n\n this.activateMenu();\n },\n\n selectItem(item) {\n VSelect.options.methods.selectItem.call(this, item);\n this.setSearch();\n },\n\n setSelectedItems() {\n VSelect.options.methods.setSelectedItems.call(this); // #4273 Don't replace if searching\n // #4403 Don't replace if focused\n\n if (!this.isFocused) this.setSearch();\n },\n\n setSearch() {\n // Wait for nextTick so selectedItem\n // has had time to update\n this.$nextTick(() => {\n if (!this.multiple || !this.internalSearch || !this.isMenuActive) {\n this.internalSearch = !this.selectedItems.length || this.multiple || this.hasSlot ? null : this.getText(this.selectedItem);\n }\n });\n },\n\n updateSelf() {\n if (!this.searchIsDirty && !this.internalValue) return;\n\n if (!this.multiple && !this.valueComparator(this.internalSearch, this.getValue(this.internalValue))) {\n this.setSearch();\n }\n },\n\n hasItem(item) {\n return this.selectedValues.indexOf(this.getValue(item)) > -1;\n },\n\n onCopy(event) {\n var _a, _b;\n\n if (this.selectedIndex === -1) return;\n const currentItem = this.selectedItems[this.selectedIndex];\n const currentItemText = this.getText(currentItem);\n (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.setData('text/plain', currentItemText);\n (_b = event.clipboardData) === null || _b === void 0 ? void 0 : _b.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText);\n event.preventDefault();\n }\n\n }\n});\n//# sourceMappingURL=VAutocomplete.js.map"],"names":["defaultMenuProps","__spreadProps","__spreadValues","VSelectMenuProps","VSelect","item","queryText","itemText","value","getPropertyFromItem","text","val","props","i","data","oldVal","preSelectedItem","keyCode","keyCodes","curIndex","curItem","lastIndex","length","nextIndex","input","VTextField","mergeData","getObjectValueByPath","slot","target","event","_a","_b","currentItem","currentItemText"],"mappings":"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","x_google_ignoreList":[0]}