UNPKG

tdesign-mobile-vue

Version:
1 lines 42.1 kB
{"version":3,"file":"slider.mjs","sources":["../../src/slider/slider.tsx"],"sourcesContent":["import { ref, toRefs, computed, reactive, defineComponent, watch, onMounted } from 'vue';\nimport { isFunction } from 'lodash-es';\nimport { useIntersectionObserver } from '@vueuse/core';\nimport config from '../config';\nimport props from './props';\nimport useVModel from '../hooks/useVModel';\nimport { trimSingleValue, trimValue } from './tool';\nimport type { SliderValue } from './type';\nimport { useFormDisabled } from '../form/hooks';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst { prefix } = config;\n\ntype dataType = {\n initialLeft: number;\n initialRight: number;\n maxRange: number;\n lineLeft: number;\n lineRight: number;\n dotTopValue: number[];\n blockSize: number;\n isScale: boolean;\n scaleArray: any[];\n scaleTextArray: any[];\n};\n\nexport interface TouchData {\n startValue: number;\n newValue: number;\n startX: number;\n deltaX: number;\n offsetX: number;\n}\n\nexport default defineComponent({\n name: `${prefix}-slider`,\n props,\n setup(props) {\n const sliderClass = usePrefixClass('slider');\n const isDisabled = useFormDisabled();\n const sliderLine = ref<HTMLElement>();\n const leftDot = ref<HTMLElement>();\n const rightDot = ref<HTMLElement>();\n const state: dataType = reactive({\n initialLeft: 0,\n initialRight: 0,\n maxRange: 0,\n lineLeft: 0,\n lineRight: 0,\n dotTopValue: [0, 0],\n blockSize: 20,\n isScale: false,\n scaleArray: [],\n scaleTextArray: [],\n });\n const defaultValue = props.defaultValue || props.min;\n const { value, modelValue } = toRefs(props);\n const [innerValue, setInnerValue] = useVModel(value, modelValue, defaultValue, props.onChange);\n const scope = computed(() => Number(props.max) - Number(props.min));\n\n const getDelta = (e: MouseEvent | Touch) => {\n const line = sliderLine.value?.getBoundingClientRect() as DOMRect;\n const halfBlock = Number(state.blockSize) / 2;\n const result = props.vertical ? e.clientY - line.top : e.clientX - line.left;\n if (props.theme === 'capsule') {\n return result - halfBlock;\n }\n return result;\n };\n\n watch(\n () => innerValue.value,\n (val) => {\n if (props.range && Array.isArray(val)) {\n const left = (state.maxRange * ((val as number[])[0] - props.min)) / scope.value;\n const right = (state.maxRange * (props.max - (val as number[])[1])) / scope.value;\n // 因为要计算点相对于线的绝对定位,所以要取整条线的长度而非可滑动的范围\n setLineStyle(left, right);\n } else {\n setSingleBarWidth(val as number);\n }\n },\n );\n\n watch(\n () => props.marks,\n (val) => {\n handleMask(val);\n },\n );\n\n const rootRef = ref<HTMLDivElement>();\n\n const classes = computed(() => [\n `${sliderClass.value}`,\n {\n [`${sliderClass.value}--top`]: props.label || state.scaleTextArray.length,\n [`${sliderClass.value}--disabled`]: isDisabled.value,\n [`${sliderClass.value}--range`]: props.range,\n [`${sliderClass.value}--vertical`]: props.vertical,\n },\n ]);\n\n const sliderLineClasses = computed(() => [\n `${sliderClass.value}__bar`,\n `${sliderClass.value}__bar--${props.theme}`,\n {\n [`${sliderClass.value}__bar--disabled`]: isDisabled.value,\n [`${sliderClass.value}__bar--marks`]: state.isScale && props.theme === 'capsule',\n },\n ]);\n\n const precision = computed(() => {\n const precisions = [props.min, props.max, props.step].map((item) => {\n const decimalArr = `${item}`.split('.');\n return decimalArr[1] ? decimalArr[1].length : 0;\n });\n return Math.max.apply(null, precisions);\n });\n\n const lineBarWidth = ref<number>();\n const setSingleBarWidth = (value: number) => {\n const halfBlock = props.theme === 'capsule' ? Number(state.blockSize) / 2 : 0;\n const percentage = (Number(value) - props.min) / scope.value;\n lineBarWidth.value = percentage * state.maxRange + halfBlock;\n };\n\n const setLineStyle = (left: number, right: number) => {\n const halfBlock = (props.theme as string) === 'capsule' ? Number(state.blockSize) / 2 : 0;\n const [a, b] = innerValue.value as any;\n const cut = (v: any) => parseInt(v, 10);\n\n state.dotTopValue = [a, b];\n\n if (left + right <= state.maxRange) {\n state.lineLeft = cut(left + halfBlock);\n state.lineRight = cut(right + halfBlock);\n } else {\n state.lineLeft = cut(state.maxRange + halfBlock - right);\n state.lineRight = cut(state.maxRange - left + halfBlock * 1.5);\n }\n };\n\n const getInitialStyle = () => {\n const line = sliderLine.value?.getBoundingClientRect() as DOMRect;\n\n const { left, right, bottom, top } = line;\n const halfBlock = Number(state.blockSize) / 2;\n const maxRange = props.vertical ? bottom - top : right - left;\n\n state.maxRange = maxRange;\n state.initialLeft = props.vertical ? top : left;\n state.initialRight = props.vertical ? bottom : right;\n\n if (props.theme === 'capsule') {\n state.maxRange = maxRange - Number(state.blockSize) - 6; // 6 是边框宽度\n state.initialLeft -= halfBlock;\n state.initialRight -= halfBlock;\n }\n };\n\n const onTouchEnd = (e: TouchEvent) => {\n props.onDragend?.(innerValue.value, { e });\n };\n\n const onTouchStart = (e: TouchEvent) => {\n props.onDragstart?.({ e });\n };\n\n const onSingleDotMove = (e: TouchEvent) => {\n if (isDisabled.value) return;\n e.preventDefault();\n const [touch] = e.changedTouches;\n const currentLeft = getDelta(touch);\n const value = convertPosToValue(currentLeft);\n changeValue(calcByStep(value));\n };\n\n const changeValue = (value: SliderValue) => {\n setInnerValue(trimValue(value, props));\n };\n\n const calcByStep = (value: number): number => {\n if (props.step < 0 || props.step > scope.value) return Number(parseFloat(`${value}`).toFixed(precision.value));\n const closestStep = trimSingleValue(Math.round(value / props.step) * props.step, props.min, props.max);\n\n return Number(parseFloat(`${closestStep}`).toFixed(precision.value));\n };\n\n const getValue = (label: any, value: any) => {\n const REGEXP = /[$][{value}]{7}/;\n if (isFunction(label)) return label(value);\n if (label && label === 'true') return value;\n if (REGEXP.test(label)) return label.replace(REGEXP, value);\n };\n\n const handleMask = (marks: any) => {\n const calcPos = (arr: number[]) => {\n const margin = (props.theme as any) === 'capsule' ? state.blockSize / 2 : 0;\n return arr.map((item) => ({\n val: item,\n left: Math.round(((item - props.min) / scope.value) * state.maxRange) + margin,\n }));\n };\n if (marks?.length && Array.isArray(marks)) {\n state.isScale = true;\n state.scaleArray = calcPos(marks);\n state.scaleTextArray = [];\n }\n\n if (Object.prototype.toString.call(marks) === '[object Object]') {\n const scaleArray = Object.keys(marks).map((item) => Number(item));\n const scaleTextArray = scaleArray.map((item) => (isFunction(marks[item]) ? marks[item](item) : marks[item]));\n state.isScale = scaleArray.length > 0;\n state.scaleArray = calcPos(scaleArray);\n state.scaleTextArray = scaleTextArray;\n }\n };\n\n const convertPosToValue = (posValue: number, isLeft = true) => {\n const raw = isLeft\n ? (posValue / state.maxRange) * scope.value + props.min\n : props.max - (posValue / state.maxRange) * scope.value;\n\n return raw;\n };\n\n const onTouchMoveLeft = (e: TouchEvent) => {\n if (isDisabled.value) return;\n e.preventDefault();\n const [touch] = e.changedTouches;\n\n const currentLeft = getDelta(touch);\n\n const newData = [...(innerValue.value as number[])];\n const leftValue = convertPosToValue(currentLeft);\n newData[0] = calcByStep(leftValue);\n changeValue(newData);\n };\n\n const onTouchMoveRight = (e: TouchEvent) => {\n if (isDisabled.value) return;\n e.preventDefault();\n const [touch] = e.changedTouches;\n const currentRight = getDelta(touch);\n\n const newData = [...(innerValue.value as number[])];\n const rightValue = convertPosToValue(currentRight);\n newData[1] = calcByStep(rightValue);\n changeValue(newData);\n };\n\n const handleSingleClick = (e: MouseEvent) => {\n e.stopPropagation();\n if (isDisabled.value) return;\n if (!sliderLine.value) return;\n const currentLeft = getDelta(e);\n const value = convertPosToValue(currentLeft);\n changeValue(calcByStep(value));\n };\n\n const handleRangeClick = (e: MouseEvent) => {\n e.stopPropagation();\n if (isDisabled.value) return;\n const halfBlock = props.theme === 'capsule' ? Number(state.blockSize) / 2 : 0;\n const currentLeft = getDelta(e);\n if (currentLeft < 0 || currentLeft > state.maxRange + Number(state.blockSize)) return;\n\n const leftDotValue = leftDot.value?.getBoundingClientRect() as DOMRect;\n const rightDotValue = rightDot.value?.getBoundingClientRect() as DOMRect;\n // 点击处-halfblock 与 leftDot左侧的距离(绝对值)\n const distanceLeft = Math.abs(\n (props.vertical ? e.clientY - leftDotValue.top : e.clientX - leftDotValue.left) - halfBlock,\n );\n // 点击处-halfblock 与 rightDot左侧的距离(绝对值)\n const distanceRight = Math.abs(\n (props.vertical ? rightDotValue.top - e.clientY : rightDotValue.left - e.clientX) + halfBlock,\n );\n // 哪个绝对值小就移动哪个Dot\n const isMoveLeft = distanceLeft < distanceRight;\n\n if (isMoveLeft) {\n // 当前leftdot中心 + 左侧偏移量 = 目标左侧中心距离\n const left = getDelta(e);\n const leftValue = convertPosToValue(left);\n changeValue([calcByStep(leftValue), (innerValue.value as number[])?.[1]]);\n } else {\n const right = getDelta(e);\n const rightValue = convertPosToValue(right);\n changeValue([(innerValue.value as number[])?.[0], calcByStep(rightValue)]);\n }\n };\n\n onMounted(() => {\n init();\n });\n\n const { stop } = useIntersectionObserver(rootRef, ([{ isIntersecting }], observerElement) => {\n if (isIntersecting) {\n stop();\n init();\n }\n });\n\n const init = () => {\n getInitialStyle();\n\n if (props.range) {\n const left = (state.maxRange * ((innerValue.value as number[])?.[0] ?? 0 - props.min)) / scope.value;\n const right = (state.maxRange * (props.max - (innerValue.value as number[])[1])) / scope.value;\n // 因为要计算点相对于线的绝对定位,所以要取整条线的长度而非可滑动的范围\n setLineStyle(left, right);\n } else {\n setSingleBarWidth(innerValue.value as number);\n }\n if (props.marks) {\n handleMask(props.marks);\n }\n };\n\n const renderMinText = () => {\n if (!props.showExtremeValue) {\n return null;\n }\n const textClass = {\n [`${sliderClass.value}__value`]: !props.range,\n [`${sliderClass.value}__value--min`]: !props.range,\n [`${sliderClass.value}__range-extreme`]: props.range,\n [`${sliderClass.value}__range-extreme--min`]: props.range,\n };\n if (props.range) {\n return <text class={textClass}>{props.min}</text>;\n }\n return <text class={textClass}>{props.label ? getValue(props.label, props.min) : props.min}</text>;\n };\n const renderMaxText = () => {\n if (!props.showExtremeValue) {\n return null;\n }\n const textClass = {\n [`${sliderClass.value}__value`]: !props.range,\n [`${sliderClass.value}__value--max`]: !props.range,\n [`${sliderClass.value}__range-extreme`]: props.range,\n [`${sliderClass.value}__range-extreme--max`]: props.range,\n };\n\n if (props.range) {\n return <text class={textClass}>{props.max}</text>;\n }\n return <text class={textClass}>{props.label ? getValue(props.label, props.max) : props.max}</text>;\n };\n\n const renderScale = () => {\n if (!state.isScale) {\n return null;\n }\n return state.scaleArray.map((item, index) => {\n const scaleStyle = props.vertical\n ? `top: ${item.left}px; transform: translate(-50%, -50%);`\n : `left: ${item.left}px; transform: translateX(-50%);`;\n\n return (\n <div\n style={scaleStyle}\n class={[\n `${sliderClass.value}__scale-item`,\n `${sliderClass.value}__scale-item--${props.theme}`,\n {\n [`${sliderClass.value}__scale-item--active`]: !props.range && Number(innerValue.value) >= item.val,\n [`${sliderClass.value}__scale-item--active`]:\n props.range && state.dotTopValue[1] >= item.val && item.val >= state.dotTopValue[0],\n [`${sliderClass.value}__scale-item--disabled`]: isDisabled.value,\n [`${sliderClass.value}__scale-item--hidden`]:\n ((index === 0 || index === state.scaleArray.length - 1) && props.theme === 'capsule') ||\n innerValue.value === item.val,\n },\n ]}\n >\n {state.scaleTextArray.length && (\n <div class={[`${sliderClass.value}__scale-desc`, `${sliderClass.value}__scale-desc--${props.theme}`]}>\n {state.scaleTextArray[index]}\n </div>\n )}\n </div>\n );\n });\n };\n const renderLineSingle = () => {\n return (\n <div\n class={[\n `${sliderClass.value}__line`,\n `${sliderClass.value}__line--${props.theme}`,\n `${sliderClass.value}__line--single`,\n { [`${sliderClass.value}__line--disabled`]: isDisabled.value },\n ]}\n style={`${props.vertical ? 'height' : 'width'}: ${lineBarWidth.value}px`}\n >\n <div\n ref=\"singleDot\"\n class={`${sliderClass.value}__dot`}\n onTouchstart={onTouchStart}\n onTouchmove={onSingleDotMove}\n onTouchend={onTouchEnd}\n onTouchcancel={onTouchEnd}\n >\n {props.label && (\n <div\n class={[\n `${sliderClass.value}__dot-value`,\n { [`${sliderClass.value}__dot-value--sr-only`]: !props.label },\n ]}\n >\n {getValue(props.label, innerValue.value) || innerValue.value}\n </div>\n )}\n <div class={`${sliderClass.value}__dot-slider`}></div>\n </div>\n </div>\n );\n };\n const renderLineRange = () => {\n const lineStyle = props.vertical\n ? `top: ${state.lineLeft}px; bottom: ${state.lineRight}px`\n : `left: ${state.lineLeft}px; right: ${state.lineRight}px`;\n\n return (\n <div\n class={[\n `${sliderClass.value}__line`,\n `${sliderClass.value}__line--${props.theme}`,\n { [`${sliderClass.value}__line--disabled`]: isDisabled.value },\n ]}\n style={lineStyle}\n >\n <div\n ref={leftDot}\n class={[`${sliderClass.value}__dot`, `${sliderClass.value}__dot--left`]}\n onTouchstart={onTouchStart}\n onTouchmove={onTouchMoveLeft}\n onTouchend={onTouchEnd}\n onTouchcancel={onTouchEnd}\n >\n {props.label && (\n <div\n class={[\n `${sliderClass.value}__dot-value`,\n { [`${sliderClass.value}__dot-value--sr-only`]: !props.label },\n ]}\n >\n {getValue(props.label, state.dotTopValue[0]) || state.dotTopValue[0]}\n </div>\n )}\n <div class={`${sliderClass.value}__dot-slider`}></div>\n </div>\n <div\n ref={rightDot}\n class={[`${sliderClass.value}__dot`, `${sliderClass.value}__dot--right`]}\n onTouchstart={onTouchStart}\n onTouchmove={onTouchMoveRight}\n onTouchend={onTouchEnd}\n onTouchcancel={onTouchEnd}\n >\n {props.label && (\n <div\n class={[\n `${sliderClass.value}__dot-value`,\n { [`${sliderClass.value}__dot-value--sr-only`]: !props.label },\n ]}\n >\n {getValue(props.label, state.dotTopValue[1]) || state.dotTopValue[1]}\n </div>\n )}\n <div class={`${sliderClass.value}__dot-slider`}></div>\n </div>\n </div>\n );\n };\n\n return () => {\n return (\n <div ref={rootRef} class={classes.value}>\n {renderMinText()}\n <div\n ref={sliderLine}\n class={sliderLineClasses.value}\n onClick={props.range ? handleRangeClick : handleSingleClick}\n >\n {renderScale()}\n {props.range ? renderLineRange() : renderLineSingle()}\n </div>\n {renderMaxText()}\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","setup","sliderClass","usePrefixClass","isDisabled","useFormDisabled","sliderLine","ref","leftDot","rightDot","state","reactive","initialLeft","initialRight","maxRange","lineLeft","lineRight","dotTopValue","blockSize","isScale","scaleArray","scaleTextArray","defaultValue","min","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","onChange","_useVModel2","_slicedToArray","innerValue","setInnerValue","scope","computed","Number","max","getDelta","e","_sliderLine$value","line","getBoundingClientRect","halfBlock","result","vertical","clientY","top","clientX","left","theme","watch","val","range","Array","isArray","right","setLineStyle","setSingleBarWidth","marks","handleMask","rootRef","classes","concat","_defineProperty","label","length","sliderLineClasses","precision","precisions","step","map","item","decimalArr","split","Math","apply","lineBarWidth","percentage","_innerValue$value","a","b","cut","v","parseInt","getInitialStyle","_sliderLine$value2","bottom","onTouchEnd","_props2$onDragend","onDragend","onTouchStart","_props2$onDragstart","onDragstart","onSingleDotMove","preventDefault","_e$changedTouches","changedTouches","touch","currentLeft","convertPosToValue","changeValue","calcByStep","trimValue","parseFloat","toFixed","closestStep","trimSingleValue","round","getValue","REGEXP","isFunction","test","replace","calcPos","arr","margin","Object","prototype","toString","call","keys","posValue","isLeft","arguments","undefined","raw","onTouchMoveLeft","_e$changedTouches2","newData","_toConsumableArray","leftValue","onTouchMoveRight","_e$changedTouches3","currentRight","rightValue","handleSingleClick","stopPropagation","handleRangeClick","_leftDot$value","_rightDot$value","leftDotValue","rightDotValue","distanceLeft","abs","distanceRight","isMoveLeft","_innerValue$value2","_innerValue$value3","onMounted","init","_useIntersectionObser","useIntersectionObserver","_ref3","observerElement","_ref4","isIntersecting","stop","_innerValue$value$","_innerValue$value4","renderMinText","showExtremeValue","textClass","_createVNode","renderMaxText","renderScale","index","scaleStyle","renderLineSingle","renderLineRange","lineStyle"],"mappings":"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"}