1
+ import { Injectable } from '@angular/core' ;
2
+ import { AbstractControl , FormGroup } from '@angular/forms' ;
3
+ import { PASSWORD_LOWERCASE } from '../app/account/_validators/lowercase-password' ;
4
+ import { PASSWORD_UPPERCASE } from '../app/account/_validators/uppercase-password' ;
5
+ import { PASSWORD_NUMERIC } from '../app/account/_validators/numeric-password' ;
6
+ import { PASSWORD_SPECIAL } from '../app/account/_validators/special-password' ;
7
+ import { PASSWORD_SHORT } from '../app/account/_validators/short-password' ;
8
+ import { PASSWORD_WEAK } from '../app/account/_validators/weak-password.validator' ;
9
+ import { PASSWORD_MISMATCH } from '../app/account/_validators/mismatch-password.validator' ;
10
+ import { USERNAME_INVALID } from '../app/account/_validators/invalid-username.validator' ;
11
+ import { PASSWORD_INVALID } from '../app/account/_validators/invalid-password.validator' ;
12
+
13
+ @Injectable ( {
14
+ providedIn : 'root' ,
15
+ } )
16
+ export class FormUtilsService {
17
+ get isUsernameInvalid ( ) : ( form : FormGroup ) => boolean {
18
+ return ( form : FormGroup ) => {
19
+ const usernameControl = form . controls [ 'username' ] ;
20
+ return usernameControl . dirty && usernameControl . hasError ( USERNAME_INVALID ) ;
21
+ } ;
22
+ }
23
+
24
+ get isEmailInvalid ( ) : ( form : FormGroup ) => boolean {
25
+ return ( form : FormGroup ) => {
26
+ const emailControl = form . controls [ 'email' ] ;
27
+ return emailControl . dirty && emailControl . invalid ;
28
+ } ;
29
+ }
30
+
31
+ get passwordControl ( ) : ( form : FormGroup ) => AbstractControl {
32
+ return ( form : FormGroup ) => form . controls [ 'password' ] ;
33
+ }
34
+
35
+ get isPasswordControlDirty ( ) : ( form : FormGroup ) => boolean {
36
+ return ( form : FormGroup ) => this . passwordControl ( form ) . dirty ;
37
+ }
38
+
39
+ get passwordHasNoLowercase ( ) : ( form : FormGroup ) => boolean {
40
+ return ( form : FormGroup ) => this . passwordControl ( form ) . pristine || this . passwordControl ( form ) . hasError ( PASSWORD_LOWERCASE ) ;
41
+ }
42
+
43
+ get passwordHasNoUppercase ( ) : ( form : FormGroup ) => boolean {
44
+ return ( form : FormGroup ) => this . passwordControl ( form ) . pristine || this . passwordControl ( form ) . hasError ( PASSWORD_UPPERCASE ) ;
45
+ }
46
+
47
+ get passwordHasNoNumeric ( ) : ( form : FormGroup ) => boolean {
48
+ return ( form : FormGroup ) => this . passwordControl ( form ) . pristine || this . passwordControl ( form ) . hasError ( PASSWORD_NUMERIC ) ;
49
+ }
50
+
51
+ get passwordHasNoSpecial ( ) : ( form : FormGroup ) => boolean {
52
+ return ( form : FormGroup ) => this . passwordControl ( form ) . pristine || this . passwordControl ( form ) . hasError ( PASSWORD_SPECIAL ) ;
53
+ }
54
+
55
+ get isPasswordShort ( ) : ( form : FormGroup ) => boolean {
56
+ return ( form : FormGroup ) => this . passwordControl ( form ) . pristine || this . passwordControl ( form ) . hasError ( PASSWORD_SHORT ) ;
57
+ }
58
+
59
+ get isPasswordWeak ( ) : ( form : FormGroup ) => boolean {
60
+ return ( form : FormGroup ) => this . passwordControl ( form ) . dirty && this . passwordControl ( form ) . hasError ( PASSWORD_WEAK ) ;
61
+ }
62
+
63
+ get isPasswordStrong ( ) : ( form : FormGroup ) => boolean {
64
+ return ( form : FormGroup ) => this . passwordControl ( form ) . dirty && ! this . passwordControl ( form ) . hasError ( PASSWORD_WEAK ) ;
65
+ }
66
+
67
+ get isPasswordInvalid ( ) : ( form : FormGroup ) => boolean {
68
+ return ( form : FormGroup ) => this . passwordControl ( form ) . dirty && this . passwordControl ( form ) . hasError ( PASSWORD_INVALID ) ;
69
+ }
70
+
71
+ get hasPasswordMismatch ( ) : ( form : FormGroup ) => boolean {
72
+ return ( form : FormGroup ) => {
73
+ const confirmPasswordControl = form . controls [ 'confirmPassword' ] ;
74
+ return this . passwordControl ( form ) . valid && confirmPasswordControl . dirty && form . hasError ( PASSWORD_MISMATCH ) ;
75
+ } ;
76
+ }
77
+ }
0 commit comments