tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 12.7 kB
Source Map (JSON)
{"version":3,"file":"stepper.mjs","sources":["../../src/stepper/stepper.tsx"],"sourcesContent":["import { toRefs, computed, defineComponent } from 'vue';\nimport { AddIcon, RemoveIcon } from 'tdesign-icons-vue-next';\nimport config from '../config';\nimport props from './props';\nimport { useDefault, formatNumber } from '../shared';\nimport { TdStepperProps } from './type';\nimport { useFormDisabled } from '../form/hooks';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst { prefix } = config;\nexport default defineComponent({\n name: `${prefix}-stepper`,\n props,\n setup(props, context) {\n const stepperClass = usePrefixClass('stepper');\n\n const [stepperValue] = useDefault<TdStepperProps['value'], TdStepperProps>(props, context.emit, 'value', 'change');\n const disabled = useFormDisabled();\n const { min, max, step, integer } = toRefs(props);\n const inputStyle = computed(() => (props.inputWidth ? { width: `${props.inputWidth}px` } : ''));\n\n const isDisabled = (type: 'minus' | 'plus') => {\n if (disabled.value) return true;\n if (type === 'minus' && Number(stepperValue.value) <= min.value) {\n return true;\n }\n if (type === 'plus' && Number(stepperValue.value) >= max.value) {\n return true;\n }\n return false;\n };\n\n const getLen = (num: number) => {\n const numStr = num.toString();\n return numStr.indexOf('.') === -1 ? 0 : numStr.split('.')[1].length;\n };\n\n /**\n * 精确加法\n */\n const add = (a: number, b: number) => {\n const maxLen = Math.max(getLen(a), getLen(b));\n const base = 10 ** maxLen;\n return Math.round(a * base + b * base) / base;\n };\n\n const formatValue = (value: number) => {\n return Math.max(Math.min(max.value, value, Number.MAX_SAFE_INTEGER), min.value, Number.MIN_SAFE_INTEGER).toFixed(\n Math.max(getLen(step.value), getLen(value)),\n );\n };\n\n const updateValue = (value: TdStepperProps['value']) => {\n stepperValue.value = formatNumber(`${value}`, !integer.value);\n };\n\n const plusValue = () => {\n if (isDisabled('plus')) {\n props.onOverlimit?.('plus');\n return;\n }\n updateValue(formatValue(add(Number(stepperValue.value), step.value)));\n };\n\n const minusValue = () => {\n if (isDisabled('minus')) {\n props.onOverlimit?.('minus');\n return;\n }\n updateValue(formatValue(add(Number(stepperValue.value), -step.value)));\n };\n\n const handleInput = (e: Event) => {\n const value = formatNumber((e.target as HTMLTextAreaElement).value, !integer.value);\n stepperValue.value = value;\n };\n\n const handleChange = () => {\n const formattedValue = formatValue(Number(stepperValue.value));\n updateValue(formattedValue);\n };\n\n const handleFocus = () => {\n props.onFocus?.(Number(stepperValue.value));\n };\n\n const handleBlur = () => {\n props.onBlur?.(Number(stepperValue.value));\n };\n\n return () => {\n return (\n <div class={[`${stepperClass.value}`, `${stepperClass.value}--${props.size}`]}>\n <div\n class={[\n `${stepperClass.value}__minus`,\n `${stepperClass.value}__minus--${props.theme}`,\n `${stepperClass.value}__icon--${props.size}`,\n `${\n disabled.value || Number(stepperValue.value) <= props.min\n ? `${stepperClass.value}--${props.theme}-disabled`\n : ''\n }`,\n ]}\n onClick={minusValue}\n >\n <RemoveIcon class={`${stepperClass.value}__minus-icon`} />\n </div>\n <input\n v-model={stepperValue.value}\n class={[\n `${stepperClass.value}__input`,\n `${stepperClass.value}__input--${props.theme}`,\n `${stepperClass.value}__input--${props.size}`,\n `${disabled.value ? `${stepperClass.value}--${props.theme}-disabled` : ''}`,\n ]}\n type={integer.value ? 'tel' : 'text'}\n inputmode={integer.value ? 'numeric' : 'decimal'}\n style={inputStyle.value}\n disabled={props.disableInput || disabled.value}\n readonly={props.disableInput}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onChange={handleChange}\n />\n <div\n class={[\n `${stepperClass.value}__plus`,\n `${stepperClass.value}__plus--${props.theme}`,\n `${stepperClass.value}__icon--${props.size}`,\n `${\n disabled.value || Number(stepperValue.value) >= props.max\n ? `${stepperClass.value}--${props.theme}-disabled`\n : ''\n }`,\n ]}\n onClick={plusValue}\n >\n <AddIcon class={`${stepperClass.value}__plus-icon`} />\n </div>\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","setup","context","stepperClass","usePrefixClass","_useDefault","useDefault","emit","_useDefault2","_slicedToArray","stepperValue","disabled","useFormDisabled","_toRefs","toRefs","min","max","step","integer","inputStyle","computed","inputWidth","width","concat","isDisabled","type","value","Number","getLen","num","numStr","toString","indexOf","split","length","add","a","b","maxLen","Math","base","round","formatValue","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","toFixed","updateValue","formatNumber","plusValue","_props2$onOverlimit","onOverlimit","minusValue","_props2$onOverlimit2","handleInput","e","target","handleChange","formattedValue","handleFocus","_props2$onFocus","onFocus","handleBlur","_props2$onBlur","onBlur","_createVNode","size","theme","RemoveIcon","_withDirectives","onUpdateModelValue","$event","disableInput","_vModelDynamic","AddIcon"],"mappings":"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"}