element-plus
Version:
A Component Library for Vue 3
1 lines • 21.9 kB
Source Map (JSON)
{"version":3,"file":"input-number2.mjs","sources":["../../../../../../packages/components/input-number/src/input-number.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n ns.b(),\n ns.m(inputNumberSize),\n ns.is('disabled', inputNumberDisabled),\n ns.is('without-controls', !controls),\n ns.is('controls-right', controlsAtRight),\n ]\"\n @dragstart.prevent\n >\n <span\n v-if=\"controls\"\n v-repeat-click=\"decrease\"\n role=\"button\"\n :class=\"[ns.e('decrease'), ns.is('disabled', minDisabled)]\"\n @keydown.enter=\"decrease\"\n >\n <el-icon>\n <arrow-down v-if=\"controlsAtRight\" />\n <minus v-else />\n </el-icon>\n </span>\n <span\n v-if=\"controls\"\n v-repeat-click=\"increase\"\n role=\"button\"\n :class=\"[ns.e('increase'), ns.is('disabled', maxDisabled)]\"\n @keydown.enter=\"increase\"\n >\n <el-icon>\n <arrow-up v-if=\"controlsAtRight\" />\n <plus v-else />\n </el-icon>\n </span>\n <el-input\n ref=\"input\"\n type=\"number\"\n :step=\"step\"\n :model-value=\"displayValue\"\n :placeholder=\"placeholder\"\n :disabled=\"inputNumberDisabled\"\n :size=\"inputNumberSize\"\n :max=\"max\"\n :min=\"min\"\n :name=\"name\"\n :label=\"label\"\n :validate-event=\"false\"\n @keydown.up.prevent=\"increase\"\n @keydown.down.prevent=\"decrease\"\n @blur=\"handleBlur\"\n @focus=\"handleFocus\"\n @input=\"handleInput\"\n @change=\"handleInputChange\"\n />\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n reactive,\n ref,\n watch,\n onMounted,\n onUpdated,\n} from 'vue'\n\nimport { ElIcon } from '@element-plus/components/icon'\nimport { RepeatClick } from '@element-plus/directives'\nimport {\n useDisabled,\n useFormItem,\n useSize,\n useNamespace,\n} from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport { isNumber, debugWarn } from '@element-plus/utils'\nimport { ArrowUp, ArrowDown, Plus, Minus } from '@element-plus/icons-vue'\nimport { inputNumberProps, inputNumberEmits } from './input-number'\n\nimport type { ComponentPublicInstance } from 'vue'\n\ninterface IData {\n currentValue: number | undefined\n userInput: null | number | string\n}\n\nexport default defineComponent({\n name: 'ElInputNumber',\n components: {\n ElInput,\n ElIcon,\n ArrowUp,\n ArrowDown,\n Plus,\n Minus,\n },\n directives: {\n RepeatClick,\n },\n props: inputNumberProps,\n emits: inputNumberEmits,\n setup(props, { emit }) {\n const input = ref<ComponentPublicInstance<typeof ElInput>>()\n const data = reactive<IData>({\n currentValue: props.modelValue,\n userInput: null,\n })\n const { formItem } = useFormItem()\n const ns = useNamespace('input-number')\n\n const minDisabled = computed(() => _decrease(props.modelValue) < props.min)\n const maxDisabled = computed(() => _increase(props.modelValue) > props.max)\n\n const numPrecision = computed(() => {\n const stepPrecision = getPrecision(props.step)\n if (props.precision !== undefined) {\n if (stepPrecision > props.precision) {\n debugWarn(\n 'InputNumber',\n 'precision should not be less than the decimal places of step'\n )\n }\n return props.precision\n } else {\n return Math.max(getPrecision(props.modelValue), stepPrecision)\n }\n })\n const controlsAtRight = computed(() => {\n return props.controls && props.controlsPosition === 'right'\n })\n\n const inputNumberSize = useSize()\n const inputNumberDisabled = useDisabled()\n\n const displayValue = computed(() => {\n if (data.userInput !== null) {\n return data.userInput\n }\n let currentValue: number | string | undefined = data.currentValue\n if (isNumber(currentValue)) {\n if (Number.isNaN(currentValue)) return ''\n if (props.precision !== undefined) {\n currentValue = currentValue.toFixed(props.precision)\n }\n }\n return currentValue\n })\n const toPrecision = (num: number, pre?: number) => {\n if (pre === undefined) pre = numPrecision.value\n return Number.parseFloat(`${Math.round(num * 10 ** pre) / 10 ** pre}`)\n }\n const getPrecision = (value: number | undefined) => {\n if (value === undefined) return 0\n const valueString = value.toString()\n const dotPosition = valueString.indexOf('.')\n let precision = 0\n if (dotPosition !== -1) {\n precision = valueString.length - dotPosition - 1\n }\n return precision\n }\n const _increase = (val: number) => {\n if (!isNumber(val)) return data.currentValue\n const precisionFactor = 10 ** numPrecision.value\n // Solve the accuracy problem of JS decimal calculation by converting the value to integer.\n val = isNumber(val) ? val : Number.NaN\n return toPrecision(\n (precisionFactor * val + precisionFactor * props.step) / precisionFactor\n )\n }\n const _decrease = (val: number) => {\n if (!isNumber(val)) return data.currentValue\n const precisionFactor = 10 ** numPrecision.value\n // Solve the accuracy problem of JS decimal calculation by converting the value to integer.\n val = isNumber(val) ? val : Number.NaN\n return toPrecision(\n (precisionFactor * val - precisionFactor * props.step) / precisionFactor\n )\n }\n const increase = () => {\n if (inputNumberDisabled.value || maxDisabled.value) return\n const value = props.modelValue || 0\n const newVal = _increase(value)\n setCurrentValue(newVal)\n }\n const decrease = () => {\n if (inputNumberDisabled.value || minDisabled.value) return\n const value = props.modelValue || 0\n const newVal = _decrease(value)\n setCurrentValue(newVal)\n }\n const setCurrentValue = (newVal: number | string) => {\n const oldVal = data.currentValue\n if (props.stepStrictly) {\n const stepPrecision = getPrecision(props.step)\n const precisionFactor = 10 ** stepPrecision\n newVal =\n (Math.round(newVal / props.step) * precisionFactor * props.step) /\n precisionFactor\n }\n if (typeof newVal === 'number' && props.precision !== undefined) {\n newVal = toPrecision(newVal, props.precision)\n }\n if (newVal !== undefined && newVal >= props.max) newVal = props.max\n if (newVal !== undefined && newVal <= props.min) newVal = props.min\n if (oldVal === newVal) return\n if (!isNumber(newVal)) {\n newVal = undefined\n }\n data.userInput = null\n emit('update:modelValue', newVal)\n emit('input', newVal)\n emit('change', newVal, oldVal)\n formItem?.validate?.('change').catch((err) => debugWarn(err))\n data.currentValue = newVal\n }\n const handleInput = (value: string) => {\n return (data.userInput = value)\n }\n const handleInputChange = (value: string) => {\n const newVal = value !== '' ? Number(value) : ''\n if ((isNumber(newVal) && !Number.isNaN(newVal)) || value === '') {\n setCurrentValue(newVal)\n }\n data.userInput = null\n }\n\n const focus = () => {\n input.value?.focus?.()\n }\n\n const blur = () => {\n input.value?.blur?.()\n }\n\n const handleFocus = (event: MouseEvent) => {\n emit('focus', event)\n }\n\n const handleBlur = (event: MouseEvent) => {\n emit('blur', event)\n formItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n\n watch(\n () => props.modelValue,\n (value) => {\n let newVal = Number(value)\n if (value === null) {\n newVal = Number.NaN\n }\n if (!Number.isNaN(newVal)) {\n if (props.stepStrictly) {\n const stepPrecision = getPrecision(props.step)\n const precisionFactor = 10 ** stepPrecision\n newVal =\n (Math.round(newVal / props.step) * precisionFactor * props.step) /\n precisionFactor\n }\n if (props.precision !== undefined) {\n newVal = toPrecision(newVal, props.precision)\n }\n\n if (newVal > props.max) {\n newVal = props.max\n emit('update:modelValue', newVal)\n }\n if (newVal < props.min) {\n newVal = props.min\n emit('update:modelValue', newVal)\n }\n }\n data.currentValue = newVal\n data.userInput = null\n },\n { immediate: true }\n )\n onMounted(() => {\n const innerInput = input.value?.input as HTMLInputElement\n innerInput.setAttribute('role', 'spinbutton')\n innerInput.setAttribute('aria-valuemax', String(props.max))\n innerInput.setAttribute('aria-valuemin', String(props.min))\n innerInput.setAttribute('aria-valuenow', String(data.currentValue))\n innerInput.setAttribute(\n 'aria-disabled',\n String(inputNumberDisabled.value)\n )\n if (!isNumber(props.modelValue)) {\n let val: number | undefined = Number(props.modelValue)\n if (Number.isNaN(val)) {\n val = undefined\n }\n emit('update:modelValue', val)\n }\n })\n onUpdated(() => {\n const innerInput = input.value?.input\n innerInput?.setAttribute('aria-valuenow', data.currentValue)\n })\n return {\n input,\n displayValue,\n handleInput,\n handleInputChange,\n controlsAtRight,\n decrease,\n increase,\n inputNumberSize,\n inputNumberDisabled,\n maxDisabled,\n minDisabled,\n focus,\n blur,\n handleFocus,\n handleBlur,\n\n ns,\n }\n },\n})\n</script>\n"],"names":["_resolveComponent","_resolveDirective","_openBlock","_createElementBlock","_normalizeClass","_withModifiers","_withDirectives","_withKeys","_withCtx","_createBlock","_createCommentVNode","_createVNode"],"mappings":"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"}