tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 37.7 kB
Source Map (JSON)
{"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/isFunction';\nimport { useIntersectionObserver } from '@vueuse/core';\nimport config from '../config';\nimport props from './props';\nimport { useVModel } from '../shared/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 watch(\n () => innerValue.value,\n (val) => {\n if (props.range) {\n const left = (state.maxRange * (val[0] - props.min)) / scope.value;\n const right = (state.maxRange * (props.max - val[1])) / scope.value;\n // 因为要计算点相对于线的绝对定位,所以要取整条线的长度而非可滑动的范围\n setLineStyle(left, right);\n } else {\n setSingleBarWidth(val as number);\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 },\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 const halfBlock = Number(state.blockSize) / 2;\n const maxRange = line.right - line.left;\n\n state.maxRange = maxRange;\n state.initialLeft = line.left;\n state.initialRight = line.right;\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 = () => {};\n\n const onSingleDotMove = (e: TouchEvent) => {\n if (isDisabled.value) return;\n const [{ pageX }] = e.changedTouches;\n const value = convertPosToValue(pageX - state.initialLeft);\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) => 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 const [{ pageX }] = e.changedTouches;\n const currentLeft = pageX - state.initialLeft;\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 const [{ pageX }] = e.changedTouches;\n const currentRight = -(pageX - state.initialRight);\n const newData = [...(innerValue.value as number[])];\n const rightValue = convertPosToValue(currentRight, false);\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 = e.clientX - state.initialLeft;\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 = e.clientX - state.initialLeft;\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(e.clientX - leftDotValue.left - halfBlock);\n // 点击处-halfblock 与 rightDot左侧的距离(绝对值)\n const distanceRight = Math.abs(rightDotValue.left - e.clientX + halfBlock);\n // 哪个绝对值小就移动哪个Dot\n const isMoveLeft = distanceLeft < distanceRight;\n\n if (isMoveLeft) {\n // 当前leftdot中心 + 左侧偏移量 = 目标左侧中心距离\n const left = e.clientX - state.initialLeft;\n const leftValue = convertPosToValue(left);\n changeValue([calcByStep(leftValue), innerValue.value?.[1]]);\n } else {\n const right = -(e.clientX - state.initialRight);\n const rightValue = convertPosToValue(right, false);\n changeValue([innerValue.value?.[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?.[0] ?? 0 - props.min)) / scope.value;\n const right = (state.maxRange * (props.max - innerValue.value[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 readerMinText = () => {\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 readerMaxText = () => {\n if (!props.showExtremeValue) {\n return null;\n }\n const textClass = [`${sliderClass.value}__value`, `${sliderClass.value}__value--max`];\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 readerScale = () => {\n if (!state.isScale) {\n return null;\n }\n return state.scaleArray.map((item, index) => {\n return (\n <div\n style={`left: ${item.left}px; transform: translateX(-50%);`}\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 readerLineSingle = () => {\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={`width: ${lineBarWidth.value}px`}\n >\n <div\n ref=\"singleDot\"\n class={`${sliderClass.value}__dot`}\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 readerLineRange = () => {\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={`left: ${state.lineLeft}px; right: ${state.lineRight}px`}\n >\n <div\n ref={leftDot}\n class={[`${sliderClass.value}__dot`, `${sliderClass.value}__dot--left`]}\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 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 {readerMinText()}\n <div\n ref={sliderLine}\n class={sliderLineClasses.value}\n onClick={props.range ? handleRangeClick : handleSingleClick}\n >\n {readerScale()}\n {props.range ? readerLineRange() : readerLineSingle()}\n </div>\n {readerMaxText()}\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","watch","val","range","left","right","setLineStyle","setSingleBarWidth","rootRef","classes","concat","_defineProperty","label","length","sliderLineClasses","theme","precision","precisions","step","map","item","decimalArr","split","Math","apply","lineBarWidth","halfBlock","percentage","_innerValue$value","a","b","cut","v","parseInt","getInitialStyle","_sliderLine$value","line","getBoundingClientRect","onTouchEnd","onSingleDotMove","e","_e$changedTouches","changedTouches","pageX","convertPosToValue","changeValue","calcByStep","trimValue","parseFloat","toFixed","closestStep","trimSingleValue","round","getValue","REGEXP","isFunction","test","replace","handleMask","marks","calcPos","arr","margin","Array","isArray","Object","prototype","toString","call","keys","posValue","isLeft","arguments","undefined","raw","onTouchMoveLeft","_e$changedTouches2","currentLeft","newData","_toConsumableArray","leftValue","onTouchMoveRight","_e$changedTouches3","currentRight","rightValue","handleSingleClick","stopPropagation","clientX","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","readerMinText","showExtremeValue","textClass","_createVNode","readerMaxText","readerScale","index","readerLineSingle","readerLineRange"],"mappings":"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"}