1
+ import { inject } from 'vue' ;
1
2
import PropTypes from '../_util/vue-types' ;
2
- import { initDefaultProps , getOptionProps , getListeners } from '../_util/props-util' ;
3
+ import { initDefaultProps , getOptionProps } from '../_util/props-util' ;
3
4
import classNames from 'classnames' ;
4
5
import UpOutlined from '@ant-design/icons-vue/UpOutlined' ;
5
6
import DownOutlined from '@ant-design/icons-vue/DownOutlined' ;
6
7
import VcInputNumber from '../vc-input-number/src' ;
7
8
import { ConfigConsumerProps } from '../config-provider' ;
8
- import Base from '../base' ;
9
9
10
10
export const InputNumberProps = {
11
11
prefixCls : PropTypes . string ,
@@ -29,56 +29,59 @@ export const InputNumberProps = {
29
29
30
30
const InputNumber = {
31
31
name : 'AInputNumber' ,
32
- model : {
33
- prop : 'value' ,
34
- event : 'change' ,
35
- } ,
32
+ inheritAttrs : false ,
36
33
props : initDefaultProps ( InputNumberProps , {
37
34
step : 1 ,
38
35
} ) ,
39
- inject : {
40
- configProvider : { default : ( ) => ConfigConsumerProps } ,
36
+ setup ( ) {
37
+ return {
38
+ configProvider : inject ( 'configProvider' , ConfigConsumerProps ) ,
39
+ } ;
41
40
} ,
42
41
methods : {
42
+ saveInputNumber ( inputNumberRef ) {
43
+ this . inputNumberRef = inputNumberRef ;
44
+ } ,
43
45
focus ( ) {
44
- this . $refs . inputNumberRef . focus ( ) ;
46
+ this . inputNumberRef . focus ( ) ;
45
47
} ,
46
48
blur ( ) {
47
- this . $refs . inputNumberRef . blur ( ) ;
49
+ this . inputNumberRef . blur ( ) ;
48
50
} ,
49
51
} ,
50
52
51
53
render ( ) {
52
- const { prefixCls : customizePrefixCls , size, ...others } = getOptionProps ( this ) ;
54
+ const { prefixCls : customizePrefixCls , size, class : className , ...others } = {
55
+ ...getOptionProps ( this ) ,
56
+ ...this . $attrs ,
57
+ } ;
53
58
const getPrefixCls = this . configProvider . getPrefixCls ;
54
59
const prefixCls = getPrefixCls ( 'input-number' , customizePrefixCls ) ;
55
60
56
- const inputNumberClass = classNames ( {
57
- [ `${ prefixCls } -lg` ] : size === 'large' ,
58
- [ `${ prefixCls } -sm` ] : size === 'small' ,
59
- } ) ;
61
+ const inputNumberClass = classNames (
62
+ {
63
+ [ `${ prefixCls } -lg` ] : size === 'large' ,
64
+ [ `${ prefixCls } -sm` ] : size === 'small' ,
65
+ } ,
66
+ className ,
67
+ ) ;
60
68
const upIcon = < UpOutlined class = { `${ prefixCls } -handler-up-inner` } /> ;
61
69
const downIcon = < DownOutlined class = { `${ prefixCls } -handler-down-inner` } /> ;
62
70
63
71
const vcInputNumberprops = {
64
- props : {
65
- prefixCls,
66
- upHandler : upIcon ,
67
- downHandler : downIcon ,
68
- ...others ,
69
- } ,
72
+ prefixCls,
73
+ upHandler : upIcon ,
74
+ downHandler : downIcon ,
75
+ ...others ,
70
76
class : inputNumberClass ,
71
- ref : 'inputNumberRef' ,
72
- on : getListeners ( this ) ,
73
77
} ;
74
- return < VcInputNumber { ...vcInputNumberprops } /> ;
78
+ return < VcInputNumber { ...vcInputNumberprops } ref = { this . saveInputNumber } /> ;
75
79
} ,
76
80
} ;
77
81
78
82
/* istanbul ignore next */
79
- InputNumber . install = function ( Vue ) {
80
- Vue . use ( Base ) ;
81
- Vue . component ( InputNumber . name , InputNumber ) ;
83
+ InputNumber . install = function ( app ) {
84
+ app . component ( InputNumber . name , InputNumber ) ;
82
85
} ;
83
86
84
87
export default InputNumber ;
0 commit comments