@firestitch/2fa 12.0.3 → 12.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,18 +11,17 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
11
11
  import { FsFormModule } from '@firestitch/form';
12
12
  import { FsSkeletonModule } from '@firestitch/skeleton';
13
13
  import { FsRadioGroupModule } from '@firestitch/radiogroup';
14
+ import { FsDialogModule } from '@firestitch/dialog';
14
15
  // import { CodeInputModule } from 'angular-code-input';
15
16
  import { Fs2FAVerificationComponent } from './components/2fa-verification/2fa-verification.component';
16
17
  import { Fs2FAVerificationSMSComponent } from './components/2fa-verification-code/2fa-verification-code.component';
17
18
  import { Fs2FAVerificationOTPComponent } from './components/2fa-verification-otp/2fa-verification-otp.component';
18
- import { Fs2FAVerificationFormComponent } from './components/2fa-verification-form/2fa-verification-form.component';
19
19
  import { Fs2FaVerificationMethodsComponent } from './components/2fa-verification-methods/2fa-verification-methods.component';
20
20
  import * as i0 from "@angular/core";
21
21
  export class Fs2FaModule {
22
22
  }
23
23
  Fs2FaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
24
  Fs2FaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaModule, declarations: [Fs2FAVerificationComponent,
25
- Fs2FAVerificationFormComponent,
26
25
  Fs2FAVerificationSMSComponent,
27
26
  Fs2FAVerificationOTPComponent,
28
27
  Fs2FaVerificationMethodsComponent], imports: [CommonModule,
@@ -31,14 +30,15 @@ Fs2FaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
31
30
  MatInputModule,
32
31
  MatButtonModule,
33
32
  FsFormModule,
33
+ FsRadioGroupModule,
34
+ FsDialogModule,
34
35
  // CodeInputModule,
35
36
  MatCheckboxModule,
36
37
  MatProgressSpinnerModule,
37
38
  FsSkeletonModule,
38
39
  FsSkeletonModule,
39
40
  MatIconModule,
40
- MatRadioModule,
41
- FsRadioGroupModule], exports: [Fs2FAVerificationComponent] });
41
+ MatRadioModule], exports: [Fs2FAVerificationComponent] });
42
42
  Fs2FaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaModule, providers: [], imports: [[
43
43
  CommonModule,
44
44
  FormsModule,
@@ -46,6 +46,8 @@ Fs2FaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "1
46
46
  MatInputModule,
47
47
  MatButtonModule,
48
48
  FsFormModule,
49
+ FsRadioGroupModule,
50
+ FsDialogModule,
49
51
  // CodeInputModule,
50
52
  MatCheckboxModule,
51
53
  MatProgressSpinnerModule,
@@ -53,7 +55,6 @@ Fs2FaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "1
53
55
  FsSkeletonModule,
54
56
  MatIconModule,
55
57
  MatRadioModule,
56
- FsRadioGroupModule,
57
58
  ]] });
58
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaModule, decorators: [{
59
60
  type: NgModule,
@@ -65,6 +66,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
65
66
  MatInputModule,
66
67
  MatButtonModule,
67
68
  FsFormModule,
69
+ FsRadioGroupModule,
70
+ FsDialogModule,
68
71
  // CodeInputModule,
69
72
  MatCheckboxModule,
70
73
  MatProgressSpinnerModule,
@@ -72,11 +75,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
72
75
  FsSkeletonModule,
73
76
  MatIconModule,
74
77
  MatRadioModule,
75
- FsRadioGroupModule,
76
78
  ],
77
79
  declarations: [
78
80
  Fs2FAVerificationComponent,
79
- Fs2FAVerificationFormComponent,
80
81
  Fs2FAVerificationSMSComponent,
81
82
  Fs2FAVerificationOTPComponent,
82
83
  Fs2FaVerificationMethodsComponent,
@@ -87,4 +88,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
87
88
  providers: [],
88
89
  }]
89
90
  }] });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtMmZhLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvZnMtMmZhLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RCx3REFBd0Q7QUFFeEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDdEcsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDbkgsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDakgsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDcEgsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sMEVBQTBFLENBQUM7O0FBb0M3SCxNQUFNLE9BQU8sV0FBVzs7eUdBQVgsV0FBVzswR0FBWCxXQUFXLGlCQVpwQiwwQkFBMEI7UUFFMUIsOEJBQThCO1FBQzlCLDZCQUE2QjtRQUM3Qiw2QkFBNkI7UUFDN0IsaUNBQWlDLGFBeEJqQyxZQUFZO1FBQ1osV0FBVztRQUVYLGtCQUFrQjtRQUNsQixjQUFjO1FBQ2QsZUFBZTtRQUVmLFlBQVk7UUFFWixtQkFBbUI7UUFDbkIsaUJBQWlCO1FBQ2pCLHdCQUF3QjtRQUN4QixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixjQUFjO1FBQ2Qsa0JBQWtCLGFBV2xCLDBCQUEwQjswR0FJakIsV0FBVyxhQUZYLEVBQUUsWUE5Qko7WUFDUCxZQUFZO1lBQ1osV0FBVztZQUVYLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsZUFBZTtZQUVmLFlBQVk7WUFFWixtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLHdCQUF3QjtZQUN4QixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixjQUFjO1lBQ2Qsa0JBQWtCO1NBQ25COzRGQWNVLFdBQVc7a0JBakN2QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBRVgsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGVBQWU7d0JBRWYsWUFBWTt3QkFFWixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsd0JBQXdCO3dCQUN4QixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGtCQUFrQjtxQkFDbkI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLDBCQUEwQjt3QkFFMUIsOEJBQThCO3dCQUM5Qiw2QkFBNkI7d0JBQzdCLDZCQUE2Qjt3QkFDN0IsaUNBQWlDO3FCQUNsQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsMEJBQTBCO3FCQUMzQjtvQkFDRCxTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuXG5pbXBvcnQgeyBGc0Zvcm1Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcbmltcG9ydCB7IEZzU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9za2VsZXRvbic7XG5pbXBvcnQgeyBGc1JhZGlvR3JvdXBNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9yYWRpb2dyb3VwJztcblxuLy8gaW1wb3J0IHsgQ29kZUlucHV0TW9kdWxlIH0gZnJvbSAnYW5ndWxhci1jb2RlLWlucHV0JztcblxuaW1wb3J0IHsgRnMyRkFWZXJpZmljYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvMmZhLXZlcmlmaWNhdGlvbi8yZmEtdmVyaWZpY2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGczJGQVZlcmlmaWNhdGlvblNNU0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLWNvZGUvMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGczJGQVZlcmlmaWNhdGlvbk9UUENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLW90cC8yZmEtdmVyaWZpY2F0aW9uLW90cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRnMyRkFWZXJpZmljYXRpb25Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzLzJmYS12ZXJpZmljYXRpb24tZm9ybS8yZmEtdmVyaWZpY2F0aW9uLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEZzMkZhVmVyaWZpY2F0aW9uTWV0aG9kc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLW1ldGhvZHMvMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudCc7XG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcblxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG5cbiAgICBGc0Zvcm1Nb2R1bGUsXG5cbiAgICAvLyBDb2RlSW5wdXRNb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgIEZzU2tlbGV0b25Nb2R1bGUsXG4gICAgRnNTa2VsZXRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFJhZGlvTW9kdWxlLFxuICAgIEZzUmFkaW9Hcm91cE1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRnMyRkFWZXJpZmljYXRpb25Db21wb25lbnQsXG5cbiAgICBGczJGQVZlcmlmaWNhdGlvbkZvcm1Db21wb25lbnQsXG4gICAgRnMyRkFWZXJpZmljYXRpb25TTVNDb21wb25lbnQsXG4gICAgRnMyRkFWZXJpZmljYXRpb25PVFBDb21wb25lbnQsXG4gICAgRnMyRmFWZXJpZmljYXRpb25NZXRob2RzQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRnMyRkFWZXJpZmljYXRpb25Db21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEZzMkZhTW9kdWxlIHt9XG4iXX0=
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtMmZhLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvZnMtMmZhLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsd0RBQXdEO0FBRXhELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ25ILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLDBFQUEwRSxDQUFDOztBQW9DN0gsTUFBTSxPQUFPLFdBQVc7O3lHQUFYLFdBQVc7MEdBQVgsV0FBVyxpQkFYcEIsMEJBQTBCO1FBRTFCLDZCQUE2QjtRQUM3Qiw2QkFBNkI7UUFDN0IsaUNBQWlDLGFBeEJqQyxZQUFZO1FBQ1osV0FBVztRQUVYLGtCQUFrQjtRQUNsQixjQUFjO1FBQ2QsZUFBZTtRQUVmLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsY0FBYztRQUVkLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsd0JBQXdCO1FBQ3hCLGdCQUFnQjtRQUNoQixnQkFBZ0I7UUFDaEIsYUFBYTtRQUNiLGNBQWMsYUFVZCwwQkFBMEI7MEdBSWpCLFdBQVcsYUFGWCxFQUFFLFlBOUJKO1lBQ1AsWUFBWTtZQUNaLFdBQVc7WUFFWCxrQkFBa0I7WUFDbEIsY0FBYztZQUNkLGVBQWU7WUFFZixZQUFZO1lBQ1osa0JBQWtCO1lBQ2xCLGNBQWM7WUFFZCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLHdCQUF3QjtZQUN4QixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixjQUFjO1NBQ2Y7NEZBYVUsV0FBVztrQkFqQ3ZCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFFWCxrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsZUFBZTt3QkFFZixZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFFZCxtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsd0JBQXdCO3dCQUN4QixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixjQUFjO3FCQUNmO29CQUNELFlBQVksRUFBRTt3QkFDWiwwQkFBMEI7d0JBRTFCLDZCQUE2Qjt3QkFDN0IsNkJBQTZCO3dCQUM3QixpQ0FBaUM7cUJBQ2xDO29CQUNELE9BQU8sRUFBRTt3QkFDUCwwQkFBMEI7cUJBQzNCO29CQUNELFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5cbmltcG9ydCB7IEZzRm9ybU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2Zvcm0nO1xuaW1wb3J0IHsgRnNTa2VsZXRvbk1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3NrZWxldG9uJztcbmltcG9ydCB7IEZzUmFkaW9Hcm91cE1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3JhZGlvZ3JvdXAnO1xuaW1wb3J0IHsgRnNEaWFsb2dNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9kaWFsb2cnO1xuXG4vLyBpbXBvcnQgeyBDb2RlSW5wdXRNb2R1bGUgfSBmcm9tICdhbmd1bGFyLWNvZGUtaW5wdXQnO1xuXG5pbXBvcnQgeyBGczJGQVZlcmlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLzJmYS12ZXJpZmljYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEZzMkZBVmVyaWZpY2F0aW9uU01TQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzLzJmYS12ZXJpZmljYXRpb24tY29kZS8yZmEtdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50JztcbmltcG9ydCB7IEZzMkZBVmVyaWZpY2F0aW9uT1RQQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzLzJmYS12ZXJpZmljYXRpb24tb3RwLzJmYS12ZXJpZmljYXRpb24tb3RwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGczJGYVZlcmlmaWNhdGlvbk1ldGhvZHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLzJmYS12ZXJpZmljYXRpb24tbWV0aG9kcy5jb21wb25lbnQnO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG5cbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuXG4gICAgRnNGb3JtTW9kdWxlLFxuICAgIEZzUmFkaW9Hcm91cE1vZHVsZSxcbiAgICBGc0RpYWxvZ01vZHVsZSxcblxuICAgIC8vIENvZGVJbnB1dE1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgRnNTa2VsZXRvbk1vZHVsZSxcbiAgICBGc1NrZWxldG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0UmFkaW9Nb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEZzMkZBVmVyaWZpY2F0aW9uQ29tcG9uZW50LFxuXG4gICAgRnMyRkFWZXJpZmljYXRpb25TTVNDb21wb25lbnQsXG4gICAgRnMyRkFWZXJpZmljYXRpb25PVFBDb21wb25lbnQsXG4gICAgRnMyRmFWZXJpZmljYXRpb25NZXRob2RzQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRnMyRkFWZXJpZmljYXRpb25Db21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIEZzMkZhTW9kdWxlIHt9XG4iXX0=
@@ -1,34 +1,103 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, EventEmitter, Component, ChangeDetectionStrategy, Output, Input, Inject, NgModule } from '@angular/core';
3
- import * as i6 from '@angular/forms';
2
+ import { InjectionToken, Component, ChangeDetectionStrategy, Inject, EventEmitter, Output, Input, NgModule } from '@angular/core';
3
+ import * as i7 from '@angular/forms';
4
4
  import { ControlContainer, NgForm, FormsModule } from '@angular/forms';
5
- import * as i8 from '@angular/common';
5
+ import * as i10 from '@angular/common';
6
6
  import { CommonModule } from '@angular/common';
7
- import * as i2 from '@angular/material/icon';
7
+ import * as i4 from '@angular/material/icon';
8
8
  import { MatIconModule } from '@angular/material/icon';
9
- import * as i3$2 from '@angular/material/radio';
9
+ import * as i5 from '@angular/material/radio';
10
10
  import { MatRadioModule } from '@angular/material/radio';
11
- import * as i4 from '@angular/material/button';
11
+ import * as i5$1 from '@angular/material/button';
12
12
  import { MatButtonModule } from '@angular/material/button';
13
- import * as i1$1 from '@angular/material/form-field';
13
+ import * as i1$2 from '@angular/material/form-field';
14
14
  import { MatFormFieldModule } from '@angular/material/form-field';
15
- import * as i3 from '@angular/material/input';
15
+ import * as i3$1 from '@angular/material/input';
16
16
  import { MatInputModule } from '@angular/material/input';
17
- import * as i3$1 from '@angular/material/checkbox';
17
+ import * as i4$1 from '@angular/material/checkbox';
18
18
  import { MatCheckboxModule } from '@angular/material/checkbox';
19
- import * as i5 from '@angular/material/progress-spinner';
19
+ import * as i6 from '@angular/material/progress-spinner';
20
20
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
21
- import * as i1 from '@firestitch/form';
21
+ import * as i8 from '@firestitch/form';
22
22
  import { FsFormModule } from '@firestitch/form';
23
- import * as i7 from '@firestitch/skeleton';
23
+ import * as i9 from '@firestitch/skeleton';
24
24
  import { FsSkeletonModule } from '@firestitch/skeleton';
25
- import * as i1$2 from '@firestitch/radiogroup';
25
+ import * as i3 from '@firestitch/radiogroup';
26
26
  import { FsRadioGroupModule } from '@firestitch/radiogroup';
27
+ import * as i1$1 from '@firestitch/dialog';
28
+ import { FsDialogModule } from '@firestitch/dialog';
29
+ import { tap, map, shareReplay, takeUntil, filter } from 'rxjs/operators';
30
+ import * as i1 from '@angular/material/dialog';
31
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
27
32
  import { Subject } from 'rxjs';
28
- import { tap, takeUntil, map, shareReplay } from 'rxjs/operators';
29
33
 
30
34
  const FS_2FA_VERIFICATION_PROVIDER = new InjectionToken('Provider for Verification service');
31
35
 
36
+ var FsVerificationMethodType;
37
+ (function (FsVerificationMethodType) {
38
+ FsVerificationMethodType["Sms"] = "sms";
39
+ FsVerificationMethodType["Email"] = "email";
40
+ FsVerificationMethodType["Authenticator"] = "authenticator";
41
+ FsVerificationMethodType["Code"] = "code";
42
+ })(FsVerificationMethodType || (FsVerificationMethodType = {}));
43
+
44
+ class Fs2FaVerificationMethodsComponent {
45
+ constructor(_verificationProvider, _dialogData, _dialogRef) {
46
+ this._verificationProvider = _verificationProvider;
47
+ this._dialogData = _dialogData;
48
+ this._dialogRef = _dialogRef;
49
+ this.verificationMethodType = FsVerificationMethodType;
50
+ this.setVerificationMethod = () => {
51
+ return this._verificationProvider
52
+ .updateVerificationMethod(this.method.id)
53
+ .pipe(tap((method) => {
54
+ this._dialogRef.close(method);
55
+ }));
56
+ };
57
+ this._setActiveMethod();
58
+ this._initMethods();
59
+ }
60
+ compareWith(o1, o2) {
61
+ return o1 && o2 && o1.id === o2.id;
62
+ }
63
+ _setActiveMethod() {
64
+ var _a;
65
+ this.method = (_a = this._dialogData) === null || _a === void 0 ? void 0 : _a.method;
66
+ }
67
+ _initMethods() {
68
+ this.methods$ = this._verificationProvider
69
+ .methods()
70
+ .pipe(map((methods) => {
71
+ return methods
72
+ .reduce((acc, method) => {
73
+ if (!acc[method.type]) {
74
+ acc[method.type] = [];
75
+ }
76
+ acc[method.type].push(method);
77
+ return acc;
78
+ }, {});
79
+ }), shareReplay(1));
80
+ }
81
+ }
82
+ Fs2FaVerificationMethodsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaVerificationMethodsComponent, deps: [{ token: FS_2FA_VERIFICATION_PROVIDER }, { token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
83
+ Fs2FaVerificationMethodsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FaVerificationMethodsComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog>\n <h1 mat-dialog-title>\n Verification Methods\n </h1>\n <form fsForm [submit]=\"setVerificationMethod\">\n <mat-dialog-content>\n <ng-container *fsSkeleton=\"methods$ | async as methods\">\n <fs-radio-group [(ngModel)]=\"method\" name=\"method\" [compareWith]=\"compareWith\">\n <ng-container *ngFor=\"let methodMap of methods | keyvalue\">\n <div class=\"method\">\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n smartphone\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Text Message</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following mobile number\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n mail\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Email</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following email\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n {{ method.phoneNumber }}\n </mat-radio-button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n {{ method.email }}\n </mat-radio-button>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </fs-radio-group>\n </ng-container>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"actions\">\n <ng-container *ngIf=\"methods$ | async\">\n <button mat-button type=\"submit\" color=\"primary\">Next</button>\n </ng-container>\n <button mat-button type=\"button\" [mat-dialog-close]=\"null\">Cancel</button>\n </div>\n </mat-dialog-actions>\n </form>\n</fs-dialog>\n", styles: [".method{display:block;margin-bottom:20px}.method .method-header{display:flex;align-items:flex-start}.method .method-header .method-name{margin-left:10px}.method .method-header .method-name .method-title{font-size:14px;font-weight:400}.method .method-header .method-name .method-subtitle{font-size:12px;color:#a3a3a3}.method .method-item{display:block;margin:10px 0 0 35px}\n"], components: [{ type: i1$1.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3.FsRadioGroupComponent, selector: "fs-radio-group", inputs: ["orientation", "radioPosition", "compareWith", "required", "disabled", "label", "name"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { type: i5$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "successDelay", "errorDelay", "submit", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9.ɵa, selector: "[fsSkeleton]", inputs: ["fsSkeletonPattern", "fsSkeleton"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.ɵw, selector: "button[type=\"submit\"]", inputs: ["dirtySubmit", "name"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "async": i10.AsyncPipe, "keyvalue": i10.KeyValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaVerificationMethodsComponent, decorators: [{
85
+ type: Component,
86
+ args: [{
87
+ templateUrl: './2fa-verification-methods.component.html',
88
+ styleUrls: [
89
+ './2fa-verification-methods.component.scss',
90
+ ],
91
+ changeDetection: ChangeDetectionStrategy.OnPush,
92
+ }]
93
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
94
+ type: Inject,
95
+ args: [FS_2FA_VERIFICATION_PROVIDER]
96
+ }] }, { type: undefined, decorators: [{
97
+ type: Inject,
98
+ args: [MAT_DIALOG_DATA]
99
+ }] }, { type: i1.MatDialogRef }]; } });
100
+
32
101
  class Fs2FAVerificationOTPComponent {
33
102
  constructor(form) {
34
103
  this.form = form;
@@ -42,7 +111,7 @@ class Fs2FAVerificationOTPComponent {
42
111
  this.form.triggerSubmit();
43
112
  }
44
113
  }
45
- Fs2FAVerificationOTPComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FAVerificationOTPComponent, deps: [{ token: i1.FsFormDirective }], target: i0.ɵɵFactoryTarget.Component });
114
+ Fs2FAVerificationOTPComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FAVerificationOTPComponent, deps: [{ token: i8.FsFormDirective }], target: i0.ɵɵFactoryTarget.Component });
46
115
  Fs2FAVerificationOTPComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FAVerificationOTPComponent, selector: "fs-2fa-verification-otp", outputs: { codeChange: "codeChange" }, ngImport: i0, template: "<p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator\n app to verify it's you\n</p>\n\n<!--\n<code-input [initialFocusField]=\"0\"\n [codeLength]=\"6\"\n (codeChanged)=\"codeChanged($event)\"\n (codeCompleted)=\"codeCompleted()\">>\n</code-input>\n-->\n", styles: [":host{display:block}code-input{--item-spacing: 10px;--item-height: 20px;--item-border: none;--item-border-bottom: 2px solid #949494;--item-border-has-value: none;--item-border-bottom-has-value: 2px solid #949494;--item-border-focused: none;--item-border-bottom-focused: 2px solid #0061AF;--item-shadow-focused: none;--item-border-radius: 0px}code-input ::ng-deep span:first-child{padding-left:0!important}code-input ::ng-deep span:last-child{padding-right:0!important}code-input ::ng-deep input{font-size:20px!important;height:40px!important;padding:0!important}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
47
116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FAVerificationOTPComponent, decorators: [{
48
117
  type: Component,
@@ -54,7 +123,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
54
123
  ],
55
124
  changeDetection: ChangeDetectionStrategy.OnPush,
56
125
  }]
57
- }], ctorParameters: function () { return [{ type: i1.FsFormDirective }]; }, propDecorators: { codeChange: [{
126
+ }], ctorParameters: function () { return [{ type: i8.FsFormDirective }]; }, propDecorators: { codeChange: [{
58
127
  type: Output
59
128
  }] } });
60
129
 
@@ -67,7 +136,7 @@ class Fs2FAVerificationSMSComponent {
67
136
  }
68
137
  }
69
138
  Fs2FAVerificationSMSComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FAVerificationSMSComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
70
- Fs2FAVerificationSMSComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FAVerificationSMSComponent, selector: "fs-2fa-verification-code", inputs: { method: "method" }, outputs: { codeChange: "codeChange" }, ngImport: i0, template: "<p class=\"description\">\n <ng-container *ngIf=\"method.phoneCode && method.phoneNumber && method.type === 'sms'\">\n A text message with a verification code was just\n sent to <span style=\"white-space: nowrap;\">+{{ method.phoneCode }} {{ method.phoneNumber }}</span> to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"method.type === 'email'\">\n A email with a verification code was just sent to {{ method.email }} to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"false\">\n Enter the one time code generated by the app administrator to verify it's you.\n </ng-container>\n</p>\n\n<mat-form-field>\n <mat-label>Code</mat-label>\n <input type=\"text\"\n matInput\n name=\"code\"\n autocomplete=\"one-time-code\"\n [(ngModel)]=\"code\"\n (ngModelChange)=\"codeChanged()\"\n required\n placeholder=\"Enter the code\"\n inputmode=\"numeric\">\n</mat-form-field>\n", styles: [":host{display:block}mat-form-field{width:100%}\n"], components: [{ type: i1$1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.MatLabel, selector: "mat-label" }, { type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.ɵf, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }], viewProviders: [
139
+ Fs2FAVerificationSMSComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FAVerificationSMSComponent, selector: "fs-2fa-verification-code", inputs: { method: "method" }, outputs: { codeChange: "codeChange" }, ngImport: i0, template: "<p class=\"description\">\n <ng-container *ngIf=\"method.phoneNumber && method.type === 'sms'\">\n A text message with a verification code was just\n sent to <span style=\"white-space: nowrap;\">{{ method.phoneNumber }}</span> to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"method.type === 'email'\">\n A email with a verification code was just sent to {{ method.email }} to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"false\">\n Enter the one time code generated by the app administrator to verify it's you.\n </ng-container>\n</p>\n\n<mat-form-field>\n <mat-label>Code</mat-label>\n <input type=\"text\"\n matInput\n name=\"code\"\n autocomplete=\"one-time-code\"\n [(ngModel)]=\"code\"\n (ngModelChange)=\"codeChanged()\"\n required\n placeholder=\"Enter the code\"\n inputmode=\"numeric\">\n</mat-form-field>\n", styles: [":host{display:block}mat-form-field{width:100%}\n"], components: [{ type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$2.MatLabel, selector: "mat-label" }, { type: i3$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.ɵf, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }], viewProviders: [
71
140
  {
72
141
  provide: ControlContainer,
73
142
  useExisting: NgForm,
@@ -95,11 +164,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
95
164
  type: Output
96
165
  }] } });
97
166
 
98
- class Fs2FAVerificationFormComponent {
99
- constructor(verificationProvider, _cdRef) {
167
+ class Fs2FAVerificationComponent {
168
+ constructor(verificationProvider, _cdRef, _dialog) {
100
169
  this.verificationProvider = verificationProvider;
101
170
  this._cdRef = _cdRef;
171
+ this._dialog = _dialog;
102
172
  this.verified = new EventEmitter();
173
+ this.backToSignIn = new EventEmitter();
103
174
  this.resendInProgress = false;
104
175
  this.trustedDevice = false;
105
176
  this._destroy$ = new Subject();
@@ -128,122 +199,25 @@ class Fs2FAVerificationFormComponent {
128
199
  this._cdRef.markForCheck();
129
200
  });
130
201
  }
131
- }
132
- Fs2FAVerificationFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FAVerificationFormComponent, deps: [{ token: FS_2FA_VERIFICATION_PROVIDER }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
133
- Fs2FAVerificationFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FAVerificationFormComponent, selector: "fs-2fa-verification-form", inputs: { method: "method" }, outputs: { verified: "verified" }, ngImport: i0, template: "<form fsForm [submit]=\"verify\">\n <h2>2-Step Verification</h2>\n\n <div class=\"code-container\">\n <ng-container *ngIf=\"method.type === 'authenticator' else code\">\n <fs-2fa-verification-otp class=\"otp\"></fs-2fa-verification-otp>\n </ng-container>\n\n <ng-template #code>\n <fs-2fa-verification-code\n [method]=\"method\"\n (codeChange)=\"codeChanged($event)\">\n </fs-2fa-verification-code>\n </ng-template>\n </div>\n\n <div class=\"additional\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustedDevice\">\n Trust this device\n </mat-checkbox>\n\n <span matSuffix>\n <button mat-button\n type=\"button\"\n color=\"primary\"\n (click)=\"resend()\"\n [disabled]=\"resendInProgress\"\n class=\"resend-code-btn\">\n <ng-container *ngIf=\"!resendInProgress else sending\">\n Resend Code\n </ng-container>\n <ng-template #sending>\n <mat-spinner [diameter]=\"12\"></mat-spinner> Sending\n </ng-template>\n </button>\n </span>\n </div>\n\n <div class=\"actions\">\n <button mat-raised-button\n color=\"primary\"\n type=\"submit\">\n Verify\n </button>\n\n <ng-content></ng-content>\n </div>\n</form>\n", styles: ["h2,.code-container{text-align:center}.code-container .otp{margin-bottom:15px}:host ::ng-deep .actions{margin:10px 0}:host ::ng-deep .actions a{width:100%;font-weight:400}:host ::ng-deep .actions button{width:100%}:host ::ng-deep .actions button[type=button]{font-weight:400;text-transform:none}.additional{display:flex;justify-content:space-between;align-items:baseline;margin-top:-5px}.additional .resend-code-btn{text-transform:none}.additional .resend-code-btn mat-spinner{display:inline-block;vertical-align:middle}\n"], components: [{ type: Fs2FAVerificationOTPComponent, selector: "fs-2fa-verification-otp", outputs: ["codeChange"] }, { type: Fs2FAVerificationSMSComponent, selector: "fs-2fa-verification-code", inputs: ["method"], outputs: ["codeChange"] }, { type: i3$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "successDelay", "errorDelay", "submit", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1$1.MatSuffix, selector: "[matSuffix]" }, { type: i1.ɵw, selector: "button[type=\"submit\"]", inputs: ["dirtySubmit", "name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FAVerificationFormComponent, decorators: [{
135
- type: Component,
136
- args: [{
137
- selector: 'fs-2fa-verification-form',
138
- templateUrl: './2fa-verification-form.component.html',
139
- styleUrls: [
140
- './2fa-verification-form.component.scss',
141
- ],
142
- changeDetection: ChangeDetectionStrategy.OnPush,
143
- }]
144
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
145
- type: Inject,
146
- args: [FS_2FA_VERIFICATION_PROVIDER]
147
- }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { method: [{
148
- type: Input
149
- }], verified: [{
150
- type: Output
151
- }] } });
152
-
153
- var FsVerificationMethodType;
154
- (function (FsVerificationMethodType) {
155
- FsVerificationMethodType["Sms"] = "sms";
156
- FsVerificationMethodType["Email"] = "email";
157
- FsVerificationMethodType["Authenticator"] = "authenticator";
158
- FsVerificationMethodType["Code"] = "code";
159
- })(FsVerificationMethodType || (FsVerificationMethodType = {}));
160
-
161
- class Fs2FaVerificationMethodsComponent {
162
- constructor(_verificationProvider) {
163
- this._verificationProvider = _verificationProvider;
164
- this.methodChange = new EventEmitter();
165
- this.cancelled = new EventEmitter();
166
- this.verificationMethodType = FsVerificationMethodType;
167
- this.setVerificationMethod = () => {
168
- return this._verificationProvider
169
- .updateVerificationMethod(this.method.id)
170
- .pipe(tap((method) => {
171
- this.methodChange.emit(method);
172
- }));
173
- };
174
- this._initMethods();
175
- }
176
- ngOnInit() {
177
- }
178
- compareWith(o1, o2) {
179
- return o1 && o2 && o1.id === o2.id;
180
- }
181
- cancel() {
182
- this.cancelled.emit();
183
- }
184
- _initMethods() {
185
- this.methods$ = this._verificationProvider
186
- .methods()
187
- .pipe(map((methods) => {
188
- return methods
189
- .reduce((acc, method) => {
190
- if (!acc[method.type]) {
191
- acc[method.type] = [];
192
- }
193
- acc[method.type].push(method);
194
- return acc;
195
- }, {});
196
- }), shareReplay(1));
197
- }
198
- }
199
- Fs2FaVerificationMethodsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaVerificationMethodsComponent, deps: [{ token: FS_2FA_VERIFICATION_PROVIDER }], target: i0.ɵɵFactoryTarget.Component });
200
- Fs2FaVerificationMethodsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FaVerificationMethodsComponent, selector: "fs-2fa-verification-methods", inputs: { method: "method" }, outputs: { methodChange: "methodChange", cancelled: "cancelled" }, ngImport: i0, template: "<h2>\n Verification Methods\n</h2>\n<form fsForm [submit]=\"setVerificationMethod\">\n <ng-container *fsSkeleton=\"methods$ | async as methods\">\n <fs-radio-group [(ngModel)]=\"method\" name=\"method\" [compareWith]=\"compareWith\">\n <ng-container *ngFor=\"let methodMap of methods | keyvalue\">\n <div class=\"method\">\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n smartphone\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Text Message</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following mobile number\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n mail\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Email</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following email\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n + {{ method.phoneCode }} {{ method.phoneNumber }}\n </mat-radio-button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n {{ method.email }}\n </mat-radio-button>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </fs-radio-group>\n </ng-container>\n\n <div class=\"actions\">\n <ng-container *ngIf=\"methods$ | async\">\n <button mat-button type=\"submit\" color=\"primary\">Next</button>\n </ng-container>\n <button mat-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n </div>\n</form>\n", styles: [".method{display:block;margin-bottom:20px}.method .method-header{display:flex;align-items:flex-start}.method .method-header .method-name{margin-left:10px}.method .method-header .method-name .method-title{font-size:14px;font-weight:400}.method .method-header .method-name .method-subtitle{font-size:12px;color:#a3a3a3}.method .method-item{display:block;margin:10px 0 0 35px}\n"], components: [{ type: i1$2.FsRadioGroupComponent, selector: "fs-radio-group", inputs: ["orientation", "radioPosition", "compareWith", "required", "disabled", "label", "name"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3$2.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "successDelay", "errorDelay", "submit", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i7.ɵa, selector: "[fsSkeleton]", inputs: ["fsSkeletonPattern", "fsSkeleton"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i8.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ɵw, selector: "button[type=\"submit\"]", inputs: ["dirtySubmit", "name"] }], pipes: { "async": i8.AsyncPipe, "keyvalue": i8.KeyValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
201
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaVerificationMethodsComponent, decorators: [{
202
- type: Component,
203
- args: [{
204
- selector: 'fs-2fa-verification-methods',
205
- templateUrl: './2fa-verification-methods.component.html',
206
- styleUrls: [
207
- './2fa-verification-methods.component.scss',
208
- ],
209
- changeDetection: ChangeDetectionStrategy.OnPush,
210
- }]
211
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
212
- type: Inject,
213
- args: [FS_2FA_VERIFICATION_PROVIDER]
214
- }] }]; }, propDecorators: { method: [{
215
- type: Input
216
- }], methodChange: [{
217
- type: Output
218
- }], cancelled: [{
219
- type: Output
220
- }] } });
221
-
222
- class Fs2FAVerificationComponent {
223
- constructor() {
224
- this.verified = new EventEmitter();
225
- this.backToSignIn = new EventEmitter();
226
- this._view = 'code';
227
- }
228
- get view() {
229
- return this._view;
230
- }
231
- switchVerificationMethod(method) {
232
- this._view = method;
233
- }
234
- setActiveMethod(method) {
235
- this.method = method;
236
- this.switchVerificationMethod('code');
237
- }
238
- cancel() {
239
- this.switchVerificationMethod('code');
202
+ showVerificationMethods() {
203
+ this._dialog.open(Fs2FaVerificationMethodsComponent, {
204
+ data: {
205
+ method: this.method,
206
+ }
207
+ })
208
+ .afterClosed()
209
+ .pipe(filter((method) => !!method))
210
+ .subscribe((method) => {
211
+ this.method = method;
212
+ this._cdRef.markForCheck();
213
+ });
240
214
  }
241
215
  toSignIn() {
242
216
  this.backToSignIn.emit();
243
217
  }
244
218
  }
245
- Fs2FAVerificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FAVerificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
246
- Fs2FAVerificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FAVerificationComponent, selector: "fs-2fa-verification", inputs: { method: "method" }, outputs: { verified: "verified", backToSignIn: "backToSignIn" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"view\">\n <ng-container *ngSwitchCase=\"'code'\">\n <fs-2fa-verification-form [method]=\"method\" (verified)=\"verified.emit($event)\">\n <button mat-button type=\"button\" (click)=\"switchVerificationMethod('methods')\">\n Try other ways to verify\n </button>\n\n <a mat-button (click)=\"toSignIn()\">\n Back to signin\n </a>\n </fs-2fa-verification-form>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'methods'\">\n <fs-2fa-verification-methods\n [method]=\"method\"\n (methodChange)=\"setActiveMethod($event)\"\n (cancelled)=\"cancel()\">\n </fs-2fa-verification-methods>\n </ng-container>\n</ng-container>\n", styles: [":host{display:block}\n"], components: [{ type: Fs2FAVerificationFormComponent, selector: "fs-2fa-verification-form", inputs: ["method"], outputs: ["verified"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { type: Fs2FaVerificationMethodsComponent, selector: "fs-2fa-verification-methods", inputs: ["method"], outputs: ["methodChange", "cancelled"] }], directives: [{ type: i8.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i8.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
219
+ Fs2FAVerificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FAVerificationComponent, deps: [{ token: FS_2FA_VERIFICATION_PROVIDER }, { token: i0.ChangeDetectorRef }, { token: i1$1.FsDialog }], target: i0.ɵɵFactoryTarget.Component });
220
+ Fs2FAVerificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FAVerificationComponent, selector: "fs-2fa-verification", inputs: { method: "method" }, outputs: { verified: "verified", backToSignIn: "backToSignIn" }, ngImport: i0, template: "<form fsForm [submit]=\"verify\" [dirtySubmitButton]=\"false\">\n <h2>2-Step Verification</h2>\n\n <div class=\"code-container\">\n <ng-container *ngIf=\"method.type === 'authenticator' else code\">\n <fs-2fa-verification-otp class=\"otp\"></fs-2fa-verification-otp>\n </ng-container>\n\n <ng-template #code>\n <fs-2fa-verification-code\n [method]=\"method\"\n (codeChange)=\"codeChanged($event)\">\n </fs-2fa-verification-code>\n </ng-template>\n </div>\n\n <div class=\"additional\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustedDevice\">\n Trust this device\n </mat-checkbox>\n\n <span matSuffix>\n <a mat-button\n type=\"button\"\n color=\"primary\"\n (click)=\"resend()\"\n [disabled]=\"resendInProgress\"\n class=\"resend-code-btn\">\n <ng-container *ngIf=\"!resendInProgress else sending\">\n Resend Code\n </ng-container>\n <ng-template #sending>\n <mat-spinner [diameter]=\"12\"></mat-spinner> Sending\n </ng-template>\n </a>\n </span>\n </div>\n\n <div class=\"actions\">\n <button mat-raised-button\n color=\"primary\"\n type=\"submit\">\n Verify\n </button>\n\n <button mat-button type=\"button\" (click)=\"showVerificationMethods()\">\n Try other ways to verify\n </button>\n\n <button mat-button type=\"button\" (click)=\"toSignIn()\">\n Back to signin\n </button>\n </div>\n</form>\n", styles: [":host{display:block}h2,.code-container{text-align:center}.code-container .otp{margin-bottom:15px}:host ::ng-deep .actions{margin:10px 0}:host ::ng-deep .actions a{width:100%;font-weight:400}:host ::ng-deep .actions button{width:100%;margin-bottom:5px}:host ::ng-deep .actions button[type=button]{font-weight:400}.additional{display:flex;justify-content:space-between;align-items:baseline;margin-top:-5px}.additional .resend-code-btn{text-transform:none}.additional .resend-code-btn mat-spinner{display:inline-block;vertical-align:middle}\n"], components: [{ type: Fs2FAVerificationOTPComponent, selector: "fs-2fa-verification-otp", outputs: ["codeChange"] }, { type: Fs2FAVerificationSMSComponent, selector: "fs-2fa-verification-code", inputs: ["method"], outputs: ["codeChange"] }, { type: i4$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i5$1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { type: i6.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i5$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "successDelay", "errorDelay", "submit", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1$2.MatSuffix, selector: "[matSuffix]" }, { type: i8.ɵw, selector: "button[type=\"submit\"]", inputs: ["dirtySubmit", "name"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
247
221
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FAVerificationComponent, decorators: [{
248
222
  type: Component,
249
223
  args: [{
@@ -254,7 +228,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
254
228
  ],
255
229
  changeDetection: ChangeDetectionStrategy.OnPush,
256
230
  }]
257
- }], ctorParameters: function () { return []; }, propDecorators: { method: [{
231
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
232
+ type: Inject,
233
+ args: [FS_2FA_VERIFICATION_PROVIDER]
234
+ }] }, { type: i0.ChangeDetectorRef }, { type: i1$1.FsDialog }]; }, propDecorators: { method: [{
258
235
  type: Input
259
236
  }], verified: [{
260
237
  type: Output
@@ -266,7 +243,6 @@ class Fs2FaModule {
266
243
  }
267
244
  Fs2FaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
268
245
  Fs2FaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaModule, declarations: [Fs2FAVerificationComponent,
269
- Fs2FAVerificationFormComponent,
270
246
  Fs2FAVerificationSMSComponent,
271
247
  Fs2FAVerificationOTPComponent,
272
248
  Fs2FaVerificationMethodsComponent], imports: [CommonModule,
@@ -275,14 +251,15 @@ Fs2FaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
275
251
  MatInputModule,
276
252
  MatButtonModule,
277
253
  FsFormModule,
254
+ FsRadioGroupModule,
255
+ FsDialogModule,
278
256
  // CodeInputModule,
279
257
  MatCheckboxModule,
280
258
  MatProgressSpinnerModule,
281
259
  FsSkeletonModule,
282
260
  FsSkeletonModule,
283
261
  MatIconModule,
284
- MatRadioModule,
285
- FsRadioGroupModule], exports: [Fs2FAVerificationComponent] });
262
+ MatRadioModule], exports: [Fs2FAVerificationComponent] });
286
263
  Fs2FaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaModule, providers: [], imports: [[
287
264
  CommonModule,
288
265
  FormsModule,
@@ -290,6 +267,8 @@ Fs2FaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "1
290
267
  MatInputModule,
291
268
  MatButtonModule,
292
269
  FsFormModule,
270
+ FsRadioGroupModule,
271
+ FsDialogModule,
293
272
  // CodeInputModule,
294
273
  MatCheckboxModule,
295
274
  MatProgressSpinnerModule,
@@ -297,7 +276,6 @@ Fs2FaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "1
297
276
  FsSkeletonModule,
298
277
  MatIconModule,
299
278
  MatRadioModule,
300
- FsRadioGroupModule,
301
279
  ]] });
302
280
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2FaModule, decorators: [{
303
281
  type: NgModule,
@@ -309,6 +287,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
309
287
  MatInputModule,
310
288
  MatButtonModule,
311
289
  FsFormModule,
290
+ FsRadioGroupModule,
291
+ FsDialogModule,
312
292
  // CodeInputModule,
313
293
  MatCheckboxModule,
314
294
  MatProgressSpinnerModule,
@@ -316,11 +296,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
316
296
  FsSkeletonModule,
317
297
  MatIconModule,
318
298
  MatRadioModule,
319
- FsRadioGroupModule,
320
299
  ],
321
300
  declarations: [
322
301
  Fs2FAVerificationComponent,
323
- Fs2FAVerificationFormComponent,
324
302
  Fs2FAVerificationSMSComponent,
325
303
  Fs2FAVerificationOTPComponent,
326
304
  Fs2FaVerificationMethodsComponent,