1
- import {
2
- defineComponent ,
3
- ExtractPropTypes ,
4
- ref ,
5
- reactive ,
6
- VNode ,
7
- onUpdated ,
8
- onBeforeUpdate ,
9
- onMounted ,
10
- } from 'vue' ;
1
+ import { defineComponent , ExtractPropTypes , ref , reactive , VNode , onMounted } from 'vue' ;
11
2
import { initDefaultProps , getPropsSlot , findDOMNode } from '../_util/props-util' ;
12
3
import { withInstall } from '../_util/type' ;
13
4
import { getOffsetLeft } from './util' ;
@@ -39,6 +30,7 @@ export type RateProps = Partial<ExtractPropTypes<typeof rateProps>>;
39
30
40
31
const Rate = defineComponent ( {
41
32
name : 'ARate' ,
33
+ inheritAttrs : false ,
42
34
props : initDefaultProps ( rateProps , {
43
35
value : 0 ,
44
36
count : 5 ,
@@ -55,16 +47,16 @@ const Rate = defineComponent({
55
47
const rateRef = ref ( ) ;
56
48
const [ setRef , starRefs ] = useRef ( ) ;
57
49
const state = reactive ( {
58
- sValue : props . value ,
50
+ value : props . value ,
59
51
focused : false ,
60
52
cleanedValue : null ,
61
53
hoverValue : undefined ,
62
54
} ) ;
63
55
64
- const getStarDOM = index => {
65
- return findDOMNode ( starRefs [ index ] ) ;
56
+ const getStarDOM = ( index : number ) => {
57
+ return findDOMNode ( starRefs . value [ index ] ) ;
66
58
} ;
67
- const getStarValue = ( index , x ) => {
59
+ const getStarValue = ( index : number , x : number ) => {
68
60
const reverse = direction . value === 'rtl' ;
69
61
let value = index + 1 ;
70
62
if ( props . allowHalf ) {
@@ -80,12 +72,12 @@ const Rate = defineComponent({
80
72
return value ;
81
73
} ;
82
74
const changeValue = ( value : number ) => {
83
- state . sValue = value ;
75
+ state . value = value ;
84
76
emit ( 'update:value' , value ) ;
85
77
emit ( 'change' , value ) ;
86
78
} ;
87
79
88
- const onHover = ( e : MouseEvent , index ) => {
80
+ const onHover = ( e : MouseEvent , index : number ) => {
89
81
const hoverValue = getStarValue ( index , e . pageX ) ;
90
82
if ( hoverValue !== state . cleanedValue ) {
91
83
state . hoverValue = hoverValue ;
@@ -98,12 +90,12 @@ const Rate = defineComponent({
98
90
state . cleanedValue = null ;
99
91
emit ( 'hoverChange' , undefined ) ;
100
92
} ;
101
- const onClick = ( event : MouseEvent , index ) => {
93
+ const onClick = ( event : MouseEvent , index : number ) => {
102
94
const { allowClear } = props ;
103
95
const newValue = getStarValue ( index , event . pageX ) ;
104
96
let isReset = false ;
105
97
if ( allowClear ) {
106
- isReset = newValue === state . sValue ;
98
+ isReset = newValue === state . value ;
107
99
}
108
100
onMouseLeave ( ) ;
109
101
changeValue ( isReset ? 0 : newValue ) ;
@@ -117,41 +109,41 @@ const Rate = defineComponent({
117
109
state . focused = false ;
118
110
emit ( 'blur' ) ;
119
111
} ;
120
- const onKeyDown = event => {
112
+ const onKeyDown = ( event : KeyboardEvent ) => {
121
113
const { keyCode } = event ;
122
114
const { count, allowHalf } = props ;
123
115
const reverse = direction . value === 'rtl' ;
124
- if ( keyCode === KeyCode . RIGHT && state . sValue < count && ! reverse ) {
116
+ if ( keyCode === KeyCode . RIGHT && state . value < count && ! reverse ) {
125
117
if ( allowHalf ) {
126
- state . sValue += 0.5 ;
118
+ state . value += 0.5 ;
127
119
} else {
128
- state . sValue += 1 ;
120
+ state . value += 1 ;
129
121
}
130
- changeValue ( state . sValue ) ;
122
+ changeValue ( state . value ) ;
131
123
event . preventDefault ( ) ;
132
- } else if ( keyCode === KeyCode . LEFT && state . sValue > 0 && ! reverse ) {
124
+ } else if ( keyCode === KeyCode . LEFT && state . value > 0 && ! reverse ) {
133
125
if ( allowHalf ) {
134
- state . sValue -= 0.5 ;
126
+ state . value -= 0.5 ;
135
127
} else {
136
- state . sValue -= 1 ;
128
+ state . value -= 1 ;
137
129
}
138
- changeValue ( state . sValue ) ;
130
+ changeValue ( state . value ) ;
139
131
event . preventDefault ( ) ;
140
- } else if ( keyCode === KeyCode . RIGHT && state . sValue > 0 && reverse ) {
132
+ } else if ( keyCode === KeyCode . RIGHT && state . value > 0 && reverse ) {
141
133
if ( allowHalf ) {
142
- state . sValue -= 0.5 ;
134
+ state . value -= 0.5 ;
143
135
} else {
144
- state . sValue -= 1 ;
136
+ state . value -= 1 ;
145
137
}
146
- changeValue ( state . sValue ) ;
138
+ changeValue ( state . value ) ;
147
139
event . preventDefault ( ) ;
148
- } else if ( keyCode === KeyCode . LEFT && state . sValue < count && reverse ) {
140
+ } else if ( keyCode === KeyCode . LEFT && state . value < count && reverse ) {
149
141
if ( allowHalf ) {
150
- state . sValue += 0.5 ;
142
+ state . value += 0.5 ;
151
143
} else {
152
- state . sValue += 1 ;
144
+ state . value += 1 ;
153
145
}
154
- changeValue ( state . sValue ) ;
146
+ changeValue ( state . value ) ;
155
147
event . preventDefault ( ) ;
156
148
}
157
149
emit ( 'keydown' , event ) ;
@@ -174,8 +166,8 @@ const Rate = defineComponent({
174
166
} ) ;
175
167
176
168
onMounted ( ( ) => {
177
- const { autoFocus , disabled } = props ;
178
- if ( autoFocus && ! disabled ) {
169
+ const { autofocus , disabled } = props ;
170
+ if ( autofocus && ! disabled ) {
179
171
focus ( ) ;
180
172
}
181
173
} ) ;
@@ -195,14 +187,14 @@ const Rate = defineComponent({
195
187
for ( let index = 0 ; index < count ; index ++ ) {
196
188
stars . push (
197
189
< Star
198
- ref = { setRef }
190
+ ref = { ( r : any ) => setRef ( r , index ) }
199
191
key = { index }
200
192
index = { index }
201
193
count = { count }
202
194
disabled = { disabled }
203
195
prefixCls = { `${ prefixCls . value } -star` }
204
196
allowHalf = { allowHalf }
205
- value = { state . hoverValue === undefined ? state . sValue : state . hoverValue }
197
+ value = { state . hoverValue === undefined ? state . value : state . hoverValue }
206
198
onClick = { onClick }
207
199
onHover = { onHover }
208
200
character = { character }
0 commit comments