@@ -458,9 +458,31 @@ var ValidationService = /** @class */ (function () {
458
458
var formUID = _this . getElementUID ( form ) ;
459
459
var formValidationEvent = _this . elementEvents [ formUID ] ;
460
460
if ( formValidationEvent ) {
461
- formValidationEvent ( null , callback ) ;
461
+ formValidationEvent ( undefined , callback ) ;
462
462
}
463
463
} ;
464
+ /**
465
+ * Handler for validated form submit events.
466
+ * Default calls `submitValidForm(form)` on success
467
+ * and `focusFirstInvalid(form)` on failure.
468
+ * @param form The form that has been validated.
469
+ * @param success The validation result.
470
+ */
471
+ this . handleValidated = function ( form , success ) {
472
+ if ( success ) {
473
+ _this . submitValidForm ( form ) ;
474
+ }
475
+ else {
476
+ _this . focusFirstInvalid ( form ) ;
477
+ }
478
+ } ;
479
+ /**
480
+ * Calls `requestSubmit()` on the provided form.
481
+ * @param form The validated form to submit
482
+ */
483
+ this . submitValidForm = function ( form ) {
484
+ form . requestSubmit ( ) ;
485
+ } ;
464
486
/**
465
487
* Focuses the first invalid element within the provided form
466
488
* @param form
@@ -678,7 +700,7 @@ var ValidationService = /** @class */ (function () {
678
700
ValidationService . prototype . getFormValidationTask = function ( formUID ) {
679
701
var formInputUIDs = this . formInputs [ formUID ] ;
680
702
if ( ! formInputUIDs || formInputUIDs . length === 0 ) {
681
- return null ;
703
+ return Promise . resolve ( true ) ;
682
704
}
683
705
var formValidators = [ ] ;
684
706
for ( var i = 0 ; i < formInputUIDs . length ; i ++ ) {
@@ -694,7 +716,7 @@ var ValidationService = /** @class */ (function () {
694
716
*/
695
717
ValidationService . prototype . shouldValidate = function ( e ) {
696
718
// Skip client-side validation if the form has been submitted via a button that has the "formnovalidate" attribute.
697
- return ! ( e !== null && e [ 'submitter' ] && e [ 'submitter' ] [ 'formNoValidate' ] ) ;
719
+ return ! ( e && e [ 'submitter' ] && e [ 'submitter' ] [ 'formNoValidate' ] ) ;
698
720
} ;
699
721
/**
700
722
* Tracks a <form> element as parent of an input UID. When the form is submitted, attempts to validate the said input asynchronously.
@@ -739,30 +761,15 @@ var ValidationService = /** @class */ (function () {
739
761
_this . logger . log ( 'Validating' , form ) ;
740
762
validate . then ( function ( success ) {
741
763
_this . logger . log ( 'Validated (success = %s)' , success , form ) ;
742
- var isProgrammaticValidate = ! e ;
743
- if ( success ) {
744
- if ( isProgrammaticValidate ) {
745
- callback ( true ) ;
746
- return ;
747
- }
748
- var validationEvent_1 = new CustomEvent ( 'validation' , {
749
- detail : { valid : true }
750
- } ) ;
751
- form . dispatchEvent ( validationEvent_1 ) ;
752
- //Resubmit the form here, after the async validation is completed.
753
- form . requestSubmit ( ) ;
764
+ if ( callback ) {
765
+ callback ( success ) ;
754
766
return ;
755
767
}
756
768
var validationEvent = new CustomEvent ( 'validation' , {
757
- detail : { valid : false }
769
+ detail : { valid : success }
758
770
} ) ;
759
771
form . dispatchEvent ( validationEvent ) ;
760
- if ( isProgrammaticValidate ) {
761
- callback ( false ) ;
762
- }
763
- else {
764
- _this . focusFirstInvalid ( form ) ;
765
- }
772
+ _this . handleValidated ( form , success ) ;
766
773
} ) . catch ( function ( error ) {
767
774
_this . logger . log ( 'Validation error' , error ) ;
768
775
} ) . finally ( function ( ) {
0 commit comments