{"version":3,"sources":["webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///../../../src/components/VSwitch/VSwitch.ts","webpack:///../../../src/components/VAutocomplete/VAutocomplete.ts"],"names":["baseMixins","name","props","autoGrow","noResize","rowHeight","type","Number","default","validator","v","isNaN","parseFloat","rows","parseInt","computed","classes","this","noResizeHandle","watch","val","lazyValue","$nextTick","mounted","setTimeout","methods","calculateInputHeight","input","$refs","height","minHeight","Math","genInput","onInput","onKeyDown","isFocused","e","directives","Touch","inset","loading","Boolean","flat","attrs","String","role","validationState","hasError","hasColor","switchData","setTextColor","undefined","class","themeClasses","genDefaultSlot","genSwitch","switchAttrs","$createElement","staticClass","genRipple","value","left","right","onSwipeRight","genProgress","$slots","progress","color","size","width","indeterminate","onSwipeLeft","onChange","onKeydown","defaultMenuProps","offsetY","offsetOverflow","transition","allowOverflow","autoSelectFirst","filter","itemText","queryText","hideNoData","menuProps","noFilter","searchInput","data","lazySearch","selectedIndex","computedItems","selectedValues","selectedItems","map","item","hasDisplayedItems","hideSelected","filteredItems","some","length","currentRange","selectedItem","getText","internalSearch","allItems","text","get","set","isAnyValueAllowed","isDirty","searchIsDirty","isSearching","multiple","menuCanShow","$_menuProps","find","i","listData","items","internalValue","document","isMenuActive","oldVal","activateMenu","created","destroyed","onFilteredItemsChanged","preSelectedItem","menu","onInternalSearchChanged","updateMenuDimensions","changeSelectedIndex","keyCode","deleteCurrentItem","curIndex","curItem","getDisabled","lastIndex","nextIndex","clearableCallback","autocomplete","domProps","genInputSlot","slot","genSelections","hasSlot","onClick","isAppendInner","target","onSpaceDown","onTabDown","onUpDown","selectItem","setSelectedItems","setSearch","updateSelf","valueComparator","getValue","hasItem","indexOf","onCopy","currentItem","currentItemText","event"],"mappings":"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","file":"js/vendors~catalog~category~content~designgroup~industry~print~products~tasks~topic.0be23f95.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 '../../styles/components/_selection-controls.sass'\nimport './VSwitch.sass'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\nimport VInput from '../VInput'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport { VFabTransition } from '../transitions'\nimport VProgressCircular from '../VProgressCircular/VProgressCircular'\n\n// Helpers\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-switch',\n\n directives: { Touch },\n\n props: {\n inset: Boolean,\n loading: {\n type: [Boolean, String],\n default: false,\n },\n flat: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--switch': true,\n 'v-input--switch--flat': this.flat,\n 'v-input--switch--inset': this.inset,\n }\n },\n attrs (): object {\n return {\n 'aria-checked': String(this.isActive),\n 'aria-disabled': String(this.isDisabled),\n role: 'switch',\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n switchData (): VNodeData {\n return this.setTextColor(this.loading ? undefined : this.validationState, {\n class: this.themeClasses,\n })\n },\n },\n\n methods: {\n genDefaultSlot (): (VNode | null)[] {\n return [\n this.genSwitch(),\n this.genLabel(),\n ]\n },\n genSwitch (): VNode {\n const { title, ...switchAttrs } = this.attrs$\n\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.genInput('checkbox', {\n ...this.attrs,\n ...switchAttrs,\n }),\n this.genRipple(this.setTextColor(this.validationState, {\n directives: [{\n name: 'touch',\n value: {\n left: this.onSwipeLeft,\n right: this.onSwipeRight,\n },\n }],\n })),\n this.$createElement('div', {\n staticClass: 'v-input--switch__track',\n ...this.switchData,\n }),\n this.$createElement('div', {\n staticClass: 'v-input--switch__thumb',\n ...this.switchData,\n }, [this.genProgress()]),\n ])\n },\n genProgress (): VNode {\n return this.$createElement(VFabTransition, {}, [\n this.loading === false\n ? null\n : this.$slots.progress || this.$createElement(VProgressCircular, {\n props: {\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n size: 16,\n width: 2,\n indeterminate: true,\n },\n }),\n ])\n },\n onSwipeLeft () {\n if (this.isActive) this.onChange()\n },\n onSwipeRight () {\n if (!this.isActive) this.onChange()\n },\n onKeydown (e: KeyboardEvent) {\n if (\n (e.keyCode === keyCodes.left && this.isActive) ||\n (e.keyCode === keyCodes.right && !this.isActive)\n ) this.onChange()\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":""}