{"version":3,"sources":["webpack:///../../../src/components/VCombobox/VCombobox.ts","webpack:///./src/demo/usages/usage.js","webpack:///./src/demo/usages/combobox.vue?ff03","webpack:///src/demo/usages/combobox.vue","webpack:///./src/demo/usages/combobox.vue?6d96","webpack:///./src/demo/usages/combobox.vue"],"names":["name","props","delimiters","type","default","returnObject","data","editingIndex","computed","computedCounterValue","this","multiple","selectedItems","internalSearch","hasSlot","isAnyValueAllowed","menuCanShow","hasDisplayedItems","$slots","methods","onInternalSearchChanged","val","delimiter","find","d","genInput","input","genChipSelection","chip","dblclick","onChipInput","onEnterDown","e","getMenuIndex","onFilteredItemsChanged","onKeyDown","keyCode","$refs","selectionStart","onTabDown","selectItem","setSelectedItems","internalValue","setValue","updateEditing","value","updateCombobox","getText","isUsingSlot","Boolean","$scopedSlots","updateSelf","updateTags","menuIndex","index","indexOf","onPaste","pastedItemText","event","findExistingIndex","attrs","Object","render","_obj","_vm","_h","$createElement","_c","_self","staticClass","_b","items","search","on","$event","scopedSlots","_u","key","fn","_v","_s","proxy","model","callback","$$v","expression","assign","staticRenderFns","component","VCombobox","VContainer","VListItem","VListItemContent","VList","VListItemTitle","VRow"],"mappings":"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","file":"js/usages14.698ed40e.js","sourcesContent":["// Styles\nimport '../VAutocomplete/VAutocomplete.sass'\n\n// Extensions\nimport VSelect from '../VSelect/VSelect'\nimport VAutocomplete from '../VAutocomplete/VAutocomplete'\n\n// Utils\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n/* @vue/component */\nexport default VAutocomplete.extend({\n name: 'v-combobox',\n\n props: {\n delimiters: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n returnObject: {\n type: Boolean,\n default: true,\n },\n },\n\n data: () => ({\n editingIndex: -1,\n }),\n\n computed: {\n computedCounterValue (): number {\n return this.multiple\n ? this.selectedItems.length\n : (this.internalSearch || '').toString().length\n },\n hasSlot (): boolean {\n return VSelect.options.computed.hasSlot.call(this) || this.multiple\n },\n isAnyValueAllowed (): boolean {\n return true\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems ||\n (!!this.$slots['no-data'] && !this.hideNoData)\n },\n },\n\n methods: {\n onInternalSearchChanged (val: any) {\n if (\n val &&\n this.multiple &&\n this.delimiters.length\n ) {\n const delimiter = this.delimiters.find(d => val.endsWith(d))\n if (delimiter != null) {\n this.internalSearch = val.slice(0, val.length - delimiter.length)\n this.updateTags()\n }\n }\n\n this.updateMenuDimensions()\n },\n genInput () {\n const input = VAutocomplete.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n input.data!.on!.paste = this.onPaste\n\n return input\n },\n genChipSelection (item: object, index: number) {\n const chip = VSelect.options.methods.genChipSelection.call(this, item, index)\n\n // Allow user to update an existing value\n if (this.multiple) {\n chip.componentOptions!.listeners! = {\n ...chip.componentOptions!.listeners!,\n dblclick: () => {\n this.editingIndex = index\n this.internalSearch = this.getText(item)\n this.selectedIndex = -1\n },\n }\n }\n\n return chip\n },\n onChipInput (item: object) {\n VSelect.options.methods.onChipInput.call(this, item)\n\n this.editingIndex = -1\n },\n // Requires a manual definition\n // to overwrite removal in v-autocomplete\n onEnterDown (e: Event) {\n e.preventDefault()\n // If has menu index, let v-select-list handle\n if (this.getMenuIndex() > -1) return\n\n this.$nextTick(this.updateSelf)\n },\n onFilteredItemsChanged (val: never[], oldVal: never[]) {\n if (!this.autoSelectFirst) return\n\n VAutocomplete.options.methods.onFilteredItemsChanged.call(this, val, oldVal)\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n VSelect.options.methods.onKeyDown.call(this, e)\n\n // If user is at selection index of 0\n // create a new tag\n if (this.multiple &&\n keyCode === keyCodes.left &&\n this.$refs.input.selectionStart === 0\n ) {\n this.updateSelf()\n } else if (keyCode === keyCodes.enter) {\n this.onEnterDown(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 onTabDown (e: KeyboardEvent) {\n // When adding tags, if searching and\n // there is not a filtered options,\n // add the value to the tags list\n if (this.multiple &&\n this.internalSearch &&\n this.getMenuIndex() === -1\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n return this.updateTags()\n }\n\n VAutocomplete.options.methods.onTabDown.call(this, e)\n },\n selectItem (item: object) {\n // Currently only supports items:\n if (this.editingIndex > -1) {\n this.updateEditing()\n } else {\n VAutocomplete.options.methods.selectItem.call(this, item)\n }\n },\n setSelectedItems () {\n if (this.internalValue == null ||\n this.internalValue === ''\n ) {\n this.selectedItems = []\n } else {\n this.selectedItems = this.multiple ? this.internalValue : [this.internalValue]\n }\n },\n setValue (value?: any) {\n VSelect.options.methods.setValue.call(this, value ?? this.internalSearch)\n },\n updateEditing () {\n const value = this.internalValue.slice()\n value[this.editingIndex] = this.internalSearch\n\n this.setValue(value)\n\n this.editingIndex = -1\n },\n updateCombobox () {\n // If search is not dirty, do nothing\n if (!this.searchIsDirty) return\n\n // The internal search is not matching\n // the internal value, update the input\n if (this.internalSearch !== this.getText(this.internalValue)) this.setValue()\n\n // Reset search if using slot to avoid a double input\n const isUsingSlot = Boolean(this.$scopedSlots.selection) || this.hasChips\n if (isUsingSlot) this.internalSearch = null\n },\n updateSelf () {\n this.multiple ? this.updateTags() : this.updateCombobox()\n },\n updateTags () {\n const menuIndex = this.getMenuIndex()\n\n // If the user is not searching\n // and no menu item is selected\n // do nothing\n if (menuIndex < 0 &&\n !this.searchIsDirty\n ) return\n\n if (this.editingIndex > -1) {\n return this.updateEditing()\n }\n\n const index = this.selectedItems.indexOf(this.internalSearch)\n // If it already exists, do nothing\n // this might need to change to bring\n // the duplicated item to the last entered\n if (index > -1) {\n const internalValue = this.internalValue.slice()\n internalValue.splice(index, 1)\n\n this.setValue(internalValue)\n }\n\n // If menu index is greater than 1\n // the selection is handled elsewhere\n // TODO: find out where\n if (menuIndex > -1) return (this.internalSearch = null)\n\n this.selectItem(this.internalSearch)\n this.internalSearch = null\n },\n onPaste (event: ClipboardEvent) {\n if (!this.multiple || this.searchIsDirty) return\n\n const pastedItemText = event.clipboardData?.getData('text/vnd.vuetify.autocomplete.item+plain')\n if (pastedItemText && this.findExistingIndex(pastedItemText as any) === -1) {\n event.preventDefault()\n VSelect.options.methods.selectItem.call(this, pastedItemText as any)\n }\n },\n },\n})\n","export default {\n props: {\n attrs: {\n type: Object,\n default: () => ({}),\n },\n },\n}\n","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{staticClass:\"fill-height\"},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-combobox',_vm._b({attrs:{\"items\":_vm.items,\"search-input\":_vm.search,\"label\":\"Add some tags\",\"hint\":\"Comboboxes can receive custom values not present in items\"},on:{\"update:searchInput\":function($event){_vm.search=$event},\"update:search-input\":function($event){_vm.search=$event}},scopedSlots:_vm._u([(_vm.attrs.noData)?{key:\"no-data\",fn:function(){return [_c('v-list-item',[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" No results matching \\\"\"),_c('strong',[_vm._v(_vm._s(_vm.search))]),_vm._v(\"\\\". Press \"),_c('kbd',[_vm._v(\"enter\")]),_vm._v(\" to create a new one \")])],1)],1)]},proxy:true}:null],null,true),model:{value:(_vm.model),callback:function ($$v) {_vm.model=$$v},expression:\"model\"}},'v-combobox',Object.assign({}, _vm.attrs,\n ( _obj = {}, _obj[_vm.attrs.type] = true, _obj )),false))],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n \r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./combobox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./combobox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./combobox.vue?vue&type=template&id=2916f33a&\"\nimport script from \"./combobox.vue?vue&type=script&lang=js&\"\nexport * from \"./combobox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCombobox } from 'vuetify/lib/components/VCombobox';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCombobox,VContainer,VListItem,VListItemContent,VListItemTitle,VRow})\n"],"sourceRoot":""}