@testgorilla/tgo-ui 0.0.8 → 0.0.11
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/components/login/login.component.d.ts +8 -1
- package/components/navbar/navbar.component.d.ts +6 -1
- package/components/navbar/navbar.component.module.d.ts +2 -1
- package/components/register/register.component.d.ts +42 -0
- package/components/register/register.component.module.d.ts +13 -0
- package/components/register/register.model.d.ts +4 -0
- package/esm2020/components/login/login.component.mjs +17 -8
- package/esm2020/components/navbar/navbar.component.mjs +15 -5
- package/esm2020/components/navbar/navbar.component.module.mjs +8 -7
- package/esm2020/components/register/register.component.mjs +91 -0
- package/esm2020/components/register/register.component.module.mjs +46 -0
- package/esm2020/components/register/register.model.mjs +2 -0
- package/esm2020/public-api.mjs +5 -2
- package/fesm2015/testgorilla-tgo-ui.mjs +159 -16
- package/fesm2015/testgorilla-tgo-ui.mjs.map +1 -1
- package/fesm2020/testgorilla-tgo-ui.mjs +158 -16
- package/fesm2020/testgorilla-tgo-ui.mjs.map +1 -1
- package/package.json +5 -4
- package/public-api.d.ts +2 -0
- package/src/theme/base.scss +21 -0
|
@@ -8,6 +8,13 @@ export declare class LoginComponent implements OnInit {
|
|
|
8
8
|
* @ignore
|
|
9
9
|
*/
|
|
10
10
|
loginForm: import("@angular/forms").FormGroup;
|
|
11
|
+
/**
|
|
12
|
+
* @ignore
|
|
13
|
+
*/
|
|
14
|
+
formErrors: {
|
|
15
|
+
email: string;
|
|
16
|
+
password: string;
|
|
17
|
+
};
|
|
11
18
|
/**
|
|
12
19
|
* Indicator if the form is loading
|
|
13
20
|
*
|
|
@@ -34,7 +41,7 @@ export declare class LoginComponent implements OnInit {
|
|
|
34
41
|
submit(): void;
|
|
35
42
|
forgotPassword(): void;
|
|
36
43
|
createAccount(): void;
|
|
37
|
-
|
|
44
|
+
checkErrors(field: string): void;
|
|
38
45
|
static ɵfac: i0.ɵɵFactoryDeclaration<LoginComponent, never>;
|
|
39
46
|
static ɵcmp: i0.ɵɵComponentDeclaration<LoginComponent, "ui-login", never, { "loading": "loading"; }, { "submitEvent": "submitEvent"; "forgotPasswordEvent": "forgotPasswordEvent"; "createAccountEvent": "createAccountEvent"; }, never, never>;
|
|
40
47
|
}
|
|
@@ -28,8 +28,13 @@ export declare class NavbarComponent {
|
|
|
28
28
|
* @ignore
|
|
29
29
|
*/
|
|
30
30
|
navigateEvent: EventEmitter<string>;
|
|
31
|
+
/**
|
|
32
|
+
* @ignore
|
|
33
|
+
*/
|
|
34
|
+
logoutEvent: EventEmitter<void>;
|
|
31
35
|
constructor();
|
|
32
36
|
navigate(routeId: string): void;
|
|
37
|
+
logout(): void;
|
|
33
38
|
static ɵfac: i0.ɵɵFactoryDeclaration<NavbarComponent, never>;
|
|
34
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NavbarComponent, "ui-navbar", never, { "routes": "routes"; "activedRoute": "activedRoute"; "userInitials": "userInitials"; }, { "navigateEvent": "navigateEvent"; }, never, never>;
|
|
39
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NavbarComponent, "ui-navbar", never, { "routes": "routes"; "activedRoute": "activedRoute"; "userInitials": "userInitials"; }, { "navigateEvent": "navigateEvent"; "logoutEvent": "logoutEvent"; }, never, never>;
|
|
35
40
|
}
|
|
@@ -5,8 +5,9 @@ import * as i3 from "@angular/material/toolbar";
|
|
|
5
5
|
import * as i4 from "@angular/material/icon";
|
|
6
6
|
import * as i5 from "@angular/material/button";
|
|
7
7
|
import * as i6 from "@angular/material/core";
|
|
8
|
+
import * as i7 from "@angular/material/menu";
|
|
8
9
|
export declare class NavbarComponentModule {
|
|
9
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<NavbarComponentModule, never>;
|
|
10
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<NavbarComponentModule, [typeof i1.NavbarComponent], [typeof i2.CommonModule, typeof i3.MatToolbarModule, typeof i4.MatIconModule, typeof i5.MatButtonModule, typeof i6.MatRippleModule], [typeof i1.NavbarComponent]>;
|
|
11
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NavbarComponentModule, [typeof i1.NavbarComponent], [typeof i2.CommonModule, typeof i3.MatToolbarModule, typeof i4.MatIconModule, typeof i5.MatButtonModule, typeof i6.MatRippleModule, typeof i7.MatMenuModule], [typeof i1.NavbarComponent]>;
|
|
11
12
|
static ɵinj: i0.ɵɵInjectorDeclaration<NavbarComponentModule>;
|
|
12
13
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
|
+
import { FormBuilder } from '@angular/forms';
|
|
3
|
+
import { RegisterCredentials } from './register.model';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class RegisterComponent implements OnInit {
|
|
6
|
+
private fb;
|
|
7
|
+
/**
|
|
8
|
+
* @ignore
|
|
9
|
+
*/
|
|
10
|
+
registerForm: import("@angular/forms").FormGroup;
|
|
11
|
+
/**
|
|
12
|
+
* @ignore
|
|
13
|
+
*/
|
|
14
|
+
formErrors: {
|
|
15
|
+
username: string[];
|
|
16
|
+
password: string[];
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Indicator if the form is loading
|
|
20
|
+
*
|
|
21
|
+
* @memberof ButtonComponent
|
|
22
|
+
*/
|
|
23
|
+
loading: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* @ignore
|
|
26
|
+
*/
|
|
27
|
+
submitEvent: EventEmitter<RegisterCredentials>;
|
|
28
|
+
/**
|
|
29
|
+
* @ignore
|
|
30
|
+
*/
|
|
31
|
+
loginEvent: EventEmitter<void>;
|
|
32
|
+
/**
|
|
33
|
+
* @ignore
|
|
34
|
+
*/
|
|
35
|
+
ngOnInit(): void;
|
|
36
|
+
constructor(fb: FormBuilder);
|
|
37
|
+
submit(): void;
|
|
38
|
+
login(): void;
|
|
39
|
+
checkErrors(field: string): void;
|
|
40
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RegisterComponent, never>;
|
|
41
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RegisterComponent, "ui-register", never, { "formErrors": "formErrors"; "loading": "loading"; }, { "submitEvent": "submitEvent"; "loginEvent": "loginEvent"; }, never, never>;
|
|
42
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./register.component";
|
|
3
|
+
import * as i2 from "@angular/common";
|
|
4
|
+
import * as i3 from "@angular/forms";
|
|
5
|
+
import * as i4 from "../field/field.component.module";
|
|
6
|
+
import * as i5 from "../button/button.component.module";
|
|
7
|
+
import * as i6 from "@angular/material/checkbox";
|
|
8
|
+
import * as i7 from "@angular-material-extensions/password-strength";
|
|
9
|
+
export declare class RegisterComponentModule {
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RegisterComponentModule, never>;
|
|
11
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<RegisterComponentModule, [typeof i1.RegisterComponent], [typeof i2.CommonModule, typeof i3.FormsModule, typeof i3.ReactiveFormsModule, typeof i4.FieldComponentModule, typeof i5.ButtonComponentModule, typeof i6.MatCheckboxModule, typeof i7.MatPasswordStrengthModule], [typeof i1.RegisterComponent]>;
|
|
12
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<RegisterComponentModule>;
|
|
13
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
|
|
2
2
|
import { Validators } from '@angular/forms';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/forms";
|
|
@@ -19,6 +19,13 @@ export class LoginComponent {
|
|
|
19
19
|
password: ['', [Validators.required]],
|
|
20
20
|
remember_me: [false],
|
|
21
21
|
});
|
|
22
|
+
/**
|
|
23
|
+
* @ignore
|
|
24
|
+
*/
|
|
25
|
+
this.formErrors = {
|
|
26
|
+
email: '',
|
|
27
|
+
password: '',
|
|
28
|
+
};
|
|
22
29
|
/**
|
|
23
30
|
* @ignore
|
|
24
31
|
*/
|
|
@@ -49,23 +56,25 @@ export class LoginComponent {
|
|
|
49
56
|
createAccount() {
|
|
50
57
|
this.createAccountEvent.emit();
|
|
51
58
|
}
|
|
52
|
-
|
|
59
|
+
checkErrors(field) {
|
|
53
60
|
if (this.loginForm.controls[field].touched) {
|
|
54
61
|
if (this.loginForm.controls[field].hasError('required')) {
|
|
55
|
-
|
|
62
|
+
this.formErrors[field] = 'This field is required';
|
|
63
|
+
return;
|
|
56
64
|
}
|
|
57
65
|
if (this.loginForm.controls[field].hasError('email')) {
|
|
58
|
-
|
|
66
|
+
this.formErrors[field] = 'Enter a valid email';
|
|
67
|
+
return;
|
|
59
68
|
}
|
|
60
69
|
}
|
|
61
|
-
|
|
70
|
+
this.formErrors[field] = '';
|
|
62
71
|
}
|
|
63
72
|
}
|
|
64
73
|
LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LoginComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
65
|
-
LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: LoginComponent, selector: "ui-login", inputs: { loading: "loading" }, outputs: { submitEvent: "submitEvent", forgotPasswordEvent: "forgotPasswordEvent", createAccountEvent: "createAccountEvent" }, ngImport: i0, template: "<div class=\"form-box\">\n <img class=\"logo\" src=\"/images/testgorilla.svg\">\n <div class=\"title\">Log in to your Career Passport</div>\n <form [formGroup]=\"loginForm\">\n <div class=\"field\">\n <ui-field formControlName=\"email\" [placeholder]=\"'Email address'\" [type]=\"'email'\" [required]=\"true\" [error]=\"
|
|
74
|
+
LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: LoginComponent, selector: "ui-login", inputs: { loading: "loading" }, outputs: { submitEvent: "submitEvent", forgotPasswordEvent: "forgotPasswordEvent", createAccountEvent: "createAccountEvent" }, ngImport: i0, template: "<div class=\"form-box\">\n <img class=\"logo\" src=\"/images/testgorilla.svg\">\n <div class=\"title\">Log in to your Career Passport</div>\n <form [formGroup]=\"loginForm\">\n <div class=\"field\">\n <ui-field formControlName=\"email\" [placeholder]=\"'Email address'\" [type]=\"'email'\" [required]=\"true\" [error]=\"formErrors.email\" (ngModelChange)=\"checkErrors('email')\"></ui-field>\n </div>\n <div class=\"field\">\n <ui-field formControlName=\"password\" [placeholder]=\"'Password'\" [type]=\"'password'\" [required]=\"true\" [error]=\"formErrors.password\" (ngModelChange)=\"checkErrors('password')\"></ui-field>\n </div>\n <div class=\"row space-between\">\n <div>\n <mat-checkbox formControlName=\"remember_me\">Keep me logged in</mat-checkbox>\n </div>\n <div class=\"forgot-password\" (click)=\"forgotPassword()\">Forgot password?</div>\n </div>\n <div class=\"submit-button\">\n <ui-button [label]=\"'Log in'\" [disabled]=\"loginForm.invalid\" [fullWidth]=\"true\" [loading]=\"loading\" (onClickEvent)=\"submit()\"></ui-button>\n </div>\n <div>\n Don't have an account? <span class=\"create-account\" (click)=\"createAccount()\">Create one here</span>\n </div>\n </form>\n</div>\n", styles: [".form-box{width:672px;padding:64px;background:#ffffff;box-shadow:0 8px 16px #0000001a;border-radius:8px;margin:auto;color:#000}.form-box .logo{width:180px;position:relative;right:9px;margin-bottom:16px}.form-box .title{font-weight:700;font-size:22px;margin-bottom:32px}.form-box .field{width:100%}.form-box .submit-button{margin:24px 0}.form-box mat-checkbox{font-weight:400}.form-box .forgot-password,.form-box .create-account{font-weight:600;font-size:15px;cursor:pointer}.form-box .forgot-password:hover,.form-box .create-account:hover{text-decoration:underline}.form-box .create-account{color:#46a997}.row{display:flex;flex-direction:row}.row.space-between{justify-content:space-between}\n"], components: [{ type: i2.FieldComponent, selector: "ui-field", inputs: ["label", "preffixIcon", "suffixIcon", "required", "hint", "error", "placeholder", "type"] }, { type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i4.ButtonComponent, selector: "ui-button", inputs: ["color", "label", "iconPosition", "iconName", "disabled", "loading", "fullWidth"], outputs: ["onClickEvent"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
66
75
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LoginComponent, decorators: [{
|
|
67
76
|
type: Component,
|
|
68
|
-
args: [{ selector: 'ui-login', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"form-box\">\n <img class=\"logo\" src=\"/images/testgorilla.svg\">\n <div class=\"title\">Log in to your Career Passport</div>\n <form [formGroup]=\"loginForm\">\n <div class=\"field\">\n <ui-field formControlName=\"email\" [placeholder]=\"'Email address'\" [type]=\"'email'\" [required]=\"true\" [error]=\"
|
|
77
|
+
args: [{ selector: 'ui-login', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"form-box\">\n <img class=\"logo\" src=\"/images/testgorilla.svg\">\n <div class=\"title\">Log in to your Career Passport</div>\n <form [formGroup]=\"loginForm\">\n <div class=\"field\">\n <ui-field formControlName=\"email\" [placeholder]=\"'Email address'\" [type]=\"'email'\" [required]=\"true\" [error]=\"formErrors.email\" (ngModelChange)=\"checkErrors('email')\"></ui-field>\n </div>\n <div class=\"field\">\n <ui-field formControlName=\"password\" [placeholder]=\"'Password'\" [type]=\"'password'\" [required]=\"true\" [error]=\"formErrors.password\" (ngModelChange)=\"checkErrors('password')\"></ui-field>\n </div>\n <div class=\"row space-between\">\n <div>\n <mat-checkbox formControlName=\"remember_me\">Keep me logged in</mat-checkbox>\n </div>\n <div class=\"forgot-password\" (click)=\"forgotPassword()\">Forgot password?</div>\n </div>\n <div class=\"submit-button\">\n <ui-button [label]=\"'Log in'\" [disabled]=\"loginForm.invalid\" [fullWidth]=\"true\" [loading]=\"loading\" (onClickEvent)=\"submit()\"></ui-button>\n </div>\n <div>\n Don't have an account? <span class=\"create-account\" (click)=\"createAccount()\">Create one here</span>\n </div>\n </form>\n</div>\n", styles: [".form-box{width:672px;padding:64px;background:#ffffff;box-shadow:0 8px 16px #0000001a;border-radius:8px;margin:auto;color:#000}.form-box .logo{width:180px;position:relative;right:9px;margin-bottom:16px}.form-box .title{font-weight:700;font-size:22px;margin-bottom:32px}.form-box .field{width:100%}.form-box .submit-button{margin:24px 0}.form-box mat-checkbox{font-weight:400}.form-box .forgot-password,.form-box .create-account{font-weight:600;font-size:15px;cursor:pointer}.form-box .forgot-password:hover,.form-box .create-account:hover{text-decoration:underline}.form-box .create-account{color:#46a997}.row{display:flex;flex-direction:row}.row.space-between{justify-content:space-between}\n"] }]
|
|
69
78
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { loading: [{
|
|
70
79
|
type: Input
|
|
71
80
|
}], submitEvent: [{
|
|
@@ -75,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
75
84
|
}], createAccountEvent: [{
|
|
76
85
|
type: Output
|
|
77
86
|
}] } });
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbG9naW4vbG9naW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBVXpELE1BQU0sT0FBTyxjQUFjO0lBaUR6QixZQUFvQixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQWhEbkMsbUhBQW1IO1FBQ25ILHdEQUF3RDtRQUN4RCx3REFBd0Q7UUFFeEQ7O1dBRUc7UUFDSCxjQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDeEIsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQztTQUNyQixDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNILGVBQVUsR0FBRztZQUNYLEtBQUssRUFBRSxFQUFFO1lBQ1QsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO1FBU0Y7O1dBRUc7UUFDTyxnQkFBVyxHQUFtQyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUU3Rjs7V0FFRztRQUNPLHdCQUFtQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTdFOztXQUVHO1FBQ08sdUJBQWtCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFPdEMsQ0FBQztJQUx2Qzs7T0FFRztJQUNILFFBQVEsS0FBVSxDQUFDO0lBSW5CLE1BQU07UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSztZQUM1QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSztZQUMvQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSztTQUN0RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDMUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBcUMsQ0FBQyxHQUFHLHdCQUF3QixDQUFDO2dCQUNsRixPQUFPO2FBQ1I7WUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFxQyxDQUFDLEdBQUcscUJBQXFCLENBQUM7Z0JBQy9FLE9BQU87YUFDUjtTQUNGO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFxQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzlELENBQUM7OzRHQWpGVSxjQUFjO2dHQUFkLGNBQWMsK01DbkIzQiwydkNBd0JBOzRGRExhLGNBQWM7a0JBUDFCLFNBQVM7K0JBQ0UsVUFBVSxtQkFHSCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO2tHQTZCNUIsT0FBTztzQkFBZixLQUFLO2dCQUtJLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUtHLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvZ2luQ3JlZGVudGlhbHMgfSBmcm9tICcuL2xvZ2luLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktbG9naW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb2dpbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyBUT0RPOiBTb21lIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgYXJlIGlnbm9yZWQgb24gcHVycG9zZSBiZWNhdXNlIG9mIGEgY3VycmVudCBpc3N1ZSB3aXRoIGNvbXBvZG9jIGFuZCBhbmd1bGFyIDEzXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9yeWJvb2tqcy9zdG9yeWJvb2svaXNzdWVzLzE2ODY1XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9yeWJvb2tqcy9zdG9yeWJvb2svaXNzdWVzLzE3MDA0XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGxvZ2luRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIGVtYWlsOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXG4gICAgcGFzc3dvcmQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICByZW1lbWJlcl9tZTogW2ZhbHNlXSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGZvcm1FcnJvcnMgPSB7XG4gICAgZW1haWw6ICcnLFxuICAgIHBhc3N3b3JkOiAnJyxcbiAgfTtcblxuICAvKipcbiAgICogSW5kaWNhdG9yIGlmIHRoZSBmb3JtIGlzIGxvYWRpbmdcbiAgICpcbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQE91dHB1dCgpIHN1Ym1pdEV2ZW50OiBFdmVudEVtaXR0ZXI8TG9naW5DcmVkZW50aWFscz4gPSBuZXcgRXZlbnRFbWl0dGVyPExvZ2luQ3JlZGVudGlhbHM+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKSBmb3Jnb3RQYXNzd29yZEV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKSBjcmVhdGVBY2NvdW50RXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7fVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB0aGlzLnN1Ym1pdEV2ZW50LmVtaXQoe1xuICAgICAgdXNlcm5hbWU6IHRoaXMubG9naW5Gb3JtLmdldCgnZW1haWwnKT8udmFsdWUsXG4gICAgICBwYXNzd29yZDogdGhpcy5sb2dpbkZvcm0uZ2V0KCdwYXNzd29yZCcpPy52YWx1ZSxcbiAgICAgIHJlbWVtYmVyX21lOiB0aGlzLmxvZ2luRm9ybS5nZXQoJ3JlbWVtYmVyX21lJyk/LnZhbHVlLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yZ290UGFzc3dvcmQoKSB7XG4gICAgdGhpcy5mb3Jnb3RQYXNzd29yZEV2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIGNyZWF0ZUFjY291bnQoKSB7XG4gICAgdGhpcy5jcmVhdGVBY2NvdW50RXZlbnQuZW1pdCgpO1xuICB9XG5cbiAgY2hlY2tFcnJvcnMoZmllbGQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmxvZ2luRm9ybS5jb250cm9sc1tmaWVsZF0udG91Y2hlZCkge1xuICAgICAgaWYgKHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzW2ZpZWxkXS5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICB0aGlzLmZvcm1FcnJvcnNbZmllbGQgYXMga2V5b2YgdHlwZW9mIHRoaXMuZm9ybUVycm9yc10gPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubG9naW5Gb3JtLmNvbnRyb2xzW2ZpZWxkXS5oYXNFcnJvcignZW1haWwnKSkge1xuICAgICAgICB0aGlzLmZvcm1FcnJvcnNbZmllbGQgYXMga2V5b2YgdHlwZW9mIHRoaXMuZm9ybUVycm9yc10gPSAnRW50ZXIgYSB2YWxpZCBlbWFpbCc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZvcm1FcnJvcnNbZmllbGQgYXMga2V5b2YgdHlwZW9mIHRoaXMuZm9ybUVycm9yc10gPSAnJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tYm94XCI+XG4gIDxpbWcgY2xhc3M9XCJsb2dvXCIgc3JjPVwiL2ltYWdlcy90ZXN0Z29yaWxsYS5zdmdcIj5cbiAgPGRpdiBjbGFzcz1cInRpdGxlXCI+TG9nIGluIHRvIHlvdXIgQ2FyZWVyIFBhc3Nwb3J0PC9kaXY+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwibG9naW5Gb3JtXCI+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XG4gICAgICA8dWktZmllbGQgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiBbcGxhY2Vob2xkZXJdPVwiJ0VtYWlsIGFkZHJlc3MnXCIgW3R5cGVdPVwiJ2VtYWlsJ1wiIFtyZXF1aXJlZF09XCJ0cnVlXCIgW2Vycm9yXT1cImZvcm1FcnJvcnMuZW1haWxcIiAobmdNb2RlbENoYW5nZSk9XCJjaGVja0Vycm9ycygnZW1haWwnKVwiPjwvdWktZmllbGQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XG4gICAgICA8dWktZmllbGQgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIiBbcGxhY2Vob2xkZXJdPVwiJ1Bhc3N3b3JkJ1wiIFt0eXBlXT1cIidwYXNzd29yZCdcIiBbcmVxdWlyZWRdPVwidHJ1ZVwiIFtlcnJvcl09XCJmb3JtRXJyb3JzLnBhc3N3b3JkXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hlY2tFcnJvcnMoJ3Bhc3N3b3JkJylcIj48L3VpLWZpZWxkPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgc3BhY2UtYmV0d2VlblwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJyZW1lbWJlcl9tZVwiPktlZXAgbWUgbG9nZ2VkIGluPC9tYXQtY2hlY2tib3g+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3Jnb3QtcGFzc3dvcmRcIiAoY2xpY2spPVwiZm9yZ290UGFzc3dvcmQoKVwiPkZvcmdvdCBwYXNzd29yZD88L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic3VibWl0LWJ1dHRvblwiPlxuICAgICAgPHVpLWJ1dHRvbiBbbGFiZWxdPVwiJ0xvZyBpbidcIiBbZGlzYWJsZWRdPVwibG9naW5Gb3JtLmludmFsaWRcIiBbZnVsbFdpZHRoXT1cInRydWVcIiBbbG9hZGluZ109XCJsb2FkaW5nXCIgKG9uQ2xpY2tFdmVudCk9XCJzdWJtaXQoKVwiPjwvdWktYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICBEb24ndCBoYXZlIGFuIGFjY291bnQ/IDxzcGFuIGNsYXNzPVwiY3JlYXRlLWFjY291bnRcIiAoY2xpY2spPVwiY3JlYXRlQWNjb3VudCgpXCI+Q3JlYXRlIG9uZSBoZXJlPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/material/toolbar";
|
|
4
|
-
import * as i2 from "@angular/
|
|
5
|
-
import * as i3 from "@angular/
|
|
4
|
+
import * as i2 from "@angular/material/menu";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
import * as i4 from "@angular/material/core";
|
|
6
7
|
export class NavbarComponent {
|
|
7
8
|
constructor() {
|
|
8
9
|
// TODO: Some properties and methods are ignored on purpose because of a current issue with compodoc and angular 13
|
|
@@ -34,16 +35,23 @@ export class NavbarComponent {
|
|
|
34
35
|
* @ignore
|
|
35
36
|
*/
|
|
36
37
|
this.navigateEvent = new EventEmitter();
|
|
38
|
+
/**
|
|
39
|
+
* @ignore
|
|
40
|
+
*/
|
|
41
|
+
this.logoutEvent = new EventEmitter();
|
|
37
42
|
}
|
|
38
43
|
navigate(routeId) {
|
|
39
44
|
this.navigateEvent.emit(`/${routeId}`);
|
|
40
45
|
}
|
|
46
|
+
logout() {
|
|
47
|
+
this.logoutEvent.emit();
|
|
48
|
+
}
|
|
41
49
|
}
|
|
42
50
|
NavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
-
NavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NavbarComponent, selector: "ui-navbar", inputs: { routes: "routes", activedRoute: "activedRoute", userInitials: "userInitials" }, outputs: { navigateEvent: "navigateEvent" }, ngImport: i0, template: "<mat-toolbar>\n <div class=\"custom-toolbar row\">\n <div class=\"init-gradient\"></div>\n <div class=\"content row\">\n <img class=\"logo\" src=\"/images/testgorilla.svg\" (click)=\"navigate('')\">\n <div class=\"navigation row\">\n <a *ngFor=\"let route of routes\" (click)=\"navigate(route.id)\" [ngClass]=\"{'active': activedRoute === route.id}\">\n <span>{{ route.title }}</span>\n </a>\n </div>\n <div class=\"actions\">\n <!-- <button mat-icon-button>\n <mat-icon>help_outline</mat-icon>\n </button> -->\n <div class=\"profile-circle\" matRipple [matRippleUnbounded]=\"true\" [matRippleCentered]=\"true\">\n {{ userInitials }}\n </div>\n </div>\n </div>\n <div class=\"final-gradient\"></div>\n </div>\n</mat-toolbar>\n", styles: [".mat-toolbar{height:80px!important}.mat-toolbar .custom-toolbar{width:100%;height:100%}.mat-toolbar .custom-toolbar .init-gradient{width:160px;height:100%;background:linear-gradient(270deg,rgb(233,240,241) 0%,rgba(233,240,241,0) 100%)}.mat-toolbar .custom-toolbar .content{background-color:#e9f0f1;width:100%}.mat-toolbar .custom-toolbar .content .logo{width:140px;margin-left:28px;cursor:pointer}.mat-toolbar .custom-toolbar .content .navigation{height:100%;margin-left:70px}.mat-toolbar .custom-toolbar .content .navigation a{display:flex;align-items:center;height:100%;width:161px;background:#fff;cursor:pointer}.mat-toolbar .custom-toolbar .content .navigation a.active{box-shadow:inset 0 5px 0 -1px #46a997}.mat-toolbar .custom-toolbar .content .navigation a span{width:100%;text-align:center;font-weight:400;font-size:16px}.mat-toolbar .custom-toolbar .content .actions{width:100%;display:flex;align-items:center;justify-content:flex-end}.mat-toolbar .custom-toolbar .content .actions .profile-circle{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:32px;height:32px;background:#D4E0E4;border-radius:128px;font-weight:600;font-size:14px;text-align:center;margin-left:32px}.mat-toolbar .custom-toolbar .final-gradient{width:160px;height:100%;background:linear-gradient(90deg,rgb(233,240,241) 0%,rgba(233,240,241,0) 100%)}.row{display:flex;flex-direction:row}\n"], components: [{ type: i1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }], directives: [{ type:
|
|
51
|
+
NavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NavbarComponent, selector: "ui-navbar", inputs: { routes: "routes", activedRoute: "activedRoute", userInitials: "userInitials" }, outputs: { navigateEvent: "navigateEvent", logoutEvent: "logoutEvent" }, ngImport: i0, template: "<mat-toolbar>\n <div class=\"custom-toolbar row\">\n <div class=\"init-gradient\"></div>\n <div class=\"content row\">\n <img class=\"logo\" src=\"/images/testgorilla.svg\" (click)=\"navigate('')\">\n <div class=\"navigation row\">\n <a *ngFor=\"let route of routes\" (click)=\"navigate(route.id)\" [ngClass]=\"{'active': activedRoute === route.id}\">\n <span>{{ route.title }}</span>\n </a>\n </div>\n <div class=\"actions\">\n <!-- <button mat-icon-button>\n <mat-icon>help_outline</mat-icon>\n </button> -->\n <div class=\"profile-circle\" matRipple [matRippleUnbounded]=\"true\" [matRippleCentered]=\"true\" [matMenuTriggerFor]=\"menu\">\n {{ userInitials }}\n </div>\n </div>\n </div>\n <div class=\"final-gradient\"></div>\n </div>\n</mat-toolbar>\n\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"logout()\">Sign out</button>\n</mat-menu>", styles: [".mat-toolbar{height:80px!important}.mat-toolbar .custom-toolbar{width:100%;height:100%}.mat-toolbar .custom-toolbar .init-gradient{width:160px;height:100%;background:linear-gradient(270deg,rgb(233,240,241) 0%,rgba(233,240,241,0) 100%)}.mat-toolbar .custom-toolbar .content{background-color:#e9f0f1;width:100%}.mat-toolbar .custom-toolbar .content .logo{width:140px;margin-left:28px;cursor:pointer}.mat-toolbar .custom-toolbar .content .navigation{height:100%;margin-left:70px}.mat-toolbar .custom-toolbar .content .navigation a{display:flex;align-items:center;height:100%;width:161px;background:#fff;cursor:pointer}.mat-toolbar .custom-toolbar .content .navigation a.active{box-shadow:inset 0 5px 0 -1px #46a997}.mat-toolbar .custom-toolbar .content .navigation a span{width:100%;text-align:center;font-weight:400;font-size:16px}.mat-toolbar .custom-toolbar .content .actions{width:100%;display:flex;align-items:center;justify-content:flex-end}.mat-toolbar .custom-toolbar .content .actions .profile-circle{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:32px;height:32px;background:#D4E0E4;border-radius:128px;font-weight:600;font-size:14px;text-align:center;margin-left:32px}.mat-toolbar .custom-toolbar .final-gradient{width:160px;height:100%;background:linear-gradient(90deg,rgb(233,240,241) 0%,rgba(233,240,241,0) 100%)}.row{display:flex;flex-direction:row}\n"], components: [{ type: i1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { type: i2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { type: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
44
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavbarComponent, decorators: [{
|
|
45
53
|
type: Component,
|
|
46
|
-
args: [{ selector: 'ui-navbar', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<mat-toolbar>\n <div class=\"custom-toolbar row\">\n <div class=\"init-gradient\"></div>\n <div class=\"content row\">\n <img class=\"logo\" src=\"/images/testgorilla.svg\" (click)=\"navigate('')\">\n <div class=\"navigation row\">\n <a *ngFor=\"let route of routes\" (click)=\"navigate(route.id)\" [ngClass]=\"{'active': activedRoute === route.id}\">\n <span>{{ route.title }}</span>\n </a>\n </div>\n <div class=\"actions\">\n <!-- <button mat-icon-button>\n <mat-icon>help_outline</mat-icon>\n </button> -->\n <div class=\"profile-circle\" matRipple [matRippleUnbounded]=\"true\" [matRippleCentered]=\"true\">\n {{ userInitials }}\n </div>\n </div>\n </div>\n <div class=\"final-gradient\"></div>\n </div>\n</mat-toolbar>\n", styles: [".mat-toolbar{height:80px!important}.mat-toolbar .custom-toolbar{width:100%;height:100%}.mat-toolbar .custom-toolbar .init-gradient{width:160px;height:100%;background:linear-gradient(270deg,rgb(233,240,241) 0%,rgba(233,240,241,0) 100%)}.mat-toolbar .custom-toolbar .content{background-color:#e9f0f1;width:100%}.mat-toolbar .custom-toolbar .content .logo{width:140px;margin-left:28px;cursor:pointer}.mat-toolbar .custom-toolbar .content .navigation{height:100%;margin-left:70px}.mat-toolbar .custom-toolbar .content .navigation a{display:flex;align-items:center;height:100%;width:161px;background:#fff;cursor:pointer}.mat-toolbar .custom-toolbar .content .navigation a.active{box-shadow:inset 0 5px 0 -1px #46a997}.mat-toolbar .custom-toolbar .content .navigation a span{width:100%;text-align:center;font-weight:400;font-size:16px}.mat-toolbar .custom-toolbar .content .actions{width:100%;display:flex;align-items:center;justify-content:flex-end}.mat-toolbar .custom-toolbar .content .actions .profile-circle{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:32px;height:32px;background:#D4E0E4;border-radius:128px;font-weight:600;font-size:14px;text-align:center;margin-left:32px}.mat-toolbar .custom-toolbar .final-gradient{width:160px;height:100%;background:linear-gradient(90deg,rgb(233,240,241) 0%,rgba(233,240,241,0) 100%)}.row{display:flex;flex-direction:row}\n"] }]
|
|
54
|
+
args: [{ selector: 'ui-navbar', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<mat-toolbar>\n <div class=\"custom-toolbar row\">\n <div class=\"init-gradient\"></div>\n <div class=\"content row\">\n <img class=\"logo\" src=\"/images/testgorilla.svg\" (click)=\"navigate('')\">\n <div class=\"navigation row\">\n <a *ngFor=\"let route of routes\" (click)=\"navigate(route.id)\" [ngClass]=\"{'active': activedRoute === route.id}\">\n <span>{{ route.title }}</span>\n </a>\n </div>\n <div class=\"actions\">\n <!-- <button mat-icon-button>\n <mat-icon>help_outline</mat-icon>\n </button> -->\n <div class=\"profile-circle\" matRipple [matRippleUnbounded]=\"true\" [matRippleCentered]=\"true\" [matMenuTriggerFor]=\"menu\">\n {{ userInitials }}\n </div>\n </div>\n </div>\n <div class=\"final-gradient\"></div>\n </div>\n</mat-toolbar>\n\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"logout()\">Sign out</button>\n</mat-menu>", styles: [".mat-toolbar{height:80px!important}.mat-toolbar .custom-toolbar{width:100%;height:100%}.mat-toolbar .custom-toolbar .init-gradient{width:160px;height:100%;background:linear-gradient(270deg,rgb(233,240,241) 0%,rgba(233,240,241,0) 100%)}.mat-toolbar .custom-toolbar .content{background-color:#e9f0f1;width:100%}.mat-toolbar .custom-toolbar .content .logo{width:140px;margin-left:28px;cursor:pointer}.mat-toolbar .custom-toolbar .content .navigation{height:100%;margin-left:70px}.mat-toolbar .custom-toolbar .content .navigation a{display:flex;align-items:center;height:100%;width:161px;background:#fff;cursor:pointer}.mat-toolbar .custom-toolbar .content .navigation a.active{box-shadow:inset 0 5px 0 -1px #46a997}.mat-toolbar .custom-toolbar .content .navigation a span{width:100%;text-align:center;font-weight:400;font-size:16px}.mat-toolbar .custom-toolbar .content .actions{width:100%;display:flex;align-items:center;justify-content:flex-end}.mat-toolbar .custom-toolbar .content .actions .profile-circle{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:32px;height:32px;background:#D4E0E4;border-radius:128px;font-weight:600;font-size:14px;text-align:center;margin-left:32px}.mat-toolbar .custom-toolbar .final-gradient{width:160px;height:100%;background:linear-gradient(90deg,rgb(233,240,241) 0%,rgba(233,240,241,0) 100%)}.row{display:flex;flex-direction:row}\n"] }]
|
|
47
55
|
}], ctorParameters: function () { return []; }, propDecorators: { routes: [{
|
|
48
56
|
type: Input
|
|
49
57
|
}], activedRoute: [{
|
|
@@ -52,5 +60,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
52
60
|
type: Input
|
|
53
61
|
}], navigateEvent: [{
|
|
54
62
|
type: Output
|
|
63
|
+
}], logoutEvent: [{
|
|
64
|
+
type: Output
|
|
55
65
|
}] } });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL25hdmJhci9uYXZiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbmF2YmFyL25hdmJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVbkgsTUFBTSxPQUFPLGVBQWU7SUF3QzFCO1FBdkNBLG1IQUFtSDtRQUNuSCx3REFBd0Q7UUFDeEQsd0RBQXdEO1FBRXhEOzs7Ozs7V0FNRztRQUNNLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFFL0I7Ozs7O1dBS0c7UUFDTSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUUzQjs7Ozs7V0FLRztRQUNNLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRTNCOztXQUVHO1FBQ08sa0JBQWEsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUzRTs7V0FFRztRQUNPLGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFFdEQsQ0FBQztJQUVoQixRQUFRLENBQUMsT0FBZTtRQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7OzZHQWhEVSxlQUFlO2lHQUFmLGVBQWUsb05DVjVCLDhrQ0F5Qlc7NEZEZkUsZUFBZTtrQkFQM0IsU0FBUzsrQkFDRSxXQUFXLG1CQUdKLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7MEVBYzVCLE1BQU07c0JBQWQsS0FBSztnQkFRRyxZQUFZO3NCQUFwQixLQUFLO2dCQVFHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFLRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVJvdXRlIH0gZnJvbSAnLi9uYXZiYXIubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS1uYXZiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbmF2YmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmF2YmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZiYXJDb21wb25lbnQge1xuICAvLyBUT0RPOiBTb21lIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgYXJlIGlnbm9yZWQgb24gcHVycG9zZSBiZWNhdXNlIG9mIGEgY3VycmVudCBpc3N1ZSB3aXRoIGNvbXBvZG9jIGFuZCBhbmd1bGFyIDEzXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9yeWJvb2tqcy9zdG9yeWJvb2svaXNzdWVzLzE2ODY1XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9yeWJvb2tqcy9zdG9yeWJvb2svaXNzdWVzLzE3MDA0XG5cbiAgLyoqXG4gICAqIFJvdXRlcyBvYmplY3RcbiAgICpcbiAgICogQHR5cGUge0lSb3V0ZX1cbiAgICogQG1lbWJlcm9mIE5hdmJhckNvbXBvbmVudFxuICAgKiBAaWdub3JlXG4gICAqL1xuICBASW5wdXQoKSByb3V0ZXM6IElSb3V0ZVtdID0gW107XG5cbiAgLyoqXG4gICAqIEFjdGl2ZWQgcm91dGUgaWRcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIE5hdmJhckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYWN0aXZlZFJvdXRlID0gJyc7XG5cbiAgLyoqXG4gICAqIFVzZXIgZmlyc3QgbmFtZSBhbmQgbGFzdCBuYW1lIGluaXRpYWxzXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBOYXZiYXJDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHVzZXJJbml0aWFscyA9ICcnO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAT3V0cHV0KCkgbmF2aWdhdGVFdmVudDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQE91dHB1dCgpIGxvZ291dEV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5hdmlnYXRlKHJvdXRlSWQ6IHN0cmluZykge1xuICAgIHRoaXMubmF2aWdhdGVFdmVudC5lbWl0KGAvJHtyb3V0ZUlkfWApO1xuICB9XG5cbiAgbG9nb3V0KCk6IHZvaWQge1xuICAgIHRoaXMubG9nb3V0RXZlbnQuZW1pdCgpO1xuICB9XG59XG4iLCI8bWF0LXRvb2xiYXI+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS10b29sYmFyIHJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5pdC1ncmFkaWVudFwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudCByb3dcIj5cbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJsb2dvXCIgc3JjPVwiL2ltYWdlcy90ZXN0Z29yaWxsYS5zdmdcIiAoY2xpY2spPVwibmF2aWdhdGUoJycpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2aWdhdGlvbiByb3dcIj5cbiAgICAgICAgICAgICAgICA8YSAqbmdGb3I9XCJsZXQgcm91dGUgb2Ygcm91dGVzXCIgKGNsaWNrKT1cIm5hdmlnYXRlKHJvdXRlLmlkKVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogYWN0aXZlZFJvdXRlID09PSByb3V0ZS5pZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcm91dGUudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5oZWxwX291dGxpbmU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1jaXJjbGVcIiBtYXRSaXBwbGUgW21hdFJpcHBsZVVuYm91bmRlZF09XCJ0cnVlXCIgW21hdFJpcHBsZUNlbnRlcmVkXT1cInRydWVcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB1c2VySW5pdGlhbHMgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbmFsLWdyYWRpZW50XCI+PC9kaXY+XG4gICAgPC9kaXY+XG48L21hdC10b29sYmFyPlxuXG48bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJsb2dvdXQoKVwiPlNpZ24gb3V0PC9idXR0b24+XG48L21hdC1tZW51PiJdfQ==
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
|
-
import { NavbarComponent } from './navbar.component';
|
|
4
|
-
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
5
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
6
3
|
import { MatButtonModule } from '@angular/material/button';
|
|
7
4
|
import { MatRippleModule } from '@angular/material/core';
|
|
5
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
6
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
7
|
+
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
8
|
+
import { NavbarComponent } from './navbar.component';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
export class NavbarComponentModule {
|
|
10
11
|
}
|
|
11
12
|
NavbarComponentModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavbarComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
-
NavbarComponentModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavbarComponentModule, declarations: [NavbarComponent], imports: [CommonModule, MatToolbarModule, MatIconModule, MatButtonModule, MatRippleModule], exports: [NavbarComponent] });
|
|
13
|
-
NavbarComponentModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavbarComponentModule, providers: [], imports: [[CommonModule, MatToolbarModule, MatIconModule, MatButtonModule, MatRippleModule]] });
|
|
13
|
+
NavbarComponentModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavbarComponentModule, declarations: [NavbarComponent], imports: [CommonModule, MatToolbarModule, MatIconModule, MatButtonModule, MatRippleModule, MatMenuModule], exports: [NavbarComponent] });
|
|
14
|
+
NavbarComponentModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavbarComponentModule, providers: [], imports: [[CommonModule, MatToolbarModule, MatIconModule, MatButtonModule, MatRippleModule, MatMenuModule]] });
|
|
14
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NavbarComponentModule, decorators: [{
|
|
15
16
|
type: NgModule,
|
|
16
17
|
args: [{
|
|
17
18
|
declarations: [NavbarComponent],
|
|
18
|
-
imports: [CommonModule, MatToolbarModule, MatIconModule, MatButtonModule, MatRippleModule],
|
|
19
|
+
imports: [CommonModule, MatToolbarModule, MatIconModule, MatButtonModule, MatRippleModule, MatMenuModule],
|
|
19
20
|
exports: [NavbarComponent],
|
|
20
21
|
providers: [],
|
|
21
22
|
}]
|
|
22
23
|
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFRckQsTUFBTSxPQUFPLHFCQUFxQjs7bUhBQXJCLHFCQUFxQjtvSEFBckIscUJBQXFCLGlCQUxqQixlQUFlLGFBQ3BCLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxhQUFhLGFBQzlGLGVBQWU7b0hBR2QscUJBQXFCLGFBRnJCLEVBQUUsWUFGSixDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUM7NEZBSTlGLHFCQUFxQjtrQkFOakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQy9CLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUM7b0JBQ3pHLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDMUIsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRSaXBwbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcbmltcG9ydCB7IE5hdmJhckNvbXBvbmVudCB9IGZyb20gJy4vbmF2YmFyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW05hdmJhckNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFRvb2xiYXJNb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0UmlwcGxlTW9kdWxlLCBNYXRNZW51TW9kdWxlXSxcbiAgZXhwb3J0czogW05hdmJhckNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW10sXG59KVxuZXhwb3J0IGNsYXNzIE5hdmJhckNvbXBvbmVudE1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/forms";
|
|
5
|
+
import * as i2 from "../field/field.component";
|
|
6
|
+
import * as i3 from "@angular-material-extensions/password-strength";
|
|
7
|
+
import * as i4 from "@angular/material/checkbox";
|
|
8
|
+
import * as i5 from "../button/button.component";
|
|
9
|
+
export class RegisterComponent {
|
|
10
|
+
constructor(fb) {
|
|
11
|
+
this.fb = fb;
|
|
12
|
+
// TODO: Some properties and methods are ignored on purpose because of a current issue with compodoc and angular 13
|
|
13
|
+
// https://github.com/storybookjs/storybook/issues/16865
|
|
14
|
+
// https://github.com/storybookjs/storybook/issues/17004
|
|
15
|
+
/**
|
|
16
|
+
* @ignore
|
|
17
|
+
*/
|
|
18
|
+
this.registerForm = this.fb.group({
|
|
19
|
+
username: ['', [Validators.required, Validators.email]],
|
|
20
|
+
password: [
|
|
21
|
+
'',
|
|
22
|
+
[
|
|
23
|
+
Validators.required,
|
|
24
|
+
Validators.minLength(12),
|
|
25
|
+
Validators.pattern(/^(?=\D*\d)(?=[^a-z]*[a-z])(?=.*[#$%&'()*+,-./:;<=>?@])(?=[^A-Z]*[A-Z]).{12,}$/),
|
|
26
|
+
],
|
|
27
|
+
],
|
|
28
|
+
agree_terms_and_conditions: [false, [Validators.requiredTrue]],
|
|
29
|
+
});
|
|
30
|
+
/**
|
|
31
|
+
* @ignore
|
|
32
|
+
*/
|
|
33
|
+
this.formErrors = {
|
|
34
|
+
username: [''],
|
|
35
|
+
password: [''],
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* @ignore
|
|
39
|
+
*/
|
|
40
|
+
this.submitEvent = new EventEmitter();
|
|
41
|
+
/**
|
|
42
|
+
* @ignore
|
|
43
|
+
*/
|
|
44
|
+
this.loginEvent = new EventEmitter();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @ignore
|
|
48
|
+
*/
|
|
49
|
+
ngOnInit() { }
|
|
50
|
+
submit() {
|
|
51
|
+
this.submitEvent.emit({
|
|
52
|
+
username: this.registerForm.get('username')?.value,
|
|
53
|
+
password: this.registerForm.get('password')?.value,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
login() {
|
|
57
|
+
this.loginEvent.emit();
|
|
58
|
+
}
|
|
59
|
+
checkErrors(field) {
|
|
60
|
+
if (this.registerForm.controls[field].touched) {
|
|
61
|
+
if (this.registerForm.controls[field].hasError('required')) {
|
|
62
|
+
this.formErrors[field][0] = 'This field is required';
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (this.registerForm.controls[field].hasError('email')) {
|
|
66
|
+
this.formErrors[field][0] = 'Enter a valid email';
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (field === 'password' && this.registerForm.controls[field].hasError('pattern')) {
|
|
70
|
+
this.formErrors.password[0] = 'Password is invalid';
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
this.formErrors[field][0] = '';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
RegisterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RegisterComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
78
|
+
RegisterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: RegisterComponent, selector: "ui-register", inputs: { formErrors: "formErrors", loading: "loading" }, outputs: { submitEvent: "submitEvent", loginEvent: "loginEvent" }, ngImport: i0, template: "<div class=\"form-box\">\n <img class=\"logo\" src=\"/images/testgorilla.svg\">\n <div class=\"title\">Create your Career Passport</div>\n <div class=\"subtitle\">Enter the email address to which you received an assessment invite.</div>\n <form [formGroup]=\"registerForm\">\n <div class=\"field\">\n <ui-field formControlName=\"username\" [placeholder]=\"'Email'\" [type]=\"'email'\" [required]=\"true\" [error]=\"formErrors.username[0]\" (ngModelChange)=\"checkErrors('username')\"></ui-field>\n </div>\n <div class=\"field\">\n <ui-field formControlName=\"password\" [placeholder]=\"'Password'\" [type]=\"'password'\" [required]=\"true\" [error]=\"formErrors.password[0]\" (ngModelChange)=\"checkErrors('password')\"></ui-field>\n <mat-password-strength\n [min]=\"12\"\n #passwordComponentWithValidation\n [password]=\"registerForm.controls['password'].value\"\n >\n </mat-password-strength>\n <mat-password-strength-info [passwordComponent]=\"passwordComponentWithValidation\">\n </mat-password-strength-info>\n </div>\n <div>\n <mat-checkbox formControlName=\"agree_terms_and_conditions\">Agree to Terms & Conditions</mat-checkbox>\n </div>\n <div class=\"submit-button\">\n <ui-button [label]=\"'Next'\" [disabled]=\"registerForm.invalid\" [fullWidth]=\"true\" [loading]=\"loading\" (onClickEvent)=\"submit()\"></ui-button>\n </div>\n <div>\n Already have a Career Passport? <span class=\"log-in\" (click)=\"login()\">Log in here</span>\n </div>\n </form>\n</div>\n", styles: [".form-box{width:672px;padding:64px;background:#ffffff;box-shadow:0 8px 16px #0000001a;border-radius:8px;margin:auto;color:#000}.form-box .logo{width:180px;position:relative;right:9px;margin-bottom:16px}.form-box .title{font-weight:700;font-size:22px}.form-box .subtitle{margin:16px 0}.form-box .field{width:100%}.form-box .submit-button{margin:24px 0}.form-box mat-checkbox{font-weight:400}.form-box .log-in{font-weight:600;font-size:15px;cursor:pointer;color:#46a997}.form-box .log-in:hover{text-decoration:underline}.row{display:flex;flex-direction:row}.row.space-between{justify-content:space-between}\n"], components: [{ type: i2.FieldComponent, selector: "ui-field", inputs: ["label", "preffixIcon", "suffixIcon", "required", "hint", "error", "placeholder", "type"] }, { type: i3.MatPasswordStrengthComponent, selector: "mat-password-strength", inputs: ["password", "externalError", "enableLengthRule", "enableLowerCaseLetterRule", "enableUpperCaseLetterRule", "enableDigitRule", "enableSpecialCharRule", "min", "max", "customValidator", "warnThreshold", "accentThreshold"], outputs: ["onStrengthChanged"], exportAs: ["matPasswordStrength"] }, { type: i3.MatPasswordStrengthInfoComponent, selector: "mat-password-strength-info", inputs: ["passwordComponent", "enableScoreInfo", "lowerCaseCriteriaMsg", "upperCaseCriteriaMsg", "digitsCriteriaMsg", "specialCharsCriteriaMsg", "customCharsCriteriaMsg", "minCharsCriteriaMsg", "matIconDone", "matIconError"], exportAs: ["matPasswordStrengthInfo"] }, { type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i5.ButtonComponent, selector: "ui-button", inputs: ["color", "label", "iconPosition", "iconName", "disabled", "loading", "fullWidth"], outputs: ["onClickEvent"] }], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RegisterComponent, decorators: [{
|
|
80
|
+
type: Component,
|
|
81
|
+
args: [{ selector: 'ui-register', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"form-box\">\n <img class=\"logo\" src=\"/images/testgorilla.svg\">\n <div class=\"title\">Create your Career Passport</div>\n <div class=\"subtitle\">Enter the email address to which you received an assessment invite.</div>\n <form [formGroup]=\"registerForm\">\n <div class=\"field\">\n <ui-field formControlName=\"username\" [placeholder]=\"'Email'\" [type]=\"'email'\" [required]=\"true\" [error]=\"formErrors.username[0]\" (ngModelChange)=\"checkErrors('username')\"></ui-field>\n </div>\n <div class=\"field\">\n <ui-field formControlName=\"password\" [placeholder]=\"'Password'\" [type]=\"'password'\" [required]=\"true\" [error]=\"formErrors.password[0]\" (ngModelChange)=\"checkErrors('password')\"></ui-field>\n <mat-password-strength\n [min]=\"12\"\n #passwordComponentWithValidation\n [password]=\"registerForm.controls['password'].value\"\n >\n </mat-password-strength>\n <mat-password-strength-info [passwordComponent]=\"passwordComponentWithValidation\">\n </mat-password-strength-info>\n </div>\n <div>\n <mat-checkbox formControlName=\"agree_terms_and_conditions\">Agree to Terms & Conditions</mat-checkbox>\n </div>\n <div class=\"submit-button\">\n <ui-button [label]=\"'Next'\" [disabled]=\"registerForm.invalid\" [fullWidth]=\"true\" [loading]=\"loading\" (onClickEvent)=\"submit()\"></ui-button>\n </div>\n <div>\n Already have a Career Passport? <span class=\"log-in\" (click)=\"login()\">Log in here</span>\n </div>\n </form>\n</div>\n", styles: [".form-box{width:672px;padding:64px;background:#ffffff;box-shadow:0 8px 16px #0000001a;border-radius:8px;margin:auto;color:#000}.form-box .logo{width:180px;position:relative;right:9px;margin-bottom:16px}.form-box .title{font-weight:700;font-size:22px}.form-box .subtitle{margin:16px 0}.form-box .field{width:100%}.form-box .submit-button{margin:24px 0}.form-box mat-checkbox{font-weight:400}.form-box .log-in{font-weight:600;font-size:15px;cursor:pointer;color:#46a997}.form-box .log-in:hover{text-decoration:underline}.row{display:flex;flex-direction:row}.row.space-between{justify-content:space-between}\n"] }]
|
|
82
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { formErrors: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], loading: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], submitEvent: [{
|
|
87
|
+
type: Output
|
|
88
|
+
}], loginEvent: [{
|
|
89
|
+
type: Output
|
|
90
|
+
}] } });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcmVnaXN0ZXIvcmVnaXN0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcmVnaXN0ZXIvcmVnaXN0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVV6RCxNQUFNLE9BQU8saUJBQWlCO0lBbUQ1QixZQUFvQixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQWxEbkMsbUhBQW1IO1FBQ25ILHdEQUF3RDtRQUN4RCx3REFBd0Q7UUFFeEQ7O1dBRUc7UUFDSCxpQkFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzNCLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZELFFBQVEsRUFBRTtnQkFDUixFQUFFO2dCQUNGO29CQUNFLFVBQVUsQ0FBQyxRQUFRO29CQUNuQixVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsVUFBVSxDQUFDLE9BQU8sQ0FBQywrRUFBK0UsQ0FBQztpQkFDcEc7YUFDRjtZQUNELDBCQUEwQixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQy9ELENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ00sZUFBVSxHQUFHO1lBQ3BCLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNkLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztTQUNmLENBQUM7UUFTRjs7V0FFRztRQUNPLGdCQUFXLEdBQXNDLElBQUksWUFBWSxFQUF1QixDQUFDO1FBRW5HOztXQUVHO1FBQ08sZUFBVSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0lBTzlCLENBQUM7SUFMdkM7O09BRUc7SUFDSCxRQUFRLEtBQVUsQ0FBQztJQUluQixNQUFNO1FBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDcEIsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUs7WUFDbEQsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUs7U0FDbkQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUM3QyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDMUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsd0JBQXdCLENBQUM7Z0JBQ3JGLE9BQU87YUFDUjtZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN2RCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQXFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxxQkFBcUIsQ0FBQztnQkFDbEYsT0FBTzthQUNSO1lBRUQsSUFBSSxLQUFLLEtBQUssVUFBVSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDakYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcscUJBQXFCLENBQUM7Z0JBQ3BELE9BQU87YUFDUjtTQUNGO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pFLENBQUM7OytHQW5GVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixnTENuQjlCLG1rREE4QkE7NEZEWGEsaUJBQWlCO2tCQVA3QixTQUFTOytCQUNFLGFBQWEsbUJBR04sdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTtrR0EwQjVCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBVUcsT0FBTztzQkFBZixLQUFLO2dCQUtJLFdBQVc7c0JBQXBCLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJlZ2lzdGVyQ3JlZGVudGlhbHMgfSBmcm9tICcuL3JlZ2lzdGVyLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktcmVnaXN0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVnaXN0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZWdpc3Rlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUmVnaXN0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyBUT0RPOiBTb21lIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgYXJlIGlnbm9yZWQgb24gcHVycG9zZSBiZWNhdXNlIG9mIGEgY3VycmVudCBpc3N1ZSB3aXRoIGNvbXBvZG9jIGFuZCBhbmd1bGFyIDEzXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9yeWJvb2tqcy9zdG9yeWJvb2svaXNzdWVzLzE2ODY1XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9yeWJvb2tqcy9zdG9yeWJvb2svaXNzdWVzLzE3MDA0XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHJlZ2lzdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIHVzZXJuYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXV0sXG4gICAgcGFzc3dvcmQ6IFtcbiAgICAgICcnLFxuICAgICAgW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMiksXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybigvXig/PVxcRCpcXGQpKD89W15hLXpdKlthLXpdKSg/PS4qWyMkJSYnKCkqKywtLi86Ozw9Pj9AXSkoPz1bXkEtWl0qW0EtWl0pLnsxMix9JC8pLFxuICAgICAgXSxcbiAgICBdLFxuICAgIGFncmVlX3Rlcm1zX2FuZF9jb25kaXRpb25zOiBbZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZV1dLFxuICB9KTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQElucHV0KCkgZm9ybUVycm9ycyA9IHtcbiAgICB1c2VybmFtZTogWycnXSxcbiAgICBwYXNzd29yZDogWycnXSxcbiAgfTtcblxuICAvKipcbiAgICogSW5kaWNhdG9yIGlmIHRoZSBmb3JtIGlzIGxvYWRpbmdcbiAgICpcbiAgICogQG1lbWJlcm9mIEJ1dHRvbkNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQE91dHB1dCgpIHN1Ym1pdEV2ZW50OiBFdmVudEVtaXR0ZXI8UmVnaXN0ZXJDcmVkZW50aWFscz4gPSBuZXcgRXZlbnRFbWl0dGVyPFJlZ2lzdGVyQ3JlZGVudGlhbHM+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKSBsb2dpbkV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge31cblxuICBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJtaXRFdmVudC5lbWl0KHtcbiAgICAgIHVzZXJuYW1lOiB0aGlzLnJlZ2lzdGVyRm9ybS5nZXQoJ3VzZXJuYW1lJyk/LnZhbHVlLFxuICAgICAgcGFzc3dvcmQ6IHRoaXMucmVnaXN0ZXJGb3JtLmdldCgncGFzc3dvcmQnKT8udmFsdWUsXG4gICAgfSk7XG4gIH1cblxuICBsb2dpbigpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ2luRXZlbnQuZW1pdCgpO1xuICB9XG5cbiAgY2hlY2tFcnJvcnMoZmllbGQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnJlZ2lzdGVyRm9ybS5jb250cm9sc1tmaWVsZF0udG91Y2hlZCkge1xuICAgICAgaWYgKHRoaXMucmVnaXN0ZXJGb3JtLmNvbnRyb2xzW2ZpZWxkXS5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICB0aGlzLmZvcm1FcnJvcnNbZmllbGQgYXMga2V5b2YgdHlwZW9mIHRoaXMuZm9ybUVycm9yc11bMF0gPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucmVnaXN0ZXJGb3JtLmNvbnRyb2xzW2ZpZWxkXS5oYXNFcnJvcignZW1haWwnKSkge1xuICAgICAgICB0aGlzLmZvcm1FcnJvcnNbZmllbGQgYXMga2V5b2YgdHlwZW9mIHRoaXMuZm9ybUVycm9yc11bMF0gPSAnRW50ZXIgYSB2YWxpZCBlbWFpbCc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkID09PSAncGFzc3dvcmQnICYmIHRoaXMucmVnaXN0ZXJGb3JtLmNvbnRyb2xzW2ZpZWxkXS5oYXNFcnJvcigncGF0dGVybicpKSB7XG4gICAgICAgIHRoaXMuZm9ybUVycm9ycy5wYXNzd29yZFswXSA9ICdQYXNzd29yZCBpcyBpbnZhbGlkJztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZm9ybUVycm9yc1tmaWVsZCBhcyBrZXlvZiB0eXBlb2YgdGhpcy5mb3JtRXJyb3JzXVswXSA9ICcnO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ib3hcIj5cbiAgPGltZyBjbGFzcz1cImxvZ29cIiBzcmM9XCIvaW1hZ2VzL3Rlc3Rnb3JpbGxhLnN2Z1wiPlxuICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5DcmVhdGUgeW91ciBDYXJlZXIgUGFzc3BvcnQ8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInN1YnRpdGxlXCI+RW50ZXIgdGhlIGVtYWlsIGFkZHJlc3MgdG8gd2hpY2ggeW91IHJlY2VpdmVkIGFuIGFzc2Vzc21lbnQgaW52aXRlLjwvZGl2PlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cInJlZ2lzdGVyRm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgPHVpLWZpZWxkIGZvcm1Db250cm9sTmFtZT1cInVzZXJuYW1lXCIgW3BsYWNlaG9sZGVyXT1cIidFbWFpbCdcIiBbdHlwZV09XCInZW1haWwnXCIgW3JlcXVpcmVkXT1cInRydWVcIiBbZXJyb3JdPVwiZm9ybUVycm9ycy51c2VybmFtZVswXVwiIChuZ01vZGVsQ2hhbmdlKT1cImNoZWNrRXJyb3JzKCd1c2VybmFtZScpXCI+PC91aS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgIDx1aS1maWVsZCBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiIFtwbGFjZWhvbGRlcl09XCInUGFzc3dvcmQnXCIgW3R5cGVdPVwiJ3Bhc3N3b3JkJ1wiIFtyZXF1aXJlZF09XCJ0cnVlXCIgW2Vycm9yXT1cImZvcm1FcnJvcnMucGFzc3dvcmRbMF1cIiAobmdNb2RlbENoYW5nZSk9XCJjaGVja0Vycm9ycygncGFzc3dvcmQnKVwiPjwvdWktZmllbGQ+XG4gICAgICA8bWF0LXBhc3N3b3JkLXN0cmVuZ3RoXG4gICAgICAgICAgICAgIFttaW5dPVwiMTJcIlxuICAgICAgICAgICAgICAjcGFzc3dvcmRDb21wb25lbnRXaXRoVmFsaWRhdGlvblxuICAgICAgICAgICAgICBbcGFzc3dvcmRdPVwicmVnaXN0ZXJGb3JtLmNvbnRyb2xzWydwYXNzd29yZCddLnZhbHVlXCJcbiAgICAgICAgICAgID5cbiAgICAgIDwvbWF0LXBhc3N3b3JkLXN0cmVuZ3RoPlxuICAgICAgPG1hdC1wYXNzd29yZC1zdHJlbmd0aC1pbmZvIFtwYXNzd29yZENvbXBvbmVudF09XCJwYXNzd29yZENvbXBvbmVudFdpdGhWYWxpZGF0aW9uXCI+XG4gICAgICA8L21hdC1wYXNzd29yZC1zdHJlbmd0aC1pbmZvPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8bWF0LWNoZWNrYm94IGZvcm1Db250cm9sTmFtZT1cImFncmVlX3Rlcm1zX2FuZF9jb25kaXRpb25zXCI+QWdyZWUgdG8gVGVybXMgJiBDb25kaXRpb25zPC9tYXQtY2hlY2tib3g+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInN1Ym1pdC1idXR0b25cIj5cbiAgICAgIDx1aS1idXR0b24gW2xhYmVsXT1cIidOZXh0J1wiIFtkaXNhYmxlZF09XCJyZWdpc3RlckZvcm0uaW52YWxpZFwiIFtmdWxsV2lkdGhdPVwidHJ1ZVwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIiAob25DbGlja0V2ZW50KT1cInN1Ym1pdCgpXCI+PC91aS1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIEFscmVhZHkgaGF2ZSBhIENhcmVlciBQYXNzcG9ydD8gPHNwYW4gY2xhc3M9XCJsb2ctaW5cIiAoY2xpY2spPVwibG9naW4oKVwiPkxvZyBpbiBoZXJlPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { MatPasswordStrengthModule } from '@angular-material-extensions/password-strength';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NgModule } from '@angular/core';
|
|
4
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
6
|
+
import { ButtonComponentModule } from '../button/button.component.module';
|
|
7
|
+
import { FieldComponentModule } from '../field/field.component.module';
|
|
8
|
+
import { RegisterComponent } from './register.component';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export class RegisterComponentModule {
|
|
11
|
+
}
|
|
12
|
+
RegisterComponentModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RegisterComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
+
RegisterComponentModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RegisterComponentModule, declarations: [RegisterComponent], imports: [CommonModule,
|
|
14
|
+
FormsModule,
|
|
15
|
+
ReactiveFormsModule,
|
|
16
|
+
FieldComponentModule,
|
|
17
|
+
ButtonComponentModule,
|
|
18
|
+
MatCheckboxModule,
|
|
19
|
+
MatPasswordStrengthModule], exports: [RegisterComponent] });
|
|
20
|
+
RegisterComponentModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RegisterComponentModule, providers: [], imports: [[
|
|
21
|
+
CommonModule,
|
|
22
|
+
FormsModule,
|
|
23
|
+
ReactiveFormsModule,
|
|
24
|
+
FieldComponentModule,
|
|
25
|
+
ButtonComponentModule,
|
|
26
|
+
MatCheckboxModule,
|
|
27
|
+
MatPasswordStrengthModule,
|
|
28
|
+
]] });
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RegisterComponentModule, decorators: [{
|
|
30
|
+
type: NgModule,
|
|
31
|
+
args: [{
|
|
32
|
+
declarations: [RegisterComponent],
|
|
33
|
+
imports: [
|
|
34
|
+
CommonModule,
|
|
35
|
+
FormsModule,
|
|
36
|
+
ReactiveFormsModule,
|
|
37
|
+
FieldComponentModule,
|
|
38
|
+
ButtonComponentModule,
|
|
39
|
+
MatCheckboxModule,
|
|
40
|
+
MatPasswordStrengthModule,
|
|
41
|
+
],
|
|
42
|
+
exports: [RegisterComponent],
|
|
43
|
+
providers: [],
|
|
44
|
+
}]
|
|
45
|
+
}] });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuY29tcG9uZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlZ2lzdGVyL3JlZ2lzdGVyLmNvbXBvbmVudC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDM0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQWdCekQsTUFBTSxPQUFPLHVCQUF1Qjs7cUhBQXZCLHVCQUF1QjtzSEFBdkIsdUJBQXVCLGlCQWJuQixpQkFBaUIsYUFFOUIsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsb0JBQW9CO1FBQ3BCLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIseUJBQXlCLGFBRWpCLGlCQUFpQjtzSEFHaEIsdUJBQXVCLGFBRnZCLEVBQUUsWUFWSjtZQUNQLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLG9CQUFvQjtZQUNwQixxQkFBcUI7WUFDckIsaUJBQWlCO1lBQ2pCLHlCQUF5QjtTQUMxQjs0RkFJVSx1QkFBdUI7a0JBZG5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsaUJBQWlCLENBQUM7b0JBQ2pDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQix5QkFBeUI7cUJBQzFCO29CQUNELE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUM1QixTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdFBhc3N3b3JkU3RyZW5ndGhNb2R1bGUgfSBmcm9tICdAYW5ndWxhci1tYXRlcmlhbC1leHRlbnNpb25zL3Bhc3N3b3JkLXN0cmVuZ3RoJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lm1vZHVsZSc7XG5pbXBvcnQgeyBGaWVsZENvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uL2ZpZWxkL2ZpZWxkLmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgUmVnaXN0ZXJDb21wb25lbnQgfSBmcm9tICcuL3JlZ2lzdGVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1JlZ2lzdGVyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZpZWxkQ29tcG9uZW50TW9kdWxlLFxuICAgIEJ1dHRvbkNvbXBvbmVudE1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBNYXRQYXNzd29yZFN0cmVuZ3RoTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbUmVnaXN0ZXJDb21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBSZWdpc3RlckNvbXBvbmVudE1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9yZWdpc3Rlci9yZWdpc3Rlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlckNyZWRlbnRpYWxzIHtcbiAgdXNlcm5hbWU6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cbiJdfQ==
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
// Navbar Component
|
|
2
1
|
// Field Component
|
|
3
2
|
export * from './components/field/field.component';
|
|
4
3
|
export * from './components/field/field.component.module';
|
|
5
4
|
// Login Component
|
|
6
5
|
export * from './components/login/login.component';
|
|
7
6
|
export * from './components/login/login.component.module';
|
|
7
|
+
// Navbar Component
|
|
8
8
|
export * from './components/navbar/navbar.component';
|
|
9
9
|
export * from './components/navbar/navbar.component.module';
|
|
10
10
|
export * from './components/navbar/navbar.model';
|
|
11
11
|
// Paginator Component
|
|
12
12
|
export * from './components/paginator/paginator.component';
|
|
13
13
|
export * from './components/paginator/paginator.component.module';
|
|
14
|
+
// Register Component
|
|
15
|
+
export * from './components/register/register.component';
|
|
16
|
+
export * from './components/register/register.component.module';
|
|
14
17
|
// Table Component
|
|
15
18
|
export * from './components/table/table.component';
|
|
16
19
|
export * from './components/table/table.component.module';
|
|
17
20
|
export * from './components/table/table.model';
|
|
18
21
|
// Pipes
|
|
19
22
|
export * from './shared/pipes/dataPropertyGetter';
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGtCQUFrQjtBQUNsQixjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsa0JBQWtCO0FBQ2xCLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxtQkFBbUI7QUFDbkIsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsc0JBQXNCO0FBQ3RCLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxxQkFBcUI7QUFDckIsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGtCQUFrQjtBQUNsQixjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxRQUFRO0FBQ1IsY0FBYyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEZpZWxkIENvbXBvbmVudFxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2ZpZWxkL2ZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZmllbGQvZmllbGQuY29tcG9uZW50Lm1vZHVsZSc7XG4vLyBMb2dpbiBDb21wb25lbnRcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9sb2dpbi9sb2dpbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5tb2R1bGUnO1xuLy8gTmF2YmFyIENvbXBvbmVudFxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL25hdmJhci9uYXZiYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL25hdmJhci9uYXZiYXIubW9kZWwnO1xuLy8gUGFnaW5hdG9yIENvbXBvbmVudFxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3BhZ2luYXRvci9wYWdpbmF0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC5tb2R1bGUnO1xuLy8gUmVnaXN0ZXIgQ29tcG9uZW50XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcmVnaXN0ZXIvcmVnaXN0ZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9yZWdpc3Rlci9yZWdpc3Rlci5jb21wb25lbnQubW9kdWxlJztcbi8vIFRhYmxlIENvbXBvbmVudFxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUvdGFibGUubW9kZWwnO1xuLy8gUGlwZXNcbmV4cG9ydCAqIGZyb20gJy4vc2hhcmVkL3BpcGVzL2RhdGFQcm9wZXJ0eUdldHRlcic7XG4iXX0=
|