@@ -113,7 +113,7 @@ class Pattern extends BasePattern {
113
113
}
114
114
115
115
// In any case, clear the custom validity first.
116
- this . set_error ( { input : input , msg : "" } ) ;
116
+ this . set_error ( { input : input , msg : "" , skip_event : true } ) ;
117
117
const validity_state = input . validity ;
118
118
119
119
if ( event ?. submitter ?. hasAttribute ( "formnovalidate" ) ) {
@@ -315,7 +315,11 @@ class Pattern extends BasePattern {
315
315
input_options . message . datetime
316
316
) {
317
317
this . set_error ( { input : input , msg : input_options . message . datetime } ) ;
318
+ } else {
319
+ // Still an error, but here we need to call `emit_update` separately
320
+ this . emit_update ( "invalid" ) ;
318
321
}
322
+
319
323
}
320
324
321
325
if ( event ?. type === "submit" ) {
@@ -327,7 +331,7 @@ class Pattern extends BasePattern {
327
331
this . set_error_message ( input ) ;
328
332
}
329
333
330
- set_error ( { input, msg, attribute = null , min = null , max = null } ) {
334
+ set_error ( { input, msg, attribute = null , min = null , max = null , skip_event = false } ) {
331
335
// Replace some variables, as like validate.js
332
336
if ( attribute ) {
333
337
msg = msg . replace ( / % { attribute} / g, attribute ) ;
@@ -346,9 +350,12 @@ class Pattern extends BasePattern {
346
350
// (e.g. styled date input).
347
351
input [ KEY_ERROR_MSG ] = msg ;
348
352
353
+ if ( ! skip_event ) {
354
+ this . emit_update ( "invalid" ) ;
355
+ }
349
356
}
350
357
351
- remove_error ( input , all_of_group = false ) {
358
+ remove_error ( input , all_of_group = false , skip_event = false ) {
352
359
// Remove error message and related referencesfrom input.
353
360
354
361
let inputs = [ input ] ;
@@ -371,6 +378,10 @@ class Pattern extends BasePattern {
371
378
}
372
379
}
373
380
}
381
+
382
+ if ( ! skip_event ) {
383
+ this . emit_update ( "valid" ) ;
384
+ }
374
385
}
375
386
376
387
set_error_message ( input ) {
0 commit comments