tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 23.4 kB
Source Map (JSON)
{"version":3,"file":"useInputNumber.mjs","sources":["../../../../components/input-number/hooks/useInputNumber.tsx"],"sourcesContent":["import { computed, ref, toRefs, watch } from 'vue';\nimport useCommonClassName from '../../hooks/useCommonClassName';\nimport useVModel from '../../hooks/useVModel';\nimport { InputNumberValue, TdInputNumberProps } from '../type';\nimport { useReadonly } from '../../hooks/useReadonly';\n\n// 计算逻辑,统一到 common 中,方便各框架复用(如超过 16 位的大数处理)\nimport {\n canAddNumber,\n canInputNumber,\n canReduceNumber,\n getMaxOrMinValidateResult,\n getStepValue,\n formatThousandths,\n canSetValue,\n formatUnCompleteNumber,\n largeNumberToFixed,\n} from '@tdesign/common-js/input-number/number';\nimport { useDisabled } from '../../hooks/useDisabled';\nimport { StrInputProps } from '../../input';\n\n/**\n * 独立一个组件 Hook 方便用户直接使用相关逻辑 自定义任何样式的数字输入框\n */\nexport default function useInputNumber(props: TdInputNumberProps) {\n const { classPrefix, sizeClassNames, statusClassNames } = useCommonClassName();\n const { value, modelValue, max, min } = toRefs(props);\n // 统一处理受控、非受控、语法糖 v-model 等\n const [tValue, setTValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n const inputRef = ref();\n const userInput = ref('');\n\n const tDisabled = useDisabled();\n\n const isReadonly = useReadonly();\n\n const isError = ref<'exceed-maximum' | 'below-minimum'>();\n\n const disabledReduce = computed(\n () => tDisabled.value || !canReduceNumber(tValue.value, props.min, props.largeNumber),\n );\n\n const disabledAdd = computed(() => tDisabled.value || !canAddNumber(tValue.value, props.max, props.largeNumber));\n\n const wrapClasses = computed(() => [\n `${classPrefix.value}-input-number`,\n sizeClassNames[props.size],\n {\n [statusClassNames.disabled]: tDisabled.value,\n [`${classPrefix.value}-is-controls-right`]: props.theme === 'column',\n [`${classPrefix.value}-input-number--${props.theme}`]: props.theme,\n [`${classPrefix.value}-input-number--auto-width`]: props.autoWidth,\n },\n ]);\n\n const reduceClasses = computed(() => [\n `${classPrefix.value}-input-number__decrease`,\n { [statusClassNames.disabled]: disabledReduce.value },\n ]);\n\n const addClasses = computed(() => [\n `${classPrefix.value}-input-number__increase`,\n { [statusClassNames.disabled]: disabledAdd.value },\n ]);\n\n const getUserInput = (value: InputNumberValue) => {\n if (!value && value !== 0) return '';\n let inputStr = value || value === 0 ? String(value) : '';\n if (!inputRef.value?.inputRef?.contains(document.activeElement)) {\n const num = formatUnCompleteNumber(inputStr, {\n decimalPlaces: props.decimalPlaces,\n largeNumber: props.largeNumber,\n isToFixed: true,\n });\n inputStr = num || num === 0 ? String(num) : '';\n if (props.format) {\n inputStr = String(props.format(value, { fixedNumber: inputStr }));\n }\n }\n return inputStr;\n };\n\n watch(\n tValue,\n (val) => {\n const { largeNumber, decimalPlaces } = props;\n const inputValue = [undefined, null].includes(val) ? '' : String(val);\n // userInput.value 为非合法数字,则表示用户正在输入,此时无需处理\n if (!largeNumber && !Number.isNaN(userInput.value)) {\n if (parseFloat(userInput.value) !== val) {\n userInput.value = getUserInput(inputValue);\n }\n const fixedNumber = Number(largeNumberToFixed(inputValue, decimalPlaces, largeNumber));\n if (\n decimalPlaces !== undefined &&\n ![undefined, null].includes(val) &&\n Number(fixedNumber) !== Number(tValue.value)\n ) {\n setTValue(fixedNumber, { type: 'props', e: undefined });\n }\n }\n if (largeNumber) {\n userInput.value = getUserInput(inputValue);\n\n if (decimalPlaces !== undefined && largeNumberToFixed(inputValue, decimalPlaces, largeNumber) !== val) {\n let completeValue = inputValue;\n if (!inputRef.value?.inputRef?.contains(document.activeElement)) {\n // isToFixed为true 只可能是string\n completeValue = formatUnCompleteNumber(completeValue, {\n decimalPlaces: props.decimalPlaces,\n largeNumber: props.largeNumber,\n isToFixed: true,\n }) as string;\n }\n setTValue(completeValue, { type: 'props', e: undefined });\n }\n }\n },\n { immediate: true },\n );\n\n watch(\n [tValue, max, min],\n () => {\n // @ts-ignore 没有输入完成,则无需校验\n if ([undefined, '', null].includes(tValue.value)) return;\n const { max, min, largeNumber } = props;\n const error = getMaxOrMinValidateResult({\n value: tValue.value,\n largeNumber,\n max,\n min,\n });\n isError.value = error;\n props.onValidate?.({ error });\n },\n { immediate: true },\n );\n\n const handleStepValue = (op: 'add' | 'reduce') => {\n const newValue = getStepValue({\n op,\n step: props.step,\n max: props.max,\n min: props.min,\n lastValue: tValue.value,\n largeNumber: props.largeNumber,\n });\n const { largeNumber, max, min } = props;\n const overLimit = getMaxOrMinValidateResult({\n value: newValue,\n largeNumber,\n max,\n min,\n });\n return {\n overLimit,\n newValue,\n };\n };\n\n const handleReduce = (e: KeyboardEvent | MouseEvent) => {\n if (disabledReduce.value || isReadonly.value) return;\n const r = handleStepValue('reduce');\n if (r.overLimit && !props.allowInputOverLimit) return;\n setTValue(r.newValue, { type: 'reduce', e });\n };\n\n const handleAdd = (e: KeyboardEvent | MouseEvent) => {\n if (disabledAdd.value || isReadonly.value) return;\n const r = handleStepValue('add');\n if (r.overLimit && !props.allowInputOverLimit) return;\n setTValue(r.newValue, { type: 'add', e });\n };\n\n const onInnerInputChange: StrInputProps['onChange'] = (inputValue, { e }) => {\n // 千分位处理\n const val = formatThousandths(inputValue);\n if (!canInputNumber(val, props.largeNumber)) return;\n\n userInput.value = val;\n\n if (props.largeNumber) {\n setTValue(val, { type: 'input', e });\n return;\n }\n\n if (canSetValue(String(val), Number(tValue.value))) {\n const newVal = val === '' ? undefined : Number(val);\n setTValue(newVal, { type: 'input', e });\n }\n };\n\n const handleBlur = (value: string, ctx: { e: FocusEvent }) => {\n const { largeNumber, max, min, decimalPlaces } = props;\n if (!props.allowInputOverLimit && tValue.value !== undefined) {\n const r = getMaxOrMinValidateResult({ value: tValue.value, largeNumber, max, min });\n if (r === 'below-minimum') {\n setTValue(min, { type: 'blur', e: ctx.e });\n props.onBlur?.(min, ctx);\n return;\n }\n if (r === 'exceed-maximum') {\n setTValue(max, { type: 'blur', e: ctx.e });\n props.onBlur?.(max, ctx);\n return;\n }\n }\n const newValue = formatUnCompleteNumber(value, {\n decimalPlaces,\n largeNumber,\n });\n userInput.value = getUserInput(newValue);\n\n if (newValue !== tValue.value) {\n setTValue(newValue, { type: 'blur', e: ctx.e });\n }\n props.onBlur?.(newValue, ctx);\n };\n\n const handleFocus = (value: string, ctx: { e: FocusEvent }) => {\n userInput.value = tValue.value || tValue.value === 0 ? String(tValue.value) : '';\n props.onFocus?.(value, ctx);\n };\n\n const handleKeydown = (value: string, ctx: { e: KeyboardEvent }) => {\n if (tDisabled.value) return;\n const { e } = ctx;\n const keyEvent = {\n ArrowUp: handleAdd,\n ArrowDown: handleReduce,\n };\n const code = (e.code || e.key) as keyof typeof keyEvent;\n if (keyEvent[code] !== undefined) {\n keyEvent[code](e);\n }\n props.onKeydown?.(value, ctx);\n };\n\n const handleKeyup = (value: string, ctx: { e: KeyboardEvent }) => {\n props.onKeyup?.(value, ctx);\n };\n\n const handleKeypress = (value: string, ctx: { e: KeyboardEvent }) => {\n props.onKeypress?.(value, ctx);\n };\n\n const handleEnter = (value: string, ctx: { e: KeyboardEvent }) => {\n userInput.value = getUserInput(value);\n const newValue = formatUnCompleteNumber(value, {\n decimalPlaces: props.decimalPlaces,\n largeNumber: props.largeNumber,\n });\n if (newValue !== value && String(newValue) !== value) {\n setTValue(newValue, { type: 'enter', e: ctx.e });\n }\n props.onEnter?.(newValue, ctx);\n };\n\n const focus = () => {\n if (tDisabled.value || isReadonly.value) return;\n (inputRef.value as any).focus();\n };\n\n const blur = () => {\n (inputRef.value as any).blur();\n };\n\n const listeners = {\n onBlur: handleBlur,\n onFocus: handleFocus,\n onKeydown: handleKeydown,\n onKeyup: handleKeyup,\n onKeypress: handleKeypress,\n onEnter: handleEnter,\n onClick: focus,\n };\n\n return {\n classPrefix,\n wrapClasses,\n reduceClasses,\n addClasses,\n tDisabled,\n isError,\n listeners,\n userInput,\n tValue,\n inputRef,\n focus,\n blur,\n handleReduce,\n handleAdd,\n onInnerInputChange,\n isReadonly,\n };\n}\n"],"names":["useInputNumber","props","_useCommonClassName","useCommonClassName","classPrefix","sizeClassNames","statusClassNames","_toRefs","toRefs","value","modelValue","max","min","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","tValue","setTValue","inputRef","ref","userInput","tDisabled","useDisabled","isReadonly","useReadonly","isError","disabledReduce","computed","canReduceNumber","largeNumber","disabledAdd","canAddNumber","wrapClasses","concat","size","_defineProperty","disabled","theme","autoWidth","reduceClasses","addClasses","getUserInput","_inputRef$value","inputStr","String","contains","document","activeElement","num","formatUnCompleteNumber","decimalPlaces","isToFixed","format","fixedNumber","watch","val","inputValue","includes","Number","isNaN","parseFloat","largeNumberToFixed","type","e","_inputRef$value2","completeValue","immediate","_props$onValidate","error","getMaxOrMinValidateResult","onValidate","call","handleStepValue","op","newValue","getStepValue","step","lastValue","overLimit","handleReduce","r","allowInputOverLimit","handleAdd","onInnerInputChange","_ref4","formatThousandths","canInputNumber","canSetValue","newVal","handleBlur","ctx","_props$onBlur3","_props$onBlur","onBlur","_props$onBlur2","handleFocus","_props$onFocus","onFocus","handleKeydown","_props$onKeydown","keyEvent","ArrowUp","ArrowDown","code","key","onKeydown","handleKeyup","_props$onKeyup","onKeyup","handleKeypress","_props$onKeypress","onKeypress","handleEnter","_props$onEnter","onEnter","focus","blur","listeners","onClick"],"mappings":"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"}