@lenne.tech/ng-base 13.6.5 → 13.7.0
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/base-components/base-components.module.d.ts +8 -3
- package/base-components/components/breadcrumb/breadcrumb.component.d.ts +10 -0
- package/base-components/components/checkbox/checkbox.component.d.ts +1 -1
- package/base-components/components/loading-bar/loading-bar.component.d.ts +5 -0
- package/base-components/components/select/select.component.d.ts +2 -1
- package/base-components/components/skeleton-loader/skeleton-loader.component.d.ts +10 -0
- package/base-components/components/tags/tags.component.d.ts +33 -0
- package/base-components/components/toast/toast.component.d.ts +18 -0
- package/base-components/public-api.d.ts +5 -0
- package/base-prototype/base-prototype.module.d.ts +6 -5
- package/base-prototype/pages/forgot-password/forgot-password.component.d.ts +7 -2
- package/base-prototype/pages/login/login.component.d.ts +8 -2
- package/base-prototype/pages/register/register.component.d.ts +8 -2
- package/esm2020/base-components/base-components.module.mjs +23 -3
- package/esm2020/base-components/components/breadcrumb/breadcrumb.component.mjs +17 -0
- package/esm2020/base-components/components/checkbox/checkbox.component.mjs +3 -3
- package/esm2020/base-components/components/input/input.component.mjs +3 -3
- package/esm2020/base-components/components/loading-bar/loading-bar.component.mjs +11 -0
- package/esm2020/base-components/components/select/select.component.mjs +6 -3
- package/esm2020/base-components/components/skeleton-loader/skeleton-loader.component.mjs +33 -0
- package/esm2020/base-components/components/tags/tags.component.mjs +85 -0
- package/esm2020/base-components/components/toast/toast.component.mjs +61 -0
- package/esm2020/base-components/public-api.mjs +6 -1
- package/esm2020/base-prototype/base-prototype.module.mjs +5 -4
- package/esm2020/base-prototype/pages/forgot-password/forgot-password.component.mjs +30 -9
- package/esm2020/base-prototype/pages/login/login.component.mjs +46 -9
- package/esm2020/base-prototype/pages/register/register.component.mjs +45 -11
- package/esm2020/public-api.mjs +1 -42
- package/esm2020/shared/classes/auth.class.mjs +16 -0
- package/esm2020/shared/classes/basic-user.class.mjs +51 -0
- package/esm2020/shared/classes/graphql-enum.class.mjs +9 -0
- package/esm2020/shared/classes/graphql-meta.class.mjs +171 -0
- package/esm2020/shared/classes/graphql-type.class.mjs +13 -0
- package/esm2020/shared/classes/helper.class.mjs +304 -0
- package/esm2020/shared/classes/standard.class.mjs +40 -0
- package/esm2020/{src → shared}/enums/comparison-operator.enum.mjs +1 -1
- package/esm2020/shared/enums/graphql-request-type.enum.mjs +10 -0
- package/esm2020/shared/enums/logical-operator.enum.mjs +10 -0
- package/esm2020/shared/enums/skeleton-type.enum.mjs +7 -0
- package/esm2020/shared/enums/sort-order.enum.mjs +6 -0
- package/esm2020/shared/enums/toast-type.enum.mjs +7 -0
- package/esm2020/shared/functions/ws-client.function.mjs +39 -0
- package/esm2020/shared/interfaces/base-module-config.interface.mjs +3 -0
- package/esm2020/shared/interfaces/breadcrumb.interface.mjs +2 -0
- package/esm2020/shared/interfaces/can-component-deactivate.interface.mjs +2 -0
- package/esm2020/shared/interfaces/combined-filter-input.interface.mjs +2 -0
- package/esm2020/shared/interfaces/field-object.interface.mjs +2 -0
- package/esm2020/shared/interfaces/field.interface.mjs +2 -0
- package/esm2020/shared/interfaces/filter-input.interface.mjs +2 -0
- package/esm2020/shared/interfaces/find-args.interface.mjs +2 -0
- package/esm2020/shared/interfaces/graphql-fields-object.interface.mjs +2 -0
- package/esm2020/shared/interfaces/graphql-options.interface.mjs +2 -0
- package/esm2020/shared/interfaces/graphql-plus-options.interfacen.mjs +2 -0
- package/esm2020/shared/interfaces/graphql-type-collection.interface.mjs +2 -0
- package/esm2020/shared/interfaces/single-filter-input.interface.mjs +2 -0
- package/esm2020/shared/interfaces/sort-input.interface.mjs +2 -0
- package/esm2020/shared/interfaces/time-components.interface.mjs +2 -0
- package/esm2020/shared/interfaces/toast.interface.mjs +2 -0
- package/esm2020/shared/lenne.tech-ng-base-shared.mjs +5 -0
- package/esm2020/shared/public-api.mjs +57 -0
- package/esm2020/shared/services/auth.service.mjs +71 -0
- package/esm2020/shared/services/breadcrumb.service.mjs +68 -0
- package/esm2020/shared/services/forms.service.mjs +25 -0
- package/esm2020/shared/services/graphql-meta.service.mjs +123 -0
- package/esm2020/shared/services/graphql-plus.service.mjs +84 -0
- package/esm2020/shared/services/graphql.service.mjs +441 -0
- package/esm2020/shared/services/image.service.mjs +102 -0
- package/esm2020/shared/services/loader.service.mjs +29 -0
- package/esm2020/shared/services/scroll.service.mjs +179 -0
- package/esm2020/shared/services/storage.service.mjs +132 -0
- package/esm2020/shared/services/toast.service.mjs +41 -0
- package/esm2020/shared/services/user.service.mjs +82 -0
- package/esm2020/shared/services/ws.service.mjs +16 -0
- package/esm2020/shared/types/graphql-fields.type.mjs +2 -0
- package/esm2020/shared/types/storage.type.mjs +2 -0
- package/esm2020/shared/validators/match.validator.mjs +19 -0
- package/esm2020/src/base.module.mjs +14 -11
- package/esm2020/src/directives/match-height.directive.mjs +2 -2
- package/esm2020/src/factories/apollo-options.factory.mjs +14 -12
- package/esm2020/src/guards/auth.guard.mjs +3 -3
- package/esm2020/src/guards/can-deactivate.guard.mjs +1 -1
- package/esm2020/src/guards/logout.guard.mjs +2 -2
- package/esm2020/src/services/theme.service.mjs +2 -2
- package/fesm2015/lenne.tech-ng-base-base-components.mjs +218 -9
- package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +1 -1
- package/fesm2015/lenne.tech-ng-base-base-prototype.mjs +113 -22
- package/fesm2015/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
- package/fesm2015/lenne.tech-ng-base-shared.mjs +1995 -0
- package/fesm2015/lenne.tech-ng-base-shared.mjs.map +1 -0
- package/fesm2015/lenne.tech-ng-base.mjs +57 -1799
- package/fesm2015/lenne.tech-ng-base.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-base-components.mjs +218 -9
- package/fesm2020/lenne.tech-ng-base-base-components.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-base-prototype.mjs +111 -22
- package/fesm2020/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-shared.mjs +2055 -0
- package/fesm2020/lenne.tech-ng-base-shared.mjs.map +1 -0
- package/fesm2020/lenne.tech-ng-base.mjs +57 -1854
- package/fesm2020/lenne.tech-ng-base.mjs.map +1 -1
- package/package.json +10 -2
- package/public-api.d.ts +0 -36
- package/shared/classes/auth.class.d.ts +9 -0
- package/{src → shared}/classes/basic-user.class.d.ts +0 -0
- package/{src → shared}/classes/graphql-enum.class.d.ts +0 -0
- package/{src → shared}/classes/graphql-meta.class.d.ts +0 -0
- package/{src → shared}/classes/graphql-type.class.d.ts +0 -0
- package/{src → shared}/classes/helper.class.d.ts +0 -0
- package/{src → shared}/classes/standard.class.d.ts +0 -0
- package/{src → shared}/enums/comparison-operator.enum.d.ts +0 -0
- package/{src → shared}/enums/graphql-request-type.enum.d.ts +0 -0
- package/{src → shared}/enums/logical-operator.enum.d.ts +0 -0
- package/shared/enums/skeleton-type.enum.d.ts +5 -0
- package/{src → shared}/enums/sort-order.enum.d.ts +0 -0
- package/shared/enums/toast-type.enum.d.ts +5 -0
- package/shared/functions/ws-client.function.d.ts +5 -0
- package/{src → shared}/interfaces/base-module-config.interface.d.ts +1 -1
- package/shared/interfaces/breadcrumb.interface.d.ts +4 -0
- package/{src → shared}/interfaces/can-component-deactivate.interface.d.ts +0 -0
- package/{src → shared}/interfaces/combined-filter-input.interface.d.ts +0 -0
- package/{src → shared}/interfaces/field-object.interface.d.ts +0 -0
- package/{src → shared}/interfaces/field.interface.d.ts +0 -0
- package/{src → shared}/interfaces/filter-input.interface.d.ts +0 -0
- package/{src → shared}/interfaces/find-args.interface.d.ts +0 -0
- package/{src → shared}/interfaces/graphql-fields-object.interface.d.ts +0 -0
- package/{src → shared}/interfaces/graphql-options.interface.d.ts +0 -0
- package/{src → shared}/interfaces/graphql-plus-options.interfacen.d.ts +0 -0
- package/{src → shared}/interfaces/graphql-type-collection.interface.d.ts +0 -0
- package/{src → shared}/interfaces/single-filter-input.interface.d.ts +0 -0
- package/{src → shared}/interfaces/sort-input.interface.d.ts +0 -0
- package/shared/interfaces/time-components.interface.d.ts +6 -0
- package/shared/interfaces/toast.interface.d.ts +8 -0
- package/shared/lenne.tech-ng-base-shared.d.ts +5 -0
- package/shared/package.json +10 -0
- package/shared/public-api.d.ts +49 -0
- package/{src → shared}/services/auth.service.d.ts +0 -0
- package/shared/services/breadcrumb.service.d.ts +32 -0
- package/{src → shared}/services/forms.service.d.ts +0 -1
- package/{src → shared}/services/graphql-meta.service.d.ts +0 -0
- package/{src → shared}/services/graphql-plus.service.d.ts +0 -0
- package/{src → shared}/services/graphql.service.d.ts +0 -0
- package/{src → shared}/services/image.service.d.ts +0 -0
- package/{src → shared}/services/loader.service.d.ts +0 -0
- package/{src → shared}/services/scroll.service.d.ts +0 -0
- package/{src → shared}/services/storage.service.d.ts +0 -0
- package/shared/services/toast.service.d.ts +15 -0
- package/shared/services/user.service.d.ts +42 -0
- package/{src → shared}/services/ws.service.d.ts +2 -2
- package/{src → shared}/types/graphql-fields.type.d.ts +0 -0
- package/{src → shared}/types/storage.type.d.ts +0 -0
- package/shared/validators/match.validator.d.ts +4 -0
- package/src/base.module.d.ts +4 -2
- package/src/directives/match-height.directive.d.ts +1 -1
- package/src/factories/apollo-options.factory.d.ts +1 -3
- package/src/guards/auth.guard.d.ts +1 -2
- package/src/guards/can-deactivate.guard.d.ts +1 -1
- package/src/guards/logout.guard.d.ts +1 -1
- package/src/services/theme.service.d.ts +1 -1
- package/esm2020/src/classes/basic-user.class.mjs +0 -51
- package/esm2020/src/classes/graphql-enum.class.mjs +0 -9
- package/esm2020/src/classes/graphql-meta.class.mjs +0 -171
- package/esm2020/src/classes/graphql-type.class.mjs +0 -13
- package/esm2020/src/classes/helper.class.mjs +0 -304
- package/esm2020/src/classes/standard.class.mjs +0 -40
- package/esm2020/src/enums/graphql-request-type.enum.mjs +0 -10
- package/esm2020/src/enums/logical-operator.enum.mjs +0 -10
- package/esm2020/src/enums/sort-order.enum.mjs +0 -6
- package/esm2020/src/interfaces/base-module-config.interface.mjs +0 -3
- package/esm2020/src/interfaces/can-component-deactivate.interface.mjs +0 -2
- package/esm2020/src/interfaces/combined-filter-input.interface.mjs +0 -2
- package/esm2020/src/interfaces/field-object.interface.mjs +0 -2
- package/esm2020/src/interfaces/field.interface.mjs +0 -2
- package/esm2020/src/interfaces/filter-input.interface.mjs +0 -2
- package/esm2020/src/interfaces/find-args.interface.mjs +0 -2
- package/esm2020/src/interfaces/graphql-fields-object.interface.mjs +0 -2
- package/esm2020/src/interfaces/graphql-options.interface.mjs +0 -2
- package/esm2020/src/interfaces/graphql-plus-options.interfacen.mjs +0 -2
- package/esm2020/src/interfaces/graphql-type-collection.interface.mjs +0 -2
- package/esm2020/src/interfaces/single-filter-input.interface.mjs +0 -2
- package/esm2020/src/interfaces/sort-input.interface.mjs +0 -2
- package/esm2020/src/services/auth.service.mjs +0 -71
- package/esm2020/src/services/forms.service.mjs +0 -26
- package/esm2020/src/services/graphql-meta.service.mjs +0 -123
- package/esm2020/src/services/graphql-plus.service.mjs +0 -84
- package/esm2020/src/services/graphql.service.mjs +0 -441
- package/esm2020/src/services/image.service.mjs +0 -102
- package/esm2020/src/services/loader.service.mjs +0 -29
- package/esm2020/src/services/scroll.service.mjs +0 -179
- package/esm2020/src/services/storage.service.mjs +0 -132
- package/esm2020/src/services/ws.service.mjs +0 -17
- package/esm2020/src/types/graphql-fields.type.mjs +0 -2
- package/esm2020/src/types/storage.type.mjs +0 -2
- package/esm2020/src/validators/must-match.validator.mjs +0 -22
- package/src/validators/must-match.validator.d.ts +0 -6
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/forms";
|
|
5
|
+
export class TagsComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.label = '';
|
|
8
|
+
this.placeholder = '';
|
|
9
|
+
this.required = false;
|
|
10
|
+
this.inputValue = '';
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Listen to enter keys
|
|
14
|
+
*
|
|
15
|
+
* @param event
|
|
16
|
+
*/
|
|
17
|
+
enterKey(event) {
|
|
18
|
+
if (event.code === 'Backspace' && !this.inputValue) {
|
|
19
|
+
this.removeTag();
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
if (event.code === 'Comma' || event.code === 'Space' || event.code === 'Enter') {
|
|
24
|
+
this.addTag(this.inputValue);
|
|
25
|
+
this.inputValue = '';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Add new tag
|
|
31
|
+
*
|
|
32
|
+
* @param tag
|
|
33
|
+
*/
|
|
34
|
+
addTag(tag) {
|
|
35
|
+
if (!this.control.value) {
|
|
36
|
+
this.control.setValue([]);
|
|
37
|
+
}
|
|
38
|
+
if (tag.endsWith(',') || tag.endsWith(' ')) {
|
|
39
|
+
tag = tag.slice(0, -1);
|
|
40
|
+
}
|
|
41
|
+
if (tag.length > 0 && this.control.value && !this.control.value.some((item) => item === tag)) {
|
|
42
|
+
this.control.value.push(tag);
|
|
43
|
+
this.control.setErrors(null);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Remove tag
|
|
48
|
+
*
|
|
49
|
+
* @param tag
|
|
50
|
+
*/
|
|
51
|
+
removeTag(tag) {
|
|
52
|
+
if (tag) {
|
|
53
|
+
this.control.setValue(this.control.value.filter((item) => item !== tag));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.control.value.splice(-1);
|
|
57
|
+
}
|
|
58
|
+
if (this.control.value.length === 0) {
|
|
59
|
+
this.control.setErrors({ required: true });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
TagsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: TagsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
64
|
+
TagsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: TagsComponent, selector: "base-tags", inputs: { id: "id", name: "name", label: "label", placeholder: "placeholder", autocomplete: "autocomplete", tabIndex: "tabIndex", control: "control", required: "required" }, ngImport: i0, template: "<div class=\"form-group mb-3\">\n <label [for]=\"id\" class=\"form-label\" [ngClass]=\"{ required: required }\" *ngIf=\"label\">{{ label }}</label>\n\n <div class=\"tag-wrapper\" *ngIf=\"control?.value\">\n <div class=\"tag\" *ngFor=\"let tag of control?.value\">\n {{ tag }}\n <span (click)=\"removeTag(tag)\"><i class=\"bi bi-x-circle\"></i></span>\n </div>\n </div>\n <input\n [id]=\"id\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"{ 'is-invalid': control?.invalid && control?.touched }\"\n [(ngModel)]=\"inputValue\"\n [autocomplete]=\"autocomplete ?? null\"\n [tabIndex]=\"tabIndex ?? null\"\n type=\"text\"\n class=\"form-control\"\n (keyup)=\"enterKey($event)\"\n />\n\n <div class=\"invalid-feedback m-2\" *ngIf=\"control?.invalid && (control?.dirty || control?.touched)\">\n <div *ngIf=\"control?.errors?.['required']\">Dieses Feld ist ein Pflichtfeld.</div>\n </div>\n</div>\n", styles: [".tag-wrapper{display:flex;flex-direction:row;justify-content:flex-start;column-gap:10px;row-gap:10px;flex-wrap:wrap;margin-bottom:10px}.tag-wrapper .tag{background-color:var(--bs-light);color:var(--bs-dark);padding:10px 15px;font-style:normal;font-weight:300;font-size:14px;line-height:140%}.tag-wrapper .tag span{margin-left:20px;cursor:pointer}.tag-wrapper .tag span .bi{color:var(--bs-black)}.tag-wrapper .tag span .bi:before{vertical-align:-.175em}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: TagsComponent, decorators: [{
|
|
66
|
+
type: Component,
|
|
67
|
+
args: [{ selector: 'base-tags', template: "<div class=\"form-group mb-3\">\n <label [for]=\"id\" class=\"form-label\" [ngClass]=\"{ required: required }\" *ngIf=\"label\">{{ label }}</label>\n\n <div class=\"tag-wrapper\" *ngIf=\"control?.value\">\n <div class=\"tag\" *ngFor=\"let tag of control?.value\">\n {{ tag }}\n <span (click)=\"removeTag(tag)\"><i class=\"bi bi-x-circle\"></i></span>\n </div>\n </div>\n <input\n [id]=\"id\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n [ngClass]=\"{ 'is-invalid': control?.invalid && control?.touched }\"\n [(ngModel)]=\"inputValue\"\n [autocomplete]=\"autocomplete ?? null\"\n [tabIndex]=\"tabIndex ?? null\"\n type=\"text\"\n class=\"form-control\"\n (keyup)=\"enterKey($event)\"\n />\n\n <div class=\"invalid-feedback m-2\" *ngIf=\"control?.invalid && (control?.dirty || control?.touched)\">\n <div *ngIf=\"control?.errors?.['required']\">Dieses Feld ist ein Pflichtfeld.</div>\n </div>\n</div>\n", styles: [".tag-wrapper{display:flex;flex-direction:row;justify-content:flex-start;column-gap:10px;row-gap:10px;flex-wrap:wrap;margin-bottom:10px}.tag-wrapper .tag{background-color:var(--bs-light);color:var(--bs-dark);padding:10px 15px;font-style:normal;font-weight:300;font-size:14px;line-height:140%}.tag-wrapper .tag span{margin-left:20px;cursor:pointer}.tag-wrapper .tag span .bi{color:var(--bs-black)}.tag-wrapper .tag span .bi:before{vertical-align:-.175em}\n"] }]
|
|
68
|
+
}], propDecorators: { id: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], name: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], label: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], placeholder: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], autocomplete: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], tabIndex: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], control: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], required: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}] } });
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9jb21wb25lbnRzL3RhZ3MvdGFncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9jb21wb25lbnRzL3RhZ3MvdGFncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVFqRCxNQUFNLE9BQU8sYUFBYTtJQUwxQjtRQVFXLFVBQUssR0FBWSxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBWSxFQUFFLENBQUM7UUFJMUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQixlQUFVLEdBQUcsRUFBRSxDQUFDO0tBdURqQjtJQXJEQzs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLEtBQW9CO1FBQzNCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2xELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixPQUFPO1NBQ1I7YUFBTTtZQUNMLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7Z0JBQzlFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQzthQUN0QjtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsR0FBVztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDM0I7UUFFRCxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4QjtRQUVELElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNwRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxHQUFZO1FBQ3BCLElBQUksR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNsRjthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0I7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7OzBHQS9EVSxhQUFhOzhGQUFiLGFBQWEsK05DUjFCLHE4QkEwQkE7MkZEbEJhLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0UsV0FBVzs4QkFLWixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Jhc2UtdGFncycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFncy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYWdzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBhdXRvY29tcGxldGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRhYkluZGV4PzogbnVtYmVyO1xuICBASW5wdXQoKSBjb250cm9sOiBGb3JtQ29udHJvbCB8IEFic3RyYWN0Q29udHJvbDtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgaW5wdXRWYWx1ZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gZW50ZXIga2V5c1xuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIGVudGVyS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmNvZGUgPT09ICdCYWNrc3BhY2UnICYmICF0aGlzLmlucHV0VmFsdWUpIHtcbiAgICAgIHRoaXMucmVtb3ZlVGFnKCk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChldmVudC5jb2RlID09PSAnQ29tbWEnIHx8IGV2ZW50LmNvZGUgPT09ICdTcGFjZScgfHwgZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgICB0aGlzLmFkZFRhZyh0aGlzLmlucHV0VmFsdWUpO1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIG5ldyB0YWdcbiAgICpcbiAgICogQHBhcmFtIHRhZ1xuICAgKi9cbiAgYWRkVGFnKHRhZzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2wudmFsdWUpIHtcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShbXSk7XG4gICAgfVxuXG4gICAgaWYgKHRhZy5lbmRzV2l0aCgnLCcpIHx8IHRhZy5lbmRzV2l0aCgnICcpKSB7XG4gICAgICB0YWcgPSB0YWcuc2xpY2UoMCwgLTEpO1xuICAgIH1cblxuICAgIGlmICh0YWcubGVuZ3RoID4gMCAmJiB0aGlzLmNvbnRyb2wudmFsdWUgJiYgIXRoaXMuY29udHJvbC52YWx1ZS5zb21lKChpdGVtOiBzdHJpbmcpID0+IGl0ZW0gPT09IHRhZykpIHtcbiAgICAgIHRoaXMuY29udHJvbC52YWx1ZS5wdXNoKHRhZyk7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGFnXG4gICAqXG4gICAqIEBwYXJhbSB0YWdcbiAgICovXG4gIHJlbW92ZVRhZyh0YWc/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGFnKSB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy5jb250cm9sLnZhbHVlLmZpbHRlcigoaXRlbTogc3RyaW5nKSA9PiBpdGVtICE9PSB0YWcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250cm9sLnZhbHVlLnNwbGljZSgtMSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZDogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTNcIj5cbiAgPGxhYmVsIFtmb3JdPVwiaWRcIiBjbGFzcz1cImZvcm0tbGFiZWxcIiBbbmdDbGFzc109XCJ7IHJlcXVpcmVkOiByZXF1aXJlZCB9XCIgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cblxuICA8ZGl2IGNsYXNzPVwidGFnLXdyYXBwZXJcIiAqbmdJZj1cImNvbnRyb2w/LnZhbHVlXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhZ1wiICpuZ0Zvcj1cImxldCB0YWcgb2YgY29udHJvbD8udmFsdWVcIj5cbiAgICAgIHt7IHRhZyB9fVxuICAgICAgPHNwYW4gKGNsaWNrKT1cInJlbW92ZVRhZyh0YWcpXCI+PGkgY2xhc3M9XCJiaSBiaS14LWNpcmNsZVwiPjwvaT48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8aW5wdXRcbiAgICBbaWRdPVwiaWRcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IGNvbnRyb2w/LmludmFsaWQgJiYgY29udHJvbD8udG91Y2hlZCB9XCJcbiAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlID8/IG51bGxcIlxuICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleCA/PyBudWxsXCJcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgIChrZXl1cCk9XCJlbnRlcktleSgkZXZlbnQpXCJcbiAgLz5cblxuICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFjayBtLTJcIiAqbmdJZj1cImNvbnRyb2w/LmludmFsaWQgJiYgKGNvbnRyb2w/LmRpcnR5IHx8IGNvbnRyb2w/LnRvdWNoZWQpXCI+XG4gICAgPGRpdiAqbmdJZj1cImNvbnRyb2w/LmVycm9ycz8uWydyZXF1aXJlZCddXCI+RGllc2VzIEZlbGQgaXN0IGVpbiBQZmxpY2h0ZmVsZC48L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { animate, query, style, transition, trigger } from '@angular/animations';
|
|
3
|
+
import { Subscription } from 'rxjs';
|
|
4
|
+
import { ToastType } from '@lenne.tech/ng-base/shared';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@lenne.tech/ng-base/shared";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
const toastAnimation = trigger('toastAnimation', [
|
|
9
|
+
transition('* <=> *', [
|
|
10
|
+
query(':enter', [style({ transform: 'translateX(100%)' }), animate('200ms ease-in', style({ transform: 'translateX(0%)' }))], { optional: true }),
|
|
11
|
+
query(':leave', animate('200ms ease-in', style({ transform: 'translateX(100%)' })), { optional: true }),
|
|
12
|
+
]),
|
|
13
|
+
]);
|
|
14
|
+
export class ToastComponent {
|
|
15
|
+
constructor(toastService) {
|
|
16
|
+
this.toastService = toastService;
|
|
17
|
+
this.toasts = [];
|
|
18
|
+
this.ToastType = ToastType;
|
|
19
|
+
this.subscriptions = new Subscription();
|
|
20
|
+
}
|
|
21
|
+
ngOnInit() {
|
|
22
|
+
this.subscriptions.add(this.toastService.toastsAsObservable.subscribe({
|
|
23
|
+
next: (value) => {
|
|
24
|
+
this.toasts = value;
|
|
25
|
+
},
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
ngOnDestroy() {
|
|
29
|
+
this.subscriptions.unsubscribe();
|
|
30
|
+
}
|
|
31
|
+
getDefaultTitle(toast) {
|
|
32
|
+
switch (toast.type) {
|
|
33
|
+
case ToastType.ERROR:
|
|
34
|
+
return 'Irgendetwas ist schiefgelaufen';
|
|
35
|
+
case ToastType.INFO:
|
|
36
|
+
return 'Info';
|
|
37
|
+
case ToastType.WARNING:
|
|
38
|
+
return 'Achtung';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
getDefaultDescription(toast) {
|
|
42
|
+
switch (toast.type) {
|
|
43
|
+
case ToastType.ERROR:
|
|
44
|
+
return 'Sollte das Problem länger bestehen bleiben, dann wenden Sie sich bitte\n' + ' an den Support.';
|
|
45
|
+
case ToastType.INFO:
|
|
46
|
+
return 'Info';
|
|
47
|
+
case ToastType.WARNING:
|
|
48
|
+
return 'Warning';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
reload() {
|
|
52
|
+
location.reload();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
ToastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ToastComponent, deps: [{ token: i1.ToastService }], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
ToastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ToastComponent, selector: "base-toast", ngImport: i0, template: "<div class=\"position-fixed bottom-0 end-0 p-3\" style=\"z-index: 999\">\n <div class=\"toast-container\" [@toastAnimation]=\"toasts.length\">\n <div\n class=\"toast show\"\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n *ngFor=\"let toast of toasts\"\n [ngClass]=\"toast.type\"\n >\n <div class=\"toast-header\">\n <strong class=\"me-auto\">{{ toast?.title ?? getDefaultTitle(toast) }}</strong>\n <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"toast\" aria-label=\"Close\"></button>\n </div>\n <div class=\"toast-body\">\n {{ toast?.description ?? getDefaultDescription(toast) }}\n\n <div class=\"mt-2\" *ngIf=\"toast?.errorCode\">\n <code>ERROR: {{ toast.errorCode }}</code>\n </div>\n\n <div class=\"mt-2\" *ngIf=\"toast.type === ToastType.ERROR\">\n <a class=\"color-secondary\" href=\"#\" (click)=\"reload()\">Seite neu laden</a>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".toast{border-radius:0;border:0}.toast a{text-decoration:none;font-weight:600}.toast .toast-header{border-radius:0}.error .toast-header{background-color:var(--bs-danger);color:var(--bs-white)}.warning .toast-header{background-color:var(--bs-warning);color:var(--bs-white)}.info .toast-header{background-color:var(--bs-info);color:var(--bs-white)}\n"], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [toastAnimation] });
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ToastComponent, decorators: [{
|
|
58
|
+
type: Component,
|
|
59
|
+
args: [{ selector: 'base-toast', animations: [toastAnimation], template: "<div class=\"position-fixed bottom-0 end-0 p-3\" style=\"z-index: 999\">\n <div class=\"toast-container\" [@toastAnimation]=\"toasts.length\">\n <div\n class=\"toast show\"\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n *ngFor=\"let toast of toasts\"\n [ngClass]=\"toast.type\"\n >\n <div class=\"toast-header\">\n <strong class=\"me-auto\">{{ toast?.title ?? getDefaultTitle(toast) }}</strong>\n <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"toast\" aria-label=\"Close\"></button>\n </div>\n <div class=\"toast-body\">\n {{ toast?.description ?? getDefaultDescription(toast) }}\n\n <div class=\"mt-2\" *ngIf=\"toast?.errorCode\">\n <code>ERROR: {{ toast.errorCode }}</code>\n </div>\n\n <div class=\"mt-2\" *ngIf=\"toast.type === ToastType.ERROR\">\n <a class=\"color-secondary\" href=\"#\" (click)=\"reload()\">Seite neu laden</a>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".toast{border-radius:0;border:0}.toast a{text-decoration:none;font-weight:600}.toast .toast-header{border-radius:0}.error .toast-header{background-color:var(--bs-danger);color:var(--bs-white)}.warning .toast-header{background-color:var(--bs-warning);color:var(--bs-white)}.info .toast-header{background-color:var(--bs-info);color:var(--bs-white)}\n"] }]
|
|
60
|
+
}], ctorParameters: function () { return [{ type: i1.ToastService }]; } });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLWNvbXBvbmVudHMvY29tcG9uZW50cy90b2FzdC90b2FzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9jb21wb25lbnRzL3RvYXN0L3RvYXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQXVCLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBRTVFLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtJQUMvQyxVQUFVLENBQUMsU0FBUyxFQUFFO1FBQ3BCLEtBQUssQ0FDSCxRQUFRLEVBQ1IsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzVHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUNuQjtRQUNELEtBQUssQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDeEcsQ0FBQztDQUNILENBQUMsQ0FBQztBQVFILE1BQU0sT0FBTyxjQUFjO0lBS3pCLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBSjlDLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFDckIsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN0QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFYyxDQUFDO0lBRWxELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7WUFDN0MsSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDdEIsQ0FBQztTQUNGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBWTtRQUMxQixRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbEIsS0FBSyxTQUFTLENBQUMsS0FBSztnQkFDbEIsT0FBTyxnQ0FBZ0MsQ0FBQztZQUMxQyxLQUFLLFNBQVMsQ0FBQyxJQUFJO2dCQUNqQixPQUFPLE1BQU0sQ0FBQztZQUNoQixLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUNwQixPQUFPLFNBQVMsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFZO1FBQ2hDLFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNsQixLQUFLLFNBQVMsQ0FBQyxLQUFLO2dCQUNsQixPQUFPLDBFQUEwRSxHQUFHLHlCQUF5QixDQUFDO1lBQ2hILEtBQUssU0FBUyxDQUFDLElBQUk7Z0JBQ2pCLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ3BCLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7MkdBN0NVLGNBQWM7K0ZBQWQsY0FBYyxrREN0QjNCLHFpQ0E0QkEsNG9CRFJjLENBQUMsY0FBYyxDQUFDOzJGQUVqQixjQUFjO2tCQU4xQixTQUFTOytCQUNFLFlBQVksY0FHVixDQUFDLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFuaW1hdGUsIHF1ZXJ5LCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUb2FzdCwgVG9hc3RTZXJ2aWNlLCBUb2FzdFR5cGUgfSBmcm9tICdAbGVubmUudGVjaC9uZy1iYXNlL3NoYXJlZCc7XG5cbmNvbnN0IHRvYXN0QW5pbWF0aW9uID0gdHJpZ2dlcigndG9hc3RBbmltYXRpb24nLCBbXG4gIHRyYW5zaXRpb24oJyogPD0+IConLCBbXG4gICAgcXVlcnkoXG4gICAgICAnOmVudGVyJyxcbiAgICAgIFtzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pLCBhbmltYXRlKCcyMDBtcyBlYXNlLWluJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDAlKScgfSkpXSxcbiAgICAgIHsgb3B0aW9uYWw6IHRydWUgfVxuICAgICksXG4gICAgcXVlcnkoJzpsZWF2ZScsIGFuaW1hdGUoJzIwMG1zIGVhc2UtaW4nLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pKSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcbiAgXSksXG5dKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFzZS10b2FzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90b2FzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RvYXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFt0b2FzdEFuaW1hdGlvbl0sXG59KVxuZXhwb3J0IGNsYXNzIFRvYXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICB0b2FzdHM6IFRvYXN0W10gPSBbXTtcbiAgVG9hc3RUeXBlID0gVG9hc3RUeXBlO1xuICBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnRvYXN0c0FzT2JzZXJ2YWJsZS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLnRvYXN0cyA9IHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnZXREZWZhdWx0VGl0bGUodG9hc3Q6IFRvYXN0KTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRvYXN0LnR5cGUpIHtcbiAgICAgIGNhc2UgVG9hc3RUeXBlLkVSUk9SOlxuICAgICAgICByZXR1cm4gJ0lyZ2VuZGV0d2FzIGlzdCBzY2hpZWZnZWxhdWZlbic7XG4gICAgICBjYXNlIFRvYXN0VHlwZS5JTkZPOlxuICAgICAgICByZXR1cm4gJ0luZm8nO1xuICAgICAgY2FzZSBUb2FzdFR5cGUuV0FSTklORzpcbiAgICAgICAgcmV0dXJuICdBY2h0dW5nJztcbiAgICB9XG4gIH1cblxuICBnZXREZWZhdWx0RGVzY3JpcHRpb24odG9hc3Q6IFRvYXN0KTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRvYXN0LnR5cGUpIHtcbiAgICAgIGNhc2UgVG9hc3RUeXBlLkVSUk9SOlxuICAgICAgICByZXR1cm4gJ1NvbGx0ZSBkYXMgUHJvYmxlbSBsw6RuZ2VyIGJlc3RlaGVuIGJsZWliZW4sIGRhbm4gd2VuZGVuIFNpZSBzaWNoIGJpdHRlXFxuJyArICcgICAgICAgIGFuIGRlbiBTdXBwb3J0Lic7XG4gICAgICBjYXNlIFRvYXN0VHlwZS5JTkZPOlxuICAgICAgICByZXR1cm4gJ0luZm8nO1xuICAgICAgY2FzZSBUb2FzdFR5cGUuV0FSTklORzpcbiAgICAgICAgcmV0dXJuICdXYXJuaW5nJztcbiAgICB9XG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwb3NpdGlvbi1maXhlZCBib3R0b20tMCBlbmQtMCBwLTNcIiBzdHlsZT1cInotaW5kZXg6IDk5OVwiPlxuICA8ZGl2IGNsYXNzPVwidG9hc3QtY29udGFpbmVyXCIgW0B0b2FzdEFuaW1hdGlvbl09XCJ0b2FzdHMubGVuZ3RoXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJ0b2FzdCBzaG93XCJcbiAgICAgIHJvbGU9XCJhbGVydFwiXG4gICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIlxuICAgICAgYXJpYS1hdG9taWM9XCJ0cnVlXCJcbiAgICAgICpuZ0Zvcj1cImxldCB0b2FzdCBvZiB0b2FzdHNcIlxuICAgICAgW25nQ2xhc3NdPVwidG9hc3QudHlwZVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWhlYWRlclwiPlxuICAgICAgICA8c3Ryb25nIGNsYXNzPVwibWUtYXV0b1wiPnt7IHRvYXN0Py50aXRsZSA/PyBnZXREZWZhdWx0VGl0bGUodG9hc3QpIH19PC9zdHJvbmc+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlIGJ0bi1jbG9zZS13aGl0ZVwiIGRhdGEtYnMtZGlzbWlzcz1cInRvYXN0XCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1ib2R5XCI+XG4gICAgICAgIHt7IHRvYXN0Py5kZXNjcmlwdGlvbiA/PyBnZXREZWZhdWx0RGVzY3JpcHRpb24odG9hc3QpIH19XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIiAqbmdJZj1cInRvYXN0Py5lcnJvckNvZGVcIj5cbiAgICAgICAgICA8Y29kZT5FUlJPUjoge3sgdG9hc3QuZXJyb3JDb2RlIH19PC9jb2RlPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiICpuZ0lmPVwidG9hc3QudHlwZSA9PT0gVG9hc3RUeXBlLkVSUk9SXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJjb2xvci1zZWNvbmRhcnlcIiBocmVmPVwiI1wiIChjbGljayk9XCJyZWxvYWQoKVwiPlNlaXRlIG5ldSBsYWRlbjwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -8,4 +8,9 @@ export * from './components/input/input.component';
|
|
|
8
8
|
export * from './components/select/select.component';
|
|
9
9
|
export * from './components/checkbox/checkbox.component';
|
|
10
10
|
export * from './components/textarea/textarea.component';
|
|
11
|
-
|
|
11
|
+
export * from './components/tags/tags.component';
|
|
12
|
+
export * from './components/toast/toast.component';
|
|
13
|
+
export * from './components/loading-bar/loading-bar.component';
|
|
14
|
+
export * from './components/skeleton-loader/skeleton-loader.component';
|
|
15
|
+
export * from './components/breadcrumb/breadcrumb.component';
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1jb21wb25lbnRzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxTQUFTO0FBQ1QsY0FBYywwQkFBMEIsQ0FBQztBQUV6QyxhQUFhO0FBQ2IsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsOENBQThDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEV4cG9ydHMgZm9yIHB1YmxpYyBBUElcbiAqL1xuXG4vLyBNb2R1bGVcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1jb21wb25lbnRzLm1vZHVsZSc7XG5cbi8vIENvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdGFncy90YWdzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvdG9hc3QvdG9hc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9sb2FkaW5nLWJhci9sb2FkaW5nLWJhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL3NrZWxldG9uLWxvYWRlci9za2VsZXRvbi1sb2FkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50JztcbiJdfQ==
|
|
@@ -2,13 +2,14 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
import { RouterModule } from '@angular/router';
|
|
5
|
+
import { BaseComponentsModule } from '@lenne.tech/ng-base/base-components';
|
|
5
6
|
import { LoginComponent } from './pages/login/login.component';
|
|
6
7
|
import { RegisterComponent } from './pages/register/register.component';
|
|
7
|
-
import { BaseComponentsModule } from '@lenne.tech/ng-base/base-components';
|
|
8
8
|
import { ForgotPasswordComponent } from './pages/forgot-password/forgot-password.component';
|
|
9
|
+
import { BaseModule } from '@lenne.tech/ng-base';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
// Modules
|
|
11
|
-
const imports = [FormsModule, RouterModule, ReactiveFormsModule, CommonModule, BaseComponentsModule];
|
|
12
|
+
const imports = [BaseModule, FormsModule, RouterModule, ReactiveFormsModule, CommonModule, BaseComponentsModule];
|
|
12
13
|
// Imported and exported elements
|
|
13
14
|
const elements = [
|
|
14
15
|
// Components
|
|
@@ -23,7 +24,7 @@ BasePrototypeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ver
|
|
|
23
24
|
// Components
|
|
24
25
|
LoginComponent,
|
|
25
26
|
RegisterComponent,
|
|
26
|
-
ForgotPasswordComponent], imports: [FormsModule, RouterModule, ReactiveFormsModule, CommonModule, BaseComponentsModule], exports: [
|
|
27
|
+
ForgotPasswordComponent], imports: [BaseModule, FormsModule, RouterModule, ReactiveFormsModule, CommonModule, BaseComponentsModule], exports: [
|
|
27
28
|
// Components
|
|
28
29
|
LoginComponent,
|
|
29
30
|
RegisterComponent,
|
|
@@ -37,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
37
38
|
exports: elements,
|
|
38
39
|
}]
|
|
39
40
|
}] });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcm90b3R5cGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLXByb3RvdHlwZS9iYXNlLXByb3RvdHlwZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUVqRCxVQUFVO0FBQ1YsTUFBTSxPQUFPLEdBQUcsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQUVqSCxpQ0FBaUM7QUFDakMsTUFBTSxRQUFRLEdBQUc7SUFDZixhQUFhO0lBQ2IsY0FBYztJQUNkLGlCQUFpQjtJQUNqQix1QkFBdUI7Q0FDeEIsQ0FBQztBQU9GLE1BQU0sT0FBTyxtQkFBbUI7O2dIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQjtRQVg5QixhQUFhO1FBQ2IsY0FBYztRQUNkLGlCQUFpQjtRQUNqQix1QkFBdUIsYUFQUixVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsb0JBQW9CO1FBSTdHLGFBQWE7UUFDYixjQUFjO1FBQ2QsaUJBQWlCO1FBQ2pCLHVCQUF1QjtpSEFRWixtQkFBbUIsWUFIOUIsT0FBTzsyRkFHSSxtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLFFBQVE7b0JBQ3RCLE9BQU87b0JBQ1AsT0FBTyxFQUFFLFFBQVE7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEJhc2VDb21wb25lbnRzTW9kdWxlIH0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZS9iYXNlLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTG9naW5Db21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL2xvZ2luL2xvZ2luLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWdpc3RlckNvbXBvbmVudCB9IGZyb20gJy4vcGFnZXMvcmVnaXN0ZXIvcmVnaXN0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcmdvdFBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdlcy9mb3Jnb3QtcGFzc3dvcmQvZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNlTW9kdWxlIH0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZSc7XG5cbi8vIE1vZHVsZXNcbmNvbnN0IGltcG9ydHMgPSBbQmFzZU1vZHVsZSwgRm9ybXNNb2R1bGUsIFJvdXRlck1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQ29tbW9uTW9kdWxlLCBCYXNlQ29tcG9uZW50c01vZHVsZV07XG5cbi8vIEltcG9ydGVkIGFuZCBleHBvcnRlZCBlbGVtZW50c1xuY29uc3QgZWxlbWVudHMgPSBbXG4gIC8vIENvbXBvbmVudHNcbiAgTG9naW5Db21wb25lbnQsXG4gIFJlZ2lzdGVyQ29tcG9uZW50LFxuICBGb3Jnb3RQYXNzd29yZENvbXBvbmVudCxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogZWxlbWVudHMsXG4gIGltcG9ydHMsXG4gIGV4cG9ydHM6IGVsZW1lbnRzLFxufSlcbmV4cG9ydCBjbGFzcyBCYXNlUHJvdG90eXBlTW9kdWxlIHt9XG4iXX0=
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
2
|
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@lenne.tech/ng-base";
|
|
5
|
-
import * as i2 from "@
|
|
6
|
-
import * as i3 from "@
|
|
4
|
+
import * as i1 from "@lenne.tech/ng-base/shared";
|
|
5
|
+
import * as i2 from "@angular/router";
|
|
6
|
+
import * as i3 from "@lenne.tech/ng-base/base-components";
|
|
7
|
+
import * as i4 from "@angular/forms";
|
|
8
|
+
import * as i5 from "@angular/common";
|
|
7
9
|
export class ForgotPasswordComponent {
|
|
8
|
-
constructor(formsService) {
|
|
10
|
+
constructor(formsService, userService, router) {
|
|
9
11
|
this.formsService = formsService;
|
|
12
|
+
this.userService = userService;
|
|
13
|
+
this.router = router;
|
|
10
14
|
}
|
|
11
15
|
ngOnInit() {
|
|
12
16
|
this.createForm();
|
|
@@ -23,16 +27,33 @@ export class ForgotPasswordComponent {
|
|
|
23
27
|
* Submit form
|
|
24
28
|
*/
|
|
25
29
|
submit() {
|
|
30
|
+
this.loading = true;
|
|
26
31
|
if (this.form.invalid) {
|
|
27
32
|
this.formsService.validateAllFormFields(this.form);
|
|
33
|
+
this.loading = false;
|
|
28
34
|
return;
|
|
29
35
|
}
|
|
36
|
+
this.userService.requestPasswordResetMail(this.form.get('email').value).subscribe({
|
|
37
|
+
next: (response) => {
|
|
38
|
+
if (response) {
|
|
39
|
+
this.router.navigate(['/']);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
43
|
+
}
|
|
44
|
+
this.loading = false;
|
|
45
|
+
},
|
|
46
|
+
error: () => {
|
|
47
|
+
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
48
|
+
this.loading = false;
|
|
49
|
+
},
|
|
50
|
+
});
|
|
30
51
|
}
|
|
31
52
|
}
|
|
32
|
-
ForgotPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ForgotPasswordComponent, deps: [{ token: i1.FormsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
-
ForgotPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ForgotPasswordComponent, selector: "base-forgot-password", ngImport: i0, template: "<div class=\"d-flex justify-content-center align-items-center
|
|
53
|
+
ForgotPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ForgotPasswordComponent, deps: [{ token: i1.FormsService }, { token: i1.UserService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
+
ForgotPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ForgotPasswordComponent, selector: "base-forgot-password", ngImport: i0, template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column forgot-container\">\n <div class=\"container\">\n <form [formGroup]=\"form\">\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"error\">\n {{ error }}\n </div>\n <base-input\n [id]=\"'email'\"\n [name]=\"'email'\"\n [label]=\"'E-Mail Adresse'\"\n [type]=\"'email'\"\n [autocomplete]=\"'email'\"\n [control]=\"form.get('email')\"\n ></base-input>\n <div class=\"d-grid gap-2 text-center\">\n <button class=\"btn btn-primary\" (click)=\"submit()\" *ngIf=\"!loading\">E-Mail senden</button>\n <button class=\"btn btn-primary\" type=\"button\" disabled *ngIf=\"loading\">\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n Loading...\n </button>\n <hr />\n <a routerLink=\"../login\">Bereits ein Konto? Dann logge Dich hier ein!</a>\n <a routerLink=\"../registrieren\">Noch kein Konto? Dann registiere Dich jetzt!</a>\n </div>\n </form>\n </div>\n </div>\n</div>\n", styles: [".forgot-container{width:100%;padding:20px 0}@media (min-width: 768px){.forgot-container{max-width:400px}}\n"], components: [{ type: i3.InputComponent, selector: "base-input", inputs: ["id", "name", "label", "placeholder", "autocomplete", "tabIndex", "control", "type", "required"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }] });
|
|
34
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
|
|
35
56
|
type: Component,
|
|
36
|
-
args: [{ selector: 'base-forgot-password', template: "<div class=\"d-flex justify-content-center align-items-center
|
|
37
|
-
}], ctorParameters: function () { return [{ type: i1.FormsService }]; } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
args: [{ selector: 'base-forgot-password', template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column forgot-container\">\n <div class=\"container\">\n <form [formGroup]=\"form\">\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"error\">\n {{ error }}\n </div>\n <base-input\n [id]=\"'email'\"\n [name]=\"'email'\"\n [label]=\"'E-Mail Adresse'\"\n [type]=\"'email'\"\n [autocomplete]=\"'email'\"\n [control]=\"form.get('email')\"\n ></base-input>\n <div class=\"d-grid gap-2 text-center\">\n <button class=\"btn btn-primary\" (click)=\"submit()\" *ngIf=\"!loading\">E-Mail senden</button>\n <button class=\"btn btn-primary\" type=\"button\" disabled *ngIf=\"loading\">\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n Loading...\n </button>\n <hr />\n <a routerLink=\"../login\">Bereits ein Konto? Dann logge Dich hier ein!</a>\n <a routerLink=\"../registrieren\">Noch kein Konto? Dann registiere Dich jetzt!</a>\n </div>\n </form>\n </div>\n </div>\n</div>\n", styles: [".forgot-container{width:100%;padding:20px 0}@media (min-width: 768px){.forgot-container{max-width:400px}}\n"] }]
|
|
58
|
+
}], ctorParameters: function () { return [{ type: i1.FormsService }, { type: i1.UserService }, { type: i2.Router }]; } });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWJhc2UvYmFzZS1wcm90b3R5cGUvcGFnZXMvZm9yZ290LXBhc3N3b3JkL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtcHJvdG90eXBlL3BhZ2VzL2ZvcmdvdC1wYXNzd29yZC9mb3Jnb3QtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVNwRSxNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLFlBQW9CLFlBQTBCLEVBQVUsV0FBd0IsRUFBVSxNQUFjO1FBQXBGLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUU1RyxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ3hCLEtBQUssRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNoRixJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxRQUFRLEVBQUU7b0JBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUM3QjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLDREQUE0RCxDQUFDO2lCQUMzRTtnQkFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN2QixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsS0FBSyxHQUFHLDREQUE0RCxDQUFDO2dCQUMxRSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN2QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7b0hBOUNVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDREQ1ZwQywyc0NBNkJBOzJGRG5CYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3Jtc1NlcnZpY2UsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZS9zaGFyZWQnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFzZS1mb3Jnb3QtcGFzc3dvcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcmdvdFBhc3N3b3JkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZm9ybTogRm9ybUdyb3VwO1xuICBlcnJvcjogc3RyaW5nO1xuICBsb2FkaW5nOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybXNTZXJ2aWNlOiBGb3Jtc1NlcnZpY2UsIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBsb2dpbiBmb3JtXG4gICAqL1xuICBjcmVhdGVGb3JtKCkge1xuICAgIHRoaXMuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgZW1haWw6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJtaXQgZm9ybVxuICAgKi9cbiAgc3VibWl0KCkge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcbiAgICAgIHRoaXMuZm9ybXNTZXJ2aWNlLnZhbGlkYXRlQWxsRm9ybUZpZWxkcyh0aGlzLmZvcm0pO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51c2VyU2VydmljZS5yZXF1ZXN0UGFzc3dvcmRSZXNldE1haWwodGhpcy5mb3JtLmdldCgnZW1haWwnKS52YWx1ZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lcnJvciA9ICdFdHdhcyBpc3Qgc2NoaWVmZ2VsYXVmZW4uIEJpdHRlIHByb2JpZXJlIGVzIHNww6R0ZXIgZXJuZXV0Lic7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5lcnJvciA9ICdFdHdhcyBpc3Qgc2NoaWVmZ2VsYXVmZW4uIEJpdHRlIHByb2JpZXJlIGVzIHNww6R0ZXIgZXJuZXV0Lic7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBoLTEwMCBweS01XCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZm9yZ290LWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCIgcm9sZT1cImFsZXJ0XCIgKm5nSWY9XCJlcnJvclwiPlxuICAgICAgICAgIHt7IGVycm9yIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YmFzZS1pbnB1dFxuICAgICAgICAgIFtpZF09XCInZW1haWwnXCJcbiAgICAgICAgICBbbmFtZV09XCInZW1haWwnXCJcbiAgICAgICAgICBbbGFiZWxdPVwiJ0UtTWFpbCBBZHJlc3NlJ1wiXG4gICAgICAgICAgW3R5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInZW1haWwnXCJcbiAgICAgICAgICBbY29udHJvbF09XCJmb3JtLmdldCgnZW1haWwnKVwiXG4gICAgICAgID48L2Jhc2UtaW5wdXQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWdyaWQgZ2FwLTIgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInN1Ym1pdCgpXCIgKm5nSWY9XCIhbG9hZGluZ1wiPkUtTWFpbCBzZW5kZW48L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIGRpc2FibGVkICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICBMb2FkaW5nLi4uXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgPGEgcm91dGVyTGluaz1cIi4uL2xvZ2luXCI+QmVyZWl0cyBlaW4gS29udG8/IERhbm4gbG9nZ2UgRGljaCBoaWVyIGVpbiE8L2E+XG4gICAgICAgICAgPGEgcm91dGVyTGluaz1cIi4uL3JlZ2lzdHJpZXJlblwiPk5vY2gga2VpbiBLb250bz8gRGFubiByZWdpc3RpZXJlIERpY2ggamV0enQhPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
2
|
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@lenne.tech/ng-base";
|
|
5
|
-
import * as i2 from "@
|
|
6
|
-
import * as i3 from "@
|
|
4
|
+
import * as i1 from "@lenne.tech/ng-base/shared";
|
|
5
|
+
import * as i2 from "@angular/router";
|
|
6
|
+
import * as i3 from "@lenne.tech/ng-base/base-components";
|
|
7
|
+
import * as i4 from "@angular/forms";
|
|
8
|
+
import * as i5 from "@angular/common";
|
|
7
9
|
export class LoginComponent {
|
|
8
|
-
constructor(formsService) {
|
|
10
|
+
constructor(formsService, userService, router) {
|
|
9
11
|
this.formsService = formsService;
|
|
12
|
+
this.userService = userService;
|
|
13
|
+
this.router = router;
|
|
10
14
|
}
|
|
11
15
|
ngOnInit() {
|
|
12
16
|
this.createForm();
|
|
@@ -24,16 +28,49 @@ export class LoginComponent {
|
|
|
24
28
|
* Submit login form
|
|
25
29
|
*/
|
|
26
30
|
submit() {
|
|
31
|
+
this.error = '';
|
|
32
|
+
this.loading = true;
|
|
27
33
|
if (this.form.invalid) {
|
|
28
34
|
this.formsService.validateAllFormFields(this.form);
|
|
35
|
+
this.scrollToTop();
|
|
36
|
+
this.loading = false;
|
|
29
37
|
return;
|
|
30
38
|
}
|
|
39
|
+
this.userService.login(this.form.value).subscribe({
|
|
40
|
+
next: (response) => {
|
|
41
|
+
if (response) {
|
|
42
|
+
this.router.navigate(['/main']);
|
|
43
|
+
this.form.reset();
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
47
|
+
this.scrollToTop();
|
|
48
|
+
}
|
|
49
|
+
this.loading = false;
|
|
50
|
+
},
|
|
51
|
+
error: (error) => {
|
|
52
|
+
this.error = 'Etwas ist schiefgelaufen. Bitte probiere es später erneut.';
|
|
53
|
+
// Wrong password
|
|
54
|
+
if (error?.message?.includes('Unauthorized')) {
|
|
55
|
+
this.error = 'Dein Passwort ist leider falsch. Bitte überprüfe deine Eingabe!';
|
|
56
|
+
}
|
|
57
|
+
// User not found
|
|
58
|
+
if (error?.message?.includes('Not user found')) {
|
|
59
|
+
this.error = 'Es konnte kein Konto mit der E-Mail gefunden werden. Bitte gib eine gültige E-Mail ein!';
|
|
60
|
+
}
|
|
61
|
+
this.scrollToTop();
|
|
62
|
+
this.loading = false;
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
scrollToTop() {
|
|
67
|
+
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
31
68
|
}
|
|
32
69
|
}
|
|
33
|
-
LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: LoginComponent, deps: [{ token: i1.FormsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
-
LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: LoginComponent, selector: "base-login", ngImport: i0, template: "<div class=\"d-flex justify-content-center align-items-center
|
|
70
|
+
LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: LoginComponent, deps: [{ token: i1.FormsService }, { token: i1.UserService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
71
|
+
LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: LoginComponent, selector: "base-login", ngImport: i0, template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column login-container\">\n <div class=\"container\">\n <form [formGroup]=\"form\">\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"error\">\n {{ error }}\n </div>\n <base-input\n [id]=\"'email'\"\n [name]=\"'email'\"\n [label]=\"'E-Mail Adresse'\"\n [type]=\"'email'\"\n [control]=\"form.get('email')\"\n [autocomplete]=\"'email'\"\n ></base-input>\n <base-input\n [id]=\"'password'\"\n [name]=\"'password'\"\n [label]=\"'Passwort'\"\n [type]=\"'password'\"\n [autocomplete]=\"'current-password'\"\n [control]=\"form.get('password')\"\n ></base-input>\n <div class=\"d-grid gap-2 text-center\">\n <button class=\"btn btn-primary\" (click)=\"submit()\" *ngIf=\"!loading\">Einloggen</button>\n <button class=\"btn btn-primary\" type=\"button\" disabled *ngIf=\"loading\">\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n Loading...\n </button>\n <hr />\n <a routerLink=\"../passwort-vergessen\">Passwort vergessen</a>\n <a routerLink=\"../registrieren\">Noch kein Konto? Dann registiere Dich jetzt!</a>\n </div>\n </form>\n </div>\n </div>\n</div>\n", styles: [".login-container{width:100%;padding:20px 0}@media (min-width: 768px){.login-container{max-width:400px}}\n"], components: [{ type: i3.InputComponent, selector: "base-input", inputs: ["id", "name", "label", "placeholder", "autocomplete", "tabIndex", "control", "type", "required"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }] });
|
|
35
72
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: LoginComponent, decorators: [{
|
|
36
73
|
type: Component,
|
|
37
|
-
args: [{ selector: 'base-login', template: "<div class=\"d-flex justify-content-center align-items-center
|
|
38
|
-
}], ctorParameters: function () { return [{ type: i1.FormsService }]; } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
args: [{ selector: 'base-login', template: "<div class=\"d-flex justify-content-center align-items-center h-100 py-5\">\n <div class=\"d-flex flex-column login-container\">\n <div class=\"container\">\n <form [formGroup]=\"form\">\n <div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"error\">\n {{ error }}\n </div>\n <base-input\n [id]=\"'email'\"\n [name]=\"'email'\"\n [label]=\"'E-Mail Adresse'\"\n [type]=\"'email'\"\n [control]=\"form.get('email')\"\n [autocomplete]=\"'email'\"\n ></base-input>\n <base-input\n [id]=\"'password'\"\n [name]=\"'password'\"\n [label]=\"'Passwort'\"\n [type]=\"'password'\"\n [autocomplete]=\"'current-password'\"\n [control]=\"form.get('password')\"\n ></base-input>\n <div class=\"d-grid gap-2 text-center\">\n <button class=\"btn btn-primary\" (click)=\"submit()\" *ngIf=\"!loading\">Einloggen</button>\n <button class=\"btn btn-primary\" type=\"button\" disabled *ngIf=\"loading\">\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n Loading...\n </button>\n <hr />\n <a routerLink=\"../passwort-vergessen\">Passwort vergessen</a>\n <a routerLink=\"../registrieren\">Noch kein Konto? Dann registiere Dich jetzt!</a>\n </div>\n </form>\n </div>\n </div>\n</div>\n", styles: [".login-container{width:100%;padding:20px 0}@media (min-width: 768px){.login-container{max-width:400px}}\n"] }]
|
|
75
|
+
}], ctorParameters: function () { return [{ type: i1.FormsService }, { type: i1.UserService }, { type: i2.Router }]; } });
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9iYXNlLXByb3RvdHlwZS9wYWdlcy9sb2dpbi9sb2dpbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtcHJvdG90eXBlL3BhZ2VzL2xvZ2luL2xvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUFTcEUsTUFBTSxPQUFPLGNBQWM7SUFLekIsWUFBb0IsWUFBMEIsRUFBVSxXQUF3QixFQUFVLE1BQWM7UUFBcEYsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBRyxDQUFDO0lBRTVHLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDeEIsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25FLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUNuRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDaEQsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksUUFBUSxFQUFFO29CQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDbkI7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyw0REFBNEQsQ0FBQztvQkFDMUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2lCQUNwQjtnQkFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN2QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyw0REFBNEQsQ0FBQztnQkFFMUUsaUJBQWlCO2dCQUNqQixJQUFJLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFO29CQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLGlFQUFpRSxDQUFDO2lCQUNoRjtnQkFFRCxpQkFBaUI7Z0JBQ2pCLElBQUksS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtvQkFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyx5RkFBeUYsQ0FBQztpQkFDeEc7Z0JBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN2QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDOzsyR0FuRVUsY0FBYzsrRkFBZCxjQUFjLGtEQ1YzQix3OENBcUNBOzJGRDNCYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3Jtc1NlcnZpY2UsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGxlbm5lLnRlY2gvbmctYmFzZS9zaGFyZWQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdiYXNlLWxvZ2luJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2luLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9naW4uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBmb3JtOiBGb3JtR3JvdXA7XG4gIGVycm9yOiBzdHJpbmc7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3Jtc1NlcnZpY2U6IEZvcm1zU2VydmljZSwgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGxvZ2luIGZvcm1cbiAgICovXG4gIGNyZWF0ZUZvcm0oKSB7XG4gICAgdGhpcy5mb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICBlbWFpbDogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF0pLFxuICAgICAgcGFzc3dvcmQ6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3VibWl0IGxvZ2luIGZvcm1cbiAgICovXG4gIHN1Ym1pdCgpIHtcbiAgICB0aGlzLmVycm9yID0gJyc7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgdGhpcy5mb3Jtc1NlcnZpY2UudmFsaWRhdGVBbGxGb3JtRmllbGRzKHRoaXMuZm9ybSk7XG4gICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmxvZ2luKHRoaXMuZm9ybS52YWx1ZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYWluJ10pO1xuICAgICAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSAnRXR3YXMgaXN0IHNjaGllZmdlbGF1ZmVuLiBCaXR0ZSBwcm9iaWVyZSBlcyBzcMOkdGVyIGVybmV1dC4nO1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSAnRXR3YXMgaXN0IHNjaGllZmdlbGF1ZmVuLiBCaXR0ZSBwcm9iaWVyZSBlcyBzcMOkdGVyIGVybmV1dC4nO1xuXG4gICAgICAgIC8vIFdyb25nIHBhc3N3b3JkXG4gICAgICAgIGlmIChlcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ1VuYXV0aG9yaXplZCcpKSB7XG4gICAgICAgICAgdGhpcy5lcnJvciA9ICdEZWluIFBhc3N3b3J0IGlzdCBsZWlkZXIgZmFsc2NoLiBCaXR0ZSDDvGJlcnByw7xmZSBkZWluZSBFaW5nYWJlISc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2VyIG5vdCBmb3VuZFxuICAgICAgICBpZiAoZXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdOb3QgdXNlciBmb3VuZCcpKSB7XG4gICAgICAgICAgdGhpcy5lcnJvciA9ICdFcyBrb25udGUga2VpbiBLb250byBtaXQgZGVyIEUtTWFpbCBnZWZ1bmRlbiB3ZXJkZW4uIEJpdHRlIGdpYiBlaW5lIGfDvGx0aWdlIEUtTWFpbCBlaW4hJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AoKSB7XG4gICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgaC0xMDAgcHktNVwiPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGxvZ2luLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyXCIgcm9sZT1cImFsZXJ0XCIgKm5nSWY9XCJlcnJvclwiPlxuICAgICAgICAgIHt7IGVycm9yIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YmFzZS1pbnB1dFxuICAgICAgICAgIFtpZF09XCInZW1haWwnXCJcbiAgICAgICAgICBbbmFtZV09XCInZW1haWwnXCJcbiAgICAgICAgICBbbGFiZWxdPVwiJ0UtTWFpbCBBZHJlc3NlJ1wiXG4gICAgICAgICAgW3R5cGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgICAgW2NvbnRyb2xdPVwiZm9ybS5nZXQoJ2VtYWlsJylcIlxuICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiJ2VtYWlsJ1wiXG4gICAgICAgID48L2Jhc2UtaW5wdXQ+XG4gICAgICAgIDxiYXNlLWlucHV0XG4gICAgICAgICAgW2lkXT1cIidwYXNzd29yZCdcIlxuICAgICAgICAgIFtuYW1lXT1cIidwYXNzd29yZCdcIlxuICAgICAgICAgIFtsYWJlbF09XCInUGFzc3dvcnQnXCJcbiAgICAgICAgICBbdHlwZV09XCIncGFzc3dvcmQnXCJcbiAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIidjdXJyZW50LXBhc3N3b3JkJ1wiXG4gICAgICAgICAgW2NvbnRyb2xdPVwiZm9ybS5nZXQoJ3Bhc3N3b3JkJylcIlxuICAgICAgICA+PC9iYXNlLWlucHV0PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ncmlkIGdhcC0yIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzdWJtaXQoKVwiICpuZ0lmPVwiIWxvYWRpbmdcIj5FaW5sb2dnZW48L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgdHlwZT1cImJ1dHRvblwiIGRpc2FibGVkICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICBMb2FkaW5nLi4uXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgPGEgcm91dGVyTGluaz1cIi4uL3Bhc3N3b3J0LXZlcmdlc3NlblwiPlBhc3N3b3J0IHZlcmdlc3NlbjwvYT5cbiAgICAgICAgICA8YSByb3V0ZXJMaW5rPVwiLi4vcmVnaXN0cmllcmVuXCI+Tm9jaCBrZWluIEtvbnRvPyBEYW5uIHJlZ2lzdGllcmUgRGljaCBqZXR6dCE8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|