@firestitch/2fa 12.0.0 → 12.0.3

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 (41) hide show
  1. package/app/components/2fa-verification/2fa-verification.component.d.ts +17 -0
  2. package/app/components/2fa-verification-code/2fa-verification-code.component.d.ts +11 -0
  3. package/app/components/2fa-verification-form/2fa-verification-form.component.d.ts +21 -0
  4. package/app/components/2fa-verification-methods/2fa-verification-methods.component.d.ts +24 -0
  5. package/app/components/2fa-verification-otp/2fa-verification-otp.component.d.ts +12 -0
  6. package/app/enums/verification-method-type.enum.d.ts +6 -0
  7. package/app/fs-2fa.module.d.ts +23 -19
  8. package/app/interfaces/verification-method.interface.d.ts +11 -0
  9. package/app/interfaces/verification-provider.interface.d.ts +8 -0
  10. package/app/tokens/verification.token.d.ts +3 -0
  11. package/bundles/firestitch-2fa.umd.js +364 -203
  12. package/bundles/firestitch-2fa.umd.js.map +1 -1
  13. package/esm2015/app/components/2fa-verification/2fa-verification.component.js +49 -0
  14. package/esm2015/app/components/2fa-verification-code/2fa-verification-code.component.js +45 -0
  15. package/esm2015/app/components/2fa-verification-form/2fa-verification-form.component.js +69 -0
  16. package/esm2015/app/components/2fa-verification-methods/2fa-verification-methods.component.js +74 -0
  17. package/esm2015/app/components/2fa-verification-otp/2fa-verification-otp.component.js +33 -0
  18. package/esm2015/app/enums/verification-method-type.enum.js +8 -0
  19. package/esm2015/app/fs-2fa.module.js +90 -68
  20. package/esm2015/app/interfaces/verification-method.interface.js +2 -0
  21. package/esm2015/app/interfaces/verification-provider.interface.js +2 -0
  22. package/esm2015/app/tokens/verification.token.js +3 -0
  23. package/esm2015/firestitch-2fa.js +4 -4
  24. package/esm2015/public_api.js +9 -4
  25. package/fesm2015/firestitch-2fa.js +332 -179
  26. package/fesm2015/firestitch-2fa.js.map +1 -1
  27. package/firestitch-2fa.d.ts +5 -5
  28. package/package.json +1 -2
  29. package/public_api.d.ts +6 -7
  30. package/app/components/current-device/current-device.component.d.ts +0 -5
  31. package/app/components/trusted-devices/trusted-devices.component.d.ts +0 -26
  32. package/app/interfaces/trusted-device-account.d.ts +0 -6
  33. package/app/interfaces/trusted-device-device.d.ts +0 -10
  34. package/app/interfaces/trusted-device-ip.d.ts +0 -5
  35. package/app/interfaces/trusted-device.d.ts +0 -14
  36. package/esm2015/app/components/current-device/current-device.component.js +0 -18
  37. package/esm2015/app/components/trusted-devices/trusted-devices.component.js +0 -107
  38. package/esm2015/app/interfaces/trusted-device-account.js +0 -2
  39. package/esm2015/app/interfaces/trusted-device-device.js +0 -2
  40. package/esm2015/app/interfaces/trusted-device-ip.js +0 -2
  41. package/esm2015/app/interfaces/trusted-device.js +0 -2
@@ -1,217 +1,378 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/flex-layout'), require('@angular/material/icon'), require('@firestitch/list'), require('@firestitch/date'), require('@firestitch/country'), require('@firestitch/device'), require('@angular/material/tooltip'), require('@firestitch/filter'), require('rxjs'), require('rxjs/operators'), require('@firestitch/badge')) :
3
- typeof define === 'function' && define.amd ? define('@firestitch/2fa', ['exports', '@angular/core', '@angular/common', '@angular/flex-layout', '@angular/material/icon', '@firestitch/list', '@firestitch/date', '@firestitch/country', '@firestitch/device', '@angular/material/tooltip', '@firestitch/filter', 'rxjs', 'rxjs/operators', '@firestitch/badge'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.firestitch = global.firestitch || {}, global.firestitch["2fa"] = {}), global.ng.core, global.ng.common, global.ng.flexLayout, global.ng.material.icon, global.i2$1, global.i7, global.i1$1, global.i5, global.ng.material.tooltip, global.filter, global.rxjs, global.rxjs.operators, global.i3));
5
- })(this, (function (exports, i0, i6, flexLayout, i1, i2$1, i7, i1$1, i5, i2, filter, rxjs, operators, i3) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/forms'), require('@angular/common'), require('@angular/material/icon'), require('@angular/material/radio'), require('@angular/material/button'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/checkbox'), require('@angular/material/progress-spinner'), require('@firestitch/form'), require('@firestitch/skeleton'), require('@firestitch/radiogroup'), require('rxjs'), require('rxjs/operators')) :
3
+ typeof define === 'function' && define.amd ? define('@firestitch/2fa', ['exports', '@angular/core', '@angular/forms', '@angular/common', '@angular/material/icon', '@angular/material/radio', '@angular/material/button', '@angular/material/form-field', '@angular/material/input', '@angular/material/checkbox', '@angular/material/progress-spinner', '@firestitch/form', '@firestitch/skeleton', '@firestitch/radiogroup', 'rxjs', 'rxjs/operators'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.firestitch = global.firestitch || {}, global.firestitch["2fa"] = {}), global.ng.core, global.ng.forms, global.ng.common, global.ng.material.icon, global.ng.material.radio, global.ng.material.button, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.progressSpinner, global.i1, global.i7, global.i1$2, global.rxjs, global.rxjs.operators));
5
+ })(this, (function (exports, i0, i6, i8, i2, i3$2, i4, i1$1, i3, i3$1, i5, i1, i7, i1$2, rxjs, operators) { 'use strict';
6
6
 
7
- function _interopNamespace(e) {
8
- if (e && e.__esModule) return e;
9
- var n = Object.create(null);
10
- if (e) {
11
- Object.keys(e).forEach(function (k) {
12
- if (k !== 'default') {
13
- var d = Object.getOwnPropertyDescriptor(e, k);
14
- Object.defineProperty(n, k, d.get ? d : {
15
- enumerable: true,
16
- get: function () { return e[k]; }
17
- });
18
- }
19
- });
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
20
18
  }
21
- n["default"] = e;
22
- return Object.freeze(n);
19
+ });
23
20
  }
21
+ n["default"] = e;
22
+ return Object.freeze(n);
23
+ }
24
24
 
25
- var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
26
- var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
27
- var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
28
- var i2__namespace$1 = /*#__PURE__*/_interopNamespace(i2$1);
29
- var i7__namespace = /*#__PURE__*/_interopNamespace(i7);
30
- var i1__namespace$1 = /*#__PURE__*/_interopNamespace(i1$1);
31
- var i5__namespace = /*#__PURE__*/_interopNamespace(i5);
32
- var i2__namespace = /*#__PURE__*/_interopNamespace(i2);
33
- var i3__namespace = /*#__PURE__*/_interopNamespace(i3);
25
+ var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
26
+ var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
27
+ var i8__namespace = /*#__PURE__*/_interopNamespace(i8);
28
+ var i2__namespace = /*#__PURE__*/_interopNamespace(i2);
29
+ var i3__namespace$2 = /*#__PURE__*/_interopNamespace(i3$2);
30
+ var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
31
+ var i1__namespace$1 = /*#__PURE__*/_interopNamespace(i1$1);
32
+ var i3__namespace = /*#__PURE__*/_interopNamespace(i3);
33
+ var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$1);
34
+ var i5__namespace = /*#__PURE__*/_interopNamespace(i5);
35
+ var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
36
+ var i7__namespace = /*#__PURE__*/_interopNamespace(i7);
37
+ var i1__namespace$2 = /*#__PURE__*/_interopNamespace(i1$2);
34
38
 
35
- var FsCurrentDeviceComponent = /** @class */ (function () {
36
- function FsCurrentDeviceComponent() {
37
- }
38
- return FsCurrentDeviceComponent;
39
- }());
40
- FsCurrentDeviceComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsCurrentDeviceComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
41
- FsCurrentDeviceComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsCurrentDeviceComponent, selector: "fs-current-device", ngImport: i0__namespace, template: "\n<div class=\"current-device\">\n <mat-icon class=\"circle\">circle</mat-icon>\n <mat-icon \n class=\"check\"\n matTooltip=\"This device\">\n check_circle\n </mat-icon>\n</div>\n", styles: [".current-device{transform:scale(.8);z-index:1;position:relative}.current-device .check,.current-device .circle{position:absolute;color:#027db4;top:0}.current-device .circle{color:#fff}\n"], components: [{ type: i1__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2__namespace.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
42
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsCurrentDeviceComponent, decorators: [{
43
- type: i0.Component,
44
- args: [{
45
- selector: 'fs-current-device',
46
- templateUrl: './current-device.component.html',
47
- styleUrls: ['./current-device.component.scss'],
48
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
49
- }]
50
- }] });
39
+ var FS_2FA_VERIFICATION_PROVIDER = new i0.InjectionToken('Provider for Verification service');
51
40
 
52
- var FsTrustedDevicesComponent = /** @class */ (function () {
53
- function FsTrustedDevicesComponent(_fsCountry) {
54
- this._fsCountry = _fsCountry;
55
- this.fetchTrustedDevices = function (query) { return new rxjs.Observable(); };
56
- this.removeTrustedDevice = function (trustedDevice) { return new rxjs.Observable(); };
57
- this.signOutTrustedDevice = function (trustedDevice) { return new rxjs.Observable(); };
58
- this.showAccount = true;
59
- this._destroy$ = new rxjs.Subject();
60
- }
61
- FsTrustedDevicesComponent.prototype.ngOnInit = function () {
62
- var _this = this;
63
- this._fsCountry.ready$
64
- .pipe(operators.takeUntil(this._destroy$))
65
- .subscribe(function () {
66
- _this._initListConfig();
67
- });
68
- };
69
- FsTrustedDevicesComponent.prototype.ngOnDestroy = function () {
70
- this._destroy$.next();
71
- this._destroy$.complete();
72
- };
73
- FsTrustedDevicesComponent.prototype._initListConfig = function () {
74
- var _this = this;
75
- this.listConfig = {
76
- filters: [
77
- {
78
- name: 'keyword',
79
- type: filter.ItemType.Keyword,
80
- label: 'Search',
81
- },
82
- ],
83
- rowActions: [
84
- {
85
- click: function (data) {
86
- _this.signOutTrustedDevice(data)
87
- .subscribe(function () {
88
- _this.reload();
89
- });
90
- },
91
- menu: true,
92
- label: 'Sign Out',
93
- },
94
- {
95
- click: function (data) {
96
- _this.removeTrustedDevice(data)
97
- .subscribe(function () {
98
- _this.reload();
99
- });
100
- },
101
- remove: {
102
- title: 'Confirm',
103
- template: 'Are you sure you would like to delete this record?',
104
- },
105
- menu: true,
106
- label: 'Delete',
107
- },
108
- ],
109
- fetch: function (query) {
110
- return _this.fetchTrustedDevices(query)
111
- .pipe(operators.map(function (response) {
112
- return {
113
- data: response.data,
114
- paging: response.paging,
115
- };
116
- }));
117
- },
118
- };
119
- };
120
- FsTrustedDevicesComponent.prototype.reload = function () {
121
- this.listComponent.reload();
122
- };
123
- return FsTrustedDevicesComponent;
124
- }());
125
- FsTrustedDevicesComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsTrustedDevicesComponent, deps: [{ token: i1__namespace$1.FsCountry }], target: i0__namespace.ɵɵFactoryTarget.Component });
126
- FsTrustedDevicesComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsTrustedDevicesComponent, selector: "fs-trusted-devices", inputs: { fetchTrustedDevices: "fetchTrustedDevices", removeTrustedDevice: "removeTrustedDevice", signOutTrustedDevice: "signOutTrustedDevice", showAccount: "showAccount" }, viewQueries: [{ propertyName: "listComponent", first: true, predicate: i2$1.FsListComponent, descendants: true }], ngImport: i0__namespace, template: "<fs-list [config]=\"listConfig\">\n <fs-list-column title=\"Account\" [show]=\"showAccount\">\n <ng-template fs-list-cell let-row=\"row\" class=\"col-account\">\n <div *ngIf=\"row.account\" class=\"row\">\n <fs-badge \n *ngIf=\"row.account.avatarUrl\"\n shape=\"circle\" \n image=\"{{ row.account.avatarUrl }}\">\n </fs-badge>\n <div>\n {{ row.account.name }}\n <div class=\"small\" *ngIf=\"row.account.email\">{{ row.account.email }}</div> \n </div>\n </div>\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Device\">\n <ng-template fs-list-cell let-row=\"row\" class=\"col-device\">\n <div class=\"device\" *ngIf=\"row.device\">\n <fs-current-device *ngIf=\"row.currentDevice\"></fs-current-device>\n <fs-device-os\n [type]=\"row.device.type\"\n [os]=\"row.device.osType\"\n [version]=\"row.device.osVersion\">\n </fs-device-os>\n </div> \n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Browser\">\n <ng-template fs-list-cell let-row=\"row\">\n <fs-device-browser\n *ngIf=\"row.device\"\n [type]=\"row.device.browserType\"\n [version]=\"row.device.browserVersion\"\n [showName]=\"true\"\n ></fs-device-browser>\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Added\">\n <ng-template fs-list-cell let-row=\"row\">\n {{ row.createDate | fsDateAgo }}\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Location\">\n <ng-template fs-list-cell let-row=\"row\">\n <fs-country [code]=\"row.ip.country\"></fs-country>\n <div><small>{{row.ip.ip}}</small></div>\n </ng-template>\n </fs-list-column>\n <fs-list-column title=\"Last signed in\">\n <ng-template fs-list-cell let-row=\"row\">\n {{ row.activityDate | fsDateAgo }}\n </ng-template>\n </fs-list-column>\n</fs-list>\n", styles: [":host ::ng-deep .col-account .row{display:flex;align-items:center}:host ::ng-deep .col-account .row fs-badge{margin-right:5px}:host ::ng-deep .col-device .device{position:relative;display:inline-block}:host ::ng-deep .col-device .device .current-device{right:8px;top:-8px;position:absolute}\n"], components: [{ type: i2__namespace$1.FsListComponent, selector: "fs-list", inputs: ["loaderLines", "config"], outputs: ["filtersReady"] }, { type: i3__namespace.FsBadgeComponent, selector: "fs-badge", inputs: ["text", "shape", "color", "tooltip", "size", "image", "icon", "iconSize", "iconColor", "backgroundSize"] }, { type: FsCurrentDeviceComponent, selector: "fs-current-device" }, { type: i5__namespace.FsDeviceOsComponent, selector: "fs-device-os", inputs: ["type", "os", "showName", "version"] }, { type: i5__namespace.FsDeviceBrowserComponent, selector: "fs-device-browser", inputs: ["type", "version", "showName"] }, { type: i1__namespace$1.FsCountryComponent, selector: "fs-country", inputs: ["showIcon", "showName", "width", "code"] }], directives: [{ type: i2__namespace$1.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "customize", "title", "name", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2__namespace$1.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i6__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsDateAgo": i7__namespace.FsDateAgoPipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
127
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsTrustedDevicesComponent, decorators: [{
128
- type: i0.Component,
129
- args: [{
130
- selector: 'fs-trusted-devices',
131
- templateUrl: './trusted-devices.component.html',
132
- styleUrls: ['./trusted-devices.component.scss'],
133
- changeDetection: i0.ChangeDetectionStrategy.OnPush,
134
- }]
135
- }], ctorParameters: function () { return [{ type: i1__namespace$1.FsCountry }]; }, propDecorators: { fetchTrustedDevices: [{
136
- type: i0.Input
137
- }], removeTrustedDevice: [{
138
- type: i0.Input
139
- }], signOutTrustedDevice: [{
140
- type: i0.Input
141
- }], showAccount: [{
142
- type: i0.Input
143
- }], listComponent: [{
144
- type: i0.ViewChild,
145
- args: [i2$1.FsListComponent]
146
- }] } });
41
+ var Fs2FAVerificationOTPComponent = /** @class */ (function () {
42
+ function Fs2FAVerificationOTPComponent(form) {
43
+ this.form = form;
44
+ this.codeChange = new i0.EventEmitter();
45
+ }
46
+ Fs2FAVerificationOTPComponent.prototype.codeChanged = function (event) {
47
+ this.codeChange.emit(event);
48
+ this.form.dirty();
49
+ };
50
+ Fs2FAVerificationOTPComponent.prototype.codeCompleted = function () {
51
+ this.form.triggerSubmit();
52
+ };
53
+ return Fs2FAVerificationOTPComponent;
54
+ }());
55
+ Fs2FAVerificationOTPComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationOTPComponent, deps: [{ token: i1__namespace.FsFormDirective }], target: i0__namespace.ɵɵFactoryTarget.Component });
56
+ Fs2FAVerificationOTPComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FAVerificationOTPComponent, selector: "fs-2fa-verification-otp", outputs: { codeChange: "codeChange" }, ngImport: i0__namespace, 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__namespace.ChangeDetectionStrategy.OnPush });
57
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationOTPComponent, decorators: [{
58
+ type: i0.Component,
59
+ args: [{
60
+ selector: 'fs-2fa-verification-otp',
61
+ templateUrl: './2fa-verification-otp.component.html',
62
+ styleUrls: [
63
+ './2fa-verification-otp.component.scss'
64
+ ],
65
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
66
+ }]
67
+ }], ctorParameters: function () { return [{ type: i1__namespace.FsFormDirective }]; }, propDecorators: { codeChange: [{
68
+ type: i0.Output
69
+ }] } });
70
+
71
+ var Fs2FAVerificationSMSComponent = /** @class */ (function () {
72
+ function Fs2FAVerificationSMSComponent() {
73
+ this.codeChange = new i0.EventEmitter();
74
+ }
75
+ Fs2FAVerificationSMSComponent.prototype.codeChanged = function () {
76
+ this.codeChange.emit(this.code);
77
+ };
78
+ return Fs2FAVerificationSMSComponent;
79
+ }());
80
+ Fs2FAVerificationSMSComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationSMSComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
81
+ Fs2FAVerificationSMSComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FAVerificationSMSComponent, selector: "fs-2fa-verification-code", inputs: { method: "method" }, outputs: { codeChange: "codeChange" }, ngImport: i0__namespace, 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__namespace$1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i8__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$1.MatLabel, selector: "mat-label" }, { type: i3__namespace.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__namespace.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__namespace.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i6__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1__namespace.ɵf, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }], viewProviders: [
82
+ {
83
+ provide: i6.ControlContainer,
84
+ useExisting: i6.NgForm,
85
+ },
86
+ ], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
87
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationSMSComponent, decorators: [{
88
+ type: i0.Component,
89
+ args: [{
90
+ selector: 'fs-2fa-verification-code',
91
+ templateUrl: './2fa-verification-code.component.html',
92
+ styleUrls: [
93
+ './2fa-verification-code.component.scss',
94
+ ],
95
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
96
+ viewProviders: [
97
+ {
98
+ provide: i6.ControlContainer,
99
+ useExisting: i6.NgForm,
100
+ },
101
+ ],
102
+ }]
103
+ }], propDecorators: { method: [{
104
+ type: i0.Input
105
+ }], codeChange: [{
106
+ type: i0.Output
107
+ }] } });
108
+
109
+ var Fs2FAVerificationFormComponent = /** @class */ (function () {
110
+ function Fs2FAVerificationFormComponent(verificationProvider, _cdRef) {
111
+ var _this = this;
112
+ this.verificationProvider = verificationProvider;
113
+ this._cdRef = _cdRef;
114
+ this.verified = new i0.EventEmitter();
115
+ this.resendInProgress = false;
116
+ this.trustedDevice = false;
117
+ this._destroy$ = new rxjs.Subject();
118
+ this.verify = function () {
119
+ return _this.verificationProvider
120
+ .verify(_this._code, _this.trustedDevice)
121
+ .pipe(operators.tap(function (response) {
122
+ _this.verified.emit(response);
123
+ }));
124
+ };
125
+ }
126
+ Fs2FAVerificationFormComponent.prototype.ngOnDestroy = function () {
127
+ this._destroy$.next();
128
+ this._destroy$.complete();
129
+ };
130
+ Fs2FAVerificationFormComponent.prototype.codeChanged = function (code) {
131
+ this._code = code;
132
+ };
133
+ Fs2FAVerificationFormComponent.prototype.resend = function () {
134
+ var _this = this;
135
+ this.resendInProgress = true;
136
+ this.verificationProvider
137
+ .resend()
138
+ .pipe(operators.takeUntil(this._destroy$))
139
+ .subscribe(function () {
140
+ _this.resendInProgress = false;
141
+ _this._cdRef.markForCheck();
142
+ });
143
+ };
144
+ return Fs2FAVerificationFormComponent;
145
+ }());
146
+ Fs2FAVerificationFormComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationFormComponent, deps: [{ token: FS_2FA_VERIFICATION_PROVIDER }, { token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
147
+ Fs2FAVerificationFormComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FAVerificationFormComponent, selector: "fs-2fa-verification-form", inputs: { method: "method" }, outputs: { verified: "verified" }, ngImport: i0__namespace, 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__namespace$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__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"] }, { type: i5__namespace.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i6__namespace.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6__namespace.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6__namespace.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1__namespace.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__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1__namespace$1.MatSuffix, selector: "[matSuffix]" }, { type: i1__namespace.ɵw, selector: "button[type=\"submit\"]", inputs: ["dirtySubmit", "name"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
148
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationFormComponent, decorators: [{
149
+ type: i0.Component,
150
+ args: [{
151
+ selector: 'fs-2fa-verification-form',
152
+ templateUrl: './2fa-verification-form.component.html',
153
+ styleUrls: [
154
+ './2fa-verification-form.component.scss',
155
+ ],
156
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
157
+ }]
158
+ }], ctorParameters: function () {
159
+ return [{ type: undefined, decorators: [{
160
+ type: i0.Inject,
161
+ args: [FS_2FA_VERIFICATION_PROVIDER]
162
+ }] }, { type: i0__namespace.ChangeDetectorRef }];
163
+ }, propDecorators: { method: [{
164
+ type: i0.Input
165
+ }], verified: [{
166
+ type: i0.Output
167
+ }] } });
168
+
169
+ exports.FsVerificationMethodType = void 0;
170
+ (function (FsVerificationMethodType) {
171
+ FsVerificationMethodType["Sms"] = "sms";
172
+ FsVerificationMethodType["Email"] = "email";
173
+ FsVerificationMethodType["Authenticator"] = "authenticator";
174
+ FsVerificationMethodType["Code"] = "code";
175
+ })(exports.FsVerificationMethodType || (exports.FsVerificationMethodType = {}));
176
+
177
+ var Fs2FaVerificationMethodsComponent = /** @class */ (function () {
178
+ function Fs2FaVerificationMethodsComponent(_verificationProvider) {
179
+ var _this = this;
180
+ this._verificationProvider = _verificationProvider;
181
+ this.methodChange = new i0.EventEmitter();
182
+ this.cancelled = new i0.EventEmitter();
183
+ this.verificationMethodType = exports.FsVerificationMethodType;
184
+ this.setVerificationMethod = function () {
185
+ return _this._verificationProvider
186
+ .updateVerificationMethod(_this.method.id)
187
+ .pipe(operators.tap(function (method) {
188
+ _this.methodChange.emit(method);
189
+ }));
190
+ };
191
+ this._initMethods();
192
+ }
193
+ Fs2FaVerificationMethodsComponent.prototype.ngOnInit = function () {
194
+ };
195
+ Fs2FaVerificationMethodsComponent.prototype.compareWith = function (o1, o2) {
196
+ return o1 && o2 && o1.id === o2.id;
197
+ };
198
+ Fs2FaVerificationMethodsComponent.prototype.cancel = function () {
199
+ this.cancelled.emit();
200
+ };
201
+ Fs2FaVerificationMethodsComponent.prototype._initMethods = function () {
202
+ this.methods$ = this._verificationProvider
203
+ .methods()
204
+ .pipe(operators.map(function (methods) {
205
+ return methods
206
+ .reduce(function (acc, method) {
207
+ if (!acc[method.type]) {
208
+ acc[method.type] = [];
209
+ }
210
+ acc[method.type].push(method);
211
+ return acc;
212
+ }, {});
213
+ }), operators.shareReplay(1));
214
+ };
215
+ return Fs2FaVerificationMethodsComponent;
216
+ }());
217
+ Fs2FaVerificationMethodsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaVerificationMethodsComponent, deps: [{ token: FS_2FA_VERIFICATION_PROVIDER }], target: i0__namespace.ɵɵFactoryTarget.Component });
218
+ Fs2FaVerificationMethodsComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, 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__namespace$2.FsRadioGroupComponent, selector: "fs-radio-group", inputs: ["orientation", "radioPosition", "compareWith", "required", "disabled", "label", "name"] }, { type: i2__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3__namespace$2.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { type: i4__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: i6__namespace.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6__namespace.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6__namespace.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1__namespace.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__namespace.ɵa, selector: "[fsSkeleton]", inputs: ["fsSkeletonPattern", "fsSkeleton"] }, { type: i6__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i8__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i8__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace.ɵw, selector: "button[type=\"submit\"]", inputs: ["dirtySubmit", "name"] }], pipes: { "async": i8__namespace.AsyncPipe, "keyvalue": i8__namespace.KeyValuePipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
219
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaVerificationMethodsComponent, decorators: [{
220
+ type: i0.Component,
221
+ args: [{
222
+ selector: 'fs-2fa-verification-methods',
223
+ templateUrl: './2fa-verification-methods.component.html',
224
+ styleUrls: [
225
+ './2fa-verification-methods.component.scss',
226
+ ],
227
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
228
+ }]
229
+ }], ctorParameters: function () {
230
+ return [{ type: undefined, decorators: [{
231
+ type: i0.Inject,
232
+ args: [FS_2FA_VERIFICATION_PROVIDER]
233
+ }] }];
234
+ }, propDecorators: { method: [{
235
+ type: i0.Input
236
+ }], methodChange: [{
237
+ type: i0.Output
238
+ }], cancelled: [{
239
+ type: i0.Output
240
+ }] } });
241
+
242
+ var Fs2FAVerificationComponent = /** @class */ (function () {
243
+ function Fs2FAVerificationComponent() {
244
+ this.verified = new i0.EventEmitter();
245
+ this.backToSignIn = new i0.EventEmitter();
246
+ this._view = 'code';
247
+ }
248
+ Object.defineProperty(Fs2FAVerificationComponent.prototype, "view", {
249
+ get: function () {
250
+ return this._view;
251
+ },
252
+ enumerable: false,
253
+ configurable: true
254
+ });
255
+ Fs2FAVerificationComponent.prototype.switchVerificationMethod = function (method) {
256
+ this._view = method;
257
+ };
258
+ Fs2FAVerificationComponent.prototype.setActiveMethod = function (method) {
259
+ this.method = method;
260
+ this.switchVerificationMethod('code');
261
+ };
262
+ Fs2FAVerificationComponent.prototype.cancel = function () {
263
+ this.switchVerificationMethod('code');
264
+ };
265
+ Fs2FAVerificationComponent.prototype.toSignIn = function () {
266
+ this.backToSignIn.emit();
267
+ };
268
+ return Fs2FAVerificationComponent;
269
+ }());
270
+ Fs2FAVerificationComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
271
+ Fs2FAVerificationComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, 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__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"] }, { type: i4__namespace.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__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i8__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
272
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationComponent, decorators: [{
273
+ type: i0.Component,
274
+ args: [{
275
+ selector: 'fs-2fa-verification',
276
+ templateUrl: './2fa-verification.component.html',
277
+ styleUrls: [
278
+ './2fa-verification.component.scss',
279
+ ],
280
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
281
+ }]
282
+ }], ctorParameters: function () { return []; }, propDecorators: { method: [{
283
+ type: i0.Input
284
+ }], verified: [{
285
+ type: i0.Output
286
+ }], backToSignIn: [{
287
+ type: i0.Output
288
+ }] } });
289
+
290
+ var Fs2FaModule = /** @class */ (function () {
291
+ function Fs2FaModule() {
292
+ }
293
+ return Fs2FaModule;
294
+ }());
295
+ Fs2FaModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
296
+ Fs2FaModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaModule, declarations: [Fs2FAVerificationComponent,
297
+ Fs2FAVerificationFormComponent,
298
+ Fs2FAVerificationSMSComponent,
299
+ Fs2FAVerificationOTPComponent,
300
+ Fs2FaVerificationMethodsComponent], imports: [i8.CommonModule,
301
+ i6.FormsModule,
302
+ i1$1.MatFormFieldModule,
303
+ i3.MatInputModule,
304
+ i4.MatButtonModule,
305
+ i1.FsFormModule,
306
+ // CodeInputModule,
307
+ i3$1.MatCheckboxModule,
308
+ i5.MatProgressSpinnerModule,
309
+ i7.FsSkeletonModule,
310
+ i7.FsSkeletonModule,
311
+ i2.MatIconModule,
312
+ i3$2.MatRadioModule,
313
+ i1$2.FsRadioGroupModule], exports: [Fs2FAVerificationComponent] });
314
+ Fs2FaModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaModule, providers: [], imports: [[
315
+ i8.CommonModule,
316
+ i6.FormsModule,
317
+ i1$1.MatFormFieldModule,
318
+ i3.MatInputModule,
319
+ i4.MatButtonModule,
320
+ i1.FsFormModule,
321
+ // CodeInputModule,
322
+ i3$1.MatCheckboxModule,
323
+ i5.MatProgressSpinnerModule,
324
+ i7.FsSkeletonModule,
325
+ i7.FsSkeletonModule,
326
+ i2.MatIconModule,
327
+ i3$2.MatRadioModule,
328
+ i1$2.FsRadioGroupModule,
329
+ ]] });
330
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaModule, decorators: [{
331
+ type: i0.NgModule,
332
+ args: [{
333
+ imports: [
334
+ i8.CommonModule,
335
+ i6.FormsModule,
336
+ i1$1.MatFormFieldModule,
337
+ i3.MatInputModule,
338
+ i4.MatButtonModule,
339
+ i1.FsFormModule,
340
+ // CodeInputModule,
341
+ i3$1.MatCheckboxModule,
342
+ i5.MatProgressSpinnerModule,
343
+ i7.FsSkeletonModule,
344
+ i7.FsSkeletonModule,
345
+ i2.MatIconModule,
346
+ i3$2.MatRadioModule,
347
+ i1$2.FsRadioGroupModule,
348
+ ],
349
+ declarations: [
350
+ Fs2FAVerificationComponent,
351
+ Fs2FAVerificationFormComponent,
352
+ Fs2FAVerificationSMSComponent,
353
+ Fs2FAVerificationOTPComponent,
354
+ Fs2FaVerificationMethodsComponent,
355
+ ],
356
+ exports: [
357
+ Fs2FAVerificationComponent,
358
+ ],
359
+ providers: [],
360
+ }]
361
+ }] });
147
362
 
148
- var Fs2FaModule = /** @class */ (function () {
149
- function Fs2FaModule() {
150
- }
151
- Fs2FaModule.forRoot = function () {
152
- return {
153
- ngModule: Fs2FaModule,
154
- };
155
- };
156
- return Fs2FaModule;
157
- }());
158
- Fs2FaModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
159
- Fs2FaModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaModule, declarations: [FsTrustedDevicesComponent,
160
- FsCurrentDeviceComponent], imports: [i6.CommonModule,
161
- flexLayout.FlexLayoutModule,
162
- i1.MatIconModule,
163
- i2.MatTooltipModule,
164
- i2$1.FsListModule,
165
- i7.FsDateModule,
166
- i1$1.FsCountryModule,
167
- i5.FsDeviceModule,
168
- i3.FsBadgeModule], exports: [FsTrustedDevicesComponent,
169
- FsCurrentDeviceComponent] });
170
- Fs2FaModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaModule, imports: [[
171
- i6.CommonModule,
172
- flexLayout.FlexLayoutModule,
173
- i1.MatIconModule,
174
- i2.MatTooltipModule,
175
- i2$1.FsListModule,
176
- i7.FsDateModule,
177
- i1$1.FsCountryModule,
178
- i5.FsDeviceModule,
179
- i3.FsBadgeModule,
180
- ]] });
181
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaModule, decorators: [{
182
- type: i0.NgModule,
183
- args: [{
184
- imports: [
185
- i6.CommonModule,
186
- flexLayout.FlexLayoutModule,
187
- i1.MatIconModule,
188
- i2.MatTooltipModule,
189
- i2$1.FsListModule,
190
- i7.FsDateModule,
191
- i1$1.FsCountryModule,
192
- i5.FsDeviceModule,
193
- i3.FsBadgeModule,
194
- ],
195
- exports: [
196
- FsTrustedDevicesComponent,
197
- FsCurrentDeviceComponent,
198
- ],
199
- declarations: [
200
- FsTrustedDevicesComponent,
201
- FsCurrentDeviceComponent,
202
- ],
203
- }]
204
- }] });
363
+ /*
364
+ * Public API Surface of fs-2fa
365
+ */
205
366
 
206
- /**
207
- * Generated bundle index. Do not edit.
208
- */
367
+ /**
368
+ * Generated bundle index. Do not edit.
369
+ */
209
370
 
210
- exports.Fs2FaModule = Fs2FaModule;
211
- exports.FsCurrentDeviceComponent = FsCurrentDeviceComponent;
212
- exports.FsTrustedDevicesComponent = FsTrustedDevicesComponent;
371
+ exports.FS_2FA_VERIFICATION_PROVIDER = FS_2FA_VERIFICATION_PROVIDER;
372
+ exports.Fs2FAVerificationComponent = Fs2FAVerificationComponent;
373
+ exports.Fs2FaModule = Fs2FaModule;
213
374
 
214
- Object.defineProperty(exports, '__esModule', { value: true });
375
+ Object.defineProperty(exports, '__esModule', { value: true });
215
376
 
216
377
  }));
217
378
  //# sourceMappingURL=firestitch-2fa.umd.js.map