@@ -106,6 +106,9 @@ class Field extends React.Component<InternalFieldProps, FieldState> implements F
106
106
*/
107
107
private touched : boolean = false ;
108
108
109
+ /** Mark when touched & validated. Currently only used for `dependencies` */
110
+ private dirty : boolean = false ;
111
+
109
112
private validatePromise : Promise < string [ ] > | null = null ;
110
113
111
114
private prevValidating : boolean ;
@@ -189,6 +192,7 @@ class Field extends React.Component<InternalFieldProps, FieldState> implements F
189
192
// `setFieldsValue` is a quick access to update related status
190
193
if ( info . type === 'valueUpdate' && info . source === 'external' && prevValue !== curValue ) {
191
194
this . touched = true ;
195
+ this . dirty = true ;
192
196
this . validatePromise = null ;
193
197
this . errors = [ ] ;
194
198
}
@@ -198,6 +202,7 @@ class Field extends React.Component<InternalFieldProps, FieldState> implements F
198
202
if ( ! namePathList || namePathMatch ) {
199
203
// Clean up state
200
204
this . touched = false ;
205
+ this . dirty = false ;
201
206
this . validatePromise = null ;
202
207
this . errors = [ ] ;
203
208
@@ -222,6 +227,7 @@ class Field extends React.Component<InternalFieldProps, FieldState> implements F
222
227
if ( 'errors' in data ) {
223
228
this . errors = data . errors || [ ] ;
224
229
}
230
+ this . dirty = true ;
225
231
226
232
this . reRender ( ) ;
227
233
return ;
@@ -304,6 +310,7 @@ class Field extends React.Component<InternalFieldProps, FieldState> implements F
304
310
validateFirst ,
305
311
messageVariables ,
306
312
) ;
313
+ this . dirty = true ;
307
314
this . validatePromise = promise ;
308
315
this . errors = [ ] ;
309
316
@@ -324,6 +331,8 @@ class Field extends React.Component<InternalFieldProps, FieldState> implements F
324
331
325
332
public isFieldTouched = ( ) => this . touched ;
326
333
334
+ public isFieldDirty = ( ) => this . dirty ;
335
+
327
336
public getErrors = ( ) => this . errors ;
328
337
329
338
// ============================= Child Component =============================
@@ -400,6 +409,7 @@ class Field extends React.Component<InternalFieldProps, FieldState> implements F
400
409
control [ trigger ] = ( ...args : EventArgs ) => {
401
410
// Mark as touched
402
411
this . touched = true ;
412
+ this . dirty = true ;
403
413
404
414
let newValue : StoreValue ;
405
415
if ( getValueFromEvent ) {
0 commit comments