1
- import type { PropType , ExtractPropTypes , ComputedRef } from 'vue' ;
1
+ import type { PropType , ExtractPropTypes , ComputedRef , Ref } from 'vue' ;
2
2
import {
3
3
watch ,
4
4
defineComponent ,
@@ -32,7 +32,7 @@ const ValidateStatuses = tuple('success', 'warning', 'error', 'validating', '');
32
32
export type ValidateStatus = typeof ValidateStatuses [ number ] ;
33
33
34
34
export interface FieldExpose {
35
- fieldValue : ComputedRef < any > ;
35
+ fieldValue : Ref < any > ;
36
36
fieldId : ComputedRef < any > ;
37
37
fieldName : ComputedRef < any > ;
38
38
resetField : ( ) => void ;
@@ -132,13 +132,15 @@ export default defineComponent({
132
132
return formName ? `${ formName } _${ mergedId } ` : `${ defaultItemNamePrefixCls } _${ mergedId } ` ;
133
133
}
134
134
} ) ;
135
- const fieldValue = computed ( ( ) => {
135
+ const getNewFieldValue = ( ) => {
136
136
const model = formContext . model . value ;
137
137
if ( ! model || ! fieldName . value ) {
138
138
return ;
139
+ } else {
140
+ return getPropByPath ( model , namePath . value , true ) . v ;
139
141
}
140
- return getPropByPath ( model , namePath . value , true ) . v ;
141
- } ) ;
142
+ } ;
143
+ const fieldValue = computed ( ( ) => getNewFieldValue ( ) ) ;
142
144
143
145
const initialValue = ref ( cloneDeep ( fieldValue . value ) ) ;
144
146
const mergedValidateTrigger = computed ( ( ) => {
@@ -184,9 +186,20 @@ export default defineComponent({
184
186
watchEffect ( ( ) => {
185
187
validateState . value = props . validateStatus ;
186
188
} ) ;
187
-
189
+ const messageVariables = computed ( ( ) => {
190
+ let variables : Record < string , string > = { } ;
191
+ if ( typeof props . label === 'string' ) {
192
+ variables . label = props . label ;
193
+ } else if ( props . name ) {
194
+ variables . label = String ( name ) ;
195
+ }
196
+ if ( props . messageVariables ) {
197
+ variables = { ...variables , ...props . messageVariables } ;
198
+ }
199
+ return variables ;
200
+ } ) ;
188
201
const validateRules = ( options : ValidateOptions ) => {
189
- const { validateFirst = false , messageVariables } = props ;
202
+ const { validateFirst = false } = props ;
190
203
const { triggerName } = options || { } ;
191
204
192
205
let filteredRules = rulesRef . value ;
@@ -207,9 +220,12 @@ export default defineComponent({
207
220
namePath . value ,
208
221
fieldValue . value ,
209
222
filteredRules as RuleObject [ ] ,
210
- options ,
223
+ {
224
+ validateMessages : formContext . validateMessages . value ,
225
+ ...options ,
226
+ } ,
211
227
validateFirst ,
212
- messageVariables ,
228
+ messageVariables . value ,
213
229
) ;
214
230
validateState . value = 'validating' ;
215
231
errors . value = [ ] ;
@@ -285,12 +301,6 @@ export default defineComponent({
285
301
resetField,
286
302
} ) ;
287
303
288
- // instead useProvideFormItemContext onFieldChange
289
- watch ( fieldValue , ( ) => {
290
- if ( props . autoLink ) {
291
- onFieldChange ( ) ;
292
- }
293
- } ) ;
294
304
useProvideFormItemContext (
295
305
{
296
306
id : fieldId ,
@@ -300,9 +310,9 @@ export default defineComponent({
300
310
}
301
311
} ,
302
312
onFieldChange : ( ) => {
303
- // if (props.autoLink) {
304
- // onFieldChange();
305
- // }
313
+ if ( props . autoLink ) {
314
+ onFieldChange ( ) ;
315
+ }
306
316
} ,
307
317
clearValidate,
308
318
} ,
0 commit comments