tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 34.6 kB
Source Map (JSON)
{"version":3,"file":"slider.mjs","sources":["../../../components/slider/slider.tsx"],"sourcesContent":["import {\n defineComponent,\n VNode,\n ref,\n reactive,\n provide,\n computed,\n onBeforeUnmount,\n onMounted,\n watch,\n toRefs,\n} from 'vue';\nimport { isNumber } from 'lodash-es';\nimport { isArray } from 'lodash-es';\nimport props from './props';\nimport TSliderButton from './slider-button';\nimport { SliderValue } from './type';\n\n// hooks\nimport { usePrefixClass, useCommonClassName } from '../hooks/useConfig';\nimport { useSliderMark } from './hooks/useSliderMark';\nimport { useSliderInput } from './hooks/useSliderInput';\nimport { formatSliderValue, getStopStyle } from './utils';\nimport { sliderPropsInjectKey } from './consts';\nimport useVModel from '../hooks/useVModel';\nimport { useDisabled } from '../hooks/useDisabled';\n\ninterface SliderButtonType {\n setPosition: (param: number) => {};\n}\nexport default defineComponent({\n name: 'TSlider',\n model: {\n prop: 'value',\n event: 'change',\n },\n props,\n setup(props) {\n const disabled = useDisabled();\n const COMPONENT_NAME = usePrefixClass('slider');\n const { STATUS } = useCommonClassName();\n const { value, modelValue } = toRefs(props) as any;\n const [sliderValue, setSliderValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n\n const sliderContainerRef = ref<HTMLDivElement>();\n const sliderRef = ref<HTMLDivElement>();\n const firstButtonRef = ref<SliderButtonType>();\n const secondButtonRef = ref<SliderButtonType>();\n\n const firstValue = ref(formatSliderValue(sliderValue.value, 'first'));\n const secondValue = ref(formatSliderValue(sliderValue.value, 'second'));\n const dragging = ref(false);\n const sliderSize = ref(1);\n\n const vertical = computed(() => {\n return props.layout === 'vertical';\n });\n\n /** ----------------- 样式计算 start ------------- */\n const containerClass = computed(() => [`${COMPONENT_NAME.value}__container`, { 'is-vertical': vertical.value }]);\n const sliderClass = computed(() => {\n return [\n `${COMPONENT_NAME.value}`,\n {\n 'is-vertical': vertical.value,\n [`${COMPONENT_NAME.value}--with-input`]: props.inputNumberProps,\n [`${COMPONENT_NAME.value}--vertical`]: vertical.value,\n [STATUS.value.disabled]: disabled.value,\n },\n ];\n });\n const sliderRailClass = computed(() => [\n `${COMPONENT_NAME.value}__rail`,\n { 'show-input': props.inputNumberProps, disabled: disabled.value },\n ]);\n const runwayStyle = computed(() => {\n return vertical.value ? { height: '100%' } : {};\n });\n const barStyle = computed(() => {\n const barStart = props.range ? `${(100 * (minValue.value - props.min)) / rangeDiff.value}%` : '0%';\n const currentDiff = props.range ? maxValue.value - minValue.value : firstValue.value - props.min;\n const barSize = `${(100 * currentDiff) / rangeDiff.value}%`;\n return vertical.value\n ? {\n height: barSize,\n bottom: barStart,\n }\n : {\n width: barSize,\n left: barStart,\n };\n });\n /** ----------------- 样式计算 end ------------- */\n\n // 差值范围\n const rangeDiff = computed(() => {\n return props.max - props.min;\n });\n const minValue = computed(() => {\n return Math.min(firstValue.value, secondValue.value);\n });\n const maxValue = computed(() => {\n return Math.max(firstValue.value, secondValue.value);\n });\n const steps = computed(() => {\n if (!props.showStep || props.min > props.max) return [];\n if (props.step === 0) {\n console.warn('[Element Warn][Slider]step should not be 0.');\n return [];\n }\n const stepCount = rangeDiff.value / props.step;\n const stepWidth = (100 * props.step) / rangeDiff.value;\n const result = [];\n for (let i = 1; i < stepCount; i++) {\n result.push(i * stepWidth);\n }\n if (props.range) {\n const r = result.filter(\n (step) =>\n step < (100 * (minValue.value - props.min)) / rangeDiff.value ||\n props.step > (100 * (maxValue.value - props.max)) / rangeDiff.value,\n );\n return r;\n }\n return result.filter((step) => step > (100 * (firstValue.value - props.min)) / rangeDiff.value);\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 setValues = (value: SliderValue): SliderValue => {\n const [min, max] = [props.min, props.max];\n if (min > max) {\n console.warn('[Slider] max should be greater than min.');\n return;\n }\n // 双向滑块\n if (props.range && isArray(value)) {\n let [maxLimit, minLimit] = [Math.min(...value), Math.max(...value)];\n if (maxLimit > max) {\n maxLimit = firstValue.value;\n }\n if (maxLimit < min) {\n maxLimit = min;\n }\n if (minLimit < min) {\n minLimit = secondValue.value;\n }\n if (minLimit > max) {\n minLimit = max;\n }\n [firstValue.value, secondValue.value] = [maxLimit, minLimit];\n return [maxLimit, minLimit];\n }\n let preValue = value as number;\n if (preValue < min) {\n preValue = min;\n }\n if (preValue > max) {\n preValue = max;\n }\n return preValue;\n };\n // 只要触发修改就要有这个方法抛出change事件\n const emitChange = (value: SliderValue) => {\n let changeValue = value;\n if (changeValue === undefined) {\n if (props.range) {\n changeValue = [firstValue.value, secondValue.value];\n } else {\n changeValue = firstValue.value;\n }\n }\n const fixValue: SliderValue = setValues(changeValue);\n setSliderValue(fixValue);\n };\n\n const resetSize = () => {\n if (sliderRef.value) {\n sliderSize.value = sliderRef.value[`client${vertical.value ? 'Height' : 'Width'}`];\n }\n };\n\n // 是否以完成挂载(部分组合组件如inputNumber依赖于首次init后的状态值进行渲染)\n const isAlreadyMount = ref(false);\n // 初始化传入的value\n const init = () => {\n let valuetext: string | number;\n if (props.range) {\n if (isArray(sliderValue.value)) {\n firstValue.value = Math.max(props.min || 0, sliderValue.value[0]);\n secondValue.value = Math.min(props.max || 100, sliderValue.value[1]);\n } else {\n firstValue.value = props.min || 0;\n secondValue.value = props.max || 100;\n }\n valuetext = `${firstValue.value}-${secondValue.value}`;\n } else {\n if (!isNumber(sliderValue.value)) {\n firstValue.value = props.min;\n } else {\n firstValue.value = Math.min(props.max, Math.max(props.min, sliderValue.value as number));\n }\n valuetext = String(firstValue.value);\n }\n if (sliderContainerRef.value) {\n sliderContainerRef.value.setAttribute('aria-valuetext', valuetext);\n }\n resetSize();\n window.addEventListener('resize', resetSize);\n };\n // 相应button的位置\n const setPosition = (percent: number): void => {\n let targetValue = (percent * rangeDiff.value) / 100;\n targetValue = props.min + targetValue;\n if (!props.range && firstButtonRef.value) {\n firstButtonRef.value.setPosition(percent);\n return;\n }\n let button;\n if (Math.abs(minValue.value - targetValue) < Math.abs(maxValue.value - targetValue)) {\n button = firstValue.value < secondValue.value ? 'button1' : 'button2';\n } else {\n button = firstValue.value > secondValue.value ? 'button1' : 'button2';\n }\n if (button === 'button1' && firstButtonRef.value) {\n firstButtonRef.value.setPosition(percent);\n }\n if (button === 'button2' && secondButtonRef.value) {\n secondButtonRef.value.setPosition(percent);\n }\n };\n\n const getFixValue = () => {\n const changeValue = props.range ? [firstValue.value, secondValue.value] : firstValue.value;\n return setValues(changeValue);\n };\n\n // 全局点击\n const onSliderClick = (event: MouseEvent): void => {\n if (disabled.value || dragging.value) {\n return;\n }\n if (!sliderRef.value) return;\n resetSize();\n let value = 0;\n if (vertical.value) {\n const sliderOffsetBottom = sliderRef.value.getBoundingClientRect().bottom;\n value = ((sliderOffsetBottom - event.clientY) / sliderSize.value) * 100;\n setPosition(value);\n } else {\n const sliderOffsetLeft = sliderRef.value.getBoundingClientRect().left;\n value = ((event.clientX - sliderOffsetLeft) / sliderSize.value) * 100;\n setPosition(value);\n }\n const fixValue = getFixValue();\n props.onChangeEnd?.(fixValue);\n };\n\n // mark 点击触发修改事件\n const changeValue = (point: number) => {\n if (disabled.value || dragging.value) {\n return;\n }\n resetSize();\n const value = Number((point / rangeDiff.value) * 100);\n setPosition(value);\n emitChange(point);\n const fixValue = getFixValue();\n props.onChangeEnd?.(fixValue);\n };\n\n /** 副作用监听 */\n watch(\n () => sliderValue.value,\n (newVal) => {\n if (dragging.value === true) return;\n if (isArray(newVal) && props.range) {\n [firstValue.value, secondValue.value] = newVal;\n } else {\n firstValue.value = newVal as number;\n }\n },\n );\n\n watch([firstValue, secondValue, dragging], (newStates, prevStates) => {\n if (newStates[0] !== prevStates[0]) {\n if (props.range) {\n emitChange([minValue.value, maxValue.value]);\n } else {\n emitChange(firstValue.value);\n }\n }\n if (newStates[1] !== prevStates[1]) {\n if (props.range) {\n emitChange([minValue.value, maxValue.value]);\n }\n }\n if (newStates[2] !== prevStates[2] && newStates[2] === false) {\n init();\n }\n });\n\n /** 挂载&卸载 */\n onMounted(() => {\n init();\n isAlreadyMount.value = true;\n });\n onBeforeUnmount(() => {\n window.removeEventListener('resize', resetSize);\n });\n\n /** -------------------------- 渲染相关逻辑 start -------------------------- */\n const markConfig = computed(() => ({\n max: props.max,\n min: props.min,\n marks: props.marks,\n vertical: vertical.value,\n prefixName: COMPONENT_NAME.value,\n }));\n const renderMask = useSliderMark(markConfig);\n\n const inputConfig = computed(() => ({\n max: props.max,\n min: props.min,\n inputNumberProps: props.inputNumberProps,\n step: props.step,\n prefixName: COMPONENT_NAME.value,\n vertical: vertical.value,\n disabled: disabled.value,\n }));\n const renderInputNumber = useSliderInput(inputConfig);\n\n const renderInputButton = (): VNode => {\n const firstInputVal = setValues(firstValue.value) as number;\n const firstInputOnChange = (v: number) => {\n firstValue.value = setValues(v) as number;\n };\n const secondInputVal = setValues(secondValue.value) as number;\n const secondInputOnChange = (v: number) => {\n secondValue.value = setValues(v) as number;\n };\n return (\n <div\n class={[\n `${COMPONENT_NAME.value}__input-container`,\n {\n 'is-vertical': vertical.value,\n },\n ]}\n >\n {renderInputNumber(firstInputVal, firstInputOnChange)}\n {props.range && <div class={`${COMPONENT_NAME.value}__center-line`} />}\n {props.range && renderInputNumber(secondInputVal, secondInputOnChange)}\n </div>\n );\n };\n /** -------------------------- 渲染相关逻辑 end -------------------------- */\n\n /** 父子共用状态&方法 */\n const toggleDragging = (toState: boolean) => {\n dragging.value = toState;\n };\n\n const { min, max, step } = toRefs(props);\n provide(\n sliderPropsInjectKey,\n reactive({\n min,\n max,\n step,\n dragging,\n toggleDragging,\n precision,\n disabled,\n resetSize,\n sliderSize,\n }),\n );\n\n return () => (\n <div class={containerClass.value} ref={sliderContainerRef}>\n <div\n class={sliderClass.value}\n role=\"slider\"\n aria-valuemin={props.min}\n aria-valuemax={props.max}\n aria-orientation={props.layout}\n aria-disabled={disabled.value}\n tooltip-props={props.tooltipProps}\n >\n <div class={sliderRailClass.value} style={runwayStyle.value} onClick={onSliderClick} ref={sliderRef}>\n <div class={`${COMPONENT_NAME.value}__track`} style={barStyle.value} />\n <TSliderButton\n vertical={vertical.value}\n value={firstValue.value}\n ref={firstButtonRef}\n disabled={disabled.value}\n range={props.range}\n position=\"start\"\n tooltip-props={props.tooltipProps}\n label={props.label}\n onInput={(v: number) => {\n firstValue.value = v;\n }}\n onMouseup={() => {\n const fixValue = getFixValue();\n props.onChangeEnd?.(fixValue);\n }}\n />\n {props.range && (\n <TSliderButton\n vertical={vertical.value}\n value={secondValue.value}\n ref={secondButtonRef}\n disabled={disabled.value}\n label={props.label}\n range={props.range}\n position=\"end\"\n tooltip-props={props.tooltipProps}\n onInput={(v: number) => {\n secondValue.value = v;\n }}\n onMouseup={() => {\n const fixValue = getFixValue();\n props.onChangeEnd?.(fixValue);\n }}\n />\n )}\n {props.showStep && (\n <div class={`${COMPONENT_NAME.value}__stops`}>\n {steps.value.map((item: any, key) => {\n if (item.position === 0 || item.position === 100) return null;\n return (\n <div class={`${COMPONENT_NAME.value}__stop`} key={key} style={getStopStyle(item, vertical.value)} />\n );\n })}\n </div>\n )}\n {renderMask(changeValue)}\n </div>\n </div>\n {isAlreadyMount.value && props.inputNumberProps && renderInputButton()}\n </div>\n );\n },\n});\n"],"names":["defineComponent","name","model","prop","event","props","setup","disabled","useDisabled","COMPONENT_NAME","usePrefixClass","_useCommonClassName","useCommonClassName","STATUS","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","sliderValue","setSliderValue","sliderContainerRef","ref","sliderRef","firstButtonRef","secondButtonRef","firstValue","formatSliderValue","secondValue","dragging","sliderSize","vertical","computed","layout","containerClass","concat","sliderClass","_defineProperty","inputNumberProps","sliderRailClass","runwayStyle","height","barStyle","barStart","range","minValue","min","rangeDiff","currentDiff","maxValue","barSize","bottom","width","left","max","Math","steps","showStep","step","console","warn","stepCount","stepWidth","result","i","push","r","filter","precision","precisions","map","item","decimalArr","split","length","apply","setValues","_ref2","isArray","_ref3","_toConsumableArray","maxLimit","minLimit","_ref4","preValue","emitChange","changeValue","fixValue","resetSize","isAlreadyMount","init","valuetext","isNumber","String","setAttribute","window","addEventListener","setPosition","percent","targetValue","button","abs","getFixValue","onSliderClick","_props2$onChangeEnd","sliderOffsetBottom","getBoundingClientRect","clientY","sliderOffsetLeft","clientX","onChangeEnd","point","_props2$onChangeEnd2","Number","watch","newVal","_newVal","newStates","prevStates","onMounted","onBeforeUnmount","removeEventListener","markConfig","marks","prefixName","renderMask","useSliderMark","inputConfig","renderInputNumber","useSliderInput","renderInputButton","firstInputVal","firstInputOnChange","v","secondInputVal","secondInputOnChange","_createVNode","toggleDragging","toState","_toRefs2","provide","sliderPropsInjectKey","reactive","tooltipProps","TSliderButton","label","onInput","onMouseup","_props2$onChangeEnd3","_props2$onChangeEnd4","key","position","getStopStyle"],"mappings":"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"}