@firestitch/2fa 12.3.2 → 12.3.5

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.
Files changed (27) hide show
  1. package/app/enums/verification-method-type.enum.d.ts +1 -1
  2. package/app/interfaces/verification-method.interface.d.ts +2 -2
  3. package/app/modules/manage/components/2fa-manage/2fa-manage.component.d.ts +3 -1
  4. package/app/modules/manage/components/emails/emails.component.d.ts +2 -2
  5. package/app/modules/manage/components/manage-methods/manage-methods.component.d.ts +3 -0
  6. package/app/modules/manage/components/numbers/numbers.component.d.ts +2 -2
  7. package/app/modules/verification/components/2fa-verification/2fa-verification.component.d.ts +2 -2
  8. package/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.d.ts +2 -2
  9. package/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.d.ts +2 -2
  10. package/bundles/firestitch-2fa.umd.js +43 -28
  11. package/bundles/firestitch-2fa.umd.js.map +1 -1
  12. package/esm2015/app/enums/verification-method-type.enum.js +7 -7
  13. package/esm2015/app/interfaces/verification-method.interface.js +1 -1
  14. package/esm2015/app/modules/manage/components/2fa-manage/2fa-manage.component.js +11 -2
  15. package/esm2015/app/modules/manage/components/emails/emails.component.js +5 -5
  16. package/esm2015/app/modules/manage/components/manage-methods/manage-methods.component.js +14 -7
  17. package/esm2015/app/modules/manage/components/numbers/numbers.component.js +5 -5
  18. package/esm2015/app/modules/manage/components/verification-methods/verification-methods.component.js +3 -3
  19. package/esm2015/app/modules/manage/services/two-factor-manage.service.js +7 -7
  20. package/esm2015/app/modules/verification/components/2fa-verification/2fa-verification.component.js +3 -3
  21. package/esm2015/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.js +4 -4
  22. package/esm2015/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.js +3 -3
  23. package/esm2015/public_api.js +2 -2
  24. package/fesm2015/firestitch-2fa.js +44 -29
  25. package/fesm2015/firestitch-2fa.js.map +1 -1
  26. package/package.json +1 -1
  27. package/public_api.d.ts +1 -1
@@ -1,4 +1,4 @@
1
- export declare enum FsVerificationMethodType {
1
+ export declare enum VerificationMethodType {
2
2
  Sms = "sms",
3
3
  Email = "email",
4
4
  App = "app"
@@ -1,8 +1,8 @@
1
- import { FsVerificationMethodType } from '../enums/verification-method-type.enum';
1
+ import { VerificationMethodType } from '../enums/verification-method-type.enum';
2
2
  export interface IFsVerificationMethod {
3
3
  id: number;
4
4
  state?: string;
5
- type: FsVerificationMethodType;
5
+ type: VerificationMethodType;
6
6
  phoneCode?: number;
7
7
  phoneCountry?: string;
8
8
  email?: string;
@@ -1,5 +1,6 @@
1
1
  import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
2
  import { MatDialog } from '@angular/material/dialog';
3
+ import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
3
4
  import { Observable } from 'rxjs';
4
5
  import { TwoFactorManageService } from '../../services';
5
6
  import * as i0 from "@angular/core";
@@ -9,6 +10,7 @@ export declare class Fs2faManageComponent implements OnDestroy, OnInit {
9
10
  private _twoFactorManageService;
10
11
  accountVerify: () => Observable<any>;
11
12
  defaultCountry: string;
13
+ verificationMethodTypes: VerificationMethodType[];
12
14
  verificationMethodsFetch: () => Observable<any[]>;
13
15
  verificationMethodDelete: (verificationMethod: any) => Observable<any>;
14
16
  verificationMethodCreate: (verificationMethod: any) => Observable<any>;
@@ -22,5 +24,5 @@ export declare class Fs2faManageComponent implements OnDestroy, OnInit {
22
24
  reload(): void;
23
25
  ngOnDestroy(): void;
24
26
  static ɵfac: i0.ɵɵFactoryDeclaration<Fs2faManageComponent, never>;
25
- static ɵcmp: i0.ɵɵComponentDeclaration<Fs2faManageComponent, "fs-2fa-manage", never, { "accountVerify": "accountVerify"; "defaultCountry": "defaultCountry"; "verificationMethodsFetch": "verificationMethodsFetch"; "verificationMethodDelete": "verificationMethodDelete"; "verificationMethodCreate": "verificationMethodCreate"; "verificationMethodVerify": "verificationMethodVerify"; "verificationMethodResend": "verificationMethodResend"; }, {}, never, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<Fs2faManageComponent, "fs-2fa-manage", never, { "accountVerify": "accountVerify"; "defaultCountry": "defaultCountry"; "verificationMethodTypes": "verificationMethodTypes"; "verificationMethodsFetch": "verificationMethodsFetch"; "verificationMethodDelete": "verificationMethodDelete"; "verificationMethodCreate": "verificationMethodCreate"; "verificationMethodVerify": "verificationMethodVerify"; "verificationMethodResend": "verificationMethodResend"; }, {}, never, never>;
26
28
  }
@@ -1,6 +1,6 @@
1
1
  import { MatDialogRef } from '@angular/material/dialog';
2
2
  import { FsMessage } from '@firestitch/message';
3
- import { FsVerificationMethodType } from '../../../../enums/verification-method-type.enum';
3
+ import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
4
4
  import { TwoFactorManageService } from '../../services';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class EmailsComponent {
@@ -8,7 +8,7 @@ export declare class EmailsComponent {
8
8
  private _dialogRef;
9
9
  private _message;
10
10
  twoFactorManageService: TwoFactorManageService;
11
- FsVerificationMethodType: typeof FsVerificationMethodType;
11
+ VerificationMethodType: typeof VerificationMethodType;
12
12
  constructor(_data: any, _dialogRef: MatDialogRef<EmailsComponent>, _message: FsMessage);
13
13
  add(): void;
14
14
  deleted(): void;
@@ -1,6 +1,7 @@
1
1
  import { ChangeDetectorRef, OnInit, OnDestroy } from '@angular/core';
2
2
  import { MatDialog } from '@angular/material/dialog';
3
3
  import { TwoFactorManageService } from '../../services';
4
+ import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
4
5
  import { FsMessage } from '@firestitch/message';
5
6
  import * as i0 from "@angular/core";
6
7
  export declare class ManageMethodsComponent implements OnInit, OnDestroy {
@@ -10,6 +11,8 @@ export declare class ManageMethodsComponent implements OnInit, OnDestroy {
10
11
  private _message;
11
12
  twoFactorManageService: TwoFactorManageService;
12
13
  verificationMethods: any;
14
+ verificationMethodTypes: {};
15
+ VerificationMethodType: typeof VerificationMethodType;
13
16
  private _destroy$;
14
17
  private _defaultCountry;
15
18
  constructor(_data: any, _cdRef: ChangeDetectorRef, _dialog: MatDialog, _message: FsMessage);
@@ -1,6 +1,6 @@
1
1
  import { MatDialogRef } from '@angular/material/dialog';
2
2
  import { FsMessage } from '@firestitch/message';
3
- import { FsVerificationMethodType } from '../../../../enums/verification-method-type.enum';
3
+ import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
4
4
  import { TwoFactorManageService } from '../../services';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class NumbersComponent {
@@ -9,7 +9,7 @@ export declare class NumbersComponent {
9
9
  private _message;
10
10
  defaultCountry: any;
11
11
  twoFactorManageService: TwoFactorManageService;
12
- FsVerificationMethodType: typeof FsVerificationMethodType;
12
+ VerificationMethodType: typeof VerificationMethodType;
13
13
  constructor(_data: any, _dialogRef: MatDialogRef<NumbersComponent>, _message: FsMessage);
14
14
  add(): void;
15
15
  deleted(): void;
@@ -2,7 +2,7 @@ import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } fro
2
2
  import { FsDialog } from '@firestitch/dialog';
3
3
  import { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';
4
4
  import { Observable } from 'rxjs';
5
- import { FsVerificationMethodType } from '../../../../enums/verification-method-type.enum';
5
+ import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
6
6
  import { Fs2faVerificationCodeComponent } from '../2fa-verification-code/2fa-verification-code.component';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class Fs2faVerificationComponent implements OnDestroy, AfterViewInit, OnInit {
@@ -19,7 +19,7 @@ export declare class Fs2faVerificationComponent implements OnDestroy, AfterViewI
19
19
  resendInProgress: boolean;
20
20
  code: string;
21
21
  trustedDevice: boolean;
22
- FsVerificationMethodType: typeof FsVerificationMethodType;
22
+ VerificationMethodType: typeof VerificationMethodType;
23
23
  private _destroy$;
24
24
  constructor(_cdRef: ChangeDetectorRef, _dialog: FsDialog);
25
25
  ngOnInit(): void;
@@ -1,6 +1,6 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { CodeInputComponent } from '../../../../modules/code-input/components/code-input';
3
- import { FsVerificationMethodType } from '../../../../enums/verification-method-type.enum';
3
+ import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
4
4
  import { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class Fs2faVerificationCodeComponent {
@@ -9,7 +9,7 @@ export declare class Fs2faVerificationCodeComponent {
9
9
  code: any;
10
10
  codeChanged: EventEmitter<string>;
11
11
  codeCompleted: EventEmitter<void>;
12
- FsVerificationMethodType: typeof FsVerificationMethodType;
12
+ VerificationMethodType: typeof VerificationMethodType;
13
13
  codeChange(code: any): void;
14
14
  focus(): void;
15
15
  static ɵfac: i0.ɵɵFactoryDeclaration<Fs2faVerificationCodeComponent, never>;
@@ -1,6 +1,6 @@
1
1
  import { MatDialogRef } from '@angular/material/dialog';
2
2
  import { Observable } from 'rxjs';
3
- import { FsVerificationMethodType } from '../../../../enums/verification-method-type.enum';
3
+ import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
4
4
  import { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class Fs2faVerificationMethodsComponent {
@@ -10,7 +10,7 @@ export declare class Fs2faVerificationMethodsComponent {
10
10
  phone: string;
11
11
  code: string;
12
12
  verificationMethods: Record<string, IFsVerificationMethod[]>;
13
- readonly verificationMethodType: typeof FsVerificationMethodType;
13
+ readonly verificationMethodType: typeof VerificationMethodType;
14
14
  private _selectVerificationMethod;
15
15
  constructor(_dialogData: any, _dialogRef: MatDialogRef<Fs2faVerificationMethodsComponent>);
16
16
  compareWith(o1: any, o2: any): boolean;
@@ -46,19 +46,19 @@
46
46
  var i2__namespace = /*#__PURE__*/_interopNamespace(i2);
47
47
  var i1__namespace$2 = /*#__PURE__*/_interopNamespace(i1$2);
48
48
 
49
- exports.FsVerificationMethodType = void 0;
50
- (function (FsVerificationMethodType) {
51
- FsVerificationMethodType["Sms"] = "sms";
52
- FsVerificationMethodType["Email"] = "email";
53
- FsVerificationMethodType["App"] = "app";
54
- })(exports.FsVerificationMethodType || (exports.FsVerificationMethodType = {}));
49
+ exports.VerificationMethodType = void 0;
50
+ (function (VerificationMethodType) {
51
+ VerificationMethodType["Sms"] = "sms";
52
+ VerificationMethodType["Email"] = "email";
53
+ VerificationMethodType["App"] = "app";
54
+ })(exports.VerificationMethodType || (exports.VerificationMethodType = {}));
55
55
 
56
56
  var Fs2faVerificationMethodsComponent = /** @class */ (function () {
57
57
  function Fs2faVerificationMethodsComponent(_dialogData, _dialogRef) {
58
58
  var _this = this;
59
59
  this._dialogData = _dialogData;
60
60
  this._dialogRef = _dialogRef;
61
- this.verificationMethodType = exports.FsVerificationMethodType;
61
+ this.verificationMethodType = exports.VerificationMethodType;
62
62
  this.setVerificationMethod = function () {
63
63
  return _this._selectVerificationMethod(_this.method)
64
64
  .pipe(operators.tap(function (method) {
@@ -143,7 +143,7 @@
143
143
  function Fs2faVerificationCodeComponent() {
144
144
  this.codeChanged = new i0.EventEmitter();
145
145
  this.codeCompleted = new i0.EventEmitter();
146
- this.FsVerificationMethodType = exports.FsVerificationMethodType;
146
+ this.VerificationMethodType = exports.VerificationMethodType;
147
147
  }
148
148
  Fs2faVerificationCodeComponent.prototype.codeChange = function (code) {
149
149
  this.code = code;
@@ -155,7 +155,7 @@
155
155
  return Fs2faVerificationCodeComponent;
156
156
  }());
157
157
  Fs2faVerificationCodeComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2faVerificationCodeComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
158
- Fs2faVerificationCodeComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2faVerificationCodeComponent, selector: "fs-2fa-verification-code", inputs: { method: "method", code: "code" }, outputs: { codeChanged: "codeChanged", codeCompleted: "codeCompleted" }, viewQueries: [{ propertyName: "codeInputComponent", first: true, predicate: CodeInputComponent, descendants: true }], ngImport: i0__namespace, template: "<ng-container *ngIf=\"method.phoneNumber && method.type === FsVerificationMethodType.Sms\">\n <p class=\"description\">\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 </p>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"method.type === FsVerificationMethodType.Email\">\n <p class=\"description\">\n A email with a verification code was just sent to {{ method.email }} to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"method.type === FsVerificationMethodType.App\">\n <p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator app to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-template #input> \n <app-code-input \n [code]=\"code\"\n (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </app-code-input> \n</ng-template> ", styles: ["mat-form-field{width:100%}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper{min-height:unset!important}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper .fs-form-error{padding-bottom:5px}app-code-input{margin-bottom:5px}\n"], components: [{ type: CodeInputComponent, selector: "app-code-input", inputs: ["codeLength", "code"], outputs: ["codeCompleted", "codeChanged"] }], directives: [{ type: i9__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9__namespace$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], viewProviders: [
158
+ Fs2faVerificationCodeComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2faVerificationCodeComponent, selector: "fs-2fa-verification-code", inputs: { method: "method", code: "code" }, outputs: { codeChanged: "codeChanged", codeCompleted: "codeCompleted" }, viewQueries: [{ propertyName: "codeInputComponent", first: true, predicate: CodeInputComponent, descendants: true }], ngImport: i0__namespace, template: "<ng-container *ngIf=\"method.phoneNumber && method.type === VerificationMethodType.Sms\">\n <p class=\"description\">\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 </p>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"method.type === VerificationMethodType.Email\">\n <p class=\"description\">\n A email with a verification code was just sent to {{ method.email }} to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"method.type === VerificationMethodType.App\">\n <p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator app to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-template #input> \n <app-code-input \n [code]=\"code\"\n (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </app-code-input> \n</ng-template> ", styles: ["mat-form-field{width:100%}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper{min-height:unset!important}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper .fs-form-error{padding-bottom:5px}app-code-input{margin-bottom:5px}\n"], components: [{ type: CodeInputComponent, selector: "app-code-input", inputs: ["codeLength", "code"], outputs: ["codeCompleted", "codeChanged"] }], directives: [{ type: i9__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9__namespace$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], viewProviders: [
159
159
  {
160
160
  provide: i8.ControlContainer,
161
161
  useExisting: i8.NgForm,
@@ -200,7 +200,7 @@
200
200
  this.resendInProgress = false;
201
201
  this.code = '';
202
202
  this.trustedDevice = true;
203
- this.FsVerificationMethodType = exports.FsVerificationMethodType;
203
+ this.VerificationMethodType = exports.VerificationMethodType;
204
204
  this._destroy$ = new rxjs.Subject();
205
205
  }
206
206
  Fs2faVerificationComponent.prototype.ngOnInit = function () {
@@ -621,21 +621,21 @@
621
621
  });
622
622
  Object.defineProperty(TwoFactorManageService.prototype, "emailVerificationMethods", {
623
623
  get: function () {
624
- return this.getVerificationMethods(exports.FsVerificationMethodType.Email);
624
+ return this.getVerificationMethods(exports.VerificationMethodType.Email);
625
625
  },
626
626
  enumerable: false,
627
627
  configurable: true
628
628
  });
629
629
  Object.defineProperty(TwoFactorManageService.prototype, "smsVerificationMethods", {
630
630
  get: function () {
631
- return this.getVerificationMethods(exports.FsVerificationMethodType.Sms);
631
+ return this.getVerificationMethods(exports.VerificationMethodType.Sms);
632
632
  },
633
633
  enumerable: false,
634
634
  configurable: true
635
635
  });
636
636
  Object.defineProperty(TwoFactorManageService.prototype, "appVerificationMethods", {
637
637
  get: function () {
638
- return this.getVerificationMethods(exports.FsVerificationMethodType.App);
638
+ return this.getVerificationMethods(exports.VerificationMethodType.App);
639
639
  },
640
640
  enumerable: false,
641
641
  configurable: true
@@ -698,7 +698,7 @@
698
698
  });
699
699
  };
700
700
  TwoFactorManageService.prototype.accountVerify = function () {
701
- return this._accountVerify();
701
+ return this._accountVerify ? this._accountVerify() : rxjs.of(true);
702
702
  };
703
703
  TwoFactorManageService.prototype.ngOnDestroy = function () {
704
704
  this._destroy$.next();
@@ -777,7 +777,7 @@
777
777
  title: 'Confirm',
778
778
  template: 'Would you like to delete this verification method?',
779
779
  })
780
- .pipe(operators.switchMap(function () { return _this.twoFactorManageService
780
+ .pipe(operators.switchMap(function () { return _this.twoFactorManageService.accountVerify(); }), operators.switchMap(function () { return _this.twoFactorManageService
781
781
  .verificationMethodDelete(verificationMethod); }))
782
782
  .subscribe(function () {
783
783
  _this.deleted.emit(verificationMethod);
@@ -799,7 +799,7 @@
799
799
  return VerificationMethodsComponent;
800
800
  }());
801
801
  VerificationMethodsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: VerificationMethodsComponent, deps: [{ token: i1__namespace$2.FsPrompt }], target: i0__namespace.ɵɵFactoryTarget.Component });
802
- VerificationMethodsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: VerificationMethodsComponent, selector: "app-verification-methods", inputs: { twoFactorManageService: "twoFactorManageService", type: "type" }, outputs: { deleted: "deleted" }, ngImport: i0__namespace, template: "<fs-list [config]=\"listConfig\">\n <fs-list-column class=\"col-name\">\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"row\">\n <ng-container *ngIf=\"row.type === 'sms'\">\n <fs-country [code]=\"row.phoneCountry\" [showName]=\"false\"></fs-country> {{row.phoneNumber | fsPhone}}\n </ng-container>\n\n <ng-container *ngIf=\"row.type === 'email'\">\n {{row.email}}\n </ng-container>\n \n <app-defaulted *ngIf=\"row.default\"></app-defaulted>\n </div>\n </ng-template>\n </fs-list-column>\n</fs-list>", styles: [":host ::ng-deep .col-name .row{display:flex;align-items:center}fs-country{margin-right:5px}app-defaulted{margin-left:5px}\n"], components: [{ type: i2__namespace$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i3__namespace$3.FsCountryComponent, selector: "fs-country", inputs: ["code", "showIcon", "showName", "region", "width"] }, { type: DefaultedComponent, selector: "app-defaulted" }], directives: [{ type: i2__namespace$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["title", "name", "show", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i9__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsPhone": i6__namespace.FsPhonePipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
802
+ VerificationMethodsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: VerificationMethodsComponent, selector: "app-verification-methods", inputs: { twoFactorManageService: "twoFactorManageService", type: "type" }, outputs: { deleted: "deleted" }, ngImport: i0__namespace, template: "<fs-list [config]=\"listConfig\">\n <fs-list-column class=\"col-name\">\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"row\">\n <ng-container *ngIf=\"row.type === 'sms'\">\n <fs-country [code]=\"row.phoneCountry\" [showName]=\"false\"></fs-country> {{row.phoneNumber | fsPhone}}\n </ng-container>\n\n <ng-container *ngIf=\"row.type === 'email'\">\n {{row.email}}\n </ng-container>\n \n <app-defaulted *ngIf=\"row.default\"></app-defaulted>\n </div>\n </ng-template>\n </fs-list-column>\n</fs-list>", styles: [":host ::ng-deep .col-name .row{display:flex;align-items:center}fs-country{margin-right:5px}app-defaulted{margin-left:5px}\n"], components: [{ type: i2__namespace$1.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i3__namespace$3.FsCountryComponent, selector: "fs-country", inputs: ["code", "showIcon", "showName", "region", "width"] }, { type: DefaultedComponent, selector: "app-defaulted" }], directives: [{ type: i2__namespace$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i9__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsPhone": i6__namespace.FsPhonePipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
803
803
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: VerificationMethodsComponent, decorators: [{
804
804
  type: i0.Component,
805
805
  args: [{
@@ -821,7 +821,7 @@
821
821
  this._data = _data;
822
822
  this._dialogRef = _dialogRef;
823
823
  this._message = _message;
824
- this.FsVerificationMethodType = exports.FsVerificationMethodType;
824
+ this.VerificationMethodType = exports.VerificationMethodType;
825
825
  this.twoFactorManageService = _data.twoFactorManageService;
826
826
  this.defaultCountry = _data.defaultCountry;
827
827
  }
@@ -831,14 +831,14 @@
831
831
  };
832
832
  NumbersComponent.prototype.deleted = function () {
833
833
  this._message.success('Deleted text message verification method');
834
- if (!this.twoFactorManageService.hasVerificationMethod(exports.FsVerificationMethodType.Sms)) {
834
+ if (!this.twoFactorManageService.hasVerificationMethod(exports.VerificationMethodType.Sms)) {
835
835
  this._dialogRef.close();
836
836
  }
837
837
  };
838
838
  return NumbersComponent;
839
839
  }());
840
840
  NumbersComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: NumbersComponent, deps: [{ token: i1.MAT_DIALOG_DATA }, { token: i1__namespace.MatDialogRef }, { token: i2__namespace.FsMessage }], target: i0__namespace.ɵɵFactoryTarget.Component });
841
- NumbersComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NumbersComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog>\n <h1 mat-dialog-title>\n Text Message Numbers\n </h1>\n <mat-dialog-content>\n <app-verification-methods\n [type]=\"FsVerificationMethodType.Sms\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </app-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add Number\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [""], components: [{ type: i3__namespace.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: VerificationMethodsComponent, selector: "app-verification-methods", inputs: ["twoFactorManageService", "type"], outputs: ["deleted"] }, { type: i7__namespace.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__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
841
+ NumbersComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: NumbersComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog>\n <h1 mat-dialog-title>\n Text Message Numbers\n </h1>\n <mat-dialog-content>\n <app-verification-methods\n [type]=\"VerificationMethodType.Sms\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </app-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add Number\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [""], components: [{ type: i3__namespace.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: VerificationMethodsComponent, selector: "app-verification-methods", inputs: ["twoFactorManageService", "type"], outputs: ["deleted"] }, { type: i7__namespace.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__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
842
842
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: NumbersComponent, decorators: [{
843
843
  type: i0.Component,
844
844
  args: [{
@@ -858,7 +858,7 @@
858
858
  this._data = _data;
859
859
  this._dialogRef = _dialogRef;
860
860
  this._message = _message;
861
- this.FsVerificationMethodType = exports.FsVerificationMethodType;
861
+ this.VerificationMethodType = exports.VerificationMethodType;
862
862
  this.twoFactorManageService = _data.twoFactorManageService;
863
863
  }
864
864
  EmailsComponent.prototype.add = function () {
@@ -867,14 +867,14 @@
867
867
  };
868
868
  EmailsComponent.prototype.deleted = function () {
869
869
  this._message.success('Deleted email verification method');
870
- if (!this.twoFactorManageService.hasVerificationMethod(exports.FsVerificationMethodType.Email)) {
870
+ if (!this.twoFactorManageService.hasVerificationMethod(exports.VerificationMethodType.Email)) {
871
871
  this._dialogRef.close();
872
872
  }
873
873
  };
874
874
  return EmailsComponent;
875
875
  }());
876
876
  EmailsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: EmailsComponent, deps: [{ token: i1.MAT_DIALOG_DATA }, { token: i1__namespace.MatDialogRef }, { token: i2__namespace.FsMessage }], target: i0__namespace.ɵɵFactoryTarget.Component });
877
- EmailsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: EmailsComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog>\n <h1 mat-dialog-title>\n Emails\n </h1>\n <mat-dialog-content>\n <app-verification-methods\n [type]=\"FsVerificationMethodType.Email\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </app-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add Email\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [""], components: [{ type: i3__namespace.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: VerificationMethodsComponent, selector: "app-verification-methods", inputs: ["twoFactorManageService", "type"], outputs: ["deleted"] }, { type: i7__namespace.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__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
877
+ EmailsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: EmailsComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog>\n <h1 mat-dialog-title>\n Emails\n </h1>\n <mat-dialog-content>\n <app-verification-methods\n [type]=\"VerificationMethodType.Email\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </app-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add Email\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [""], components: [{ type: i3__namespace.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: VerificationMethodsComponent, selector: "app-verification-methods", inputs: ["twoFactorManageService", "type"], outputs: ["deleted"] }, { type: i7__namespace.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__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
878
878
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: EmailsComponent, decorators: [{
879
879
  type: i0.Component,
880
880
  args: [{
@@ -895,12 +895,19 @@
895
895
  this._cdRef = _cdRef;
896
896
  this._dialog = _dialog;
897
897
  this._message = _message;
898
+ this.verificationMethodTypes = {};
899
+ this.VerificationMethodType = exports.VerificationMethodType;
898
900
  this._destroy$ = new rxjs.Subject();
899
901
  }
900
902
  ManageMethodsComponent.prototype.ngOnInit = function () {
901
903
  var _this = this;
902
904
  this._defaultCountry = this._data.defaultCountry;
903
905
  this.twoFactorManageService = this._data.twoFactorManageService;
906
+ this.verificationMethodTypes = this._data.verificationMethodTypes
907
+ .reduce(function (verificationMethodTypes, verificationMethodType) {
908
+ verificationMethodTypes[verificationMethodType] = true;
909
+ return verificationMethodTypes;
910
+ }, {});
904
911
  this.twoFactorManageService.verificationMethods$
905
912
  .subscribe(function (verificationMethods) {
906
913
  _this.verificationMethods = verificationMethods;
@@ -939,21 +946,21 @@
939
946
  });
940
947
  Object.defineProperty(ManageMethodsComponent.prototype, "textHasVerificationMethod", {
941
948
  get: function () {
942
- return this.twoFactorManageService.hasVerificationMethod(exports.FsVerificationMethodType.Sms);
949
+ return this.twoFactorManageService.hasVerificationMethod(exports.VerificationMethodType.Sms);
943
950
  },
944
951
  enumerable: false,
945
952
  configurable: true
946
953
  });
947
954
  Object.defineProperty(ManageMethodsComponent.prototype, "appHasVerificationMethod", {
948
955
  get: function () {
949
- return this.twoFactorManageService.hasVerificationMethod(exports.FsVerificationMethodType.App);
956
+ return this.twoFactorManageService.hasVerificationMethod(exports.VerificationMethodType.App);
950
957
  },
951
958
  enumerable: false,
952
959
  configurable: true
953
960
  });
954
961
  Object.defineProperty(ManageMethodsComponent.prototype, "emailHasVerificationMethod", {
955
962
  get: function () {
956
- return this.twoFactorManageService.hasVerificationMethod(exports.FsVerificationMethodType.Email);
963
+ return this.twoFactorManageService.hasVerificationMethod(exports.VerificationMethodType.Email);
957
964
  },
958
965
  enumerable: false,
959
966
  configurable: true
@@ -986,7 +993,7 @@
986
993
  this._message.success('Removed App Authenticator verification method');
987
994
  var verificationMethod = this.verificationMethods
988
995
  .find(function (_verificationMethod) {
989
- return _verificationMethod.type === exports.FsVerificationMethodType.App;
996
+ return _verificationMethod.type === exports.VerificationMethodType.App;
990
997
  });
991
998
  if (verificationMethod) {
992
999
  this.twoFactorManageService.verificationMethodDelete(verificationMethod)
@@ -1006,7 +1013,7 @@
1006
1013
  return ManageMethodsComponent;
1007
1014
  }());
1008
1015
  ManageMethodsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ManageMethodsComponent, deps: [{ token: i1.MAT_DIALOG_DATA }, { token: i0__namespace.ChangeDetectorRef }, { token: i1__namespace.MatDialog }, { token: i2__namespace.FsMessage }], target: i0__namespace.ɵɵFactoryTarget.Component });
1009
- ManageMethodsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ManageMethodsComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog>\n <h1 mat-dialog-title>2-Step Verification</h1>\n <mat-dialog-content>\n <table>\n <tr>\n <td>\n <mat-icon>textsms</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Text Message</span>\n <span *ngIf=\"textHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultSms\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by text message\n <ng-container *ngIf=\"textHasVerificationMethod\">\n to <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.smsVerificationMethods\">{{item.phoneNumber | fsPhone}}</span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n <button \n *ngIf=\"textHasVerificationMethod; else textMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"textMessageManage()\">\n Manage\n </button>\n <ng-template #textMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"textMessageAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr>\n <tr>\n <td>\n <mat-icon>email</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Email</span> \n <span *ngIf=\"emailHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultEmail\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by email\n <ng-container *ngIf=\"emailHasVerificationMethod\">\n to <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.emailVerificationMethods\">{{item.email}}</span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n <button \n *ngIf=\"emailHasVerificationMethod; else emailMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"emailMessageManage()\">\n Manage\n </button>\n <ng-template #emailMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"emailMessageAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr>\n <tr>\n <td>\n <mat-icon>phone_iphone</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Authenticator App</span>\n <span *ngIf=\"appHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultApp\"></app-defaulted>\n </div>\n <div class=\"small\">Verification code is generated by an authenticator app such as Authy or Google Authenticator</div>\n </td>\n <td>\n <button \n *ngIf=\"appHasVerificationMethod; else appMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"appRemove()\">\n Remove\n </button>\n <ng-template #appMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"appAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr> \n </table> \n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: ["mat-dialog-content{max-width:500px}.enabled{font-size:75%;background-color:#70b601;padding:2px 4px;border-radius:4px;color:#fff;margin-left:4px}.enabled:after{content:\"Enabled\"}table tr td:first-child,table tr td:last-child{width:1%}table tr td:first-child mat-icon,table tr td:last-child mat-icon{display:flex}table tr td{padding:6px;vertical-align:middle}table tr .type{display:flex;align-items:center}table tr .type app-defaulted{margin-left:4px}.items span+span:not(:last-child):before{content:\", \"}.items span+span:last-child:before{content:\" and \"}\n"], components: [{ type: i3__namespace.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i4__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: DefaultedComponent, selector: "app-defaulted" }, { type: i7__namespace.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__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9__namespace$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "fsPhone": i6__namespace.FsPhonePipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
1016
+ ManageMethodsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: ManageMethodsComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog>\n <h1 mat-dialog-title>2-Step Verification</h1>\n <mat-dialog-content>\n <table>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Sms]\">\n <td>\n <mat-icon>textsms</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Text Message</span>\n <span *ngIf=\"textHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultSms\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by text message\n <ng-container *ngIf=\"textHasVerificationMethod\">\n to <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.smsVerificationMethods\">{{item.phoneNumber | fsPhone}}</span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n <button \n *ngIf=\"textHasVerificationMethod; else textMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"textMessageManage()\">\n Manage\n </button>\n <ng-template #textMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"textMessageAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Email]\">\n <td>\n <mat-icon>email</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Email</span> \n <span *ngIf=\"emailHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultEmail\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by email\n <ng-container *ngIf=\"emailHasVerificationMethod\">\n to <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.emailVerificationMethods\">{{item.email}}</span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n <button \n *ngIf=\"emailHasVerificationMethod; else emailMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"emailMessageManage()\">\n Manage\n </button>\n <ng-template #emailMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"emailMessageAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.App]\">\n <td>\n <mat-icon>phone_iphone</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Authenticator App</span>\n <span *ngIf=\"appHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultApp\"></app-defaulted>\n </div>\n <div class=\"small\">Verification code is generated by an authenticator app such as Authy or Google Authenticator</div>\n </td>\n <td>\n <button \n *ngIf=\"appHasVerificationMethod; else appMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"appRemove()\">\n Remove\n </button>\n <ng-template #appMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"appAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr> \n </table> \n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: ["mat-dialog-content{max-width:500px}.enabled{font-size:75%;background-color:#70b601;padding:2px 4px;border-radius:4px;color:#fff;margin-left:4px}.enabled:after{content:\"Enabled\"}table tr td:first-child,table tr td:last-child{width:1%}table tr td:first-child mat-icon,table tr td:last-child mat-icon{display:flex}table tr td{padding:6px;vertical-align:middle}table tr .type{display:flex;align-items:center}table tr .type app-defaulted{margin-left:4px}.items span+span:not(:last-child):before{content:\", \"}.items span+span:last-child:before{content:\" and \"}\n"], components: [{ type: i3__namespace.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i4__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: DefaultedComponent, selector: "app-defaulted" }, { type: i7__namespace.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__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9__namespace$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i1__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "fsPhone": i6__namespace.FsPhonePipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
1010
1017
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: ManageMethodsComponent, decorators: [{
1011
1018
  type: i0.Component,
1012
1019
  args: [{
@@ -1030,6 +1037,11 @@
1030
1037
  }
1031
1038
  Fs2faManageComponent.prototype.ngOnInit = function () {
1032
1039
  var _this = this;
1040
+ this.verificationMethodTypes = this.verificationMethodTypes || [
1041
+ exports.VerificationMethodType.Sms,
1042
+ exports.VerificationMethodType.Email,
1043
+ exports.VerificationMethodType.App
1044
+ ];
1033
1045
  this._twoFactorManageService.registerVerificationMethodFetch(this.verificationMethodsFetch);
1034
1046
  this._twoFactorManageService.registerVerificationMethodDelete(this.verificationMethodDelete);
1035
1047
  this._twoFactorManageService.registerVerificationMethodCreate(this.verificationMethodCreate);
@@ -1061,6 +1073,7 @@
1061
1073
  data: {
1062
1074
  defaultCountry: this.defaultCountry,
1063
1075
  twoFactorManageService: this._twoFactorManageService,
1076
+ verificationMethodTypes: this.verificationMethodTypes,
1064
1077
  },
1065
1078
  });
1066
1079
  dialogRef.afterClosed()
@@ -1079,7 +1092,7 @@
1079
1092
  return Fs2faManageComponent;
1080
1093
  }());
1081
1094
  Fs2faManageComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2faManageComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: i1__namespace.MatDialog }, { token: TwoFactorManageService }], target: i0__namespace.ɵɵFactoryTarget.Component });
1082
- Fs2faManageComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2faManageComponent, selector: "fs-2fa-manage", inputs: { accountVerify: "accountVerify", defaultCountry: "defaultCountry", verificationMethodsFetch: "verificationMethodsFetch", verificationMethodDelete: "verificationMethodDelete", verificationMethodCreate: "verificationMethodCreate", verificationMethodVerify: "verificationMethodVerify", verificationMethodResend: "verificationMethodResend" }, providers: [TwoFactorManageService], ngImport: i0__namespace, template: "<fs-label-field>\n <fs-label>Status</fs-label>\n <ng-container *ngIf=\"statuses\">\n <ng-container *ngIf=\"statuses.length === 1\">\n {{statuses[0]}} verification is enabled\n </ng-container>\n\n <ng-container *ngIf=\"statuses.length > 1\">\n {{statuses.join(', ')}} verifications are enabled\n </ng-container>\n\n <ng-container *ngIf=\"statuses.length === 0\">\n No verification methods are enabled\n </ng-container>\n </ng-container>\n</fs-label-field>", styles: [""], components: [{ type: i3__namespace$4.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i3__namespace$4.FsLabelComponent, selector: "fs-label" }], directives: [{ type: i9__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
1095
+ Fs2faManageComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2faManageComponent, selector: "fs-2fa-manage", inputs: { accountVerify: "accountVerify", defaultCountry: "defaultCountry", verificationMethodTypes: "verificationMethodTypes", verificationMethodsFetch: "verificationMethodsFetch", verificationMethodDelete: "verificationMethodDelete", verificationMethodCreate: "verificationMethodCreate", verificationMethodVerify: "verificationMethodVerify", verificationMethodResend: "verificationMethodResend" }, providers: [TwoFactorManageService], ngImport: i0__namespace, template: "<fs-label-field>\n <fs-label>Status</fs-label>\n <ng-container *ngIf=\"statuses\">\n <ng-container *ngIf=\"statuses.length === 1\">\n {{statuses[0]}} verification is enabled\n </ng-container>\n\n <ng-container *ngIf=\"statuses.length > 1\">\n {{statuses.join(', ')}} verifications are enabled\n </ng-container>\n\n <ng-container *ngIf=\"statuses.length === 0\">\n No verification methods are enabled\n </ng-container>\n </ng-container>\n</fs-label-field>", styles: [""], components: [{ type: i3__namespace$4.FsLabelFieldComponent, selector: "fs-label-field", inputs: ["bottomMargin", "topMargin", "labelMargin"] }, { type: i3__namespace$4.FsLabelComponent, selector: "fs-label" }], directives: [{ type: i9__namespace$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
1083
1096
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2faManageComponent, decorators: [{
1084
1097
  type: i0.Component,
1085
1098
  args: [{
@@ -1093,6 +1106,8 @@
1093
1106
  type: i0.Input
1094
1107
  }], defaultCountry: [{
1095
1108
  type: i0.Input
1109
+ }], verificationMethodTypes: [{
1110
+ type: i0.Input
1096
1111
  }], verificationMethodsFetch: [{
1097
1112
  type: i0.Input
1098
1113
  }], verificationMethodDelete: [{