@trudb/tru-common-lib 0.1.349 → 0.1.350
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.
|
@@ -7,7 +7,7 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
import * as i1 from "@angular/material/dialog";
|
|
8
8
|
import * as i2 from "@angular/common/http";
|
|
9
9
|
import * as i3 from "../../services/tru-app-environment";
|
|
10
|
-
import * as i4 from "../../services/tru-
|
|
10
|
+
import * as i4 from "../../services/tru-ui-notification";
|
|
11
11
|
import * as i5 from "@angular/common";
|
|
12
12
|
import * as i6 from "@angular/forms";
|
|
13
13
|
import * as i7 from "@angular/material/button";
|
|
@@ -19,7 +19,7 @@ export class TruPasswordDialog {
|
|
|
19
19
|
dialogRef;
|
|
20
20
|
http;
|
|
21
21
|
appEnvironment;
|
|
22
|
-
|
|
22
|
+
uiNotification;
|
|
23
23
|
data;
|
|
24
24
|
currentPasswordControl = new FormControl('', []);
|
|
25
25
|
newPasswordControl = new FormControl('', []);
|
|
@@ -34,11 +34,11 @@ export class TruPasswordDialog {
|
|
|
34
34
|
busy = false;
|
|
35
35
|
baseUrl = '';
|
|
36
36
|
subs = [];
|
|
37
|
-
constructor(dialogRef, http, appEnvironment,
|
|
37
|
+
constructor(dialogRef, http, appEnvironment, uiNotification, data) {
|
|
38
38
|
this.dialogRef = dialogRef;
|
|
39
39
|
this.http = http;
|
|
40
40
|
this.appEnvironment = appEnvironment;
|
|
41
|
-
this.
|
|
41
|
+
this.uiNotification = uiNotification;
|
|
42
42
|
this.data = data;
|
|
43
43
|
this.baseUrl = this.appEnvironment.appUri;
|
|
44
44
|
}
|
|
@@ -77,6 +77,7 @@ export class TruPasswordDialog {
|
|
|
77
77
|
.post(`${this.baseUrl}${TRU_AUTH_CONFIG.authUrl}/changePassword`, passwordChangeRequest)
|
|
78
78
|
.subscribe(() => {
|
|
79
79
|
this.busy = false;
|
|
80
|
+
this.uiNotification.success('Password update complete.');
|
|
80
81
|
this.dialogRef.close(true);
|
|
81
82
|
}, (ex) => {
|
|
82
83
|
this.busy = false;
|
|
@@ -96,14 +97,14 @@ export class TruPasswordDialog {
|
|
|
96
97
|
ngOnDestroy() {
|
|
97
98
|
this.subs.forEach(s => s.unsubscribe());
|
|
98
99
|
}
|
|
99
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruPasswordDialog, deps: [{ token: i1.MatDialogRef }, { token: i2.HttpClient }, { token: i3.TruAppEnvironment }, { token: i4.
|
|
100
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruPasswordDialog, deps: [{ token: i1.MatDialogRef }, { token: i2.HttpClient }, { token: i3.TruAppEnvironment }, { token: i4.TruUiNotification }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
100
101
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruPasswordDialog, selector: "tru-password-dialog", ngImport: i0, template: "<div mat-dialog-title class=\"mat-dialog-title\">\r\n <p class=\"tru-password-dialog-title\">Change Password</p>\r\n <p class=\"tru-password-dialog-username\">for {{username}}</p>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content tru-control-container tru-password-dialog\">\r\n <p>{{message}}</p>\r\n\r\n <div class=\"tru-password-dialog-control-wrapper\" *ngIf=\"!admin\">\r\n <mat-label>Current Password</mat-label>\r\n <mat-form-field>\r\n <input #currentInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"currentPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <p class=\"tru-password-dialog-error-msg\" *ngIf=\"errorMsg\">{{errorMsg}}</p>\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>New Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"newPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <password-strength-meter [password]=\"newPasswordControl.value\" (strengthChange)=\"onPasswordStrengthChanged($event)\" />\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Confirm New Password</mat-label>\r\n <mat-form-field>\r\n <input #confirmInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"confirmNewPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n </div>\r\n <mat-checkbox [formControl]=\"showPasswordControl\"\r\n (click)=\"onShowPasswordClicked()\"\r\n [labelPosition]=\"'before'\">\r\n Show Password\r\n </mat-checkbox>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Cancel</button>\r\n <button [disabled]=\"!canSubmit() || busy || errorMsg ? 'disabled' : null\" mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Submit</button>\r\n</div>\r\n", styles: ["", "::ng-deep .mat-mdc-dialog-surface{padding:20px}.mat-mdc-dialog-title:before{content:unset!important;height:unset!important;padding:0 0 10px!important}.mdc-dialog__title{padding:20px 0 10px!important}.mdc-dialog__content{padding:10px 0 15px!important;overflow:hidden}.mat-mdc-dialog-content p{margin-bottom:0;font-size:14px;color:#545454}.mat-mdc-dialog-actions{padding:0!important}.mat-mdc-dialog-actions button{margin-right:10px}.tru-password-dialog .tru-password-dialog-control-wrapper{margin-bottom:20px}.tru-password-dialog-title{font-size:26px}.tru-password-dialog-username{font-size:14px;margin:0;color:var(--mdc-dialog-supporting-text-color, rgba(0, 0, 0, .6))}.tru-password-dialog-error-msg{color:red!important;font-size:11px!important}mat-checkbox{float:right!important}.std-control.edit{margin-bottom:10px;margin-right:10px}::ng-deep .tru-password-dialog .mat-mdc-form-field{display:inline!important}::ng-deep .tru-password-dialog .mat-mdc-form-field-infix{padding:0!important;min-height:unset!important}::ng-deep .tru-password-dialog mat-label{font-size:14px;font-weight:700}::ng-deep .tru-password-dialog input{font-size:12px;padding-left:5px}::ng-deep .tru-password-dialog .mat-mdc-form-field-bottom-align:before{content:unset!important}::ng-deep .tru-password-dialog path{color:#a9a9a9}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "component", type: i11.PasswordStrengthMeterComponent, selector: "password-strength-meter", inputs: ["password", "minPasswordLength", "enableFeedback", "enableAsync", "colors", "numberOfProgressBarItems"], outputs: ["strengthChange"] }] });
|
|
101
102
|
}
|
|
102
103
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruPasswordDialog, decorators: [{
|
|
103
104
|
type: Component,
|
|
104
105
|
args: [{ selector: 'tru-password-dialog', template: "<div mat-dialog-title class=\"mat-dialog-title\">\r\n <p class=\"tru-password-dialog-title\">Change Password</p>\r\n <p class=\"tru-password-dialog-username\">for {{username}}</p>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content tru-control-container tru-password-dialog\">\r\n <p>{{message}}</p>\r\n\r\n <div class=\"tru-password-dialog-control-wrapper\" *ngIf=\"!admin\">\r\n <mat-label>Current Password</mat-label>\r\n <mat-form-field>\r\n <input #currentInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"currentPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <p class=\"tru-password-dialog-error-msg\" *ngIf=\"errorMsg\">{{errorMsg}}</p>\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>New Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"newPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <password-strength-meter [password]=\"newPasswordControl.value\" (strengthChange)=\"onPasswordStrengthChanged($event)\" />\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Confirm New Password</mat-label>\r\n <mat-form-field>\r\n <input #confirmInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"confirmNewPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n </div>\r\n <mat-checkbox [formControl]=\"showPasswordControl\"\r\n (click)=\"onShowPasswordClicked()\"\r\n [labelPosition]=\"'before'\">\r\n Show Password\r\n </mat-checkbox>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Cancel</button>\r\n <button [disabled]=\"!canSubmit() || busy || errorMsg ? 'disabled' : null\" mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Submit</button>\r\n</div>\r\n", styles: ["::ng-deep .mat-mdc-dialog-surface{padding:20px}.mat-mdc-dialog-title:before{content:unset!important;height:unset!important;padding:0 0 10px!important}.mdc-dialog__title{padding:20px 0 10px!important}.mdc-dialog__content{padding:10px 0 15px!important;overflow:hidden}.mat-mdc-dialog-content p{margin-bottom:0;font-size:14px;color:#545454}.mat-mdc-dialog-actions{padding:0!important}.mat-mdc-dialog-actions button{margin-right:10px}.tru-password-dialog .tru-password-dialog-control-wrapper{margin-bottom:20px}.tru-password-dialog-title{font-size:26px}.tru-password-dialog-username{font-size:14px;margin:0;color:var(--mdc-dialog-supporting-text-color, rgba(0, 0, 0, .6))}.tru-password-dialog-error-msg{color:red!important;font-size:11px!important}mat-checkbox{float:right!important}.std-control.edit{margin-bottom:10px;margin-right:10px}::ng-deep .tru-password-dialog .mat-mdc-form-field{display:inline!important}::ng-deep .tru-password-dialog .mat-mdc-form-field-infix{padding:0!important;min-height:unset!important}::ng-deep .tru-password-dialog mat-label{font-size:14px;font-weight:700}::ng-deep .tru-password-dialog input{font-size:12px;padding-left:5px}::ng-deep .tru-password-dialog .mat-mdc-form-field-bottom-align:before{content:unset!important}::ng-deep .tru-password-dialog path{color:#a9a9a9}\n"] }]
|
|
105
|
-
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.HttpClient }, { type: i3.TruAppEnvironment }, { type: i4.
|
|
106
|
+
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.HttpClient }, { type: i3.TruAppEnvironment }, { type: i4.TruUiNotification }, { type: undefined, decorators: [{
|
|
106
107
|
type: Inject,
|
|
107
108
|
args: [MAT_DIALOG_DATA]
|
|
108
109
|
}] }] });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXBhc3N3b3JkLWRpYWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9wYXNzd29yZC1kaWFsb2cvdHJ1LXBhc3N3b3JkLWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9wYXNzd29yZC1kaWFsb2cvdHJ1LXBhc3N3b3JkLWRpYWxvZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVNqRixNQUFNLE9BQU8saUJBQWlCO0lBa0JuQjtJQUNDO0lBQ0E7SUFDQTtJQUN5QjtJQXJCbkMsc0JBQXNCLEdBQWdCLElBQUksV0FBVyxDQUE0QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekYsa0JBQWtCLEdBQWdCLElBQUksV0FBVyxDQUE0QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckYseUJBQXlCLEdBQWdCLElBQUksV0FBVyxDQUE0QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUYsbUJBQW1CLEdBQWdCLElBQUksV0FBVyxDQUFVLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUV2RSxRQUFRLEdBQWtCLElBQUksQ0FBQztJQUMvQixLQUFLLEdBQVksS0FBSyxDQUFDO0lBQ3ZCLE9BQU8sR0FBa0Is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QixDQUFDLEVBQUUsQ0FBQyxFQUFPLEVBQUUsRUFBRTtZQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQTtJQUVELFNBQVMsR0FBRyxHQUFTLEVBQUU7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFBO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO3VHQXJGVSxpQkFBaUIsZ0lBc0JsQixlQUFlOzJGQXRCZCxpQkFBaUIsMkRDZjlCLHdyRUFtREE7OzJGRHBDYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UscUJBQXFCOzswQkEwQjVCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVFJVX0FVVEhfQ09ORklHIH0gZnJvbSBcIi4uL2xvZ2luL2NsYXNzZXMvdHJ1LWF1dGgtY29uZmlnXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFRydVBhc3N3b3JkQ2hhbmdlUmVxdWVzdCB9IGZyb20gJy4vY2xhc3Nlcy90cnUtcGFzc3dvcmQtY2hhbmdlLXJlcXVlc3QnO1xyXG5pbXBvcnQgeyBUcnVVc2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXVzZXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LXBhc3N3b3JkLWRpYWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1wYXNzd29yZC1kaWFsb2cuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4uLy4uL2Fzc2V0cy90cnUtc3R5bGUuY3NzJywgJy4vdHJ1LXBhc3N3b3JkLWRpYWxvZy5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1UGFzc3dvcmREaWFsb2cgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGN1cnJlbnRQYXNzd29yZENvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KCcnLCBbXSk7XHJcbiAgbmV3UGFzc3dvcmRDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPignJywgW10pO1xyXG4gIGNvbmZpcm1OZXdQYXNzd29yZENvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KCcnLCBbXSk7XHJcbiAgc2hvd1Bhc3N3b3JkQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8Ym9vbGVhbj4oZmFsc2UsIFtdKTtcclxuXHJcbiAgdXNlcm5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGFkbWluOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWVzc2FnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgc2hvd1Bhc3N3b3JkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFzc3dvcmRTY29yZTogbnVtYmVyIHwgbnVsbCA9IDA7XHJcbiAgZXJyb3JNc2c6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGJ1c3k6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmcgPSAnJztcclxuICBwcml2YXRlIHN1YnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VHJ1UGFzc3dvcmREaWFsb2c+LFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhcHBFbnZpcm9ubWVudDogVHJ1QXBwRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIHVzZXI6IFRydVVzZXIsXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuYmFzZVVybCA9IHRoaXMuYXBwRW52aXJvbm1lbnQuYXBwVXJpO1xyXG4gIH1cclxuXHJcbiAgb25QYXNzd29yZFN0cmVuZ3RoQ2hhbmdlZCA9IChzY29yZTogbnVtYmVyIHwgbnVsbCkgPT4ge1xyXG4gICAgdGhpcy5wYXNzd29yZFNjb3JlID0gc2NvcmU7XHJcbiAgfVxyXG5cclxuICBvblNob3dQYXNzd29yZENsaWNrZWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnNob3dQYXNzd29yZCA9IHRoaXMuc2hvd1Bhc3N3b3JkQ29udHJvbC52YWx1ZTtcclxuICB9XHJcblxyXG4gIGNhblN1Ym1pdCA9ICgpID0+IHtcclxuICAgIGxldCBjYW5TdWJtaXQgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmFkbWluKSB7XHJcbiAgICAgIGNhblN1Ym1pdCA9XHJcbiAgICAgICAgdGhpcy5uZXdQYXNzd29yZENvbnRyb2wudmFsdWUgJiZcclxuICAgICAgICB0aGlzLmNvbmZpcm1OZXdQYXNzd29yZENvbnRyb2wudmFsdWUgJiZcclxuICAgICAgICB0aGlzLnBhc3N3b3JkU2NvcmUgIT09IG51bGwgJiYgdGhpcy5wYXNzd29yZFNjb3JlID4gMSAmJlxyXG4gICAgICAgICh0aGlzLm5ld1Bhc3N3b3JkQ29udHJvbC52YWx1ZSA9PT0gdGhpcy5jb25maXJtTmV3UGFzc3dvcmRDb250cm9sLnZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNhblN1Ym1pdCA9IHRoaXMuY3VycmVudFBhc3N3b3JkQ29udHJvbC52YWx1ZSAmJlxyXG4gICAgICAgIHRoaXMubmV3UGFzc3dvcmRDb250cm9sLnZhbHVlICYmXHJcbiAgICAgICAgdGhpcy5jb25maXJtTmV3UGFzc3dvcmRDb250cm9sLnZhbHVlICYmXHJcbiAgICAgICAgdGhpcy5wYXNzd29yZFNjb3JlICE9PSBudWxsICYmIHRoaXMucGFzc3dvcmRTY29yZSA+IDEgJiZcclxuICAgICAgICAodGhpcy5uZXdQYXNzd29yZENvbnRyb2wudmFsdWUgPT09IHRoaXMuY29uZmlybU5ld1Bhc3N3b3JkQ29udHJvbC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2FuU3VibWl0O1xyXG4gIH1cclxuXHJcbiAgb25Db25maXJtID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgbGV0IHBhc3N3b3JkQ2hhbmdlUmVxdWVzdCA9IG5ldyBUcnVQYXNzd29yZENoYW5nZVJlcXVlc3QoKTtcclxuICAgIHBhc3N3b3JkQ2hhbmdlUmVxdWVzdC5jdXJyZW50UGFzc3dvcmQgPSB0aGlzLmN1cnJlbnRQYXNzd29yZENvbnRyb2wudmFsdWU7XHJcbiAgICBwYXNzd29yZENoYW5nZVJlcXVlc3QubmV3UGFzc3dvcmQgPSB0aGlzLm5ld1Bhc3N3b3JkQ29udHJvbC52YWx1ZTtcclxuICAgIHBhc3N3b3JkQ2hhbmdlUmVxdWVzdC51c2VyUmVmID0gdGhpcy5kYXRhLnVzZXJSZWY7XHJcbiAgICBwYXNzd29yZENoYW5nZVJlcXVlc3QuYWRtaW4gPSB0aGlzLmFkbWluO1xyXG5cclxuICAgIHRoaXMuYnVzeSA9IHRydWU7XHJcbiAgICB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtUUlVfQVVUSF9DT05GSUcuYXV0aFVybH0vY2hhbmdlUGFzc3dvcmRgLCBwYXNzd29yZENoYW5nZVJlcXVlc3QpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYnVzeSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpO1xyXG4gICAgICB9LCAoZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYnVzeSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZXJyb3JNc2cgPSBleC5lcnJvcjtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkRpc21pc3MgPSAoKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMuY3VycmVudFBhc3N3b3JkQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5lcnJvck1zZyA9IG51bGw7XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLnVzZXJuYW1lID0gdGhpcy5kYXRhLnVzZXJuYW1lO1xyXG4gICAgdGhpcy5hZG1pbiA9IHRoaXMuZGF0YS5hZG1pbjtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbiIsIjxkaXYgbWF0LWRpYWxvZy10aXRsZSBjbGFzcz1cIm1hdC1kaWFsb2ctdGl0bGVcIj5cclxuICA8cCBjbGFzcz1cInRydS1wYXNzd29yZC1kaWFsb2ctdGl0bGVcIj5DaGFuZ2UgUGFzc3dvcmQ8L3A+XHJcbiAgPHAgY2xhc3M9XCJ0cnUtcGFzc3dvcmQtZGlhbG9nLXVzZXJuYW1lXCI+Zm9yIHt7dXNlcm5hbWV9fTwvcD5cclxuPC9kaXY+XHJcblxyXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cIm1hdC1kaWFsb2ctY29udGVudCB0cnUtY29udHJvbC1jb250YWluZXIgdHJ1LXBhc3N3b3JkLWRpYWxvZ1wiPlxyXG4gIDxwPnt7bWVzc2FnZX19PC9wPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LXBhc3N3b3JkLWRpYWxvZy1jb250cm9sLXdyYXBwZXJcIiAqbmdJZj1cIiFhZG1pblwiPlxyXG4gICAgPG1hdC1sYWJlbD5DdXJyZW50IFBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCAjY3VycmVudElucHV0XHJcbiAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmIHdlYmF1dGhuXCJcclxuICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjdXJyZW50UGFzc3dvcmRDb250cm9sXCJcclxuICAgICAgICAgICAgIFt0eXBlXT1cInNob3dQYXNzd29yZCA/ICd0ZXh0JyA6ICdwYXNzd29yZCdcIiAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxwIGNsYXNzPVwidHJ1LXBhc3N3b3JkLWRpYWxvZy1lcnJvci1tc2dcIiAqbmdJZj1cImVycm9yTXNnXCI+e3tlcnJvck1zZ319PC9wPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtcGFzc3dvcmQtZGlhbG9nLWNvbnRyb2wtd3JhcHBlclwiPlxyXG4gICAgPG1hdC1sYWJlbD5OZXcgUGFzc3dvcmQ8L21hdC1sYWJlbD5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgPGlucHV0ICNuZXdJbnB1dFxyXG4gICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZiB3ZWJhdXRoblwiXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibmV3UGFzc3dvcmRDb250cm9sXCJcclxuICAgICAgICAgICAgIFt0eXBlXT1cInNob3dQYXNzd29yZCA/ICd0ZXh0JyA6ICdwYXNzd29yZCdcIiAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxwYXNzd29yZC1zdHJlbmd0aC1tZXRlciBbcGFzc3dvcmRdPVwibmV3UGFzc3dvcmRDb250cm9sLnZhbHVlXCIgKHN0cmVuZ3RoQ2hhbmdlKT1cIm9uUGFzc3dvcmRTdHJlbmd0aENoYW5nZWQoJGV2ZW50KVwiIC8+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1wYXNzd29yZC1kaWFsb2ctY29udHJvbC13cmFwcGVyXCI+XHJcbiAgICA8bWF0LWxhYmVsPkNvbmZpcm0gTmV3IFBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCAjY29uZmlybUlucHV0XHJcbiAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmIHdlYmF1dGhuXCJcclxuICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb25maXJtTmV3UGFzc3dvcmRDb250cm9sXCJcclxuICAgICAgICAgICAgIFt0eXBlXT1cInNob3dQYXNzd29yZCA/ICd0ZXh0JyA6ICdwYXNzd29yZCdcIiAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuICA8bWF0LWNoZWNrYm94IFtmb3JtQ29udHJvbF09XCJzaG93UGFzc3dvcmRDb250cm9sXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNob3dQYXNzd29yZENsaWNrZWQoKVwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiPlxyXG4gICAgU2hvdyBQYXNzd29yZFxyXG4gIDwvbWF0LWNoZWNrYm94PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zIGNsYXNzPVwibWF0LWRpYWxvZy1hY3Rpb25zXCI+XHJcbiAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwib25EaXNtaXNzKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhY2FuU3VibWl0KCkgfHwgYnVzeSB8fCBlcnJvck1zZyA/ICdkaXNhYmxlZCcgOiBudWxsXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9uQ29uZmlybSgpXCI+U3VibWl0PC9idXR0b24+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXBhc3N3b3JkLWRpYWxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9wYXNzd29yZC1kaWFsb2cvdHJ1LXBhc3N3b3JkLWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9wYXNzd29yZC1kaWFsb2cvdHJ1LXBhc3N3b3JkLWRpYWxvZy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVVqRixNQUFNLE9BQU8saUJBQWlCO0lBa0JuQjtJQUNDO0lBQ0E7SUFDQTtJQUN5QjtJQXJCbkMsc0JBQXNCLEdBQWdCLElBQUksV0FBVyxDQUE0QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekYsa0JBQWtCLEdBQWdCLElBQUksV0FBVyxDQUE0QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckYseUJBQXlCLEdBQWdCLElBQUksV0FBVyxDQUE0QixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUYsbUJBQW1CLEdBQWdCLElBQUksV0FBVyxDQUFVLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUV2RSxRQUFRLEdBQWtCLElBQUksQ0FBQztJQUMvQixLQUFLLEdBQVksS0FBSyxDQUFDO0lBQ3ZCLE9BQU8sR0FBa0Is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O1lBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUMsRUFBRSxDQUFDLEVBQU8sRUFBRSxFQUFFO1lBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFBO0lBRUQsU0FBUyxHQUFHLEdBQVMsRUFBRTtRQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUE7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7dUdBdEZVLGlCQUFpQiwwSUFzQmxCLGVBQWU7MkZBdEJkLGlCQUFpQiwyRENoQjlCLHdyRUFtREE7OzJGRG5DYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UscUJBQXFCOzswQkEwQjVCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVFJVX0FVVEhfQ09ORklHIH0gZnJvbSBcIi4uL2xvZ2luL2NsYXNzZXMvdHJ1LWF1dGgtY29uZmlnXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFRydVBhc3N3b3JkQ2hhbmdlUmVxdWVzdCB9IGZyb20gJy4vY2xhc3Nlcy90cnUtcGFzc3dvcmQtY2hhbmdlLXJlcXVlc3QnO1xyXG5pbXBvcnQgeyBUcnVVc2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXVzZXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdWktbm90aWZpY2F0aW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LXBhc3N3b3JkLWRpYWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1wYXNzd29yZC1kaWFsb2cuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4uLy4uL2Fzc2V0cy90cnUtc3R5bGUuY3NzJywgJy4vdHJ1LXBhc3N3b3JkLWRpYWxvZy5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1UGFzc3dvcmREaWFsb2cgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGN1cnJlbnRQYXNzd29yZENvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KCcnLCBbXSk7XHJcbiAgbmV3UGFzc3dvcmRDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPignJywgW10pO1xyXG4gIGNvbmZpcm1OZXdQYXNzd29yZENvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ+KCcnLCBbXSk7XHJcbiAgc2hvd1Bhc3N3b3JkQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8Ym9vbGVhbj4oZmFsc2UsIFtdKTtcclxuXHJcbiAgdXNlcm5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGFkbWluOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWVzc2FnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgc2hvd1Bhc3N3b3JkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFzc3dvcmRTY29yZTogbnVtYmVyIHwgbnVsbCA9IDA7XHJcbiAgZXJyb3JNc2c6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGJ1c3k6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmcgPSAnJztcclxuICBwcml2YXRlIHN1YnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VHJ1UGFzc3dvcmREaWFsb2c+LFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhcHBFbnZpcm9ubWVudDogVHJ1QXBwRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvbixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5iYXNlVXJsID0gdGhpcy5hcHBFbnZpcm9ubWVudC5hcHBVcmk7XHJcbiAgfVxyXG5cclxuICBvblBhc3N3b3JkU3RyZW5ndGhDaGFuZ2VkID0gKHNjb3JlOiBudW1iZXIgfCBudWxsKSA9PiB7XHJcbiAgICB0aGlzLnBhc3N3b3JkU2NvcmUgPSBzY29yZTtcclxuICB9XHJcblxyXG4gIG9uU2hvd1Bhc3N3b3JkQ2xpY2tlZCA9ICgpID0+IHtcclxuICAgIHRoaXMuc2hvd1Bhc3N3b3JkID0gdGhpcy5zaG93UGFzc3dvcmRDb250cm9sLnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY2FuU3VibWl0ID0gKCkgPT4ge1xyXG4gICAgbGV0IGNhblN1Ym1pdCA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuYWRtaW4pIHtcclxuICAgICAgY2FuU3VibWl0ID1cclxuICAgICAgICB0aGlzLm5ld1Bhc3N3b3JkQ29udHJvbC52YWx1ZSAmJlxyXG4gICAgICAgIHRoaXMuY29uZmlybU5ld1Bhc3N3b3JkQ29udHJvbC52YWx1ZSAmJlxyXG4gICAgICAgIHRoaXMucGFzc3dvcmRTY29yZSAhPT0gbnVsbCAmJiB0aGlzLnBhc3N3b3JkU2NvcmUgPiAxICYmXHJcbiAgICAgICAgKHRoaXMubmV3UGFzc3dvcmRDb250cm9sLnZhbHVlID09PSB0aGlzLmNvbmZpcm1OZXdQYXNzd29yZENvbnRyb2wudmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2FuU3VibWl0ID0gdGhpcy5jdXJyZW50UGFzc3dvcmRDb250cm9sLnZhbHVlICYmXHJcbiAgICAgICAgdGhpcy5uZXdQYXNzd29yZENvbnRyb2wudmFsdWUgJiZcclxuICAgICAgICB0aGlzLmNvbmZpcm1OZXdQYXNzd29yZENvbnRyb2wudmFsdWUgJiZcclxuICAgICAgICB0aGlzLnBhc3N3b3JkU2NvcmUgIT09IG51bGwgJiYgdGhpcy5wYXNzd29yZFNjb3JlID4gMSAmJlxyXG4gICAgICAgICh0aGlzLm5ld1Bhc3N3b3JkQ29udHJvbC52YWx1ZSA9PT0gdGhpcy5jb25maXJtTmV3UGFzc3dvcmRDb250cm9sLnZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjYW5TdWJtaXQ7XHJcbiAgfVxyXG5cclxuICBvbkNvbmZpcm0gPSAoKTogdm9pZCA9PiB7XHJcbiAgICBsZXQgcGFzc3dvcmRDaGFuZ2VSZXF1ZXN0ID0gbmV3IFRydVBhc3N3b3JkQ2hhbmdlUmVxdWVzdCgpO1xyXG4gICAgcGFzc3dvcmRDaGFuZ2VSZXF1ZXN0LmN1cnJlbnRQYXNzd29yZCA9IHRoaXMuY3VycmVudFBhc3N3b3JkQ29udHJvbC52YWx1ZTtcclxuICAgIHBhc3N3b3JkQ2hhbmdlUmVxdWVzdC5uZXdQYXNzd29yZCA9IHRoaXMubmV3UGFzc3dvcmRDb250cm9sLnZhbHVlO1xyXG4gICAgcGFzc3dvcmRDaGFuZ2VSZXF1ZXN0LnVzZXJSZWYgPSB0aGlzLmRhdGEudXNlclJlZjtcclxuICAgIHBhc3N3b3JkQ2hhbmdlUmVxdWVzdC5hZG1pbiA9IHRoaXMuYWRtaW47XHJcblxyXG4gICAgdGhpcy5idXN5ID0gdHJ1ZTtcclxuICAgIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke1RSVV9BVVRIX0NPTkZJRy5hdXRoVXJsfS9jaGFuZ2VQYXNzd29yZGAsIHBhc3N3b3JkQ2hhbmdlUmVxdWVzdClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5zdWNjZXNzKCdQYXNzd29yZCB1cGRhdGUgY29tcGxldGUuJylcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcclxuICAgICAgfSwgKGV4OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmJ1c3kgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVycm9yTXNnID0gZXguZXJyb3I7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25EaXNtaXNzID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnN1YnMucHVzaCh0aGlzLmN1cnJlbnRQYXNzd29yZENvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZXJyb3JNc2cgPSBudWxsO1xyXG4gICAgfSkpO1xyXG4gICAgdGhpcy51c2VybmFtZSA9IHRoaXMuZGF0YS51c2VybmFtZTtcclxuICAgIHRoaXMuYWRtaW4gPSB0aGlzLmRhdGEuYWRtaW47XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG59XHJcblxyXG4iLCI8ZGl2IG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJtYXQtZGlhbG9nLXRpdGxlXCI+XHJcbiAgPHAgY2xhc3M9XCJ0cnUtcGFzc3dvcmQtZGlhbG9nLXRpdGxlXCI+Q2hhbmdlIFBhc3N3b3JkPC9wPlxyXG4gIDxwIGNsYXNzPVwidHJ1LXBhc3N3b3JkLWRpYWxvZy11c2VybmFtZVwiPmZvciB7e3VzZXJuYW1lfX08L3A+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJtYXQtZGlhbG9nLWNvbnRlbnQgdHJ1LWNvbnRyb2wtY29udGFpbmVyIHRydS1wYXNzd29yZC1kaWFsb2dcIj5cclxuICA8cD57e21lc3NhZ2V9fTwvcD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInRydS1wYXNzd29yZC1kaWFsb2ctY29udHJvbC13cmFwcGVyXCIgKm5nSWY9XCIhYWRtaW5cIj5cclxuICAgIDxtYXQtbGFiZWw+Q3VycmVudCBQYXNzd29yZDwvbWF0LWxhYmVsPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8aW5wdXQgI2N1cnJlbnRJbnB1dFxyXG4gICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZiB3ZWJhdXRoblwiXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY3VycmVudFBhc3N3b3JkQ29udHJvbFwiXHJcbiAgICAgICAgICAgICBbdHlwZV09XCJzaG93UGFzc3dvcmQgPyAndGV4dCcgOiAncGFzc3dvcmQnXCIgLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8cCBjbGFzcz1cInRydS1wYXNzd29yZC1kaWFsb2ctZXJyb3ItbXNnXCIgKm5nSWY9XCJlcnJvck1zZ1wiPnt7ZXJyb3JNc2d9fTwvcD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LXBhc3N3b3JkLWRpYWxvZy1jb250cm9sLXdyYXBwZXJcIj5cclxuICAgIDxtYXQtbGFiZWw+TmV3IFBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxpbnB1dCAjbmV3SW5wdXRcclxuICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmYgd2ViYXV0aG5cIlxyXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIm5ld1Bhc3N3b3JkQ29udHJvbFwiXHJcbiAgICAgICAgICAgICBbdHlwZV09XCJzaG93UGFzc3dvcmQgPyAndGV4dCcgOiAncGFzc3dvcmQnXCIgLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8cGFzc3dvcmQtc3RyZW5ndGgtbWV0ZXIgW3Bhc3N3b3JkXT1cIm5ld1Bhc3N3b3JkQ29udHJvbC52YWx1ZVwiIChzdHJlbmd0aENoYW5nZSk9XCJvblBhc3N3b3JkU3RyZW5ndGhDaGFuZ2VkKCRldmVudClcIiAvPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtcGFzc3dvcmQtZGlhbG9nLWNvbnRyb2wtd3JhcHBlclwiPlxyXG4gICAgPG1hdC1sYWJlbD5Db25maXJtIE5ldyBQYXNzd29yZDwvbWF0LWxhYmVsPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8aW5wdXQgI2NvbmZpcm1JbnB1dFxyXG4gICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZiB3ZWJhdXRoblwiXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29uZmlybU5ld1Bhc3N3b3JkQ29udHJvbFwiXHJcbiAgICAgICAgICAgICBbdHlwZV09XCJzaG93UGFzc3dvcmQgPyAndGV4dCcgOiAncGFzc3dvcmQnXCIgLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9kaXY+XHJcbiAgPG1hdC1jaGVja2JveCBbZm9ybUNvbnRyb2xdPVwic2hvd1Bhc3N3b3JkQ29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TaG93UGFzc3dvcmRDbGlja2VkKClcIlxyXG4gICAgICAgICAgICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIj5cclxuICAgIFNob3cgUGFzc3dvcmRcclxuICA8L21hdC1jaGVja2JveD5cclxuPC9kaXY+XHJcblxyXG48ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cIm1hdC1kaWFsb2ctYWN0aW9uc1wiPlxyXG4gIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIm9uRGlzbWlzcygpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiIWNhblN1Ym1pdCgpIHx8IGJ1c3kgfHwgZXJyb3JNc2cgPyAnZGlzYWJsZWQnIDogbnVsbFwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvbkNvbmZpcm0oKVwiPlN1Ym1pdDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -695,7 +695,7 @@ class TruPasswordDialog {
|
|
|
695
695
|
dialogRef;
|
|
696
696
|
http;
|
|
697
697
|
appEnvironment;
|
|
698
|
-
|
|
698
|
+
uiNotification;
|
|
699
699
|
data;
|
|
700
700
|
currentPasswordControl = new FormControl('', []);
|
|
701
701
|
newPasswordControl = new FormControl('', []);
|
|
@@ -710,11 +710,11 @@ class TruPasswordDialog {
|
|
|
710
710
|
busy = false;
|
|
711
711
|
baseUrl = '';
|
|
712
712
|
subs = [];
|
|
713
|
-
constructor(dialogRef, http, appEnvironment,
|
|
713
|
+
constructor(dialogRef, http, appEnvironment, uiNotification, data) {
|
|
714
714
|
this.dialogRef = dialogRef;
|
|
715
715
|
this.http = http;
|
|
716
716
|
this.appEnvironment = appEnvironment;
|
|
717
|
-
this.
|
|
717
|
+
this.uiNotification = uiNotification;
|
|
718
718
|
this.data = data;
|
|
719
719
|
this.baseUrl = this.appEnvironment.appUri;
|
|
720
720
|
}
|
|
@@ -753,6 +753,7 @@ class TruPasswordDialog {
|
|
|
753
753
|
.post(`${this.baseUrl}${TRU_AUTH_CONFIG.authUrl}/changePassword`, passwordChangeRequest)
|
|
754
754
|
.subscribe(() => {
|
|
755
755
|
this.busy = false;
|
|
756
|
+
this.uiNotification.success('Password update complete.');
|
|
756
757
|
this.dialogRef.close(true);
|
|
757
758
|
}, (ex) => {
|
|
758
759
|
this.busy = false;
|
|
@@ -772,13 +773,13 @@ class TruPasswordDialog {
|
|
|
772
773
|
ngOnDestroy() {
|
|
773
774
|
this.subs.forEach(s => s.unsubscribe());
|
|
774
775
|
}
|
|
775
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruPasswordDialog, deps: [{ token: i1.MatDialogRef }, { token: i2.HttpClient }, { token: TruAppEnvironment }, { token:
|
|
776
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruPasswordDialog, deps: [{ token: i1.MatDialogRef }, { token: i2.HttpClient }, { token: TruAppEnvironment }, { token: TruUiNotification }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
776
777
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruPasswordDialog, selector: "tru-password-dialog", ngImport: i0, template: "<div mat-dialog-title class=\"mat-dialog-title\">\r\n <p class=\"tru-password-dialog-title\">Change Password</p>\r\n <p class=\"tru-password-dialog-username\">for {{username}}</p>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content tru-control-container tru-password-dialog\">\r\n <p>{{message}}</p>\r\n\r\n <div class=\"tru-password-dialog-control-wrapper\" *ngIf=\"!admin\">\r\n <mat-label>Current Password</mat-label>\r\n <mat-form-field>\r\n <input #currentInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"currentPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <p class=\"tru-password-dialog-error-msg\" *ngIf=\"errorMsg\">{{errorMsg}}</p>\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>New Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"newPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <password-strength-meter [password]=\"newPasswordControl.value\" (strengthChange)=\"onPasswordStrengthChanged($event)\" />\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Confirm New Password</mat-label>\r\n <mat-form-field>\r\n <input #confirmInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"confirmNewPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n </div>\r\n <mat-checkbox [formControl]=\"showPasswordControl\"\r\n (click)=\"onShowPasswordClicked()\"\r\n [labelPosition]=\"'before'\">\r\n Show Password\r\n </mat-checkbox>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Cancel</button>\r\n <button [disabled]=\"!canSubmit() || busy || errorMsg ? 'disabled' : null\" mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Submit</button>\r\n</div>\r\n", styles: ["", "::ng-deep .mat-mdc-dialog-surface{padding:20px}.mat-mdc-dialog-title:before{content:unset!important;height:unset!important;padding:0 0 10px!important}.mdc-dialog__title{padding:20px 0 10px!important}.mdc-dialog__content{padding:10px 0 15px!important;overflow:hidden}.mat-mdc-dialog-content p{margin-bottom:0;font-size:14px;color:#545454}.mat-mdc-dialog-actions{padding:0!important}.mat-mdc-dialog-actions button{margin-right:10px}.tru-password-dialog .tru-password-dialog-control-wrapper{margin-bottom:20px}.tru-password-dialog-title{font-size:26px}.tru-password-dialog-username{font-size:14px;margin:0;color:var(--mdc-dialog-supporting-text-color, rgba(0, 0, 0, .6))}.tru-password-dialog-error-msg{color:red!important;font-size:11px!important}mat-checkbox{float:right!important}.std-control.edit{margin-bottom:10px;margin-right:10px}::ng-deep .tru-password-dialog .mat-mdc-form-field{display:inline!important}::ng-deep .tru-password-dialog .mat-mdc-form-field-infix{padding:0!important;min-height:unset!important}::ng-deep .tru-password-dialog mat-label{font-size:14px;font-weight:700}::ng-deep .tru-password-dialog input{font-size:12px;padding-left:5px}::ng-deep .tru-password-dialog .mat-mdc-form-field-bottom-align:before{content:unset!important}::ng-deep .tru-password-dialog path{color:#a9a9a9}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "component", type: i11.PasswordStrengthMeterComponent, selector: "password-strength-meter", inputs: ["password", "minPasswordLength", "enableFeedback", "enableAsync", "colors", "numberOfProgressBarItems"], outputs: ["strengthChange"] }] });
|
|
777
778
|
}
|
|
778
779
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruPasswordDialog, decorators: [{
|
|
779
780
|
type: Component,
|
|
780
781
|
args: [{ selector: 'tru-password-dialog', template: "<div mat-dialog-title class=\"mat-dialog-title\">\r\n <p class=\"tru-password-dialog-title\">Change Password</p>\r\n <p class=\"tru-password-dialog-username\">for {{username}}</p>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content tru-control-container tru-password-dialog\">\r\n <p>{{message}}</p>\r\n\r\n <div class=\"tru-password-dialog-control-wrapper\" *ngIf=\"!admin\">\r\n <mat-label>Current Password</mat-label>\r\n <mat-form-field>\r\n <input #currentInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"currentPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <p class=\"tru-password-dialog-error-msg\" *ngIf=\"errorMsg\">{{errorMsg}}</p>\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>New Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"newPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <password-strength-meter [password]=\"newPasswordControl.value\" (strengthChange)=\"onPasswordStrengthChanged($event)\" />\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Confirm New Password</mat-label>\r\n <mat-form-field>\r\n <input #confirmInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"confirmNewPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n </div>\r\n <mat-checkbox [formControl]=\"showPasswordControl\"\r\n (click)=\"onShowPasswordClicked()\"\r\n [labelPosition]=\"'before'\">\r\n Show Password\r\n </mat-checkbox>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Cancel</button>\r\n <button [disabled]=\"!canSubmit() || busy || errorMsg ? 'disabled' : null\" mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Submit</button>\r\n</div>\r\n", styles: ["::ng-deep .mat-mdc-dialog-surface{padding:20px}.mat-mdc-dialog-title:before{content:unset!important;height:unset!important;padding:0 0 10px!important}.mdc-dialog__title{padding:20px 0 10px!important}.mdc-dialog__content{padding:10px 0 15px!important;overflow:hidden}.mat-mdc-dialog-content p{margin-bottom:0;font-size:14px;color:#545454}.mat-mdc-dialog-actions{padding:0!important}.mat-mdc-dialog-actions button{margin-right:10px}.tru-password-dialog .tru-password-dialog-control-wrapper{margin-bottom:20px}.tru-password-dialog-title{font-size:26px}.tru-password-dialog-username{font-size:14px;margin:0;color:var(--mdc-dialog-supporting-text-color, rgba(0, 0, 0, .6))}.tru-password-dialog-error-msg{color:red!important;font-size:11px!important}mat-checkbox{float:right!important}.std-control.edit{margin-bottom:10px;margin-right:10px}::ng-deep .tru-password-dialog .mat-mdc-form-field{display:inline!important}::ng-deep .tru-password-dialog .mat-mdc-form-field-infix{padding:0!important;min-height:unset!important}::ng-deep .tru-password-dialog mat-label{font-size:14px;font-weight:700}::ng-deep .tru-password-dialog input{font-size:12px;padding-left:5px}::ng-deep .tru-password-dialog .mat-mdc-form-field-bottom-align:before{content:unset!important}::ng-deep .tru-password-dialog path{color:#a9a9a9}\n"] }]
|
|
781
|
-
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.HttpClient }, { type: TruAppEnvironment }, { type:
|
|
782
|
+
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: i2.HttpClient }, { type: TruAppEnvironment }, { type: TruUiNotification }, { type: undefined, decorators: [{
|
|
782
783
|
type: Inject,
|
|
783
784
|
args: [MAT_DIALOG_DATA]
|
|
784
785
|
}] }] });
|