@@ -19,7 +19,6 @@ import { useInjectFormItemContext } from '../form/FormItemContext';
19
19
import omit from '../_util/omit' ;
20
20
import useConfigInject from '../_util/hooks/useConfigInject' ;
21
21
import type { ChangeEvent , FocusEventHandler } from '../_util/EventInterface' ;
22
- import { controlDefaultValue } from '../_util/util' ;
23
22
24
23
export function fixControlledValue ( value : string | number ) {
25
24
if ( typeof value === 'undefined' || value === null ) {
@@ -134,13 +133,21 @@ export default defineComponent({
134
133
let removePasswordTimeout : any ;
135
134
const formItemContext = useInjectFormItemContext ( ) ;
136
135
const { direction, prefixCls, size, autocomplete } = useConfigInject ( 'input' , props ) ;
137
- const stateValue = ref ( props . value === controlDefaultValue ? props . defaultValue : props . value ) ;
136
+ const stateValue = ref ( props . value === undefined ? props . defaultValue : props . value ) ;
138
137
const focused = ref ( false ) ;
139
138
140
139
watch (
141
140
( ) => props . value ,
142
141
( ) => {
143
- if ( props . value !== controlDefaultValue ) {
142
+ if ( props . value !== undefined ) {
143
+ stateValue . value = props . value ;
144
+ }
145
+ } ,
146
+ ) ;
147
+ watch (
148
+ ( ) => props . disabled ,
149
+ ( ) => {
150
+ if ( props . value !== undefined ) {
144
151
stateValue . value = props . value ;
145
152
}
146
153
} ,
@@ -181,7 +188,7 @@ export default defineComponent({
181
188
expose ( {
182
189
focus,
183
190
blur,
184
- inputRef,
191
+ input : inputRef ,
185
192
stateValue,
186
193
setSelectionRange,
187
194
select,
@@ -217,7 +224,7 @@ export default defineComponent({
217
224
if ( stateValue . value === value ) {
218
225
return ;
219
226
}
220
- if ( props . value === controlDefaultValue ) {
227
+ if ( props . value === undefined ) {
221
228
stateValue . value = value ;
222
229
} else {
223
230
instance . update ( ) ;
@@ -234,9 +241,10 @@ export default defineComponent({
234
241
} ;
235
242
236
243
const handleChange = ( e : ChangeEvent ) => {
237
- const { value, composing, isComposing } = e . target as any ;
244
+ const { value, composing } = e . target as any ;
238
245
// https://github.com/vueComponent/ant-design-vue/issues/2203
239
- if ( ( ( isComposing || composing ) && props . lazy ) || stateValue . value === value ) return ;
246
+ if ( ( ( ( e as any ) . isComposing || composing ) && props . lazy ) || stateValue . value === value )
247
+ return ;
240
248
const newVal = e . target . value ;
241
249
resolveOnChange ( inputRef . value , e , triggerChange ) ;
242
250
setValue ( newVal , ( ) => {
@@ -270,6 +278,7 @@ export default defineComponent({
270
278
disabled,
271
279
bordered = true ,
272
280
valueModifiers = { } ,
281
+ htmlSize,
273
282
} = props ;
274
283
const otherProps = omit ( props as InputProps & { inputType : any ; placeholder : string } , [
275
284
'prefixCls' ,
@@ -285,9 +294,11 @@ export default defineComponent({
285
294
'size' ,
286
295
'inputType' ,
287
296
'bordered' ,
297
+ 'htmlSize' ,
288
298
] ) ;
289
299
const inputProps = {
290
300
...otherProps ,
301
+ ...attrs ,
291
302
autocomplete : autocomplete . value ,
292
303
onChange : handleChange ,
293
304
onInput : handleChange ,
@@ -302,6 +313,7 @@ export default defineComponent({
302
313
) ,
303
314
ref : inputRef ,
304
315
key : 'ant-input' ,
316
+ size : htmlSize ,
305
317
} ;
306
318
if ( valueModifiers . lazy ) {
307
319
delete inputProps . onInput ;
@@ -321,7 +333,7 @@ export default defineComponent({
321
333
inputType : 'input' ,
322
334
value : fixControlledValue ( stateValue . value ) ,
323
335
handleReset,
324
- focused : focused . value ,
336
+ focused : focused . value && props . disabled ,
325
337
} ;
326
338
327
339
return (
0 commit comments