import { defineComponent, computed } from 'vue' import UInput from '../input/index' import Minus from './util/Minus.vue' import Plus from './util/Plus.vue' const inputNumber = defineComponent({ name: 'inputNumber', props: { size: { type: String, default: 'medium', }, value: { type: Number, default: 0, }, max: { type: Number, }, min: { type: Number, default: 0, }, step: { type: Number, default: 1, }, }, emits: ['update:value', 'change', 'input', 'increase', 'decrease'], setup(props, { slots, emit }) { const inputNumberSize = computed(() => { return 'u-input-number-size-' + props.size }) const filterValue = (value) => { if (props.min != undefined && value < props.min) { value = props.min } if (props.max && value > props.max) { value = props.max } return value } const onValueChange = (value) => { let numberValue = Number.parseInt(value) || 0 numberValue = filterValue(numberValue) emit('change', numberValue) emit('update:value', numberValue) } const decreaseValue = () => { let numberValue = Number.parseInt(props.value) - props.step numberValue = filterValue(numberValue) emit('decrease', numberValue) emit('update:value', numberValue) } const increaseValue = () => { let numberValue = Number.parseInt(props.value) + props.step numberValue = filterValue(numberValue) emit('increase', numberValue) emit('update:value', numberValue) } return () => (