1- import { } from 'core-js' ;
2- import { IValidationEngine , ValidationEngine } from './validationEngine' ;
3- import { FieldValidationResult , FormValidationResult } from './entities' ;
1+ import { ValidationEngine } from './validationEngine' ;
2+ import {
3+ ValidationConstraints ,
4+ FormValidationFunction ,
5+ FieldValidationResult ,
6+ FormValidationResult ,
7+ } from './entities' ;
48import { consts } from './consts' ;
59
6- export class BaseFormValidation {
7- _validationEngine : IValidationEngine ;
10+ interface FormValidation {
11+ validateField ( vm : any , key : string , value : any , filter ?: any ) : Promise < FieldValidationResult > ;
12+ validateForm ( vm : any ) : Promise < FormValidationResult > ;
13+ isValidationInProgress ( ) : boolean ;
14+ isFormDirty ( ) : boolean ;
15+ isFormPristine ( ) : boolean ;
16+ addFieldValidation ( key : string , validation : ( value : string , vm : any ) => FieldValidationResult , filter ?: any ) : FormValidation ;
17+ addFieldValidationAsync ( key : string , validation : ( value : string , vm : any ) => Promise < FieldValidationResult > , filter ?: any ) : FormValidation ;
18+ }
19+
20+ export class BaseFormValidation implements FormValidation {
21+ private validationEngine : ValidationEngine ;
22+ constructor ( validationConstraints : ValidationConstraints ) {
23+ this . validationEngine = new ValidationEngine ( ) ;
24+ this . parseValidationConstraints ( validationConstraints ) ;
25+ }
26+
27+ private parseValidationConstraints ( validationConstraints : ValidationConstraints ) {
28+ if ( validationConstraints && typeof validationConstraints === 'object' ) {
29+ if ( validationConstraints . global && validationConstraints . global instanceof Array ) {
30+ this . addFormValidationFunctions ( validationConstraints . global ) ;
31+ }
32+ }
33+ }
34+
35+ private addFormValidationFunctions ( validationFunctions : FormValidationFunction [ ] ) {
36+ validationFunctions . forEach ( ( validationFunction : FormValidationFunction ) => {
37+ if ( typeof validationFunction === 'function' ) {
38+ this . validationEngine . addFormValidation ( validationFunction ) ;
39+ }
40+ } ) ;
41+ }
42+
43+ validateField ( vm : any , key : string , value : any , filter ?: any ) : Promise < FieldValidationResult > {
44+ return this . validationEngine . validateSingleField ( vm , key , value , filter ) ;
45+ }
46+
47+ validateForm ( vm : any ) : Promise < FormValidationResult > {
48+ return this . validationEngine . validateForm ( vm ) ;
49+ }
50+
51+ isValidationInProgress ( ) : boolean {
52+ return this . validationEngine . isValidationInProgress ( ) ;
53+ }
54+
55+ isFormDirty ( ) : boolean {
56+ return this . validationEngine . isFormDirty ( ) ;
57+ }
858
9- constructor ( ) {
10- this . _validationEngine = new ValidationEngine ( ) ;
59+ isFormPristine ( ) : boolean {
60+ return this . validationEngine . isFormPristine ( ) ;
1161 }
1262
13- public validateField ( vm : any , key : string , value : any , filter : any = consts . defaultFilter ) : Promise < FieldValidationResult > {
14- return this . _validationEngine . triggerFieldValidation ( vm , key , value , filter ) ;
63+ addFieldValidation ( key : string , validationFunction : ( value : string , vm : any ) => FieldValidationResult ) : FormValidation {
64+ this . validationEngine . addFieldValidation ( key , validationFunction ) ;
65+ return this ;
1566 }
1667
17- public validateForm ( vm : any ) : Promise < FormValidationResult > {
18- return this . _validationEngine . validateFullForm ( vm ) ;
68+ addFieldValidationAsync ( key : string , validationFunction : ( value : string , vm : any ) => Promise < FieldValidationResult > ) : FormValidation {
69+ this . validationEngine . addFieldValidationAsync ( key , validationFunction ) ;
70+ return this ;
1971 }
2072}
73+
74+ export function createFormValidation ( validationConstraints : ValidationConstraints ) : FormValidation {
75+ return new BaseFormValidation ( validationConstraints ) ;
76+ }
0 commit comments