@lenne.tech/ng-base 13.10.3 → 13.11.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/components/tags/tags.component.d.ts +2 -6
- package/esm2020/base-components/components/tags/tags.component.mjs +8 -21
- package/esm2020/shared/classes/graphql-meta.class.mjs +44 -1
- package/fesm2015/lenne.tech-ng-base-base-components.mjs +7 -21
- package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +1 -1
- package/fesm2015/lenne.tech-ng-base-shared.mjs +43 -0
- package/fesm2015/lenne.tech-ng-base-shared.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-base-components.mjs +7 -20
- package/fesm2020/lenne.tech-ng-base-base-components.mjs.map +1 -1
- package/fesm2020/lenne.tech-ng-base-shared.mjs +43 -0
- package/fesm2020/lenne.tech-ng-base-shared.mjs.map +1 -1
- package/package.json +1 -1
- package/shared/classes/graphql-meta.class.d.ts +14 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
|
2
1
|
import { AbstractControl, FormControl } from '@angular/forms';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class TagsComponent
|
|
3
|
+
export declare class TagsComponent {
|
|
5
4
|
id: string;
|
|
6
5
|
name: string;
|
|
7
6
|
label?: string;
|
|
@@ -14,10 +13,7 @@ export declare class TagsComponent implements OnInit, OnChanges {
|
|
|
14
13
|
removeByKey: boolean;
|
|
15
14
|
required: boolean;
|
|
16
15
|
inputValue: string;
|
|
17
|
-
filteredOptions: string[];
|
|
18
16
|
selectedElement: HTMLElement;
|
|
19
|
-
ngOnInit(): void;
|
|
20
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
21
17
|
/**
|
|
22
18
|
* Listen to enter keys
|
|
23
19
|
*
|
|
@@ -39,7 +35,7 @@ export declare class TagsComponent implements OnInit, OnChanges {
|
|
|
39
35
|
/**
|
|
40
36
|
* Filter options for drop down
|
|
41
37
|
*/
|
|
42
|
-
|
|
38
|
+
filterOptions(): string[];
|
|
43
39
|
/**
|
|
44
40
|
* Show dropdown focus
|
|
45
41
|
*
|
|
@@ -11,15 +11,6 @@ export class TagsComponent {
|
|
|
11
11
|
this.removeByKey = true;
|
|
12
12
|
this.required = false;
|
|
13
13
|
this.inputValue = '';
|
|
14
|
-
this.filteredOptions = [];
|
|
15
|
-
}
|
|
16
|
-
ngOnInit() {
|
|
17
|
-
this.setFilteredOptions();
|
|
18
|
-
}
|
|
19
|
-
ngOnChanges(changes) {
|
|
20
|
-
if (changes['options']?.currentValue && changes['options']?.currentValue?.length > 0) {
|
|
21
|
-
this.setFilteredOptions();
|
|
22
|
-
}
|
|
23
14
|
}
|
|
24
15
|
/**
|
|
25
16
|
* Listen to enter keys
|
|
@@ -85,11 +76,10 @@ export class TagsComponent {
|
|
|
85
76
|
/**
|
|
86
77
|
* Filter options for drop down
|
|
87
78
|
*/
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
this.
|
|
91
|
-
|
|
92
|
-
}
|
|
79
|
+
filterOptions() {
|
|
80
|
+
return this.options
|
|
81
|
+
? this.options.filter((e) => e?.includes(this.inputValue) && !this.control.value.includes(e))
|
|
82
|
+
: [];
|
|
93
83
|
}
|
|
94
84
|
/**
|
|
95
85
|
* Show dropdown focus
|
|
@@ -97,24 +87,21 @@ export class TagsComponent {
|
|
|
97
87
|
* @param event
|
|
98
88
|
*/
|
|
99
89
|
onFocus(event) {
|
|
100
|
-
if (!this.filteredOptions) {
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
90
|
if (event) {
|
|
104
91
|
this.selectedElement = event.target;
|
|
105
92
|
}
|
|
106
93
|
else {
|
|
107
94
|
setTimeout(() => {
|
|
108
95
|
this.selectedElement = null;
|
|
109
|
-
},
|
|
96
|
+
}, 250);
|
|
110
97
|
}
|
|
111
98
|
}
|
|
112
99
|
}
|
|
113
100
|
TagsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: TagsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
114
|
-
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", options: "options", custom: "custom", removeByKey: "removeByKey", required: "required" },
|
|
101
|
+
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", options: "options", custom: "custom", removeByKey: "removeByKey", required: "required" }, ngImport: i0, template: "<div class=\"form-group position-relative\" *ngIf=\"control\">\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 (focus)=\"onFocus($event)\"\n (blur)=\"onFocus()\"\n type=\"text\"\n class=\"form-control\"\n (keyup)=\"enterKey($event)\"\n />\n\n <div class=\"tag-options\" *ngIf=\"options && selectedElement\">\n <div class=\"tag-option-item\" *ngFor=\"let option of filterOptions()\" (click)=\"addTag(option)\">{{ option }}</div>\n </div>\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-options{position:absolute;display:block;top:100%;left:0;right:0;border-top:0;background-color:#fff;box-shadow:0 2px 5px #00000029,0 2px 10px #0000001f;transition:all .5s;z-index:999}.tag-options .tag-option-item{padding:10px;cursor:pointer}.tag-options .tag-option-item:hover{color:var(--bs-primary)}.tag-wrapper{display:flex;flex-direction:row;justify-content:flex-start;column-gap:10px;row-gap:10px;flex-wrap:wrap;margin-bottom:10px;position:relative}.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"] }] });
|
|
115
102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: TagsComponent, decorators: [{
|
|
116
103
|
type: Component,
|
|
117
|
-
args: [{ selector: 'base-tags', template: "<div class=\"form-group
|
|
104
|
+
args: [{ selector: 'base-tags', template: "<div class=\"form-group position-relative\" *ngIf=\"control\">\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 (focus)=\"onFocus($event)\"\n (blur)=\"onFocus()\"\n type=\"text\"\n class=\"form-control\"\n (keyup)=\"enterKey($event)\"\n />\n\n <div class=\"tag-options\" *ngIf=\"options && selectedElement\">\n <div class=\"tag-option-item\" *ngFor=\"let option of filterOptions()\" (click)=\"addTag(option)\">{{ option }}</div>\n </div>\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-options{position:absolute;display:block;top:100%;left:0;right:0;border-top:0;background-color:#fff;box-shadow:0 2px 5px #00000029,0 2px 10px #0000001f;transition:all .5s;z-index:999}.tag-options .tag-option-item{padding:10px;cursor:pointer}.tag-options .tag-option-item:hover{color:var(--bs-primary)}.tag-wrapper{display:flex;flex-direction:row;justify-content:flex-start;column-gap:10px;row-gap:10px;flex-wrap:wrap;margin-bottom:10px;position:relative}.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"] }]
|
|
118
105
|
}], propDecorators: { id: [{
|
|
119
106
|
type: Input
|
|
120
107
|
}], name: [{
|
|
@@ -138,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
138
125
|
}], required: [{
|
|
139
126
|
type: Input
|
|
140
127
|
}] } });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9jb21wb25lbnRzL3RhZ3MvdGFncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9jb21wb25lbnRzL3RhZ3MvdGFncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7Ozs7QUFRbkYsTUFBTSxPQUFPLGFBQWE7SUFMMUI7UUFRVyxVQUFLLEdBQVksRUFBRSxDQUFDO1FBQ3BCLGdCQUFXLEdBQVksRUFBRSxDQUFDO1FBSTFCLFlBQU8sR0FBYyxFQUFFLENBQUM7UUFDeEIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixvQkFBZSxHQUFhLEVBQUUsQ0FBQztLQTRHaEM7SUF6R0MsUUFBUTtRQUNOLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxZQUFZLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwRixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLEtBQW9CO1FBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxV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QU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDckc7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxLQUFNO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDekIsT0FBTztTQUNSO1FBRUQsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7U0FDckM7YUFBTTtZQUNMLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDOUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDOzswR0F4SFUsYUFBYTs4RkFBYixhQUFhLHNUQ1IxQix1dkNBZ0NBOzJGRHhCYSxhQUFhO2tCQUx6QixTQUFTOytCQUNFLFdBQVc7OEJBS1osRUFBRTtzQkFBVixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Jhc2UtdGFncycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFncy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUYWdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZT86IHN0cmluZztcbiAgQElucHV0KCkgdGFiSW5kZXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGNvbnRyb2w6IEZvcm1Db250cm9sIHwgQWJzdHJhY3RDb250cm9sO1xuICBASW5wdXQoKSBvcHRpb25zPzogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgY3VzdG9tID0gdHJ1ZTtcbiAgQElucHV0KCkgcmVtb3ZlQnlLZXkgPSB0cnVlO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBpbnB1dFZhbHVlID0gJyc7XG4gIGZpbHRlcmVkT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgc2VsZWN0ZWRFbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldEZpbHRlcmVkT3B0aW9ucygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydvcHRpb25zJ10/LmN1cnJlbnRWYWx1ZSAmJiBjaGFuZ2VzWydvcHRpb25zJ10/LmN1cnJlbnRWYWx1ZT8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zZXRGaWx0ZXJlZE9wdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIGVudGVyIGtleXNcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBlbnRlcktleShldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlbW92ZUJ5S2V5ICYmIGV2ZW50LmNvZGUgPT09ICdCYWNrc3BhY2UnICYmICF0aGlzLmlucHV0VmFsdWUpIHtcbiAgICAgIHRoaXMucmVtb3ZlVGFnKCk7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChldmVudC5jb2RlID09PSAnQ29tbWEnIHx8IGV2ZW50LmNvZGUgPT09ICdTcGFjZScgfHwgZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgICB0aGlzLmFkZFRhZyh0aGlzLmlucHV0VmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbmV3IHRhZ1xuICAgKlxuICAgKiBAcGFyYW0gdGFnXG4gICAqL1xuICBhZGRUYWcodGFnOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udHJvbC52YWx1ZSkge1xuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQgPSBudWxsO1xuXG4gICAgaWYgKHRhZy5lbmRzV2l0aCgnLCcpIHx8IHRhZy5lbmRzV2l0aCgnICcpKSB7XG4gICAgICB0YWcgPSB0YWcuc2xpY2UoMCwgLTEpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jdXN0b20gJiYgIXRoaXMub3B0aW9ucy5maW5kKChlKSA9PiBlID09PSB0YWcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoW3RhZ10pO1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0YWcubGVuZ3RoID4gMCAmJiB0aGlzLmNvbnRyb2wudmFsdWUgJiYgIXRoaXMuY29udHJvbC52YWx1ZS5zb21lKChpdGVtOiBzdHJpbmcpID0+IGl0ZW0gPT09IHRhZykpIHtcbiAgICAgIHRoaXMuY29udHJvbC52YWx1ZS5wdXNoKHRhZyk7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICAgIHRoaXMuY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0YWdcbiAgICpcbiAgICogQHBhcmFtIHRhZ1xuICAgKi9cbiAgcmVtb3ZlVGFnKHRhZz86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50ID0gbnVsbDtcbiAgICBpZiAodGFnKSB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodGhpcy5jb250cm9sLnZhbHVlLmZpbHRlcigoaXRlbTogc3RyaW5nKSA9PiBpdGVtICE9PSB0YWcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250cm9sLnZhbHVlLnNwbGljZSgtMSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29udHJvbC5zZXRFcnJvcnMoeyByZXF1aXJlZDogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVyIG9wdGlvbnMgZm9yIGRyb3AgZG93blxuICAgKi9cbiAgc2V0RmlsdGVyZWRPcHRpb25zKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID1cbiAgICAgICAgdGhpcy5vcHRpb25zLmZpbHRlcigoZSkgPT4gZT8uaW5jbHVkZXModGhpcy5pbnB1dFZhbHVlKSAmJiAhdGhpcy5jb250cm9sLnZhbHVlLmluY2x1ZGVzKGUpKSB8fCBbXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2hvdyBkcm9wZG93biBmb2N1c1xuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIG9uRm9jdXMoZXZlbnQ/KSB7XG4gICAgaWYgKCF0aGlzLmZpbHRlcmVkT3B0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IG51bGw7XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMyBwb3NpdGlvbi1yZWxhdGl2ZVwiICpuZ0lmPVwiY29udHJvbFwiPlxuICA8bGFiZWwgW2Zvcl09XCJpZFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiIFtuZ0NsYXNzXT1cInsgcmVxdWlyZWQ6IHJlcXVpcmVkIH1cIiAqbmdJZj1cImxhYmVsXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuXG4gIDxkaXYgY2xhc3M9XCJ0YWctd3JhcHBlclwiICpuZ0lmPVwiY29udHJvbD8udmFsdWVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGFnXCIgKm5nRm9yPVwibGV0IHRhZyBvZiBjb250cm9sPy52YWx1ZVwiPlxuICAgICAge3sgdGFnIH19XG4gICAgICA8c3BhbiAoY2xpY2spPVwicmVtb3ZlVGFnKHRhZylcIj48aSBjbGFzcz1cImJpIGJpLXgtY2lyY2xlXCI+PC9pPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxpbnB1dFxuICAgIFtpZF09XCJpZFwiXG4gICAgW25hbWVdPVwibmFtZVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogY29udHJvbD8uaW52YWxpZCAmJiBjb250cm9sPy50b3VjaGVkIH1cIlxuICAgIFsobmdNb2RlbCldPVwiaW5wdXRWYWx1ZVwiXG4gICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGUgPz8gbnVsbFwiXG4gICAgW3RhYkluZGV4XT1cInRhYkluZGV4ID8/IG51bGxcIlxuICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgIChibHVyKT1cIm9uRm9jdXMoKVwiXG4gICAgdHlwZT1cInRleHRcIlxuICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAoa2V5dXApPVwiZW50ZXJLZXkoJGV2ZW50KVwiXG4gIC8+XG5cbiAgPGRpdiBjbGFzcz1cInRhZy1vcHRpb25zXCIgKm5nSWY9XCJmaWx0ZXJlZE9wdGlvbnMgJiYgc2VsZWN0ZWRFbGVtZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInRhZy1vcHRpb24taXRlbVwiICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zXCIgKGNsaWNrKT1cImFkZFRhZyhvcHRpb24pXCI+e3sgb3B0aW9uIH19PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIG0tMlwiICpuZ0lmPVwiY29udHJvbD8uaW52YWxpZCAmJiAoY29udHJvbD8uZGlydHkgfHwgY29udHJvbD8udG91Y2hlZClcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiY29udHJvbD8uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5EaWVzZXMgRmVsZCBpc3QgZWluIFBmbGljaHRmZWxkLjwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9jb21wb25lbnRzL3RhZ3MvdGFncy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL2Jhc2UtY29tcG9uZW50cy9jb21wb25lbnRzL3RhZ3MvdGFncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVFqRCxNQUFNLE9BQU8sYUFBYTtJQUwxQjtRQVFXLFVBQUssR0FBWSxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBWSxFQUFFLENBQUM7UUFJMUIsWUFBTyxHQUFjLEVBQUUsQ0FBQztRQUN4QixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQixlQUFVLEdBQUcsRUFBRSxDQUFDO0tBNkZqQjtJQTFGQzs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLEtBQW9CO1FBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLE9BQU87U0FDUjthQUFNO1lBQ0wsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDOUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDOUI7U0FDRjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gs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U0FDckM7YUFBTTtZQUNMLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDOUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7SUFDSCxDQUFDOzswR0F4R1UsYUFBYTs4RkFBYixhQUFhLGlTQ1IxQiwwdUNBZ0NBOzJGRHhCYSxhQUFhO2tCQUx6QixTQUFTOytCQUNFLFdBQVc7OEJBS1osRUFBRTtzQkFBVixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYmFzZS10YWdzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWdzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhZ3NDb21wb25lbnQge1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZT86IHN0cmluZztcbiAgQElucHV0KCkgdGFiSW5kZXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGNvbnRyb2w6IEZvcm1Db250cm9sIHwgQWJzdHJhY3RDb250cm9sO1xuICBASW5wdXQoKSBvcHRpb25zPzogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgY3VzdG9tID0gdHJ1ZTtcbiAgQElucHV0KCkgcmVtb3ZlQnlLZXkgPSB0cnVlO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBpbnB1dFZhbHVlID0gJyc7XG4gIHNlbGVjdGVkRWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIExpc3RlbiB0byBlbnRlciBrZXlzXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgZW50ZXJLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZW1vdmVCeUtleSAmJiBldmVudC5jb2RlID09PSAnQmFja3NwYWNlJyAmJiAhdGhpcy5pbnB1dFZhbHVlKSB7XG4gICAgICB0aGlzLnJlbW92ZVRhZygpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0NvbW1hJyB8fCBldmVudC5jb2RlID09PSAnU3BhY2UnIHx8IGV2ZW50LmNvZGUgPT09ICdFbnRlcicpIHtcbiAgICAgICAgdGhpcy5hZGRUYWcodGhpcy5pbnB1dFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIG5ldyB0YWdcbiAgICpcbiAgICogQHBhcmFtIHRhZ1xuICAgKi9cbiAgYWRkVGFnKHRhZzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2wudmFsdWUpIHtcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShbXSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50ID0gbnVsbDtcblxuICAgIGlmICh0YWcuZW5kc1dpdGgoJywnKSB8fCB0YWcuZW5kc1dpdGgoJyAnKSkge1xuICAgICAgdGFnID0gdGFnLnNsaWNlKDAsIC0xKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3VzdG9tICYmICF0aGlzLm9wdGlvbnMuZmluZCgoZSkgPT4gZSA9PT0gdGFnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2wudmFsdWU/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKFt0YWddKTtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgICAgdGhpcy5jb250cm9sLnNldEVycm9ycyhudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGFnLmxlbmd0aCA+IDAgJiYgdGhpcy5jb250cm9sLnZhbHVlICYmICF0aGlzLmNvbnRyb2wudmFsdWUuc29tZSgoaXRlbTogc3RyaW5nKSA9PiBpdGVtID09PSB0YWcpKSB7XG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWUucHVzaCh0YWcpO1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGFnXG4gICAqXG4gICAqIEBwYXJhbSB0YWdcbiAgICovXG4gIHJlbW92ZVRhZyh0YWc/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IG51bGw7XG4gICAgaWYgKHRhZykge1xuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHRoaXMuY29udHJvbC52YWx1ZS5maWx0ZXIoKGl0ZW06IHN0cmluZykgPT4gaXRlbSAhPT0gdGFnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udHJvbC52YWx1ZS5zcGxpY2UoLTEpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbnRyb2wudmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlciBvcHRpb25zIGZvciBkcm9wIGRvd25cbiAgICovXG4gIGZpbHRlck9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1xuICAgICAgPyB0aGlzLm9wdGlvbnMuZmlsdGVyKChlKSA9PiBlPy5pbmNsdWRlcyh0aGlzLmlucHV0VmFsdWUpICYmICF0aGlzLmNvbnRyb2wudmFsdWUuaW5jbHVkZXMoZSkpXG4gICAgICA6IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgZHJvcGRvd24gZm9jdXNcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBvbkZvY3VzKGV2ZW50Pykge1xuICAgIGlmIChldmVudCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRWxlbWVudCA9IG51bGw7XG4gICAgICB9LCAyNTApO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgcG9zaXRpb24tcmVsYXRpdmVcIiAqbmdJZj1cImNvbnRyb2xcIj5cbiAgPGxhYmVsIFtmb3JdPVwiaWRcIiBjbGFzcz1cImZvcm0tbGFiZWxcIiBbbmdDbGFzc109XCJ7IHJlcXVpcmVkOiByZXF1aXJlZCB9XCIgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cblxuICA8ZGl2IGNsYXNzPVwidGFnLXdyYXBwZXJcIiAqbmdJZj1cImNvbnRyb2w/LnZhbHVlXCI+XG4gICAgPGRpdiBjbGFzcz1cInRhZ1wiICpuZ0Zvcj1cImxldCB0YWcgb2YgY29udHJvbD8udmFsdWVcIj5cbiAgICAgIHt7IHRhZyB9fVxuICAgICAgPHNwYW4gKGNsaWNrKT1cInJlbW92ZVRhZyh0YWcpXCI+PGkgY2xhc3M9XCJiaSBiaS14LWNpcmNsZVwiPjwvaT48L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8aW5wdXRcbiAgICBbaWRdPVwiaWRcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IGNvbnRyb2w/LmludmFsaWQgJiYgY29udHJvbD8udG91Y2hlZCB9XCJcbiAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlID8/IG51bGxcIlxuICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleCA/PyBudWxsXCJcbiAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJvbkZvY3VzKClcIlxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgKGtleXVwKT1cImVudGVyS2V5KCRldmVudClcIlxuICAvPlxuXG4gIDxkaXYgY2xhc3M9XCJ0YWctb3B0aW9uc1wiICpuZ0lmPVwib3B0aW9ucyAmJiBzZWxlY3RlZEVsZW1lbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGFnLW9wdGlvbi1pdGVtXCIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJPcHRpb25zKClcIiAoY2xpY2spPVwiYWRkVGFnKG9wdGlvbilcIj57eyBvcHRpb24gfX08L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgbS0yXCIgKm5nSWY9XCJjb250cm9sPy5pbnZhbGlkICYmIChjb250cm9sPy5kaXJ0eSB8fCBjb250cm9sPy50b3VjaGVkKVwiPlxuICAgIDxkaXYgKm5nSWY9XCJjb250cm9sPy5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPkRpZXNlcyBGZWxkIGlzdCBlaW4gUGZsaWNodGZlbGQuPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -16,6 +16,49 @@ export class GraphQLMeta {
|
|
|
16
16
|
throw Error('Missing schema');
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* We're going to get the query and mutation types from the schema, then we're going to loop through the fields of each
|
|
21
|
+
* type and check if the field name starts with `find`, `create`, `update`, or `delete`. If it does, we're going to add
|
|
22
|
+
* the model name to the `possibleTypes` array
|
|
23
|
+
*
|
|
24
|
+
* @returns An array of objects with the name of the model, and the CRUD operations that are available for that model.
|
|
25
|
+
*/
|
|
26
|
+
getTypes() {
|
|
27
|
+
const possibleTypes = [];
|
|
28
|
+
const mutationType = this.schema.getMutationType();
|
|
29
|
+
const queryType = this.schema.getQueryType();
|
|
30
|
+
for (const [key, value] of Object.entries(queryType.getFields())) {
|
|
31
|
+
if (key.startsWith('find')) {
|
|
32
|
+
possibleTypes.push({
|
|
33
|
+
name: key.split('find').pop().slice(0, -1),
|
|
34
|
+
create: false,
|
|
35
|
+
update: false,
|
|
36
|
+
delete: false,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
for (const [key, value] of Object.entries(mutationType.getFields())) {
|
|
41
|
+
if (key.startsWith('create')) {
|
|
42
|
+
const model = key.split('create').pop();
|
|
43
|
+
if (possibleTypes.find((e) => e.name === model)) {
|
|
44
|
+
possibleTypes.find((item) => item.name === model).create = true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (key.startsWith('update')) {
|
|
48
|
+
const model = key.split('update').pop();
|
|
49
|
+
if (possibleTypes.find((e) => e.name === model)) {
|
|
50
|
+
possibleTypes.find((item) => item.name === model).update = true;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (key.startsWith('delete')) {
|
|
54
|
+
const model = key.split('delete').pop();
|
|
55
|
+
if (possibleTypes.find((e) => e.name === model)) {
|
|
56
|
+
possibleTypes.find((item) => item.name === model).delete = true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return possibleTypes;
|
|
61
|
+
}
|
|
19
62
|
/**
|
|
20
63
|
* Get arguments of GraphQL function
|
|
21
64
|
*/
|
|
@@ -168,4 +211,4 @@ export class GraphQLMeta {
|
|
|
168
211
|
return graphqlType;
|
|
169
212
|
}
|
|
170
213
|
}
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1tZXRhLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zaGFyZWQvY2xhc3Nlcy9ncmFwaHFsLW1ldGEuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUduRDs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBS3RCOztPQUVHO0lBQ0gsWUFBc0IsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQVAzQyxnQkFBZ0I7UUFDTixTQUFJLEdBQXdCLEVBQUUsQ0FBQztRQUMvQixXQUFNLEdBQXdCLEVBQUUsQ0FBQztRQU16QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FDTCxZQUFvQixFQUNwQixVQUE0RSxFQUFFO1FBRTlFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHO1lBQzlCLEtBQUssRUFBRSxJQUFJO1lBQ1gsTUFBTSxFQUFFLElBQUk7WUFDWixJQUFJLEVBQUUsU0FBUztZQUNmLEdBQUcsT0FBTztTQUNYLENBQUM7UUFFRixZQUFZO1FBQ1osSUFBSSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzVDLElBQUksSUFBSSxFQUFFO2dCQUNSLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FB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QyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQ2pEO1lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdEMsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUVELGdCQUFnQjtRQUNoQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDekQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDMUMsT0FBTyxVQUFVLENBQUM7U0FDbkI7UUFFRCx5QkFBeUI7UUFDekIsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUNsQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbEIsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDMUIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUMzRCxJQUFJLENBQUUsS0FBYSxDQUFDLFlBQVksRUFBRTtvQkFDaEMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ2xDO2FBQ0Y7U0FDRjtRQUVELFNBQVM7UUFDVCxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNoQyxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMU2NoZW1hLCBHcmFwaFFMTmFtZWRUeXBlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBHcmFwaFFMUmVxdWVzdFR5cGUgfSBmcm9tICcuLi9lbnVtcy9ncmFwaHFsLXJlcXVlc3QtdHlwZS5lbnVtJztcbmltcG9ydCB7IEhlbHBlciB9IGZyb20gJy4vaGVscGVyLmNsYXNzJztcbmltcG9ydCB7IEdyYXBoUUxUeXBlIH0gZnJvbSAnLi9ncmFwaHFsLXR5cGUuY2xhc3MnO1xuaW1wb3J0IHsgSUdyYXBoUUxUeXBlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvZ3JhcGhxbC10eXBlLWNvbGxlY3Rpb24uaW50ZXJmYWNlJztcblxuLyoqXG4gKiBHcmFwaFFMIG1ldGFcbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoUUxNZXRhIHtcbiAgLy8gRnJvemVuIGNhY2hlc1xuICBwcm90ZWN0ZWQgYXJnczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICBwcm90ZWN0ZWQgZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbiAgLyoqXG4gICAqIEludGVncmF0ZSBzY2hlbWFcbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzY2hlbWE6IEdyYXBoUUxTY2hlbWEpIHtcbiAgICBpZiAoIXNjaGVtYSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ01pc3Npbmcgc2NoZW1hJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhcmd1bWVudHMgb2YgR3JhcGhRTCBmdW5jdGlvblxuICAgKi9cbiAgZ2V0QXJncyhcbiAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7IGNhY2hlPzogYm9vbGVhbjsgZnJlZXplPzogYm9vbGVhbjsgdHlwZT86IEdyYXBoUUxSZXF1ZXN0VHlwZSB9ID0ge31cbiAgKTogSUdyYXBoUUxUeXBlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBjYWNoZSwgZnJlZXplLCB0eXBlIH0gPSB7XG4gICAgICBjYWNoZTogdHJ1ZSxcbiAgICAgIGZyZWV6ZTogdHJ1ZSxcbiAgICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIC8vIEdldCBjYWNoZVxuICAgIGlmIChjYWNoZSAmJiBmcmVlemUpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmFyZ3NbZnVuY3Rpb25OYW1lICsgdHlwZV07XG4gICAgICBpZiAoYXJncykge1xuICAgICAgICByZXR1cm4gYXJncztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmdW5jID0gdGhpcy5nZXRGdW5jdGlvbihmdW5jdGlvbk5hbWUsIHsgdHlwZSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBpZiAoZnVuYz8uYXJncykge1xuICAgICAgZnVuYy5hcmdzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgcmVzdWx0W2l0ZW0ubmFtZV0gPSB0aGlzLmdldERlZXBUeXBlKGl0ZW0udHlwZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBTZXQgY2FjaGVcbiAgICBpZiAoZnJlZXplKSB7XG4gICAgICB0aGlzLmFyZ3NbZnVuY3Rpb25OYW1lICsgdHlwZV0gPSBIZWxwZXIuZGVlcEZyZWV6ZShyZXN1bHQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGZpZWxkcyBvZiBHcmFwaFFMIGZ1bmN0aW9uXG4gICAqL1xuICBnZXRGaWVsZHMoXG4gICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9uczogeyBjYWNoZT86IGJvb2xlYW47IGZyZWV6ZT86IGJvb2xlYW47IHR5cGU/OiBHcmFwaFFMUmVxdWVzdFR5cGUgfSA9IHt9XG4gICk6IElHcmFwaFFMVHlwZUNvbGxlY3Rpb24ge1xuICAgIGNvbnN0IHsgY2FjaGUsIGZyZWV6ZSwgdHlwZSB9ID0ge1xuICAgICAgY2FjaGU6IHRydWUsXG4gICAgICBmcmVlemU6IHRydWUsXG4gICAgICB0eXBlOiB1bmRlZmluZWQsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBHZXQgY2FjaGVcbiAgICBpZiAoY2FjaGUgJiYgZnJlZXplKSB7XG4gICAgICBjb25zdCBhcmdzID0gdGhpcy5maWVsZHNbZnVuY3Rpb25OYW1lICsgdHlwZV07XG4gICAgICBpZiAoYXJncykge1xuICAgICAgICByZXR1cm4gYXJncztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmdW5jID0gdGhpcy5nZXRGdW5jdGlvbihmdW5jdGlvbk5hbWUsIG9wdGlvbnMpO1xuICAgIGNvbnN0IHJlc3VsdDogSUdyYXBoUUxUeXBlQ29sbGVjdGlvbiA9IHRoaXMuZ2V0RGVlcFR5cGUoZnVuYy50eXBlKSBhcyBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uO1xuXG4gICAgLy8gU2V0IGNhY2hlXG4gICAgaWYgKGZyZWV6ZSkge1xuICAgICAgdGhpcy5maWVsZHNbZnVuY3Rpb25OYW1lICsgdHlwZV0gPSBIZWxwZXIuZGVlcEZyZWV6ZShyZXN1bHQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IEdyYXBoUUwgZnVuY3Rpb25cbiAgICovXG4gIHByb3RlY3RlZCBnZXRGdW5jdGlvbihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IHsgdHlwZT86IEdyYXBoUUxSZXF1ZXN0VHlwZSB9ID0ge30pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAvLyBTZXQgY29uZmlnXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgLy8gSW5pdCBwb3NzaWJsZSBmdW5jdGlvbnNcbiAgICBsZXQgZnVuY3Rpb25zID0ge307XG5cbiAgICAvLyBJZiBmdW5jdGlvbiB0eXBlIGlzIHNldFxuICAgIGlmIChjb25maWcudHlwZSkge1xuICAgICAgY29uc3QgZ3JhcGhRTFR5cGUgPSBjb25maWcudHlwZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGNvbmZpZy50eXBlLnNsaWNlKDEpO1xuICAgICAgY29uc3QgdHlwZSA9IHRoaXMuc2NoZW1hLmdldFR5cGUoZ3JhcGhRTFR5cGUpO1xuICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgZnVuY3Rpb25zID0gKHR5cGUgYXMgYW55KS5nZXRGaWVsZHMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBmdW5jdGlvbiB0eXBlIGlzIG5vdCBzZXRcbiAgICBlbHNlIHtcbiAgICAgIFsnU3Vic2NyaXB0aW9uJywgJ011dGF0aW9uJywgJ1F1ZXJ5J10uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCB0eXBlOiBhbnkgPSB0aGlzLnNjaGVtYS5nZXRUeXBlKGl0ZW0pO1xuICAgICAgICBpZiAodHlwZSkge1xuICAgICAgICAgIGZ1bmN0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLmZ1bmN0aW9ucyxcbiAgICAgICAgICAgIC4uLih0eXBlLmdldEZpZWxkcygpIHx8IHt9KSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBHZXQgZnVuY3Rpb24gdmlhIG5hbWVcbiAgICByZXR1cm4gZnVuY3Rpb25zW25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0eXBlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VHlwZShuYW1lOiBzdHJpbmcpOiBHcmFwaFFMTmFtZWRUeXBlIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2NoZW1hLmdldFR5cGUobmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRlZXAgdHlwZSBkYXRhXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0RGVlcFR5cGUodHlwZTogYW55LCBwcmVwYXJlZDogV2Vha01hcDxhbnksIGFueT4gPSBuZXcgV2Vha01hcCgpKTogSUdyYXBoUUxUeXBlQ29sbGVjdGlvbiB8IEdyYXBoUUxUeXBlIHtcbiAgICAvLyBDaGVjayB0eXBlXG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG5cbiAgICAvLyBJbmZpbml0ZSByZWdyZXNzIHByb3RlY3Rpb25cbiAgICBjb25zdCBwcmVwYXJlZE9iamVjdCA9IHt9O1xuXG4gICAgLy8gQ2hlY2sgcHJlcGFyZWRcbiAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBwcmVwYXJlZFR5cGUgPSBwcmVwYXJlZC5nZXQodHlwZSk7XG4gICAgICBpZiAocHJlcGFyZWRUeXBlKSB7XG4gICAgICAgIHJldHVybiBwcmVwYXJlZFR5cGU7XG4gICAgICB9XG5cbiAgICAgIC8vIFNldCBwcmVwYXJlZFxuICAgICAgcHJlcGFyZWQuc2V0KHR5cGUsIHByZXBhcmVkT2JqZWN0KTtcbiAgICB9XG5cbiAgICAvLyBTZWFyY2ggZGVlcGVyXG4gICAgaWYgKHR5cGUub2ZUeXBlKSB7XG4gICAgICBjb25zdCBvZlR5cGVSZXN1bHQgPSB0aGlzLmdldERlZXBUeXBlKHR5cGUub2ZUeXBlLCBwcmVwYXJlZCk7XG4gICAgICBPYmplY3QuYXNzaWduKHByZXBhcmVkT2JqZWN0LCBvZlR5cGVSZXN1bHQpO1xuICAgICAgcmV0dXJuIG9mVHlwZVJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGZpZWxkc1xuICAgIGlmICh0eXBlLl9maWVsZHMpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModHlwZS5fZmllbGRzKSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IHRoaXMuZ2V0RGVlcFR5cGUodmFsdWUsIHByZXBhcmVkKTtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5hc3NpZ24ocHJlcGFyZWRPYmplY3QsIHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEdldCB0eXBlIG5hbWVcbiAgICBpZiAodHlwZS50eXBlKSB7XG4gICAgICBjb25zdCB0eXBlUmVzdWx0ID0gdGhpcy5nZXREZWVwVHlwZSh0eXBlLnR5cGUsIHByZXBhcmVkKTtcbiAgICAgIE9iamVjdC5hc3NpZ24ocHJlcGFyZWRPYmplY3QsIHR5cGVSZXN1bHQpO1xuICAgICAgcmV0dXJuIHR5cGVSZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBHcmFwaFFMVHlwZVxuICAgIGNvbnN0IGdyYXBocWxUeXBlID0gR3JhcGhRTFR5cGUubWFwKHtcbiAgICAgIHR5cGU6IHR5cGUubmFtZSxcbiAgICB9KTtcblxuICAgIC8vIFNldCBlbnVtIHZhbHVlc1xuICAgIGlmICghIXR5cGUuX3ZhbHVlcykge1xuICAgICAgZ3JhcGhxbFR5cGUuaXNFbnVtID0gdHJ1ZTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHR5cGUuX25hbWVMb29rdXApKSB7XG4gICAgICAgIGlmICghKHZhbHVlIGFzIGFueSkuaXNEZXByZWNhdGVkKSB7XG4gICAgICAgICAgZ3JhcGhxbFR5cGUudmFsaWRFbnVtcy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaW5pc2hcbiAgICBwcmVwYXJlZC5zZXQodHlwZSwgZ3JhcGhxbFR5cGUpO1xuICAgIHJldHVybiBncmFwaHFsVHlwZTtcbiAgfVxufVxuIl19
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1tZXRhLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zaGFyZWQvY2xhc3Nlcy9ncmFwaHFsLW1ldGEuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUduRDs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBS3RCOztPQUVHO0lBQ0gsWUFBc0IsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQVAzQyxnQkFBZ0I7UUFDTixTQUFJLEdBQXdCLEVBQUUsQ0FBQztRQUMvQixXQUFNLEdBQXdCLEVBQUUsQ0FBQztRQU16QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxRQUFRO1FBQ04sTUFBTSxhQUFhLEdBQTBFLEVBQVMsQ0FBQztRQUN2RyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ25ELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFN0MsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUU7WUFDaEUsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUMxQixhQUFhLENBQUMsSUFBSSxDQUFDO29CQUNqQixJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FB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SSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBRUQseUJBQXlCO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDbEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUVILGtCQUFrQjtRQUNsQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2xCLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQzFCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDM0QsSUFBSSxDQUFFLEtBQWEsQ0FBQyxZQUFZLEVBQUU7b0JBQ2hDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNsQzthQUNGO1NBQ0Y7UUFFRCxTQUFTO1FBQ1QsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDaEMsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTE5hbWVkVHlwZSwgR3JhcGhRTFNjaGVtYSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgR3JhcGhRTFJlcXVlc3RUeXBlIH0gZnJvbSAnLi4vZW51bXMvZ3JhcGhxbC1yZXF1ZXN0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuL2hlbHBlci5jbGFzcyc7XG5pbXBvcnQgeyBHcmFwaFFMVHlwZSB9IGZyb20gJy4vZ3JhcGhxbC10eXBlLmNsYXNzJztcbmltcG9ydCB7IElHcmFwaFFMVHlwZUNvbGxlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2dyYXBocWwtdHlwZS1jb2xsZWN0aW9uLmludGVyZmFjZSc7XG5cbi8qKlxuICogR3JhcGhRTCBtZXRhXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaFFMTWV0YSB7XG4gIC8vIEZyb3plbiBjYWNoZXNcbiAgcHJvdGVjdGVkIGFyZ3M6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgcHJvdGVjdGVkIGZpZWxkczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gIC8qKlxuICAgKiBJbnRlZ3JhdGUgc2NoZW1hXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc2NoZW1hOiBHcmFwaFFMU2NoZW1hKSB7XG4gICAgaWYgKCFzY2hlbWEpIHtcbiAgICAgIHRocm93IEVycm9yKCdNaXNzaW5nIHNjaGVtYScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXZSdyZSBnb2luZyB0byBnZXQgdGhlIHF1ZXJ5IGFuZCBtdXRhdGlvbiB0eXBlcyBmcm9tIHRoZSBzY2hlbWEsIHRoZW4gd2UncmUgZ29pbmcgdG8gbG9vcCB0aHJvdWdoIHRoZSBmaWVsZHMgb2YgZWFjaFxuICAgKiB0eXBlIGFuZCBjaGVjayBpZiB0aGUgZmllbGQgbmFtZSBzdGFydHMgd2l0aCBgZmluZGAsIGBjcmVhdGVgLCBgdXBkYXRlYCwgb3IgYGRlbGV0ZWAuIElmIGl0IGRvZXMsIHdlJ3JlIGdvaW5nIHRvIGFkZFxuICAgKiB0aGUgbW9kZWwgbmFtZSB0byB0aGUgYHBvc3NpYmxlVHlwZXNgIGFycmF5XG4gICAqXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9kZWwsIGFuZCB0aGUgQ1JVRCBvcGVyYXRpb25zIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdGhhdCBtb2RlbC5cbiAgICovXG4gIGdldFR5cGVzKCk6IFt7IG5hbWU6IHN0cmluZzsgY3JlYXRlOiBib29sZWFuOyB1cGRhdGU6IGJvb2xlYW47IGRlbGV0ZTogYm9vbGVhbiB9XSB7XG4gICAgY29uc3QgcG9zc2libGVUeXBlczogW3sgbmFtZTogc3RyaW5nOyBjcmVhdGU6IGJvb2xlYW47IHVwZGF0ZTogYm9vbGVhbjsgZGVsZXRlOiBib29sZWFuIH1dID0gW10gYXMgYW55O1xuICAgIGNvbnN0IG11dGF0aW9uVHlwZSA9IHRoaXMuc2NoZW1hLmdldE11dGF0aW9uVHlwZSgpO1xuICAgIGNvbnN0IHF1ZXJ5VHlwZSA9IHRoaXMuc2NoZW1hLmdldFF1ZXJ5VHlwZSgpO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocXVlcnlUeXBlLmdldEZpZWxkcygpKSkge1xuICAgICAgaWYgKGtleS5zdGFydHNXaXRoKCdmaW5kJykpIHtcbiAgICAgICAgcG9zc2libGVUeXBlcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBrZXkuc3BsaXQoJ2ZpbmQnKS5wb3AoKS5zbGljZSgwLCAtMSksXG4gICAgICAgICAgY3JlYXRlOiBmYWxzZSxcbiAgICAgICAgICB1cGRhdGU6IGZhbHNlLFxuICAgICAgICAgIGRlbGV0ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG11dGF0aW9uVHlwZS5nZXRGaWVsZHMoKSkpIHtcbiAgICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnY3JlYXRlJykpIHtcbiAgICAgICAgY29uc3QgbW9kZWwgPSBrZXkuc3BsaXQoJ2NyZWF0ZScpLnBvcCgpO1xuICAgICAgICBpZiAocG9zc2libGVUeXBlcy5maW5kKChlKSA9PiBlLm5hbWUgPT09IG1vZGVsKSkge1xuICAgICAgICAgIHBvc3NpYmxlVHlwZXMuZmluZCgoaXRlbSkgPT4gaXRlbS5uYW1lID09PSBtb2RlbCkuY3JlYXRlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ3VwZGF0ZScpKSB7XG4gICAgICAgIGNvbnN0IG1vZGVsID0ga2V5LnNwbGl0KCd1cGRhdGUnKS5wb3AoKTtcbiAgICAgICAgaWYgKHBvc3NpYmxlVHlwZXMuZmluZCgoZSkgPT4gZS5uYW1lID09PSBtb2RlbCkpIHtcbiAgICAgICAgICBwb3NzaWJsZVR5cGVzLmZpbmQoKGl0ZW0pID0+IGl0ZW0ubmFtZSA9PT0gbW9kZWwpLnVwZGF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGtleS5zdGFydHNXaXRoKCdkZWxldGUnKSkge1xuICAgICAgICBjb25zdCBtb2RlbCA9IGtleS5zcGxpdCgnZGVsZXRlJykucG9wKCk7XG4gICAgICAgIGlmIChwb3NzaWJsZVR5cGVzLmZpbmQoKGUpID0+IGUubmFtZSA9PT0gbW9kZWwpKSB7XG4gICAgICAgICAgcG9zc2libGVUeXBlcy5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IG1vZGVsKS5kZWxldGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc3NpYmxlVHlwZXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFyZ3VtZW50cyBvZiBHcmFwaFFMIGZ1bmN0aW9uXG4gICAqL1xuICBnZXRBcmdzKFxuICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgY2FjaGU/OiBib29sZWFuOyBmcmVlemU/OiBib29sZWFuOyB0eXBlPzogR3JhcGhRTFJlcXVlc3RUeXBlIH0gPSB7fVxuICApOiBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB7IGNhY2hlLCBmcmVlemUsIHR5cGUgfSA9IHtcbiAgICAgIGNhY2hlOiB0cnVlLFxuICAgICAgZnJlZXplOiB0cnVlLFxuICAgICAgdHlwZTogdW5kZWZpbmVkLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgLy8gR2V0IGNhY2hlXG4gICAgaWYgKGNhY2hlICYmIGZyZWV6ZSkge1xuICAgICAgY29uc3QgYXJncyA9IHRoaXMuYXJnc1tmdW5jdGlvbk5hbWUgKyB0eXBlXTtcbiAgICAgIGlmIChhcmdzKSB7XG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZ1bmMgPSB0aGlzLmdldEZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwgeyB0eXBlIH0pO1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGlmIChmdW5jPy5hcmdzKSB7XG4gICAgICBmdW5jLmFyZ3MuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICByZXN1bHRbaXRlbS5uYW1lXSA9IHRoaXMuZ2V0RGVlcFR5cGUoaXRlbS50eXBlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFNldCBjYWNoZVxuICAgIGlmIChmcmVlemUpIHtcbiAgICAgIHRoaXMuYXJnc1tmdW5jdGlvbk5hbWUgKyB0eXBlXSA9IEhlbHBlci5kZWVwRnJlZXplKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZmllbGRzIG9mIEdyYXBoUUwgZnVuY3Rpb25cbiAgICovXG4gIGdldEZpZWxkcyhcbiAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7IGNhY2hlPzogYm9vbGVhbjsgZnJlZXplPzogYm9vbGVhbjsgdHlwZT86IEdyYXBoUUxSZXF1ZXN0VHlwZSB9ID0ge31cbiAgKTogSUdyYXBoUUxUeXBlQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgeyBjYWNoZSwgZnJlZXplLCB0eXBlIH0gPSB7XG4gICAgICBjYWNoZTogdHJ1ZSxcbiAgICAgIGZyZWV6ZTogdHJ1ZSxcbiAgICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIC8vIEdldCBjYWNoZVxuICAgIGlmIChjYWNoZSAmJiBmcmVlemUpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmZpZWxkc1tmdW5jdGlvbk5hbWUgKyB0eXBlXTtcbiAgICAgIGlmIChhcmdzKSB7XG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZ1bmMgPSB0aGlzLmdldEZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwgb3B0aW9ucyk7XG4gICAgY29uc3QgcmVzdWx0OiBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uID0gdGhpcy5nZXREZWVwVHlwZShmdW5jLnR5cGUpIGFzIElHcmFwaFFMVHlwZUNvbGxlY3Rpb247XG5cbiAgICAvLyBTZXQgY2FjaGVcbiAgICBpZiAoZnJlZXplKSB7XG4gICAgICB0aGlzLmZpZWxkc1tmdW5jdGlvbk5hbWUgKyB0eXBlXSA9IEhlbHBlci5kZWVwRnJlZXplKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgR3JhcGhRTCBmdW5jdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIGdldEZ1bmN0aW9uKG5hbWU6IHN0cmluZywgb3B0aW9uczogeyB0eXBlPzogR3JhcGhRTFJlcXVlc3RUeXBlIH0gPSB7fSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIC8vIFNldCBjb25maWdcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBJbml0IHBvc3NpYmxlIGZ1bmN0aW9uc1xuICAgIGxldCBmdW5jdGlvbnMgPSB7fTtcblxuICAgIC8vIElmIGZ1bmN0aW9uIHR5cGUgaXMgc2V0XG4gICAgaWYgKGNvbmZpZy50eXBlKSB7XG4gICAgICBjb25zdCBncmFwaFFMVHlwZSA9IGNvbmZpZy50eXBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY29uZmlnLnR5cGUuc2xpY2UoMSk7XG4gICAgICBjb25zdCB0eXBlID0gdGhpcy5zY2hlbWEuZ2V0VHlwZShncmFwaFFMVHlwZSk7XG4gICAgICBpZiAodHlwZSkge1xuICAgICAgICBmdW5jdGlvbnMgPSAodHlwZSBhcyBhbnkpLmdldEZpZWxkcygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGZ1bmN0aW9uIHR5cGUgaXMgbm90IHNldFxuICAgIGVsc2Uge1xuICAgICAgWydTdWJzY3JpcHRpb24nLCAnTXV0YXRpb24nLCAnUXVlcnknXS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGU6IGFueSA9IHRoaXMuc2NoZW1hLmdldFR5cGUoaXRlbSk7XG4gICAgICAgIGlmICh0eXBlKSB7XG4gICAgICAgICAgZnVuY3Rpb25zID0ge1xuICAgICAgICAgICAgLi4uZnVuY3Rpb25zLFxuICAgICAgICAgICAgLi4uKHR5cGUuZ2V0RmllbGRzKCkgfHwge30pLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEdldCBmdW5jdGlvbiB2aWEgbmFtZVxuICAgIHJldHVybiBmdW5jdGlvbnNbbmFtZV07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHR5cGVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRUeXBlKG5hbWU6IHN0cmluZyk6IEdyYXBoUUxOYW1lZFR5cGUgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zY2hlbWEuZ2V0VHlwZShuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGVlcCB0eXBlIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBnZXREZWVwVHlwZSh0eXBlOiBhbnksIHByZXBhcmVkOiBXZWFrTWFwPGFueSwgYW55PiA9IG5ldyBXZWFrTWFwKCkpOiBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uIHwgR3JhcGhRTFR5cGUge1xuICAgIC8vIENoZWNrIHR5cGVcbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cblxuICAgIC8vIEluZmluaXRlIHJlZ3Jlc3MgcHJvdGVjdGlvblxuICAgIGNvbnN0IHByZXBhcmVkT2JqZWN0ID0ge307XG5cbiAgICAvLyBDaGVjayBwcmVwYXJlZFxuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IHByZXBhcmVkVHlwZSA9IHByZXBhcmVkLmdldCh0eXBlKTtcbiAgICAgIGlmIChwcmVwYXJlZFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHByZXBhcmVkVHlwZTtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IHByZXBhcmVkXG4gICAgICBwcmVwYXJlZC5zZXQodHlwZSwgcHJlcGFyZWRPYmplY3QpO1xuICAgIH1cblxuICAgIC8vIFNlYXJjaCBkZWVwZXJcbiAgICBpZiAodHlwZS5vZlR5cGUpIHtcbiAgICAgIGNvbnN0IG9mVHlwZVJlc3VsdCA9IHRoaXMuZ2V0RGVlcFR5cGUodHlwZS5vZlR5cGUsIHByZXBhcmVkKTtcbiAgICAgIE9iamVjdC5hc3NpZ24ocHJlcGFyZWRPYmplY3QsIG9mVHlwZVJlc3VsdCk7XG4gICAgICByZXR1cm4gb2ZUeXBlUmVzdWx0O1xuICAgIH1cblxuICAgIC8vIFByb2Nlc3MgZmllbGRzXG4gICAgaWYgKHR5cGUuX2ZpZWxkcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0eXBlLl9maWVsZHMpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdGhpcy5nZXREZWVwVHlwZSh2YWx1ZSwgcHJlcGFyZWQpO1xuICAgICAgfVxuICAgICAgT2JqZWN0LmFzc2lnbihwcmVwYXJlZE9iamVjdCwgcmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gR2V0IHR5cGUgbmFtZVxuICAgIGlmICh0eXBlLnR5cGUpIHtcbiAgICAgIGNvbnN0IHR5cGVSZXN1bHQgPSB0aGlzLmdldERlZXBUeXBlKHR5cGUudHlwZSwgcHJlcGFyZWQpO1xuICAgICAgT2JqZWN0LmFzc2lnbihwcmVwYXJlZE9iamVjdCwgdHlwZVJlc3VsdCk7XG4gICAgICByZXR1cm4gdHlwZVJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIEdyYXBoUUxUeXBlXG4gICAgY29uc3QgZ3JhcGhxbFR5cGUgPSBHcmFwaFFMVHlwZS5tYXAoe1xuICAgICAgdHlwZTogdHlwZS5uYW1lLFxuICAgIH0pO1xuXG4gICAgLy8gU2V0IGVudW0gdmFsdWVzXG4gICAgaWYgKCEhdHlwZS5fdmFsdWVzKSB7XG4gICAgICBncmFwaHFsVHlwZS5pc0VudW0gPSB0cnVlO1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModHlwZS5fbmFtZUxvb2t1cCkpIHtcbiAgICAgICAgaWYgKCEodmFsdWUgYXMgYW55KS5pc0RlcHJlY2F0ZWQpIHtcbiAgICAgICAgICBncmFwaHFsVHlwZS52YWxpZEVudW1zLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbmlzaFxuICAgIHByZXBhcmVkLnNldCh0eXBlLCBncmFwaHFsVHlwZSk7XG4gICAgcmV0dXJuIGdyYXBocWxUeXBlO1xuICB9XG59XG4iXX0=
|
|
@@ -202,16 +202,6 @@ class TagsComponent {
|
|
|
202
202
|
this.removeByKey = true;
|
|
203
203
|
this.required = false;
|
|
204
204
|
this.inputValue = '';
|
|
205
|
-
this.filteredOptions = [];
|
|
206
|
-
}
|
|
207
|
-
ngOnInit() {
|
|
208
|
-
this.setFilteredOptions();
|
|
209
|
-
}
|
|
210
|
-
ngOnChanges(changes) {
|
|
211
|
-
var _a, _b, _c;
|
|
212
|
-
if (((_a = changes['options']) === null || _a === void 0 ? void 0 : _a.currentValue) && ((_c = (_b = changes['options']) === null || _b === void 0 ? void 0 : _b.currentValue) === null || _c === void 0 ? void 0 : _c.length) > 0) {
|
|
213
|
-
this.setFilteredOptions();
|
|
214
|
-
}
|
|
215
205
|
}
|
|
216
206
|
/**
|
|
217
207
|
* Listen to enter keys
|
|
@@ -278,11 +268,10 @@ class TagsComponent {
|
|
|
278
268
|
/**
|
|
279
269
|
* Filter options for drop down
|
|
280
270
|
*/
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
this.
|
|
284
|
-
|
|
285
|
-
}
|
|
271
|
+
filterOptions() {
|
|
272
|
+
return this.options
|
|
273
|
+
? this.options.filter((e) => (e === null || e === void 0 ? void 0 : e.includes(this.inputValue)) && !this.control.value.includes(e))
|
|
274
|
+
: [];
|
|
286
275
|
}
|
|
287
276
|
/**
|
|
288
277
|
* Show dropdown focus
|
|
@@ -290,24 +279,21 @@ class TagsComponent {
|
|
|
290
279
|
* @param event
|
|
291
280
|
*/
|
|
292
281
|
onFocus(event) {
|
|
293
|
-
if (!this.filteredOptions) {
|
|
294
|
-
return;
|
|
295
|
-
}
|
|
296
282
|
if (event) {
|
|
297
283
|
this.selectedElement = event.target;
|
|
298
284
|
}
|
|
299
285
|
else {
|
|
300
286
|
setTimeout(() => {
|
|
301
287
|
this.selectedElement = null;
|
|
302
|
-
},
|
|
288
|
+
}, 250);
|
|
303
289
|
}
|
|
304
290
|
}
|
|
305
291
|
}
|
|
306
292
|
TagsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: TagsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
307
|
-
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", options: "options", custom: "custom", removeByKey: "removeByKey", required: "required" },
|
|
293
|
+
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", options: "options", custom: "custom", removeByKey: "removeByKey", required: "required" }, ngImport: i0, template: "<div class=\"form-group position-relative\" *ngIf=\"control\">\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 (focus)=\"onFocus($event)\"\n (blur)=\"onFocus()\"\n type=\"text\"\n class=\"form-control\"\n (keyup)=\"enterKey($event)\"\n />\n\n <div class=\"tag-options\" *ngIf=\"options && selectedElement\">\n <div class=\"tag-option-item\" *ngFor=\"let option of filterOptions()\" (click)=\"addTag(option)\">{{ option }}</div>\n </div>\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-options{position:absolute;display:block;top:100%;left:0;right:0;border-top:0;background-color:#fff;box-shadow:0 2px 5px #00000029,0 2px 10px #0000001f;transition:all .5s;z-index:999}.tag-options .tag-option-item{padding:10px;cursor:pointer}.tag-options .tag-option-item:hover{color:var(--bs-primary)}.tag-wrapper{display:flex;flex-direction:row;justify-content:flex-start;column-gap:10px;row-gap:10px;flex-wrap:wrap;margin-bottom:10px;position:relative}.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"] }] });
|
|
308
294
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: TagsComponent, decorators: [{
|
|
309
295
|
type: Component,
|
|
310
|
-
args: [{ selector: 'base-tags', template: "<div class=\"form-group
|
|
296
|
+
args: [{ selector: 'base-tags', template: "<div class=\"form-group position-relative\" *ngIf=\"control\">\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 (focus)=\"onFocus($event)\"\n (blur)=\"onFocus()\"\n type=\"text\"\n class=\"form-control\"\n (keyup)=\"enterKey($event)\"\n />\n\n <div class=\"tag-options\" *ngIf=\"options && selectedElement\">\n <div class=\"tag-option-item\" *ngFor=\"let option of filterOptions()\" (click)=\"addTag(option)\">{{ option }}</div>\n </div>\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-options{position:absolute;display:block;top:100%;left:0;right:0;border-top:0;background-color:#fff;box-shadow:0 2px 5px #00000029,0 2px 10px #0000001f;transition:all .5s;z-index:999}.tag-options .tag-option-item{padding:10px;cursor:pointer}.tag-options .tag-option-item:hover{color:var(--bs-primary)}.tag-wrapper{display:flex;flex-direction:row;justify-content:flex-start;column-gap:10px;row-gap:10px;flex-wrap:wrap;margin-bottom:10px;position:relative}.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"] }]
|
|
311
297
|
}], propDecorators: { id: [{
|
|
312
298
|
type: Input
|
|
313
299
|
}], name: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lenne.tech-ng-base-base-components.mjs","sources":["../../../projects/ng-base/base-components/components/input/input.component.ts","../../../projects/ng-base/base-components/components/input/input.component.html","../../../projects/ng-base/base-components/components/select/select.component.ts","../../../projects/ng-base/base-components/components/select/select.component.html","../../../projects/ng-base/base-components/components/checkbox/checkbox.component.ts","../../../projects/ng-base/base-components/components/checkbox/checkbox.component.html","../../../projects/ng-base/base-components/components/textarea/textarea.component.ts","../../../projects/ng-base/base-components/components/textarea/textarea.component.html","../../../projects/ng-base/base-components/components/toast/toast.component.ts","../../../projects/ng-base/base-components/components/toast/toast.component.html","../../../projects/ng-base/base-components/components/tags/tags.component.ts","../../../projects/ng-base/base-components/components/tags/tags.component.html","../../../projects/ng-base/base-components/components/loading-bar/loading-bar.component.ts","../../../projects/ng-base/base-components/components/loading-bar/loading-bar.component.html","../../../projects/ng-base/base-components/components/skeleton-loader/skeleton-loader.component.ts","../../../projects/ng-base/base-components/components/skeleton-loader/skeleton-loader.component.html","../../../projects/ng-base/base-components/components/breadcrumb/breadcrumb.component.ts","../../../projects/ng-base/base-components/components/breadcrumb/breadcrumb.component.html","../../../projects/ng-base/base-components/base-components.module.ts","../../../projects/ng-base/base-components/public-api.ts","../../../projects/ng-base/base-components/lenne.tech-ng-base-base-components.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'base-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n})\nexport class InputComponent {\n @Input() id: string;\n @Input() name: string;\n @Input() label?: string;\n @Input() placeholder?: string = '';\n @Input() autocomplete?: string;\n @Input() tabIndex?: number;\n @Input() control: any;\n @Input() type = 'text';\n @Input() required = false;\n}\n","<div class=\"form-group mb-3\">\n <label [for]=\"id\" class=\"form-label\" [ngClass]=\"{ required: required }\" *ngIf=\"label\">{{ label }}</label>\n <input\n [id]=\"id\"\n [name]=\"name\"\n class=\"form-control\"\n [type]=\"type\"\n [formControl]=\"control\"\n [required]=\"required\"\n [placeholder]=\"placeholder\"\n [autocomplete]=\"autocomplete ?? null\"\n [tabIndex]=\"tabIndex ?? null\"\n [ngClass]=\"{ 'is-invalid': control?.invalid && control?.touched }\"\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 *ngIf=\"control?.errors?.['minlength']\">\n Die Mindestlänge für dieses Feld beträgt\n {{control.errors?.['minlength']?.requiredLength}} Zeichen.\n </div>\n <div *ngIf=\"control?.errors?.['maxlength']\">\n Die maximale Länge für dieses Feld beträgt\n {{control.errors?.['maxlength']?.requiredLength}} Zeichen.\n </div>\n <div *ngIf=\"control?.errors?.['email']\">Bitte eine gültige E-Mail Adresse angeben.</div>\n <div *ngIf=\"control?.errors?.['matching']\">Die Passwörter müssen überein stimmen.</div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\ninterface Option {\n text: string;\n value: string | number;\n}\n\n@Component({\n selector: 'base-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n})\nexport class SelectComponent {\n @Input() id: string;\n @Input() name: string;\n @Input() label?: string;\n @Input() placeholder?: string = '';\n @Input() control: any;\n @Input() tabIndex?: number;\n @Input() required = false;\n @Input() multiple = false;\n @Input() search = false;\n @Input() options: Option[] = [];\n}\n","<div class=\"form-group mb-3\">\n <label [for]=\"id\" class=\"form-label\" [ngClass]=\"{ required: required }\" *ngIf=\"label\">{{ label }}</label>\n <select\n [id]=\"id\"\n [name]=\"name\"\n class=\"form-select\"\n [attr.aria-label]=\"placeholder\"\n [attr.data-live-search]=\"search\"\n [formControl]=\"control\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex ?? null\"\n [multiple]=\"multiple\"\n [ngClass]=\"{ 'is-invalid': control?.invalid && control?.touched }\"\n >\n <option [ngValue]=\"null\" selected>{{ placeholder }}</option>\n <option *ngFor=\"let option of options\" [ngValue]=\"option.value\">\n {{ option.text }}\n </option>\n </select>\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 *ngIf=\"control?.errors?.['minlength']\">\n Die Mindestlänge für dieses Feld beträgt\n {{control?.errors?.['minlength']?.requiredLength}} Zeichen.\n </div>\n <div *ngIf=\"control?.errors?.['maxlength']\">\n Die maximale Länge für dieses Feld beträgt\n {{control?.errors?.['maxlength']?.requiredLength}} Zeichen.\n </div>\n <div *ngIf=\"control?.errors?.['email']\">Bitte eine gültige E-Mail Adresse angeben.</div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'base-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n})\nexport class CheckboxComponent {\n @Input() id: string;\n @Input() name: string;\n @Input() label?: string;\n @Input() value: string | number;\n @Input() control: any;\n @Input() required = false;\n}\n","<div class=\"form-check\">\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [formControl]=\"control\"\n [required]=\"required\"\n [value]=\"value\"\n [id]=\"id\"\n [name]=\"name\"\n [ngClass]=\"{ 'is-invalid': control?.invalid && control?.touched }\"\n />\n <label [for]=\"id\" class=\"form-label\" [ngClass]=\"{ required: required }\">\n <ng-container *ngIf=\"label\">\n {{ label }}\n </ng-container>\n <ng-content></ng-content>\n </label>\n\n <div class=\"invalid-feedback ms-0 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","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'base-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.scss'],\n})\nexport class TextareaComponent {\n @Input() id: string;\n @Input() name: string;\n @Input() label?: string = '';\n @Input() placeholder?: string = '';\n @Input() control: any;\n @Input() rows = 5;\n @Input() required = false;\n @Input() tabIndex?: number;\n}\n","<div class=\"form-group mb-3\">\n <label [for]=\"id\" class=\"form-label\" [ngClass]=\"{ required: required }\" *ngIf=\"label\">{{ label }}</label>\n <textarea\n class=\"form-control\"\n [id]=\"id\"\n [name]=\"name\"\n [rows]=\"rows\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [tabIndex]=\"tabIndex ?? null\"\n [ngClass]=\"{ 'is-invalid': control?.invalid && control?.touched }\"\n ></textarea>\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 *ngIf=\"control?.errors?.['minlength']\">\n Die Mindestlänge für dieses Feld beträgt\n {{control?.errors?.['minlength']?.requiredLength}} Zeichen.\n </div>\n <div *ngIf=\"control?.errors?.['maxlength']\">\n Die maximale Länge für dieses Feld beträgt\n {{control?.errors?.['maxlength']?.requiredLength}} Zeichen.\n </div>\n </div>\n</div>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { animate, query, style, transition, trigger } from '@angular/animations';\nimport { Subscription } from 'rxjs';\nimport { Toast, ToastService, ToastType } from '@lenne.tech/ng-base/shared';\n\nconst toastAnimation = trigger('toastAnimation', [\n transition('* <=> *', [\n query(\n ':enter',\n [style({ transform: 'translateX(100%)' }), animate('200ms ease-in', style({ transform: 'translateX(0%)' }))],\n { optional: true }\n ),\n query(':leave', animate('200ms ease-in', style({ transform: 'translateX(100%)' })), { optional: true }),\n ]),\n]);\n\n@Component({\n selector: 'base-toast',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n animations: [toastAnimation],\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n toasts: Toast[] = [];\n ToastType = ToastType;\n subscriptions = new Subscription();\n @Input() position: 'top-right' | 'bottom-right' = 'bottom-right';\n\n constructor(private toastService: ToastService) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.toastService.toastsAsObservable.subscribe({\n next: (value) => {\n this.toasts = value;\n },\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n\n getDefaultTitle(toast: Toast): string {\n switch (toast.type) {\n case ToastType.ERROR:\n return 'Irgendetwas ist schiefgelaufen';\n case ToastType.INFO:\n return 'Info';\n case ToastType.WARNING:\n return 'Achtung';\n case ToastType.SUCCESS:\n return 'Erfolgreich';\n }\n }\n\n getDefaultDescription(toast: Toast): string {\n switch (toast.type) {\n case ToastType.ERROR:\n return 'Sollte das Problem länger bestehen bleiben, dann wenden Sie sich bitte\\n' + ' an den Support.';\n case ToastType.INFO:\n return 'Info';\n case ToastType.WARNING:\n return 'Warning';\n case ToastType.SUCCESS:\n return 'Die Änderungen wurden erfolgreich gespeichert.';\n }\n }\n\n reload() {\n location.reload();\n }\n}\n","<div class=\"toast-wrapper\" [ngClass]=\"position\">\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","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { AbstractControl, FormControl } from '@angular/forms';\n\n@Component({\n selector: 'base-tags',\n templateUrl: './tags.component.html',\n styleUrls: ['./tags.component.scss'],\n})\nexport class TagsComponent implements OnInit, OnChanges {\n @Input() id: string;\n @Input() name: string;\n @Input() label?: string = '';\n @Input() placeholder?: string = '';\n @Input() autocomplete?: string;\n @Input() tabIndex?: number;\n @Input() control: FormControl | AbstractControl;\n @Input() options?: string[] = [];\n @Input() custom = true;\n @Input() removeByKey = true;\n @Input() required = false;\n inputValue = '';\n filteredOptions: string[] = [];\n selectedElement: HTMLElement;\n\n ngOnInit() {\n this.setFilteredOptions();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['options']?.currentValue && changes['options']?.currentValue?.length > 0) {\n this.setFilteredOptions();\n }\n }\n\n /**\n * Listen to enter keys\n *\n * @param event\n */\n enterKey(event: KeyboardEvent): void {\n if (this.removeByKey && event.code === 'Backspace' && !this.inputValue) {\n this.removeTag();\n return;\n } else {\n if (event.code === 'Comma' || event.code === 'Space' || event.code === 'Enter') {\n this.addTag(this.inputValue);\n }\n }\n }\n\n /**\n * Add new tag\n *\n * @param tag\n */\n addTag(tag: string): void {\n if (!this.control.value) {\n this.control.setValue([]);\n }\n this.selectedElement = null;\n\n if (tag.endsWith(',') || tag.endsWith(' ')) {\n tag = tag.slice(0, -1);\n }\n\n if (!this.custom && !this.options.find((e) => e === tag)) {\n return;\n }\n\n if (this.control.value?.length === 0) {\n this.control.setValue([tag]);\n this.inputValue = '';\n this.control.setErrors(null);\n return;\n }\n\n if (tag.length > 0 && this.control.value && !this.control.value.some((item: string) => item === tag)) {\n this.control.value.push(tag);\n this.inputValue = '';\n this.control.setErrors(null);\n }\n }\n\n /**\n * Remove tag\n *\n * @param tag\n */\n removeTag(tag?: string): void {\n this.selectedElement = null;\n if (tag) {\n this.control.setValue(this.control.value.filter((item: string) => item !== tag));\n } else {\n this.control.value.splice(-1);\n }\n\n if (this.control.value.length === 0) {\n this.control.setErrors({ required: true });\n }\n }\n\n /**\n * Filter options for drop down\n */\n setFilteredOptions() {\n if (this.options) {\n this.filteredOptions =\n this.options.filter((e) => e?.includes(this.inputValue) && !this.control.value.includes(e)) || [];\n }\n }\n\n /**\n * Show dropdown focus\n *\n * @param event\n */\n onFocus(event?) {\n if (!this.filteredOptions) {\n return;\n }\n\n if (event) {\n this.selectedElement = event.target;\n } else {\n setTimeout(() => {\n this.selectedElement = null;\n }, 100);\n }\n }\n}\n","<div class=\"form-group mb-3 position-relative\" *ngIf=\"control\">\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 (focus)=\"onFocus($event)\"\n (blur)=\"onFocus()\"\n type=\"text\"\n class=\"form-control\"\n (keyup)=\"enterKey($event)\"\n />\n\n <div class=\"tag-options\" *ngIf=\"filteredOptions && selectedElement\">\n <div class=\"tag-option-item\" *ngFor=\"let option of filteredOptions\" (click)=\"addTag(option)\">{{ option }}</div>\n </div>\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","import { Component } from '@angular/core';\n\n@Component({\n selector: 'base-loading-bar',\n templateUrl: './loading-bar.component.html',\n styleUrls: ['./loading-bar.component.scss'],\n})\nexport class LoadingBarComponent {}\n","<div class=\"slider\">\n <div class=\"line\"></div>\n <div class=\"subline inc\"></div>\n <div class=\"subline dec\"></div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { SkeletonType } from '@lenne.tech/ng-base/shared';\n\n@Component({\n selector: 'base-skeleton-loader',\n templateUrl: './skeleton-loader.component.html',\n styleUrls: ['./skeleton-loader.component.scss'],\n})\nexport class SkeletonLoaderComponent {\n @Input() type!: SkeletonType;\n @Input() count = 1;\n @Input() size = 18;\n\n convertToArray(value): any {\n if (!value) {\n return [];\n }\n const res = [];\n\n for (let i = 0; i < value; i++) {\n res.push(i);\n }\n console.log(res);\n\n return res;\n }\n}\n","<ng-container *ngIf=\"type\" [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"'LINE'\">\n <div class=\"line-loader-wrapper\">\n <div class=\"line-loader\" *ngFor=\"let key of convertToArray(count)\"></div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'RECTANGLE'\">\n <div class=\"line-rectangle\" [ngStyle]=\"{ height: size + 'px' }\"></div>\n </div>\n\n <div *ngSwitchCase=\"'AVATAR'\">\n <div class=\"line-avatar\" [ngStyle]=\"{ height: size + 'px', width: size + 'px' }\"></div>\n </div>\n</ng-container>\n","import { Component } from '@angular/core';\nimport { Breadcrumb, BreadcrumbService } from '@lenne.tech/ng-base/shared';\n\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'base-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n})\nexport class BreadcrumbComponent {\n breadcrumbs$: Observable<Breadcrumb[]>;\n\n constructor(private readonly breadcrumbService: BreadcrumbService) {\n this.breadcrumbs$ = breadcrumbService.breadcrumbsObservable;\n }\n}\n","<ul class=\"pt-3\">\n <li *ngFor=\"let breadcrumb of breadcrumbs$ | async\">\n <a [routerLink]=\"breadcrumb.url\">{{ breadcrumb.label }}</a>\n </li>\n</ul>\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { InputComponent } from './components/input/input.component';\nimport { SelectComponent } from './components/select/select.component';\nimport { CheckboxComponent } from './components/checkbox/checkbox.component';\nimport { TextareaComponent } from './components/textarea/textarea.component';\nimport { ToastComponent } from './components/toast/toast.component';\nimport { TagsComponent } from './components/tags/tags.component';\nimport { LoadingBarComponent } from './components/loading-bar/loading-bar.component';\nimport { SkeletonLoaderComponent } from './components/skeleton-loader/skeleton-loader.component';\nimport { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\n\n// Modules\nconst imports = [FormsModule, ReactiveFormsModule, CommonModule];\n\n// Imported and exported elements\nconst elements = [\n // Components\n InputComponent,\n SelectComponent,\n CheckboxComponent,\n TextareaComponent,\n ToastComponent,\n TagsComponent,\n LoadingBarComponent,\n SkeletonLoaderComponent,\n BreadcrumbComponent,\n];\n\n@NgModule({\n declarations: elements,\n imports,\n exports: elements,\n})\nexport class BaseComponentsModule {}\n","/**\n * Exports for public API\n */\n\n// Module\nexport * from './base-components.module';\n\n// Components\nexport * from './components/input/input.component';\nexport * from './components/select/select.component';\nexport * from './components/checkbox/checkbox.component';\nexport * from './components/textarea/textarea.component';\nexport * from './components/tags/tags.component';\nexport * from './components/toast/toast.component';\nexport * from './components/loading-bar/loading-bar.component';\nexport * from './components/skeleton-loader/skeleton-loader.component';\nexport * from './components/breadcrumb/breadcrumb.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lenne.tech-ng-base-base-components.mjs","sources":["../../../projects/ng-base/base-components/components/input/input.component.ts","../../../projects/ng-base/base-components/components/input/input.component.html","../../../projects/ng-base/base-components/components/select/select.component.ts","../../../projects/ng-base/base-components/components/select/select.component.html","../../../projects/ng-base/base-components/components/checkbox/checkbox.component.ts","../../../projects/ng-base/base-components/components/checkbox/checkbox.component.html","../../../projects/ng-base/base-components/components/textarea/textarea.component.ts","../../../projects/ng-base/base-components/components/textarea/textarea.component.html","../../../projects/ng-base/base-components/components/toast/toast.component.ts","../../../projects/ng-base/base-components/components/toast/toast.component.html","../../../projects/ng-base/base-components/components/tags/tags.component.ts","../../../projects/ng-base/base-components/components/tags/tags.component.html","../../../projects/ng-base/base-components/components/loading-bar/loading-bar.component.ts","../../../projects/ng-base/base-components/components/loading-bar/loading-bar.component.html","../../../projects/ng-base/base-components/components/skeleton-loader/skeleton-loader.component.ts","../../../projects/ng-base/base-components/components/skeleton-loader/skeleton-loader.component.html","../../../projects/ng-base/base-components/components/breadcrumb/breadcrumb.component.ts","../../../projects/ng-base/base-components/components/breadcrumb/breadcrumb.component.html","../../../projects/ng-base/base-components/base-components.module.ts","../../../projects/ng-base/base-components/public-api.ts","../../../projects/ng-base/base-components/lenne.tech-ng-base-base-components.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'base-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n})\nexport class InputComponent {\n @Input() id: string;\n @Input() name: string;\n @Input() label?: string;\n @Input() placeholder?: string = '';\n @Input() autocomplete?: string;\n @Input() tabIndex?: number;\n @Input() control: any;\n @Input() type = 'text';\n @Input() required = false;\n}\n","<div class=\"form-group mb-3\">\n <label [for]=\"id\" class=\"form-label\" [ngClass]=\"{ required: required }\" *ngIf=\"label\">{{ label }}</label>\n <input\n [id]=\"id\"\n [name]=\"name\"\n class=\"form-control\"\n [type]=\"type\"\n [formControl]=\"control\"\n [required]=\"required\"\n [placeholder]=\"placeholder\"\n [autocomplete]=\"autocomplete ?? null\"\n [tabIndex]=\"tabIndex ?? null\"\n [ngClass]=\"{ 'is-invalid': control?.invalid && control?.touched }\"\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 *ngIf=\"control?.errors?.['minlength']\">\n Die Mindestlänge für dieses Feld beträgt\n {{control.errors?.['minlength']?.requiredLength}} Zeichen.\n </div>\n <div *ngIf=\"control?.errors?.['maxlength']\">\n Die maximale Länge für dieses Feld beträgt\n {{control.errors?.['maxlength']?.requiredLength}} Zeichen.\n </div>\n <div *ngIf=\"control?.errors?.['email']\">Bitte eine gültige E-Mail Adresse angeben.</div>\n <div *ngIf=\"control?.errors?.['matching']\">Die Passwörter müssen überein stimmen.</div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\ninterface Option {\n text: string;\n value: string | number;\n}\n\n@Component({\n selector: 'base-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n})\nexport class SelectComponent {\n @Input() id: string;\n @Input() name: string;\n @Input() label?: string;\n @Input() placeholder?: string = '';\n @Input() control: any;\n @Input() tabIndex?: number;\n @Input() required = false;\n @Input() multiple = false;\n @Input() search = false;\n @Input() options: Option[] = [];\n}\n","<div class=\"form-group mb-3\">\n <label [for]=\"id\" class=\"form-label\" [ngClass]=\"{ required: required }\" *ngIf=\"label\">{{ label }}</label>\n <select\n [id]=\"id\"\n [name]=\"name\"\n class=\"form-select\"\n [attr.aria-label]=\"placeholder\"\n [attr.data-live-search]=\"search\"\n [formControl]=\"control\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex ?? null\"\n [multiple]=\"multiple\"\n [ngClass]=\"{ 'is-invalid': control?.invalid && control?.touched }\"\n >\n <option [ngValue]=\"null\" selected>{{ placeholder }}</option>\n <option *ngFor=\"let option of options\" [ngValue]=\"option.value\">\n {{ option.text }}\n </option>\n </select>\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 *ngIf=\"control?.errors?.['minlength']\">\n Die Mindestlänge für dieses Feld beträgt\n {{control?.errors?.['minlength']?.requiredLength}} Zeichen.\n </div>\n <div *ngIf=\"control?.errors?.['maxlength']\">\n Die maximale Länge für dieses Feld beträgt\n {{control?.errors?.['maxlength']?.requiredLength}} Zeichen.\n </div>\n <div *ngIf=\"control?.errors?.['email']\">Bitte eine gültige E-Mail Adresse angeben.</div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'base-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n})\nexport class CheckboxComponent {\n @Input() id: string;\n @Input() name: string;\n @Input() label?: string;\n @Input() value: string | number;\n @Input() control: any;\n @Input() required = false;\n}\n","<div class=\"form-check\">\n <input\n class=\"form-check-input\"\n type=\"checkbox\"\n [formControl]=\"control\"\n [required]=\"required\"\n [value]=\"value\"\n [id]=\"id\"\n [name]=\"name\"\n [ngClass]=\"{ 'is-invalid': control?.invalid && control?.touched }\"\n />\n <label [for]=\"id\" class=\"form-label\" [ngClass]=\"{ required: required }\">\n <ng-container *ngIf=\"label\">\n {{ label }}\n </ng-container>\n <ng-content></ng-content>\n </label>\n\n <div class=\"invalid-feedback ms-0 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","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'base-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.scss'],\n})\nexport class TextareaComponent {\n @Input() id: string;\n @Input() name: string;\n @Input() label?: string = '';\n @Input() placeholder?: string = '';\n @Input() control: any;\n @Input() rows = 5;\n @Input() required = false;\n @Input() tabIndex?: number;\n}\n","<div class=\"form-group mb-3\">\n <label [for]=\"id\" class=\"form-label\" [ngClass]=\"{ required: required }\" *ngIf=\"label\">{{ label }}</label>\n <textarea\n class=\"form-control\"\n [id]=\"id\"\n [name]=\"name\"\n [rows]=\"rows\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [tabIndex]=\"tabIndex ?? null\"\n [ngClass]=\"{ 'is-invalid': control?.invalid && control?.touched }\"\n ></textarea>\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 *ngIf=\"control?.errors?.['minlength']\">\n Die Mindestlänge für dieses Feld beträgt\n {{control?.errors?.['minlength']?.requiredLength}} Zeichen.\n </div>\n <div *ngIf=\"control?.errors?.['maxlength']\">\n Die maximale Länge für dieses Feld beträgt\n {{control?.errors?.['maxlength']?.requiredLength}} Zeichen.\n </div>\n </div>\n</div>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { animate, query, style, transition, trigger } from '@angular/animations';\nimport { Subscription } from 'rxjs';\nimport { Toast, ToastService, ToastType } from '@lenne.tech/ng-base/shared';\n\nconst toastAnimation = trigger('toastAnimation', [\n transition('* <=> *', [\n query(\n ':enter',\n [style({ transform: 'translateX(100%)' }), animate('200ms ease-in', style({ transform: 'translateX(0%)' }))],\n { optional: true }\n ),\n query(':leave', animate('200ms ease-in', style({ transform: 'translateX(100%)' })), { optional: true }),\n ]),\n]);\n\n@Component({\n selector: 'base-toast',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n animations: [toastAnimation],\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n toasts: Toast[] = [];\n ToastType = ToastType;\n subscriptions = new Subscription();\n @Input() position: 'top-right' | 'bottom-right' = 'bottom-right';\n\n constructor(private toastService: ToastService) {}\n\n ngOnInit(): void {\n this.subscriptions.add(\n this.toastService.toastsAsObservable.subscribe({\n next: (value) => {\n this.toasts = value;\n },\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n }\n\n getDefaultTitle(toast: Toast): string {\n switch (toast.type) {\n case ToastType.ERROR:\n return 'Irgendetwas ist schiefgelaufen';\n case ToastType.INFO:\n return 'Info';\n case ToastType.WARNING:\n return 'Achtung';\n case ToastType.SUCCESS:\n return 'Erfolgreich';\n }\n }\n\n getDefaultDescription(toast: Toast): string {\n switch (toast.type) {\n case ToastType.ERROR:\n return 'Sollte das Problem länger bestehen bleiben, dann wenden Sie sich bitte\\n' + ' an den Support.';\n case ToastType.INFO:\n return 'Info';\n case ToastType.WARNING:\n return 'Warning';\n case ToastType.SUCCESS:\n return 'Die Änderungen wurden erfolgreich gespeichert.';\n }\n }\n\n reload() {\n location.reload();\n }\n}\n","<div class=\"toast-wrapper\" [ngClass]=\"position\">\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","import { Component, Input } from '@angular/core';\nimport { AbstractControl, FormControl } from '@angular/forms';\n\n@Component({\n selector: 'base-tags',\n templateUrl: './tags.component.html',\n styleUrls: ['./tags.component.scss'],\n})\nexport class TagsComponent {\n @Input() id: string;\n @Input() name: string;\n @Input() label?: string = '';\n @Input() placeholder?: string = '';\n @Input() autocomplete?: string;\n @Input() tabIndex?: number;\n @Input() control: FormControl | AbstractControl;\n @Input() options?: string[] = [];\n @Input() custom = true;\n @Input() removeByKey = true;\n @Input() required = false;\n inputValue = '';\n selectedElement: HTMLElement;\n\n /**\n * Listen to enter keys\n *\n * @param event\n */\n enterKey(event: KeyboardEvent): void {\n if (this.removeByKey && event.code === 'Backspace' && !this.inputValue) {\n this.removeTag();\n return;\n } else {\n if (event.code === 'Comma' || event.code === 'Space' || event.code === 'Enter') {\n this.addTag(this.inputValue);\n }\n }\n }\n\n /**\n * Add new tag\n *\n * @param tag\n */\n addTag(tag: string): void {\n if (!this.control.value) {\n this.control.setValue([]);\n }\n this.selectedElement = null;\n\n if (tag.endsWith(',') || tag.endsWith(' ')) {\n tag = tag.slice(0, -1);\n }\n\n if (!this.custom && !this.options.find((e) => e === tag)) {\n return;\n }\n\n if (this.control.value?.length === 0) {\n this.control.setValue([tag]);\n this.inputValue = '';\n this.control.setErrors(null);\n return;\n }\n\n if (tag.length > 0 && this.control.value && !this.control.value.some((item: string) => item === tag)) {\n this.control.value.push(tag);\n this.inputValue = '';\n this.control.setErrors(null);\n }\n }\n\n /**\n * Remove tag\n *\n * @param tag\n */\n removeTag(tag?: string): void {\n this.selectedElement = null;\n if (tag) {\n this.control.setValue(this.control.value.filter((item: string) => item !== tag));\n } else {\n this.control.value.splice(-1);\n }\n\n if (this.control.value.length === 0) {\n this.control.setErrors({ required: true });\n }\n }\n\n /**\n * Filter options for drop down\n */\n filterOptions() {\n return this.options\n ? this.options.filter((e) => e?.includes(this.inputValue) && !this.control.value.includes(e))\n : [];\n }\n\n /**\n * Show dropdown focus\n *\n * @param event\n */\n onFocus(event?) {\n if (event) {\n this.selectedElement = event.target;\n } else {\n setTimeout(() => {\n this.selectedElement = null;\n }, 250);\n }\n }\n}\n","<div class=\"form-group position-relative\" *ngIf=\"control\">\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 (focus)=\"onFocus($event)\"\n (blur)=\"onFocus()\"\n type=\"text\"\n class=\"form-control\"\n (keyup)=\"enterKey($event)\"\n />\n\n <div class=\"tag-options\" *ngIf=\"options && selectedElement\">\n <div class=\"tag-option-item\" *ngFor=\"let option of filterOptions()\" (click)=\"addTag(option)\">{{ option }}</div>\n </div>\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","import { Component } from '@angular/core';\n\n@Component({\n selector: 'base-loading-bar',\n templateUrl: './loading-bar.component.html',\n styleUrls: ['./loading-bar.component.scss'],\n})\nexport class LoadingBarComponent {}\n","<div class=\"slider\">\n <div class=\"line\"></div>\n <div class=\"subline inc\"></div>\n <div class=\"subline dec\"></div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { SkeletonType } from '@lenne.tech/ng-base/shared';\n\n@Component({\n selector: 'base-skeleton-loader',\n templateUrl: './skeleton-loader.component.html',\n styleUrls: ['./skeleton-loader.component.scss'],\n})\nexport class SkeletonLoaderComponent {\n @Input() type!: SkeletonType;\n @Input() count = 1;\n @Input() size = 18;\n\n convertToArray(value): any {\n if (!value) {\n return [];\n }\n const res = [];\n\n for (let i = 0; i < value; i++) {\n res.push(i);\n }\n console.log(res);\n\n return res;\n }\n}\n","<ng-container *ngIf=\"type\" [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"'LINE'\">\n <div class=\"line-loader-wrapper\">\n <div class=\"line-loader\" *ngFor=\"let key of convertToArray(count)\"></div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'RECTANGLE'\">\n <div class=\"line-rectangle\" [ngStyle]=\"{ height: size + 'px' }\"></div>\n </div>\n\n <div *ngSwitchCase=\"'AVATAR'\">\n <div class=\"line-avatar\" [ngStyle]=\"{ height: size + 'px', width: size + 'px' }\"></div>\n </div>\n</ng-container>\n","import { Component } from '@angular/core';\nimport { Breadcrumb, BreadcrumbService } from '@lenne.tech/ng-base/shared';\n\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'base-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n})\nexport class BreadcrumbComponent {\n breadcrumbs$: Observable<Breadcrumb[]>;\n\n constructor(private readonly breadcrumbService: BreadcrumbService) {\n this.breadcrumbs$ = breadcrumbService.breadcrumbsObservable;\n }\n}\n","<ul class=\"pt-3\">\n <li *ngFor=\"let breadcrumb of breadcrumbs$ | async\">\n <a [routerLink]=\"breadcrumb.url\">{{ breadcrumb.label }}</a>\n </li>\n</ul>\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { InputComponent } from './components/input/input.component';\nimport { SelectComponent } from './components/select/select.component';\nimport { CheckboxComponent } from './components/checkbox/checkbox.component';\nimport { TextareaComponent } from './components/textarea/textarea.component';\nimport { ToastComponent } from './components/toast/toast.component';\nimport { TagsComponent } from './components/tags/tags.component';\nimport { LoadingBarComponent } from './components/loading-bar/loading-bar.component';\nimport { SkeletonLoaderComponent } from './components/skeleton-loader/skeleton-loader.component';\nimport { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\n\n// Modules\nconst imports = [FormsModule, ReactiveFormsModule, CommonModule];\n\n// Imported and exported elements\nconst elements = [\n // Components\n InputComponent,\n SelectComponent,\n CheckboxComponent,\n TextareaComponent,\n ToastComponent,\n TagsComponent,\n LoadingBarComponent,\n SkeletonLoaderComponent,\n BreadcrumbComponent,\n];\n\n@NgModule({\n declarations: elements,\n imports,\n exports: elements,\n})\nexport class BaseComponentsModule {}\n","/**\n * Exports for public API\n */\n\n// Module\nexport * from './base-components.module';\n\n// Components\nexport * from './components/input/input.component';\nexport * from './components/select/select.component';\nexport * from './components/checkbox/checkbox.component';\nexport * from './components/textarea/textarea.component';\nexport * from './components/tags/tags.component';\nexport * from './components/toast/toast.component';\nexport * from './components/loading-bar/loading-bar.component';\nexport * from './components/skeleton-loader/skeleton-loader.component';\nexport * from './components/breadcrumb/breadcrumb.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}
|