vuetify 2.5.9 → 2.5.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/json/attributes.json +58 -66
- package/dist/json/tags.json +0 -2
- package/dist/json/web-types.json +89 -146
- package/dist/vuetify.css +37 -24
- package/dist/vuetify.css.map +1 -1
- package/dist/vuetify.js +374 -177
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +2 -2
- package/es5/components/VAppBar/VAppBar.js +3 -0
- package/es5/components/VAppBar/VAppBar.js.map +1 -1
- package/es5/components/VAutocomplete/VAutocomplete.js +20 -2
- package/es5/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/es5/components/VCalendar/mixins/calendar-with-events.js +4 -2
- package/es5/components/VCalendar/mixins/calendar-with-events.js.map +1 -1
- package/es5/components/VCalendar/mixins/mouse.js +19 -0
- package/es5/components/VCalendar/mixins/mouse.js.map +1 -1
- package/es5/components/VCalendar/util/timestamp.js +2 -2
- package/es5/components/VCalendar/util/timestamp.js.map +1 -1
- package/es5/components/VCombobox/VCombobox.js +0 -5
- package/es5/components/VCombobox/VCombobox.js.map +1 -1
- package/es5/components/VDataTable/VDataTableHeaderMobile.js +2 -2
- package/es5/components/VDataTable/VDataTableHeaderMobile.js.map +1 -1
- package/es5/components/VDialog/VDialog.js +4 -2
- package/es5/components/VDialog/VDialog.js.map +1 -1
- package/es5/components/VList/VListItem.js +8 -1
- package/es5/components/VList/VListItem.js.map +1 -1
- package/es5/components/VOverlay/VOverlay.js +1 -0
- package/es5/components/VOverlay/VOverlay.js.map +1 -1
- package/es5/components/VRadioGroup/VRadioGroup.js +7 -0
- package/es5/components/VRadioGroup/VRadioGroup.js.map +1 -1
- package/es5/components/VRangeSlider/VRangeSlider.js +4 -1
- package/es5/components/VRangeSlider/VRangeSlider.js.map +1 -1
- package/es5/components/VSelect/VSelect.js +1 -1
- package/es5/components/VSelect/VSelect.js.map +1 -1
- package/es5/components/VSlideGroup/VSlideGroup.js +93 -37
- package/es5/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/es5/components/VTabs/VTab.js +15 -4
- package/es5/components/VTabs/VTab.js.map +1 -1
- package/es5/components/VTabs/VTabsBar.js +1 -1
- package/es5/components/VTabs/VTabsBar.js.map +1 -1
- package/es5/components/VTextarea/VTextarea.js +11 -2
- package/es5/components/VTextarea/VTextarea.js.map +1 -1
- package/es5/components/VTooltip/VTooltip.js +2 -5
- package/es5/components/VTooltip/VTooltip.js.map +1 -1
- package/es5/components/VTreeview/VTreeview.js +1 -1
- package/es5/components/VTreeview/VTreeview.js.map +1 -1
- package/es5/components/transitions/createTransition.js +1 -5
- package/es5/components/transitions/createTransition.js.map +1 -1
- package/es5/directives/click-outside/index.js +19 -10
- package/es5/directives/click-outside/index.js.map +1 -1
- package/es5/directives/intersect/index.js +12 -11
- package/es5/directives/intersect/index.js.map +1 -1
- package/es5/directives/mutate/index.js +7 -6
- package/es5/directives/mutate/index.js.map +1 -1
- package/es5/directives/resize/index.js +8 -7
- package/es5/directives/resize/index.js.map +1 -1
- package/es5/directives/ripple/index.js +2 -3
- package/es5/directives/ripple/index.js.map +1 -1
- package/es5/directives/scroll/index.js +13 -10
- package/es5/directives/scroll/index.js.map +1 -1
- package/es5/framework.js +1 -1
- package/es5/locale/fr.js +1 -1
- package/es5/locale/fr.js.map +1 -1
- package/es5/mixins/detachable/index.js +32 -14
- package/es5/mixins/detachable/index.js.map +1 -1
- package/es5/mixins/intersectable/index.js +5 -2
- package/es5/mixins/intersectable/index.js.map +1 -1
- package/es5/mixins/menuable/index.js +5 -5
- package/es5/mixins/menuable/index.js.map +1 -1
- package/es5/mixins/overlayable/index.js +22 -35
- package/es5/mixins/overlayable/index.js.map +1 -1
- package/es5/mixins/routable/index.js +9 -3
- package/es5/mixins/routable/index.js.map +1 -1
- package/es5/services/goto/index.js +3 -1
- package/es5/services/goto/index.js.map +1 -1
- package/es5/util/helpers.js +23 -0
- package/es5/util/helpers.js.map +1 -1
- package/lib/components/VAppBar/VAppBar.js +4 -0
- package/lib/components/VAppBar/VAppBar.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.js +18 -2
- package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
- package/lib/components/VCalendar/mixins/calendar-with-events.js +4 -2
- package/lib/components/VCalendar/mixins/calendar-with-events.js.map +1 -1
- package/lib/components/VCalendar/mixins/mouse.js +19 -0
- package/lib/components/VCalendar/mixins/mouse.js.map +1 -1
- package/lib/components/VCalendar/util/timestamp.js +2 -2
- package/lib/components/VCalendar/util/timestamp.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.js +0 -5
- package/lib/components/VCombobox/VCombobox.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaderMobile.js +2 -2
- package/lib/components/VDataTable/VDataTableHeaderMobile.js.map +1 -1
- package/lib/components/VDialog/VDialog.js +5 -2
- package/lib/components/VDialog/VDialog.js.map +1 -1
- package/lib/components/VList/VListItem.js +9 -1
- package/lib/components/VList/VListItem.js.map +1 -1
- package/lib/components/VOverlay/VOverlay.js +1 -0
- package/lib/components/VOverlay/VOverlay.js.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.js +9 -0
- package/lib/components/VRadioGroup/VRadioGroup.js.map +1 -1
- package/lib/components/VRangeSlider/VRangeSlider.js +4 -1
- package/lib/components/VRangeSlider/VRangeSlider.js.map +1 -1
- package/lib/components/VSelect/VSelect.js +1 -1
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSlideGroup/VSlideGroup.js +63 -40
- package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
- package/lib/components/VTabs/VTab.js +16 -6
- package/lib/components/VTabs/VTab.js.map +1 -1
- package/lib/components/VTabs/VTabsBar.js +1 -1
- package/lib/components/VTabs/VTabsBar.js.map +1 -1
- package/lib/components/VTextarea/VTextarea.js +8 -0
- package/lib/components/VTextarea/VTextarea.js.map +1 -1
- package/lib/components/VTooltip/VTooltip.js +2 -5
- package/lib/components/VTooltip/VTooltip.js.map +1 -1
- package/lib/components/VTreeview/VTreeview.js +1 -1
- package/lib/components/VTreeview/VTreeview.js.map +1 -1
- package/lib/components/transitions/createTransition.js +1 -5
- package/lib/components/transitions/createTransition.js.map +1 -1
- package/lib/directives/click-outside/index.js +20 -10
- package/lib/directives/click-outside/index.js.map +1 -1
- package/lib/directives/intersect/index.js +12 -10
- package/lib/directives/intersect/index.js.map +1 -1
- package/lib/directives/mutate/index.js +7 -6
- package/lib/directives/mutate/index.js.map +1 -1
- package/lib/directives/resize/index.js +6 -5
- package/lib/directives/resize/index.js.map +1 -1
- package/lib/directives/ripple/index.js +2 -3
- package/lib/directives/ripple/index.js.map +1 -1
- package/lib/directives/scroll/index.js +9 -6
- package/lib/directives/scroll/index.js.map +1 -1
- package/lib/framework.js +1 -1
- package/lib/locale/fr.js +1 -1
- package/lib/locale/fr.js.map +1 -1
- package/lib/mixins/detachable/index.js +28 -13
- package/lib/mixins/detachable/index.js.map +1 -1
- package/lib/mixins/intersectable/index.js +5 -2
- package/lib/mixins/intersectable/index.js.map +1 -1
- package/lib/mixins/menuable/index.js +4 -4
- package/lib/mixins/menuable/index.js.map +1 -1
- package/lib/mixins/overlayable/index.js +23 -36
- package/lib/mixins/overlayable/index.js.map +1 -1
- package/lib/mixins/routable/index.js +12 -3
- package/lib/mixins/routable/index.js.map +1 -1
- package/lib/services/goto/index.js +3 -1
- package/lib/services/goto/index.js.map +1 -1
- package/lib/util/helpers.js +21 -0
- package/lib/util/helpers.js.map +1 -1
- package/package.json +2 -3
- package/src/components/VAppBar/VAppBar.ts +3 -0
- package/src/components/VAutocomplete/VAutocomplete.ts +15 -2
- package/src/components/VCalendar/mixins/calendar-with-events.sass +7 -1
- package/src/components/VCalendar/mixins/calendar-with-events.ts +3 -3
- package/src/components/VCalendar/mixins/mouse.ts +21 -0
- package/src/components/VCalendar/util/__tests__/events.spec.ts +1 -1
- package/src/components/VCalendar/util/timestamp.ts +2 -2
- package/src/components/VCombobox/VCombobox.ts +0 -5
- package/src/components/VCombobox/__tests__/VCombobox-multiple.spec.ts +113 -0
- package/src/components/VCombobox/__tests__/VCombobox.spec.ts +30 -0
- package/src/components/VDataTable/VDataTableHeaderMobile.ts +3 -1
- package/src/components/VDataTable/__tests__/__snapshots__/VDataTable.spec.ts.snap +0 -20
- package/src/components/VDialog/VDialog.ts +4 -2
- package/src/components/VImg/__tests__/VImg.spec.ts +1 -1
- package/src/components/VList/VListItem.sass +2 -1
- package/src/components/VList/VListItem.ts +7 -1
- package/src/components/VList/__tests__/VListItem.spec.ts +16 -0
- package/src/components/VOverlay/VOverlay.ts +1 -0
- package/src/components/VRadioGroup/VRadioGroup.ts +8 -0
- package/src/components/VRangeSlider/VRangeSlider.ts +3 -1
- package/src/components/VSelect/VSelect.ts +1 -1
- package/src/components/VSlideGroup/VSlideGroup.ts +75 -35
- package/src/components/VSlideGroup/__tests__/VSlideGroup.spec.ts +1 -3
- package/src/components/VSnackbar/VSnackbar.sass +2 -0
- package/src/components/VStepper/VStepper.sass +5 -1
- package/src/components/VStepper/_variables.scss +2 -1
- package/src/components/VTabs/VTab.ts +14 -4
- package/src/components/VTabs/VTabs.sass +5 -2
- package/src/components/VTabs/VTabsBar.ts +2 -2
- package/src/components/VTextarea/VTextarea.ts +7 -0
- package/src/components/VTooltip/VTooltip.ts +2 -5
- package/src/components/VTreeview/VTreeview.ts +1 -1
- package/src/components/transitions/createTransition.ts +1 -5
- package/src/directives/click-outside/__tests__/click-outside-shadow-dom.spec.ts +9 -6
- package/src/directives/click-outside/__tests__/click-outside.spec.ts +7 -4
- package/src/directives/click-outside/index.ts +19 -10
- package/src/directives/intersect/__tests__/intersect.spec.ts +13 -10
- package/src/directives/intersect/index.ts +13 -12
- package/src/directives/mutate/__tests__/mutate.spec.ts +36 -17
- package/src/directives/mutate/index.ts +8 -7
- package/src/directives/resize/__tests__/resize.spec.ts +4 -4
- package/src/directives/resize/index.ts +10 -5
- package/src/directives/ripple/index.ts +3 -5
- package/src/directives/scroll/__tests__/scroll.spec.ts +9 -9
- package/src/directives/scroll/index.ts +8 -7
- package/src/globals.d.ts +10 -11
- package/src/locale/fr.ts +1 -1
- package/src/mixins/detachable/index.ts +32 -15
- package/src/mixins/intersectable/index.ts +5 -2
- package/src/mixins/menuable/index.ts +4 -4
- package/src/mixins/overlayable/index.ts +24 -35
- package/src/mixins/routable/__tests__/routable.spec.ts +82 -5
- package/src/mixins/routable/index.ts +10 -3
- package/src/services/goto/index.ts +6 -1
- package/src/styles/components/_selection-controls.sass +4 -7
- package/src/styles/generic/_transitions.scss +219 -215
- package/src/styles/settings/_variables.scss +7 -7
- package/src/util/helpers.ts +22 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VRangeSlider/VRangeSlider.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VRangeSlider.sass'\n\n// Components\nimport VSlider from '../VSlider'\n\n// Helpers\nimport {\n addOnceEventListener,\n createRange,\n deepEqual,\n passiveSupported,\n} from '../../util/helpers'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n/* @vue/component */\nexport default VSlider.extend({\n name: 'v-range-slider',\n\n props: {\n value: {\n type: Array,\n default: () => ([0, 0]),\n } as unknown as PropValidator<[number, number]>,\n },\n\n data () {\n return {\n activeThumb: null as null | number,\n lazyValue: this.value,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSlider.options.computed.classes.call(this),\n 'v-input--range-slider': true,\n }\n },\n internalValue: {\n get (): number[] {\n return this.lazyValue\n },\n set (val: number[]) {\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n let value = val.map((v = 0) => this.roundValue(Math.min(Math.max(v, this.minValue), this.maxValue)))\n\n // Switch values if range and wrong order\n if (value[0] > value[1] || value[1] < value[0]) {\n if (this.activeThumb !== null) {\n const toFocus = this.activeThumb === 1 ? 0 : 1\n const el = this.$refs[`thumb_${toFocus}`] as HTMLElement\n el.focus()\n }\n value = [value[1], value[0]]\n }\n\n this.lazyValue = value\n if (!deepEqual(value, this.value)) this.$emit('input', value)\n\n this.validate()\n },\n },\n inputWidth (): number[] {\n return this.internalValue.map((v: number) => (\n this.roundValue(v) - this.minValue) / (this.maxValue - this.minValue) * 100\n )\n },\n },\n\n methods: {\n getTrackStyle (startLength: number, endLength: number, startPadding = 0, endPadding = 0) {\n const startDir = this.vertical ? this.$vuetify.rtl ? 'top' : 'bottom' : this.$vuetify.rtl ? 'right' : 'left'\n const endDir = this.vertical ? 'height' : 'width'\n\n const start = `calc(${startLength}% + ${startPadding}px)`\n const end = `calc(${endLength}% + ${endPadding}px)`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n }\n },\n getIndexOfClosestValue (arr: number[], v: number) {\n if (Math.abs(arr[0] - v) < Math.abs(arr[1] - v)) return 0\n else return 1\n },\n genInput () {\n return createRange(2).map(i => {\n const input = VSlider.options.methods.genInput.call(this)\n\n input.data = input.data || {}\n input.data.attrs = input.data.attrs || {}\n input.data.attrs.value = this.internalValue[i]\n input.data.attrs.id = `input-${i ? 'max' : 'min'}-${this._uid}`\n\n return input\n })\n },\n genTrackContainer () {\n const children = []\n\n const padding = this.isDisabled ? 10 : 0\n const sections: { class: string, color: string | undefined, styles: [number, number, number, number] }[] = [\n {\n class: 'v-slider__track-background',\n color: this.computedTrackColor,\n styles: [0, this.inputWidth[0], 0, -padding],\n },\n {\n class: this.isDisabled ? 'v-slider__track-background' : 'v-slider__track-fill',\n color: this.isDisabled ? this.computedTrackColor : this.computedTrackFillColor,\n styles: [this.inputWidth[0], Math.abs(this.inputWidth[1] - this.inputWidth[0]), padding, padding * -2],\n },\n {\n class: 'v-slider__track-background',\n color: this.computedTrackColor,\n styles: [this.inputWidth[1], Math.abs(100 - this.inputWidth[1]), padding, -padding],\n },\n ]\n\n if (this.$vuetify.rtl) sections.reverse()\n\n children.push(...sections.map(section => this.$createElement('div', this.setBackgroundColor(section.color, {\n staticClass: section.class,\n style: this.getTrackStyle(...section.styles),\n }))))\n\n return this.$createElement('div', {\n staticClass: 'v-slider__track-container',\n ref: 'track',\n }, children)\n },\n genChildren () {\n return [\n this.genInput(),\n this.genTrackContainer(),\n this.genSteps(),\n createRange(2).map(index => {\n const value = this.internalValue[index]\n const onFocus = (e: Event) => {\n this.isFocused = true\n this.activeThumb = index\n\n this.$emit('focus', e)\n }\n\n const onBlur = (e: Event) => {\n this.isFocused = false\n this.activeThumb = null\n\n this.$emit('blur', e)\n }\n\n const valueWidth = this.inputWidth[index]\n const isActive = this.isActive && this.activeThumb === index\n const isFocused = this.isFocused && this.activeThumb === index\n\n return this.genThumbContainer(value, valueWidth, isActive, isFocused, onFocus, onBlur, `thumb_${index}`)\n }),\n ]\n },\n reevaluateSelected (value: number) {\n this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value)\n const refName = `thumb_${this.activeThumb}`\n const thumbRef = this.$refs[refName] as HTMLElement\n thumbRef.focus()\n },\n onSliderMouseDown (e: MouseEvent | TouchEvent) {\n const value = this.parseMouseMove(e)\n\n this.reevaluateSelected(value)\n\n this.oldValue = this.internalValue\n this.isActive = true\n\n if ((e.target as Element)?.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n this.thumbPressed = true\n const domRect = (e.target as Element).getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n this.startOffset = this.vertical\n ? touch.clientY - (domRect.top + domRect.height / 2)\n : touch.clientX - (domRect.left + domRect.width / 2)\n } else {\n this.startOffset = 0\n window.clearTimeout(this.mouseTimeout)\n this.mouseTimeout = window.setTimeout(() => {\n this.thumbPressed = true\n }, 300)\n }\n\n const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n\n const isTouchEvent = 'touches' in e\n\n this.onMouseMove(e)\n this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions)\n addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions)\n\n this.$emit('start', this.internalValue)\n },\n onSliderClick (e: MouseEvent) {\n if (!this.isActive) {\n if (this.noClick) {\n this.noClick = false\n return\n }\n\n const value = this.parseMouseMove(e)\n\n this.reevaluateSelected(value)\n\n this.setInternalValue(value)\n\n this.$emit('change', this.internalValue)\n }\n },\n onMouseMove (e: MouseEvent | TouchEvent) {\n const value = this.parseMouseMove(e)\n\n if (e.type === 'mousemove') {\n this.thumbPressed = true\n }\n\n this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value)\n\n this.setInternalValue(value)\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.activeThumb === null) return\n\n const value = this.parseKeyDown(e, this.internalValue[this.activeThumb])\n\n if (value == null) return\n\n this.setInternalValue(value)\n this.$emit('change', this.internalValue)\n },\n setInternalValue (value: number) {\n this.internalValue = this.internalValue.map((v: number, i: number) => {\n if (i === this.activeThumb) return value\n else return Number(v)\n })\n },\n },\n})\n"],"sourceRoot":"","file":"VRangeSlider.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VRangeSlider/VRangeSlider.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VRangeSlider.sass'\n\n// Components\nimport VSlider from '../VSlider'\n\n// Helpers\nimport {\n addOnceEventListener,\n createRange,\n deepEqual,\n passiveSupported,\n} from '../../util/helpers'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n/* @vue/component */\nexport default VSlider.extend({\n name: 'v-range-slider',\n\n props: {\n value: {\n type: Array,\n default: () => ([0, 0]),\n } as unknown as PropValidator<[number, number]>,\n },\n\n data () {\n return {\n activeThumb: null as null | number,\n lazyValue: this.value,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSlider.options.computed.classes.call(this),\n 'v-input--range-slider': true,\n }\n },\n internalValue: {\n get (): number[] {\n return this.lazyValue\n },\n set (val: number[]) {\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n let value = val.map((v = 0) => this.roundValue(Math.min(Math.max(v, this.minValue), this.maxValue)))\n\n // Switch values if range and wrong order\n if (value[0] > value[1] || value[1] < value[0]) {\n if (this.activeThumb !== null) {\n const toFocus = this.activeThumb === 1 ? 0 : 1\n const el = this.$refs[`thumb_${toFocus}`] as HTMLElement\n el.focus()\n }\n value = [value[1], value[0]]\n }\n\n this.lazyValue = value\n if (!deepEqual(value, this.value)) this.$emit('input', value)\n\n this.validate()\n },\n },\n inputWidth (): number[] {\n return this.internalValue.map((v: number) => (\n this.roundValue(v) - this.minValue) / (this.maxValue - this.minValue) * 100\n )\n },\n },\n\n methods: {\n getTrackStyle (startLength: number, endLength: number, startPadding = 0, endPadding = 0) {\n const startDir = this.vertical ? this.$vuetify.rtl ? 'top' : 'bottom' : this.$vuetify.rtl ? 'right' : 'left'\n const endDir = this.vertical ? 'height' : 'width'\n\n const start = `calc(${startLength}% + ${startPadding}px)`\n const end = `calc(${endLength}% + ${endPadding}px)`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n }\n },\n getIndexOfClosestValue (arr: number[], v: number) {\n if (Math.abs(arr[0] - v) < Math.abs(arr[1] - v)) return 0\n else return 1\n },\n genInput () {\n return createRange(2).map(i => {\n const input = VSlider.options.methods.genInput.call(this)\n\n input.data = input.data || {}\n input.data.attrs = input.data.attrs || {}\n input.data.attrs.value = this.internalValue[i]\n input.data.attrs.id = `input-${i ? 'max' : 'min'}-${this._uid}`\n\n return input\n })\n },\n genTrackContainer () {\n const children = []\n\n const padding = this.isDisabled ? 10 : 0\n const sections: { class: string, color: string | undefined, styles: [number, number, number, number] }[] = [\n {\n class: 'v-slider__track-background',\n color: this.computedTrackColor,\n styles: [0, this.inputWidth[0], 0, -padding],\n },\n {\n class: this.isDisabled ? 'v-slider__track-background' : 'v-slider__track-fill',\n color: this.isDisabled ? this.computedTrackColor : this.computedTrackFillColor,\n styles: [this.inputWidth[0], Math.abs(this.inputWidth[1] - this.inputWidth[0]), padding, padding * -2],\n },\n {\n class: 'v-slider__track-background',\n color: this.computedTrackColor,\n styles: [this.inputWidth[1], Math.abs(100 - this.inputWidth[1]), padding, -padding],\n },\n ]\n\n if (this.$vuetify.rtl) sections.reverse()\n\n children.push(...sections.map(section => this.$createElement('div', this.setBackgroundColor(section.color, {\n staticClass: section.class,\n style: this.getTrackStyle(...section.styles),\n }))))\n\n return this.$createElement('div', {\n staticClass: 'v-slider__track-container',\n ref: 'track',\n }, children)\n },\n genChildren () {\n return [\n this.genInput(),\n this.genTrackContainer(),\n this.genSteps(),\n createRange(2).map(index => {\n const value = this.internalValue[index]\n const onFocus = (e: Event) => {\n this.isFocused = true\n this.activeThumb = index\n\n this.$emit('focus', e)\n }\n\n const onBlur = (e: Event) => {\n this.isFocused = false\n this.activeThumb = null\n\n this.$emit('blur', e)\n }\n\n const valueWidth = this.inputWidth[index]\n const isActive = this.isActive && this.activeThumb === index\n const isFocused = this.isFocused && this.activeThumb === index\n\n return this.genThumbContainer(value, valueWidth, isActive, isFocused, onFocus, onBlur, `thumb_${index}`)\n }),\n ]\n },\n reevaluateSelected (value: number) {\n this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value)\n const refName = `thumb_${this.activeThumb}`\n const thumbRef = this.$refs[refName] as HTMLElement\n thumbRef.focus()\n },\n onSliderMouseDown (e: MouseEvent | TouchEvent) {\n const value = this.parseMouseMove(e)\n\n this.reevaluateSelected(value)\n\n this.oldValue = this.internalValue\n this.isActive = true\n\n if ((e.target as Element)?.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n this.thumbPressed = true\n const domRect = (e.target as Element).getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n this.startOffset = this.vertical\n ? touch.clientY - (domRect.top + domRect.height / 2)\n : touch.clientX - (domRect.left + domRect.width / 2)\n } else {\n this.startOffset = 0\n window.clearTimeout(this.mouseTimeout)\n this.mouseTimeout = window.setTimeout(() => {\n this.thumbPressed = true\n }, 300)\n }\n\n const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n\n const isTouchEvent = 'touches' in e\n\n this.onMouseMove(e)\n this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions)\n addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions)\n\n this.$emit('start', this.internalValue)\n },\n onSliderClick (e: MouseEvent) {\n if (!this.isActive) {\n if (this.noClick) {\n this.noClick = false\n return\n }\n\n const value = this.parseMouseMove(e)\n\n this.reevaluateSelected(value)\n\n this.setInternalValue(value)\n\n this.$emit('change', this.internalValue)\n }\n },\n onMouseMove (e: MouseEvent | TouchEvent) {\n const value = this.parseMouseMove(e)\n\n if (e.type === 'mousemove') {\n this.thumbPressed = true\n }\n\n if (this.activeThumb === null) {\n this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value)\n }\n\n this.setInternalValue(value)\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.activeThumb === null) return\n\n const value = this.parseKeyDown(e, this.internalValue[this.activeThumb])\n\n if (value == null) return\n\n this.setInternalValue(value)\n this.$emit('change', this.internalValue)\n },\n setInternalValue (value: number) {\n this.internalValue = this.internalValue.map((v: number, i: number) => {\n if (i === this.activeThumb) return value\n else return Number(v)\n })\n },\n },\n})\n"],"sourceRoot":"","file":"VRangeSlider.js"}
|
|
@@ -610,7 +610,7 @@ export default baseMixins.extend().extend({
|
|
|
610
610
|
if (!menu) return; // If menu is active, allow default
|
|
611
611
|
// listIndex change from menu
|
|
612
612
|
|
|
613
|
-
if (this.isMenuActive &&
|
|
613
|
+
if (this.isMenuActive && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end, keyCodes.enter].includes(keyCode)) {
|
|
614
614
|
this.$nextTick(() => {
|
|
615
615
|
menu.changeListIndex(e);
|
|
616
616
|
this.$emit('update:list-index', menu.listIndex);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VSelect/VSelect.ts"],"names":[],"mappings":"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","sourcesContent":["// 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<typeof baseMixins> {\n $refs: {\n menu: InstanceType<typeof VMenu>\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<options>().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<string | boolean | Element | VNode>,\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<any[]>,\n itemColor: {\n type: String,\n default: 'primary',\n },\n itemDisabled: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\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 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 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 (<v-menu attach>)\n this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\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 && keyCode !== keyCodes.tab) {\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 // When selecting multiple\n // adjust menu after each\n // selection\n this.$nextTick(() => {\n this.$refs.menu &&\n (this.$refs.menu as { [key: string]: any }).updateDimensions()\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"],"sourceRoot":"","file":"VSelect.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VSelect/VSelect.ts"],"names":[],"mappings":"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","sourcesContent":["// 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<typeof baseMixins> {\n $refs: {\n menu: InstanceType<typeof VMenu>\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<options>().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<string | boolean | Element | VNode>,\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<any[]>,\n itemColor: {\n type: String,\n default: 'primary',\n },\n itemDisabled: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\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 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 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 (<v-menu attach>)\n this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\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 // When selecting multiple\n // adjust menu after each\n // selection\n this.$nextTick(() => {\n this.$refs.menu &&\n (this.$refs.menu as { [key: string]: any }).updateDimensions()\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"],"sourceRoot":"","file":"VSelect.js"}
|
|
@@ -12,6 +12,41 @@ import Resize from '../../directives/resize';
|
|
|
12
12
|
import Touch from '../../directives/touch'; // Utilities
|
|
13
13
|
|
|
14
14
|
import mixins from '../../util/mixins';
|
|
15
|
+
import { composedPath } from '../../util/helpers';
|
|
16
|
+
export function calculateUpdatedOffset(selectedElement, widths, rtl, currentScrollOffset) {
|
|
17
|
+
const clientWidth = selectedElement.clientWidth;
|
|
18
|
+
const offsetLeft = rtl ? widths.content - selectedElement.offsetLeft - clientWidth : selectedElement.offsetLeft;
|
|
19
|
+
|
|
20
|
+
if (rtl) {
|
|
21
|
+
currentScrollOffset = -currentScrollOffset;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const totalWidth = widths.wrapper + currentScrollOffset;
|
|
25
|
+
const itemOffset = clientWidth + offsetLeft;
|
|
26
|
+
const additionalOffset = clientWidth * 0.4;
|
|
27
|
+
|
|
28
|
+
if (offsetLeft <= currentScrollOffset) {
|
|
29
|
+
currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0);
|
|
30
|
+
} else if (totalWidth <= itemOffset) {
|
|
31
|
+
currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return rtl ? -currentScrollOffset : currentScrollOffset;
|
|
35
|
+
}
|
|
36
|
+
export function calculateCenteredOffset(selectedElement, widths, rtl) {
|
|
37
|
+
const {
|
|
38
|
+
offsetLeft,
|
|
39
|
+
clientWidth
|
|
40
|
+
} = selectedElement;
|
|
41
|
+
|
|
42
|
+
if (rtl) {
|
|
43
|
+
const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2;
|
|
44
|
+
return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered));
|
|
45
|
+
} else {
|
|
46
|
+
const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2;
|
|
47
|
+
return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
15
50
|
export const BaseSlideGroup = mixins(BaseItemGroup, Mobile).extend({
|
|
16
51
|
name: 'base-slide-group',
|
|
17
52
|
directives: {
|
|
@@ -136,6 +171,24 @@ export const BaseSlideGroup = mixins(BaseItemGroup, Mobile).extend({
|
|
|
136
171
|
},
|
|
137
172
|
|
|
138
173
|
methods: {
|
|
174
|
+
onScroll() {
|
|
175
|
+
this.$refs.wrapper.scrollLeft = 0;
|
|
176
|
+
},
|
|
177
|
+
|
|
178
|
+
onFocusin(e) {
|
|
179
|
+
if (!this.isOverflowing) return; // Focused element is likely to be the root of an item, so a
|
|
180
|
+
// breadth-first search will probably find it in the first iteration
|
|
181
|
+
|
|
182
|
+
for (const el of composedPath(e)) {
|
|
183
|
+
for (const vm of this.items) {
|
|
184
|
+
if (vm.$el === el) {
|
|
185
|
+
this.scrollOffset = calculateUpdatedOffset(vm.$el, this.widths, this.$vuetify.rtl, this.scrollOffset);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
|
|
139
192
|
// Always generate next for scrollable hint
|
|
140
193
|
genNext() {
|
|
141
194
|
const slot = this.$scopedSlots.next ? this.$scopedSlots.next({}) : this.$slots.next || this.__cachedNext;
|
|
@@ -154,7 +207,10 @@ export const BaseSlideGroup = mixins(BaseItemGroup, Mobile).extend({
|
|
|
154
207
|
genContent() {
|
|
155
208
|
return this.$createElement('div', {
|
|
156
209
|
staticClass: 'v-slide-group__content',
|
|
157
|
-
ref: 'content'
|
|
210
|
+
ref: 'content',
|
|
211
|
+
on: {
|
|
212
|
+
focusin: this.onFocusin
|
|
213
|
+
}
|
|
158
214
|
}, this.$slots.default);
|
|
159
215
|
},
|
|
160
216
|
|
|
@@ -217,7 +273,10 @@ export const BaseSlideGroup = mixins(BaseItemGroup, Mobile).extend({
|
|
|
217
273
|
end: e => this.overflowCheck(e, this.onTouchEnd)
|
|
218
274
|
}
|
|
219
275
|
}],
|
|
220
|
-
ref: 'wrapper'
|
|
276
|
+
ref: 'wrapper',
|
|
277
|
+
on: {
|
|
278
|
+
scroll: this.onScroll
|
|
279
|
+
}
|
|
221
280
|
}, [this.genContent()]);
|
|
222
281
|
},
|
|
223
282
|
|
|
@@ -322,45 +381,9 @@ export const BaseSlideGroup = mixins(BaseItemGroup, Mobile).extend({
|
|
|
322
381
|
if (this.selectedIndex === 0 || !this.centerActive && !this.isOverflowing) {
|
|
323
382
|
this.scrollOffset = 0;
|
|
324
383
|
} else if (this.centerActive) {
|
|
325
|
-
this.scrollOffset =
|
|
384
|
+
this.scrollOffset = calculateCenteredOffset(this.selectedItem.$el, this.widths, this.$vuetify.rtl);
|
|
326
385
|
} else if (this.isOverflowing) {
|
|
327
|
-
this.scrollOffset =
|
|
328
|
-
}
|
|
329
|
-
},
|
|
330
|
-
|
|
331
|
-
calculateUpdatedOffset(selectedElement, widths, rtl, currentScrollOffset) {
|
|
332
|
-
const clientWidth = selectedElement.clientWidth;
|
|
333
|
-
const offsetLeft = rtl ? widths.content - selectedElement.offsetLeft - clientWidth : selectedElement.offsetLeft;
|
|
334
|
-
|
|
335
|
-
if (rtl) {
|
|
336
|
-
currentScrollOffset = -currentScrollOffset;
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
const totalWidth = widths.wrapper + currentScrollOffset;
|
|
340
|
-
const itemOffset = clientWidth + offsetLeft;
|
|
341
|
-
const additionalOffset = clientWidth * 0.4;
|
|
342
|
-
|
|
343
|
-
if (offsetLeft <= currentScrollOffset) {
|
|
344
|
-
currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0);
|
|
345
|
-
} else if (totalWidth <= itemOffset) {
|
|
346
|
-
currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper);
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
return rtl ? -currentScrollOffset : currentScrollOffset;
|
|
350
|
-
},
|
|
351
|
-
|
|
352
|
-
calculateCenteredOffset(selectedElement, widths, rtl) {
|
|
353
|
-
const {
|
|
354
|
-
offsetLeft,
|
|
355
|
-
clientWidth
|
|
356
|
-
} = selectedElement;
|
|
357
|
-
|
|
358
|
-
if (rtl) {
|
|
359
|
-
const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2;
|
|
360
|
-
return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered));
|
|
361
|
-
} else {
|
|
362
|
-
const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2;
|
|
363
|
-
return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered));
|
|
386
|
+
this.scrollOffset = calculateUpdatedOffset(this.selectedItem.$el, this.widths, this.$vuetify.rtl, this.scrollOffset);
|
|
364
387
|
}
|
|
365
388
|
},
|
|
366
389
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/VSlideGroup/VSlideGroup.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\n\ninterface TouchEvent {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nexport const BaseSlideGroup = mixins<options &\n/* eslint-disable indent */\n ExtractVue<[\n typeof BaseItemGroup,\n typeof Mobile,\n ]>\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: v => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n internalItemsLength: 0,\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n isSwipingHorizontal: false,\n isSwiping: false,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n canTouch (): boolean {\n return typeof window !== 'undefined'\n },\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing || Math.abs(this.scrollOffset) > 0\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n this.$refs.content.style.transform = `translateX(${-val}px)`\n },\n },\n\n beforeUpdate () {\n this.internalItemsLength = (this.$children || []).length\n },\n\n updated () {\n if (this.internalItemsLength === (this.$children || []).length) return\n this.setWidths()\n },\n\n methods: {\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : this.$slots.next || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n }, this.$slots.default)\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : this.$slots.prev || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n if (!this.canTouch) return\n\n if (!this.isSwiping) {\n // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n const diffX = e.touchmoveX - e.touchstartX\n const diffY = e.touchmoveY - e.touchstartY\n this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY)\n this.isSwiping = true\n }\n\n if (this.isSwipingHorizontal) {\n // sliding horizontally\n this.scrollOffset = this.startX - e.touchmoveX\n // temporarily disable window vertical scrolling\n document.documentElement.style.overflowY = 'hidden'\n }\n },\n onTouchEnd () {\n if (!this.canTouch) return\n\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n\n this.isSwiping = false\n // rollback whole page scrolling to default\n document.documentElement.style.removeProperty('overflow-y')\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem && this.items.length) {\n const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect()\n const wrapperPosition = this.$refs.wrapper.getBoundingClientRect()\n\n if (\n (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right) ||\n (!this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left)\n ) {\n this.scrollTo('prev')\n }\n }\n\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = this.calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = this.calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n calculateUpdatedOffset (selectedElement: HTMLElement, widths: Widths, rtl: boolean, currentScrollOffset: number): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n },\n calculateCenteredOffset (selectedElement: HTMLElement, widths: Widths, rtl: boolean): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths /* istanbul ignore next */ () {\n window.requestAnimationFrame(() => {\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n // https://github.com/vuetifyjs/vuetify/issues/13212\n // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n // gets calculated wrongly by the browser if using a different zoom-level.\n this.isOverflowing = this.widths.wrapper + 1 < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n"],"sourceRoot":"","file":"VSlideGroup.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/VSlideGroup/VSlideGroup.ts"],"names":[],"mappings":"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","sourcesContent":["// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\nimport { composedPath } from '../../util/helpers'\n\ninterface TouchEvent {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nexport function calculateUpdatedOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean,\n currentScrollOffset: number\n): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n}\n\nexport function calculateCenteredOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean\n): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n}\n\nexport const BaseSlideGroup = mixins<options &\n/* eslint-disable indent */\n ExtractVue<[\n typeof BaseItemGroup,\n typeof Mobile,\n ]>\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: v => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n internalItemsLength: 0,\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n isSwipingHorizontal: false,\n isSwiping: false,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n canTouch (): boolean {\n return typeof window !== 'undefined'\n },\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing || Math.abs(this.scrollOffset) > 0\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n this.$refs.content.style.transform = `translateX(${-val}px)`\n },\n },\n\n beforeUpdate () {\n this.internalItemsLength = (this.$children || []).length\n },\n\n updated () {\n if (this.internalItemsLength === (this.$children || []).length) return\n this.setWidths()\n },\n\n methods: {\n onScroll () {\n this.$refs.wrapper.scrollLeft = 0\n },\n onFocusin (e: FocusEvent) {\n if (!this.isOverflowing) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of composedPath(e)) {\n for (const vm of this.items) {\n if (vm.$el === el) {\n this.scrollOffset = calculateUpdatedOffset(\n vm.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n return\n }\n }\n }\n },\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : this.$slots.next || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n on: {\n focusin: this.onFocusin,\n },\n }, this.$slots.default)\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : this.$slots.prev || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n on: {\n scroll: this.onScroll,\n },\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n if (!this.canTouch) return\n\n if (!this.isSwiping) {\n // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n const diffX = e.touchmoveX - e.touchstartX\n const diffY = e.touchmoveY - e.touchstartY\n this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY)\n this.isSwiping = true\n }\n\n if (this.isSwipingHorizontal) {\n // sliding horizontally\n this.scrollOffset = this.startX - e.touchmoveX\n // temporarily disable window vertical scrolling\n document.documentElement.style.overflowY = 'hidden'\n }\n },\n onTouchEnd () {\n if (!this.canTouch) return\n\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n\n this.isSwiping = false\n // rollback whole page scrolling to default\n document.documentElement.style.removeProperty('overflow-y')\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem && this.items.length) {\n const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect()\n const wrapperPosition = this.$refs.wrapper.getBoundingClientRect()\n\n if (\n (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right) ||\n (!this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left)\n ) {\n this.scrollTo('prev')\n }\n }\n\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths /* istanbul ignore next */ () {\n window.requestAnimationFrame(() => {\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n // https://github.com/vuetifyjs/vuetify/issues/13212\n // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n // gets calculated wrongly by the browser if using a different zoom-level.\n this.isOverflowing = this.widths.wrapper + 1 < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n"],"sourceRoot":"","file":"VSlideGroup.js"}
|