@firestitch/2fa 12.0.2 → 12.0.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.
- package/app/components/2fa-verification/2fa-verification.component.d.ts +26 -0
- package/app/components/2fa-verification-code/2fa-verification-code.component.d.ts +11 -0
- package/app/components/2fa-verification-methods/2fa-verification-methods.component.d.ts +23 -0
- package/app/components/2fa-verification-otp/2fa-verification-otp.component.d.ts +12 -0
- package/app/enums/verification-method-type.enum.d.ts +6 -0
- package/app/fs-2fa.module.d.ts +23 -19
- package/app/interfaces/verification-method.interface.d.ts +11 -0
- package/app/interfaces/verification-provider.interface.d.ts +8 -0
- package/app/tokens/verification.token.d.ts +3 -0
- package/bundles/firestitch-2fa.umd.js +336 -196
- package/bundles/firestitch-2fa.umd.js.map +1 -1
- package/esm2015/app/components/2fa-verification/2fa-verification.component.js +92 -0
- package/esm2015/app/components/2fa-verification-code/2fa-verification-code.component.js +45 -0
- package/esm2015/app/components/2fa-verification-methods/2fa-verification-methods.component.js +73 -0
- package/esm2015/app/components/2fa-verification-otp/2fa-verification-otp.component.js +33 -0
- package/esm2015/app/enums/verification-method-type.enum.js +8 -0
- package/esm2015/app/fs-2fa.module.js +91 -68
- package/esm2015/app/interfaces/verification-method.interface.js +2 -0
- package/esm2015/app/interfaces/verification-provider.interface.js +2 -0
- package/esm2015/app/tokens/verification.token.js +3 -0
- package/esm2015/firestitch-2fa.js +4 -4
- package/esm2015/public_api.js +9 -4
- package/fesm2015/firestitch-2fa.js +310 -171
- package/fesm2015/firestitch-2fa.js.map +1 -1
- package/firestitch-2fa.d.ts +5 -5
- package/package.json +5 -2
- package/public_api.d.ts +6 -7
- package/app/components/trusted-current-device/trusted-current-device.component.d.ts +0 -5
- package/app/components/trusted-devices/trusted-devices.component.d.ts +0 -26
- package/app/interfaces/trusted-device-account.d.ts +0 -6
- package/app/interfaces/trusted-device-device.d.ts +0 -10
- package/app/interfaces/trusted-device-ip.d.ts +0 -8
- package/app/interfaces/trusted-device.d.ts +0 -14
- package/esm2015/app/components/trusted-current-device/trusted-current-device.component.js +0 -18
- package/esm2015/app/components/trusted-devices/trusted-devices.component.js +0 -99
- package/esm2015/app/interfaces/trusted-device-account.js +0 -2
- package/esm2015/app/interfaces/trusted-device-device.js +0 -2
- package/esm2015/app/interfaces/trusted-device-ip.js +0 -2
- package/esm2015/app/interfaces/trusted-device.js +0 -2
|
@@ -1,210 +1,350 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
})(this, (function (exports, i0,
|
|
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('@firestitch/dialog'), require('rxjs/operators'), require('@angular/material/dialog'), require('rxjs')) :
|
|
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', '@firestitch/dialog', 'rxjs/operators', '@angular/material/dialog', 'rxjs'], 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.i8, global.i9, global.i3, global.i1$1, global.rxjs.operators, global.ng.material.dialog, global.rxjs));
|
|
5
|
+
})(this, (function (exports, i0, i7, i10, i4, i5, i5$1, i1$2, i3$1, i4$1, i6, i8, i9, i3, i1$1, operators, i1, rxjs) { 'use strict';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
22
|
-
return Object.freeze(n);
|
|
19
|
+
});
|
|
23
20
|
}
|
|
21
|
+
n["default"] = e;
|
|
22
|
+
return Object.freeze(n);
|
|
23
|
+
}
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
25
|
+
var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
|
|
26
|
+
var i7__namespace = /*#__PURE__*/_interopNamespace(i7);
|
|
27
|
+
var i10__namespace = /*#__PURE__*/_interopNamespace(i10);
|
|
28
|
+
var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
|
|
29
|
+
var i5__namespace = /*#__PURE__*/_interopNamespace(i5);
|
|
30
|
+
var i5__namespace$1 = /*#__PURE__*/_interopNamespace(i5$1);
|
|
31
|
+
var i1__namespace$2 = /*#__PURE__*/_interopNamespace(i1$2);
|
|
32
|
+
var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$1);
|
|
33
|
+
var i4__namespace$1 = /*#__PURE__*/_interopNamespace(i4$1);
|
|
34
|
+
var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
|
|
35
|
+
var i8__namespace = /*#__PURE__*/_interopNamespace(i8);
|
|
36
|
+
var i9__namespace = /*#__PURE__*/_interopNamespace(i9);
|
|
37
|
+
var i3__namespace = /*#__PURE__*/_interopNamespace(i3);
|
|
38
|
+
var i1__namespace$1 = /*#__PURE__*/_interopNamespace(i1$1);
|
|
39
|
+
var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
|
|
34
40
|
|
|
35
|
-
|
|
36
|
-
function FsTrustedCurrentDeviceComponent() {
|
|
37
|
-
}
|
|
38
|
-
return FsTrustedCurrentDeviceComponent;
|
|
39
|
-
}());
|
|
40
|
-
FsTrustedCurrentDeviceComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsTrustedCurrentDeviceComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
41
|
-
FsTrustedCurrentDeviceComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsTrustedCurrentDeviceComponent, selector: "fs-trusted-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: FsTrustedCurrentDeviceComponent, decorators: [{
|
|
43
|
-
type: i0.Component,
|
|
44
|
-
args: [{
|
|
45
|
-
selector: 'fs-trusted-current-device',
|
|
46
|
-
templateUrl: './trusted-current-device.component.html',
|
|
47
|
-
styleUrls: ['./trusted-current-device.component.scss'],
|
|
48
|
-
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
49
|
-
}]
|
|
50
|
-
}] });
|
|
41
|
+
var FS_2FA_VERIFICATION_PROVIDER = new i0.InjectionToken('Provider for Verification service');
|
|
51
42
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
rowActions: [
|
|
77
|
-
{
|
|
78
|
-
click: function (data) {
|
|
79
|
-
_this.signOutTrustedDevice(data)
|
|
80
|
-
.subscribe(function () {
|
|
81
|
-
_this.reload();
|
|
82
|
-
});
|
|
83
|
-
},
|
|
84
|
-
menu: true,
|
|
85
|
-
label: 'Sign Out',
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
click: function (data) {
|
|
89
|
-
_this.deleteTrustedDevice(data)
|
|
90
|
-
.subscribe(function () {
|
|
91
|
-
_this.reload();
|
|
92
|
-
});
|
|
93
|
-
},
|
|
94
|
-
remove: {
|
|
95
|
-
title: 'Confirm',
|
|
96
|
-
template: 'Are you sure you would like to delete this trusted device?',
|
|
97
|
-
},
|
|
98
|
-
menu: true,
|
|
99
|
-
label: 'Delete',
|
|
100
|
-
},
|
|
101
|
-
],
|
|
102
|
-
fetch: function (query) {
|
|
103
|
-
return _this.fetchTrustedDevices(query)
|
|
104
|
-
.pipe(operators.map(function (response) {
|
|
105
|
-
return {
|
|
106
|
-
data: response.data,
|
|
107
|
-
paging: response.paging,
|
|
108
|
-
};
|
|
109
|
-
}));
|
|
110
|
-
},
|
|
111
|
-
};
|
|
112
|
-
};
|
|
113
|
-
FsTrustedDevicesComponent.prototype.reload = function () {
|
|
114
|
-
this.listComponent.reload();
|
|
115
|
-
};
|
|
116
|
-
return FsTrustedDevicesComponent;
|
|
117
|
-
}());
|
|
118
|
-
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 });
|
|
119
|
-
FsTrustedDevicesComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsTrustedDevicesComponent, selector: "fs-trusted-devices", inputs: { fetchTrustedDevices: "fetchTrustedDevices", deleteTrustedDevice: "deleteTrustedDevice", 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-trusted-current-device *ngIf=\"row.currentDevice\"></fs-trusted-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 <!-- Use FsIp and pass in region, country, lat and lng -->\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: FsTrustedCurrentDeviceComponent, selector: "fs-trusted-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 });
|
|
120
|
-
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: FsTrustedDevicesComponent, decorators: [{
|
|
121
|
-
type: i0.Component,
|
|
122
|
-
args: [{
|
|
123
|
-
selector: 'fs-trusted-devices',
|
|
124
|
-
templateUrl: './trusted-devices.component.html',
|
|
125
|
-
styleUrls: ['./trusted-devices.component.scss'],
|
|
126
|
-
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
127
|
-
}]
|
|
128
|
-
}], ctorParameters: function () { return [{ type: i1__namespace$1.FsCountry }]; }, propDecorators: { fetchTrustedDevices: [{
|
|
129
|
-
type: i0.Input
|
|
130
|
-
}], deleteTrustedDevice: [{
|
|
131
|
-
type: i0.Input
|
|
132
|
-
}], signOutTrustedDevice: [{
|
|
133
|
-
type: i0.Input
|
|
134
|
-
}], showAccount: [{
|
|
135
|
-
type: i0.Input
|
|
136
|
-
}], listComponent: [{
|
|
137
|
-
type: i0.ViewChild,
|
|
138
|
-
args: [i2$1.FsListComponent]
|
|
139
|
-
}] } });
|
|
43
|
+
exports.FsVerificationMethodType = void 0;
|
|
44
|
+
(function (FsVerificationMethodType) {
|
|
45
|
+
FsVerificationMethodType["Sms"] = "sms";
|
|
46
|
+
FsVerificationMethodType["Email"] = "email";
|
|
47
|
+
FsVerificationMethodType["Authenticator"] = "authenticator";
|
|
48
|
+
FsVerificationMethodType["Code"] = "code";
|
|
49
|
+
})(exports.FsVerificationMethodType || (exports.FsVerificationMethodType = {}));
|
|
140
50
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
]
|
|
196
|
-
}]
|
|
197
|
-
|
|
51
|
+
var Fs2FaVerificationMethodsComponent = /** @class */ (function () {
|
|
52
|
+
function Fs2FaVerificationMethodsComponent(_verificationProvider, _dialogData, _dialogRef) {
|
|
53
|
+
var _this = this;
|
|
54
|
+
this._verificationProvider = _verificationProvider;
|
|
55
|
+
this._dialogData = _dialogData;
|
|
56
|
+
this._dialogRef = _dialogRef;
|
|
57
|
+
this.verificationMethodType = exports.FsVerificationMethodType;
|
|
58
|
+
this.setVerificationMethod = function () {
|
|
59
|
+
return _this._verificationProvider
|
|
60
|
+
.updateVerificationMethod(_this.method.id)
|
|
61
|
+
.pipe(operators.tap(function (method) {
|
|
62
|
+
_this._dialogRef.close(method);
|
|
63
|
+
}));
|
|
64
|
+
};
|
|
65
|
+
this._setActiveMethod();
|
|
66
|
+
this._initMethods();
|
|
67
|
+
}
|
|
68
|
+
Fs2FaVerificationMethodsComponent.prototype.compareWith = function (o1, o2) {
|
|
69
|
+
return o1 && o2 && o1.id === o2.id;
|
|
70
|
+
};
|
|
71
|
+
Fs2FaVerificationMethodsComponent.prototype._setActiveMethod = function () {
|
|
72
|
+
var _a;
|
|
73
|
+
this.method = (_a = this._dialogData) === null || _a === void 0 ? void 0 : _a.method;
|
|
74
|
+
};
|
|
75
|
+
Fs2FaVerificationMethodsComponent.prototype._initMethods = function () {
|
|
76
|
+
this.methods$ = this._verificationProvider
|
|
77
|
+
.methods()
|
|
78
|
+
.pipe(operators.map(function (methods) {
|
|
79
|
+
return methods
|
|
80
|
+
.reduce(function (acc, method) {
|
|
81
|
+
if (!acc[method.type]) {
|
|
82
|
+
acc[method.type] = [];
|
|
83
|
+
}
|
|
84
|
+
acc[method.type].push(method);
|
|
85
|
+
return acc;
|
|
86
|
+
}, {});
|
|
87
|
+
}), operators.shareReplay(1));
|
|
88
|
+
};
|
|
89
|
+
return Fs2FaVerificationMethodsComponent;
|
|
90
|
+
}());
|
|
91
|
+
Fs2FaVerificationMethodsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaVerificationMethodsComponent, deps: [{ token: FS_2FA_VERIFICATION_PROVIDER }, { token: i1.MAT_DIALOG_DATA }, { token: i1__namespace.MatDialogRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
92
|
+
Fs2FaVerificationMethodsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2FaVerificationMethodsComponent, selector: "ng-component", ngImport: i0__namespace, template: "<fs-dialog>\n <h1 mat-dialog-title>\n Verification Methods\n </h1>\n <form fsForm [submit]=\"setVerificationMethod\" [dirtySubmitButton]=\"false\">\n <mat-dialog-content>\n <ng-container *fsSkeleton=\"methods$ | async as methods\">\n <fs-radio-group [(ngModel)]=\"method\" name=\"method\" [compareWith]=\"compareWith\">\n <ng-container *ngFor=\"let methodMap of methods | keyvalue\">\n <div class=\"method\">\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n smartphone\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Text Message</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following mobile number\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n mail\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Email</div>\n <div class=\"method-subtitle\">\n Verification code send to one of following email\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n {{ method.phoneNumber }}\n </mat-radio-button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n {{ method.email }}\n </mat-radio-button>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </fs-radio-group>\n </ng-container>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"actions\">\n <ng-container *ngIf=\"methods$ | async\">\n <button mat-button type=\"submit\" color=\"primary\">Next</button>\n </ng-container>\n <button mat-button type=\"button\" [mat-dialog-close]=\"null\">Cancel</button>\n </div>\n </mat-dialog-actions>\n </form>\n</fs-dialog>\n", styles: [".method{display:block;margin-bottom:20px}.method .method-header{display:flex;align-items:flex-start}.method .method-header .method-name{margin-left:10px}.method .method-header .method-name .method-title{font-size:14px;font-weight:400}.method .method-header .method-name .method-subtitle{font-size:12px;color:#a3a3a3}.method .method-item{display:block;margin:10px 0 0 35px}\n"], components: [{ type: i1__namespace$1.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3__namespace.FsRadioGroupComponent, selector: "fs-radio-group", inputs: ["orientation", "radioPosition", "compareWith", "required", "disabled", "label", "name"] }, { type: i4__namespace.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5__namespace.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { type: i5__namespace$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1__namespace.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i7__namespace.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7__namespace.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7__namespace.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8__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: i1__namespace.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9__namespace.ɵa, selector: "[fsSkeleton]", inputs: ["fsSkeletonPattern", "fsSkeleton"] }, { type: i7__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i10__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1__namespace.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i10__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8__namespace.ɵw, selector: "button[type=\"submit\"]", inputs: ["dirtySubmit", "name"] }, { type: i1__namespace.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "async": i10__namespace.AsyncPipe, "keyvalue": i10__namespace.KeyValuePipe }, changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
|
93
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaVerificationMethodsComponent, decorators: [{
|
|
94
|
+
type: i0.Component,
|
|
95
|
+
args: [{
|
|
96
|
+
templateUrl: './2fa-verification-methods.component.html',
|
|
97
|
+
styleUrls: [
|
|
98
|
+
'./2fa-verification-methods.component.scss',
|
|
99
|
+
],
|
|
100
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
101
|
+
}]
|
|
102
|
+
}], ctorParameters: function () {
|
|
103
|
+
return [{ type: undefined, decorators: [{
|
|
104
|
+
type: i0.Inject,
|
|
105
|
+
args: [FS_2FA_VERIFICATION_PROVIDER]
|
|
106
|
+
}] }, { type: undefined, decorators: [{
|
|
107
|
+
type: i0.Inject,
|
|
108
|
+
args: [i1.MAT_DIALOG_DATA]
|
|
109
|
+
}] }, { type: i1__namespace.MatDialogRef }];
|
|
110
|
+
} });
|
|
111
|
+
|
|
112
|
+
var Fs2FAVerificationOTPComponent = /** @class */ (function () {
|
|
113
|
+
function Fs2FAVerificationOTPComponent(form) {
|
|
114
|
+
this.form = form;
|
|
115
|
+
this.codeChange = new i0.EventEmitter();
|
|
116
|
+
}
|
|
117
|
+
Fs2FAVerificationOTPComponent.prototype.codeChanged = function (event) {
|
|
118
|
+
this.codeChange.emit(event);
|
|
119
|
+
this.form.dirty();
|
|
120
|
+
};
|
|
121
|
+
Fs2FAVerificationOTPComponent.prototype.codeCompleted = function () {
|
|
122
|
+
this.form.triggerSubmit();
|
|
123
|
+
};
|
|
124
|
+
return Fs2FAVerificationOTPComponent;
|
|
125
|
+
}());
|
|
126
|
+
Fs2FAVerificationOTPComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationOTPComponent, deps: [{ token: i8__namespace.FsFormDirective }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
127
|
+
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 });
|
|
128
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationOTPComponent, decorators: [{
|
|
129
|
+
type: i0.Component,
|
|
130
|
+
args: [{
|
|
131
|
+
selector: 'fs-2fa-verification-otp',
|
|
132
|
+
templateUrl: './2fa-verification-otp.component.html',
|
|
133
|
+
styleUrls: [
|
|
134
|
+
'./2fa-verification-otp.component.scss'
|
|
135
|
+
],
|
|
136
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
137
|
+
}]
|
|
138
|
+
}], ctorParameters: function () { return [{ type: i8__namespace.FsFormDirective }]; }, propDecorators: { codeChange: [{
|
|
139
|
+
type: i0.Output
|
|
140
|
+
}] } });
|
|
141
|
+
|
|
142
|
+
var Fs2FAVerificationSMSComponent = /** @class */ (function () {
|
|
143
|
+
function Fs2FAVerificationSMSComponent() {
|
|
144
|
+
this.codeChange = new i0.EventEmitter();
|
|
145
|
+
}
|
|
146
|
+
Fs2FAVerificationSMSComponent.prototype.codeChanged = function () {
|
|
147
|
+
this.codeChange.emit(this.code);
|
|
148
|
+
};
|
|
149
|
+
return Fs2FAVerificationSMSComponent;
|
|
150
|
+
}());
|
|
151
|
+
Fs2FAVerificationSMSComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationSMSComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
152
|
+
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.phoneNumber && method.type === 'sms'\">\n A text message with a verification code was just\n sent to <span style=\"white-space: nowrap;\">{{ method.phoneNumber }}</span> to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"method.type === 'email'\">\n A email with a verification code was just sent to {{ method.email }} to verify it's you.\n </ng-container>\n\n <ng-container *ngIf=\"false\">\n Enter the one time code generated by the app administrator to verify it's you.\n </ng-container>\n</p>\n\n<mat-form-field>\n <mat-label>Code</mat-label>\n <input type=\"text\"\n matInput\n name=\"code\"\n autocomplete=\"one-time-code\"\n [(ngModel)]=\"code\"\n (ngModelChange)=\"codeChanged()\"\n required\n placeholder=\"Enter the code\"\n inputmode=\"numeric\">\n</mat-form-field>\n", styles: [":host{display:block}mat-form-field{width:100%}\n"], components: [{ type: i1__namespace$2.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }], directives: [{ type: i10__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace$2.MatLabel, selector: "mat-label" }, { type: i3__namespace$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i7__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: i7__namespace.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i7__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8__namespace.ɵf, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }], viewProviders: [
|
|
153
|
+
{
|
|
154
|
+
provide: i7.ControlContainer,
|
|
155
|
+
useExisting: i7.NgForm,
|
|
156
|
+
},
|
|
157
|
+
], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
|
158
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationSMSComponent, decorators: [{
|
|
159
|
+
type: i0.Component,
|
|
160
|
+
args: [{
|
|
161
|
+
selector: 'fs-2fa-verification-code',
|
|
162
|
+
templateUrl: './2fa-verification-code.component.html',
|
|
163
|
+
styleUrls: [
|
|
164
|
+
'./2fa-verification-code.component.scss',
|
|
165
|
+
],
|
|
166
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
167
|
+
viewProviders: [
|
|
168
|
+
{
|
|
169
|
+
provide: i7.ControlContainer,
|
|
170
|
+
useExisting: i7.NgForm,
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
}]
|
|
174
|
+
}], propDecorators: { method: [{
|
|
175
|
+
type: i0.Input
|
|
176
|
+
}], codeChange: [{
|
|
177
|
+
type: i0.Output
|
|
178
|
+
}] } });
|
|
179
|
+
|
|
180
|
+
var Fs2FAVerificationComponent = /** @class */ (function () {
|
|
181
|
+
function Fs2FAVerificationComponent(verificationProvider, _cdRef, _dialog) {
|
|
182
|
+
var _this = this;
|
|
183
|
+
this.verificationProvider = verificationProvider;
|
|
184
|
+
this._cdRef = _cdRef;
|
|
185
|
+
this._dialog = _dialog;
|
|
186
|
+
this.verified = new i0.EventEmitter();
|
|
187
|
+
this.backToSignIn = new i0.EventEmitter();
|
|
188
|
+
this.resendInProgress = false;
|
|
189
|
+
this.trustedDevice = false;
|
|
190
|
+
this._destroy$ = new rxjs.Subject();
|
|
191
|
+
this.verify = function () {
|
|
192
|
+
return _this.verificationProvider
|
|
193
|
+
.verify(_this._code, _this.trustedDevice)
|
|
194
|
+
.pipe(operators.tap(function (response) {
|
|
195
|
+
_this.verified.emit(response);
|
|
196
|
+
}));
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
Fs2FAVerificationComponent.prototype.ngOnDestroy = function () {
|
|
200
|
+
this._destroy$.next();
|
|
201
|
+
this._destroy$.complete();
|
|
202
|
+
};
|
|
203
|
+
Fs2FAVerificationComponent.prototype.codeChanged = function (code) {
|
|
204
|
+
this._code = code;
|
|
205
|
+
};
|
|
206
|
+
Fs2FAVerificationComponent.prototype.resend = function () {
|
|
207
|
+
var _this = this;
|
|
208
|
+
this.resendInProgress = true;
|
|
209
|
+
this.verificationProvider
|
|
210
|
+
.resend()
|
|
211
|
+
.pipe(operators.takeUntil(this._destroy$))
|
|
212
|
+
.subscribe(function () {
|
|
213
|
+
_this.resendInProgress = false;
|
|
214
|
+
_this._cdRef.markForCheck();
|
|
215
|
+
});
|
|
216
|
+
};
|
|
217
|
+
Fs2FAVerificationComponent.prototype.showVerificationMethods = function () {
|
|
218
|
+
var _this = this;
|
|
219
|
+
this._dialog.open(Fs2FaVerificationMethodsComponent, {
|
|
220
|
+
data: {
|
|
221
|
+
method: this.method,
|
|
222
|
+
}
|
|
223
|
+
})
|
|
224
|
+
.afterClosed()
|
|
225
|
+
.pipe(operators.filter(function (method) { return !!method; }))
|
|
226
|
+
.subscribe(function (method) {
|
|
227
|
+
_this.method = method;
|
|
228
|
+
_this._cdRef.markForCheck();
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
Fs2FAVerificationComponent.prototype.toSignIn = function () {
|
|
232
|
+
this.backToSignIn.emit();
|
|
233
|
+
};
|
|
234
|
+
return Fs2FAVerificationComponent;
|
|
235
|
+
}());
|
|
236
|
+
Fs2FAVerificationComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationComponent, deps: [{ token: FS_2FA_VERIFICATION_PROVIDER }, { token: i0__namespace.ChangeDetectorRef }, { token: i1__namespace$1.FsDialog }], target: i0__namespace.ɵɵFactoryTarget.Component });
|
|
237
|
+
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: "<form fsForm [submit]=\"verify\" [dirtySubmitButton]=\"false\">\n <h2>2-Step Verification</h2>\n\n <div class=\"code-container\">\n <ng-container *ngIf=\"method.type === 'authenticator' else code\">\n <fs-2fa-verification-otp class=\"otp\"></fs-2fa-verification-otp>\n </ng-container>\n\n <ng-template #code>\n <fs-2fa-verification-code\n [method]=\"method\"\n (codeChange)=\"codeChanged($event)\">\n </fs-2fa-verification-code>\n </ng-template>\n </div>\n\n <div class=\"additional\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustedDevice\">\n Trust this device\n </mat-checkbox>\n\n <span matSuffix>\n <a mat-button\n type=\"button\"\n color=\"primary\"\n (click)=\"resend()\"\n [disabled]=\"resendInProgress\"\n class=\"resend-code-btn\">\n <ng-container *ngIf=\"!resendInProgress else sending\">\n Resend Code\n </ng-container>\n <ng-template #sending>\n <mat-spinner [diameter]=\"12\"></mat-spinner> Sending\n </ng-template>\n </a>\n </span>\n </div>\n\n <div class=\"actions\">\n <button mat-raised-button\n color=\"primary\"\n type=\"submit\">\n Verify\n </button>\n\n <button mat-button type=\"button\" (click)=\"showVerificationMethods()\">\n Try other ways to verify\n </button>\n\n <button mat-button type=\"button\" (click)=\"toSignIn()\">\n Back to signin\n </button>\n </div>\n</form>\n", styles: [":host{display:block}h2,.code-container{text-align:center}.code-container .otp{margin-bottom:15px}:host ::ng-deep .actions{margin:10px 0}:host ::ng-deep .actions a{width:100%;font-weight:400}:host ::ng-deep .actions button{width:100%;margin-bottom:5px}:host ::ng-deep .actions button[type=button]{font-weight:400}.additional{display:flex;justify-content:space-between;align-items:baseline;margin-top:-5px}.additional .resend-code-btn{text-transform:none}.additional .resend-code-btn mat-spinner{display:inline-block;vertical-align:middle}\n"], components: [{ type: Fs2FAVerificationOTPComponent, selector: "fs-2fa-verification-otp", outputs: ["codeChange"] }, { type: Fs2FAVerificationSMSComponent, selector: "fs-2fa-verification-code", inputs: ["method"], outputs: ["codeChange"] }, { type: i4__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: i5__namespace$1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { type: i6__namespace.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: i5__namespace$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i7__namespace.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7__namespace.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7__namespace.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8__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: i10__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1__namespace$2.MatSuffix, selector: "[matSuffix]" }, { type: i8__namespace.ɵw, selector: "button[type=\"submit\"]", inputs: ["dirtySubmit", "name"] }], changeDetection: i0__namespace.ChangeDetectionStrategy.OnPush });
|
|
238
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FAVerificationComponent, decorators: [{
|
|
239
|
+
type: i0.Component,
|
|
240
|
+
args: [{
|
|
241
|
+
selector: 'fs-2fa-verification',
|
|
242
|
+
templateUrl: './2fa-verification.component.html',
|
|
243
|
+
styleUrls: [
|
|
244
|
+
'./2fa-verification.component.scss',
|
|
245
|
+
],
|
|
246
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
247
|
+
}]
|
|
248
|
+
}], ctorParameters: function () {
|
|
249
|
+
return [{ type: undefined, decorators: [{
|
|
250
|
+
type: i0.Inject,
|
|
251
|
+
args: [FS_2FA_VERIFICATION_PROVIDER]
|
|
252
|
+
}] }, { type: i0__namespace.ChangeDetectorRef }, { type: i1__namespace$1.FsDialog }];
|
|
253
|
+
}, propDecorators: { method: [{
|
|
254
|
+
type: i0.Input
|
|
255
|
+
}], verified: [{
|
|
256
|
+
type: i0.Output
|
|
257
|
+
}], backToSignIn: [{
|
|
258
|
+
type: i0.Output
|
|
259
|
+
}] } });
|
|
260
|
+
|
|
261
|
+
var Fs2FaModule = /** @class */ (function () {
|
|
262
|
+
function Fs2FaModule() {
|
|
263
|
+
}
|
|
264
|
+
return Fs2FaModule;
|
|
265
|
+
}());
|
|
266
|
+
Fs2FaModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
|
|
267
|
+
Fs2FaModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaModule, declarations: [Fs2FAVerificationComponent,
|
|
268
|
+
Fs2FAVerificationSMSComponent,
|
|
269
|
+
Fs2FAVerificationOTPComponent,
|
|
270
|
+
Fs2FaVerificationMethodsComponent], imports: [i10.CommonModule,
|
|
271
|
+
i7.FormsModule,
|
|
272
|
+
i1$2.MatFormFieldModule,
|
|
273
|
+
i3$1.MatInputModule,
|
|
274
|
+
i5$1.MatButtonModule,
|
|
275
|
+
i8.FsFormModule,
|
|
276
|
+
i3.FsRadioGroupModule,
|
|
277
|
+
i1$1.FsDialogModule,
|
|
278
|
+
// CodeInputModule,
|
|
279
|
+
i4$1.MatCheckboxModule,
|
|
280
|
+
i6.MatProgressSpinnerModule,
|
|
281
|
+
i9.FsSkeletonModule,
|
|
282
|
+
i9.FsSkeletonModule,
|
|
283
|
+
i4.MatIconModule,
|
|
284
|
+
i5.MatRadioModule], exports: [Fs2FAVerificationComponent] });
|
|
285
|
+
Fs2FaModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaModule, providers: [], imports: [[
|
|
286
|
+
i10.CommonModule,
|
|
287
|
+
i7.FormsModule,
|
|
288
|
+
i1$2.MatFormFieldModule,
|
|
289
|
+
i3$1.MatInputModule,
|
|
290
|
+
i5$1.MatButtonModule,
|
|
291
|
+
i8.FsFormModule,
|
|
292
|
+
i3.FsRadioGroupModule,
|
|
293
|
+
i1$1.FsDialogModule,
|
|
294
|
+
// CodeInputModule,
|
|
295
|
+
i4$1.MatCheckboxModule,
|
|
296
|
+
i6.MatProgressSpinnerModule,
|
|
297
|
+
i9.FsSkeletonModule,
|
|
298
|
+
i9.FsSkeletonModule,
|
|
299
|
+
i4.MatIconModule,
|
|
300
|
+
i5.MatRadioModule,
|
|
301
|
+
]] });
|
|
302
|
+
i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0__namespace, type: Fs2FaModule, decorators: [{
|
|
303
|
+
type: i0.NgModule,
|
|
304
|
+
args: [{
|
|
305
|
+
imports: [
|
|
306
|
+
i10.CommonModule,
|
|
307
|
+
i7.FormsModule,
|
|
308
|
+
i1$2.MatFormFieldModule,
|
|
309
|
+
i3$1.MatInputModule,
|
|
310
|
+
i5$1.MatButtonModule,
|
|
311
|
+
i8.FsFormModule,
|
|
312
|
+
i3.FsRadioGroupModule,
|
|
313
|
+
i1$1.FsDialogModule,
|
|
314
|
+
// CodeInputModule,
|
|
315
|
+
i4$1.MatCheckboxModule,
|
|
316
|
+
i6.MatProgressSpinnerModule,
|
|
317
|
+
i9.FsSkeletonModule,
|
|
318
|
+
i9.FsSkeletonModule,
|
|
319
|
+
i4.MatIconModule,
|
|
320
|
+
i5.MatRadioModule,
|
|
321
|
+
],
|
|
322
|
+
declarations: [
|
|
323
|
+
Fs2FAVerificationComponent,
|
|
324
|
+
Fs2FAVerificationSMSComponent,
|
|
325
|
+
Fs2FAVerificationOTPComponent,
|
|
326
|
+
Fs2FaVerificationMethodsComponent,
|
|
327
|
+
],
|
|
328
|
+
exports: [
|
|
329
|
+
Fs2FAVerificationComponent,
|
|
330
|
+
],
|
|
331
|
+
providers: [],
|
|
332
|
+
}]
|
|
333
|
+
}] });
|
|
334
|
+
|
|
335
|
+
/*
|
|
336
|
+
* Public API Surface of fs-2fa
|
|
337
|
+
*/
|
|
198
338
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
339
|
+
/**
|
|
340
|
+
* Generated bundle index. Do not edit.
|
|
341
|
+
*/
|
|
202
342
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
343
|
+
exports.FS_2FA_VERIFICATION_PROVIDER = FS_2FA_VERIFICATION_PROVIDER;
|
|
344
|
+
exports.Fs2FAVerificationComponent = Fs2FAVerificationComponent;
|
|
345
|
+
exports.Fs2FaModule = Fs2FaModule;
|
|
206
346
|
|
|
207
|
-
|
|
347
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
208
348
|
|
|
209
349
|
}));
|
|
210
350
|
//# sourceMappingURL=firestitch-2fa.umd.js.map
|