@@ -140,45 +140,47 @@ export function useFieldControlValidation() {
140
140
computedState . valid = true ;
141
141
computedState . valueMissing = false ;
142
142
}
143
-
144
143
return computedState ;
145
144
}
146
145
147
146
timeout . clear ( ) ;
148
147
149
- const resultOrPromise = validate ( value ) ;
150
148
let result : null | string | string [ ] = null ;
151
- if (
152
- typeof resultOrPromise === 'object' &&
153
- resultOrPromise !== null &&
154
- 'then' in resultOrPromise
155
- ) {
156
- result = await resultOrPromise ;
157
- } else {
158
- result = resultOrPromise ;
159
- }
160
-
161
- let errorMessage = '' ;
162
- if ( result !== null ) {
163
- errorMessage = Array . isArray ( result ) ? result . join ( '\n' ) : result ;
164
- }
165
- element . setCustomValidity ( errorMessage ) ;
149
+ let validationErrors : string [ ] = [ ] ;
166
150
167
151
const nextState = getState ( element ) ;
168
152
169
- let validationErrors : string [ ] = [ ] ;
170
- if ( Array . isArray ( result ) ) {
171
- validationErrors = result ;
172
- } else if ( result ) {
173
- validationErrors = [ result ] ;
174
- } else if ( element . validationMessage ) {
153
+ if ( element . validationMessage ) {
175
154
validationErrors = [ element . validationMessage ] ;
155
+ } else {
156
+ const resultOrPromise = validate ( value ) ;
157
+ if (
158
+ typeof resultOrPromise === 'object' &&
159
+ resultOrPromise !== null &&
160
+ 'then' in resultOrPromise
161
+ ) {
162
+ result = await resultOrPromise ;
163
+ } else {
164
+ result = resultOrPromise ;
165
+ }
166
+
167
+ if ( result !== null ) {
168
+ nextState . valid = false ;
169
+
170
+ if ( Array . isArray ( result ) ) {
171
+ validationErrors = result ;
172
+ element . setCustomValidity ( result . join ( '\n' ) ) ;
173
+ } else if ( result ) {
174
+ validationErrors = [ result ] ;
175
+ element . setCustomValidity ( result ) ;
176
+ }
177
+ }
176
178
}
177
179
178
180
const nextValidityData = {
179
181
value,
180
182
state : nextState ,
181
- error : Array . isArray ( result ) ? result [ 0 ] : ( result ?? element . validationMessage ) ,
183
+ error : element . validationMessage ?? ( Array . isArray ( result ) ? result [ 0 ] : result ) ,
182
184
errors : validationErrors ,
183
185
initialValue : validityData . initialValue ,
184
186
} ;
0 commit comments