Files
element-plus/packages/components/input-number/src/input-number.ts
jeremywu 6006e910aa refactor(components): ElInputNumber (#3974)
* refactor(components): ElInputNumber

- Rename index.vue -> input-number.vue
- Extract inputNumberProps and inputNumberEmits to input-number.ts

* Update input number docs

* Update input number docs

* Update input number docs

* Address comments

* Code perfection

* Make modelValue required field

* Fix linter

* Remove unnecessary code

* Fix linter
2021-10-22 23:28:03 +08:00

58 lines
1.2 KiB
TypeScript

import { buildProps, componentSize } from '@element-plus/utils/props'
import { isNumber } from '@element-plus/utils/util'
export const inputNumberProps = buildProps({
step: {
type: Number,
default: 1,
},
stepStrictly: {
type: Boolean,
default: false,
},
max: {
type: Number,
default: Infinity,
},
min: {
type: Number,
default: -Infinity,
},
modelValue: {
type: Number,
required: true,
},
disabled: {
type: Boolean,
default: false,
},
size: {
type: String,
values: componentSize,
},
controls: {
type: Boolean,
default: true,
},
controlsPosition: {
type: String,
default: '',
values: ['', 'right'],
},
name: String,
label: String,
placeholder: String,
precision: {
type: Number,
validator: (val: number) => val >= 0 && val === parseInt(`${val}`, 10),
},
} as const)
export const inputNumberEmits = {
change: (prev: number, cur: number) => prev !== cur,
blur: (e: FocusEvent) => e instanceof FocusEvent,
focus: (e: FocusEvent) => e instanceof FocusEvent,
input: (val: number) => isNumber(val),
'update:modelValue': (val: number) => isNumber(val),
}