@kms-ngx-ui/presentational 0.0.1
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/README.md +24 -0
- package/bundles/kms-ngx-ui-presentational.umd.js +2441 -0
- package/bundles/kms-ngx-ui-presentational.umd.js.map +1 -0
- package/bundles/kms-ngx-ui-presentational.umd.min.js +38 -0
- package/bundles/kms-ngx-ui-presentational.umd.min.js.map +1 -0
- package/esm2015/kms-ngx-ui-presentational.js +37 -0
- package/esm2015/lib/kms-ngx-ui-presentational.component.js +18 -0
- package/esm2015/lib/kms-ngx-ui-presentational.module.js +98 -0
- package/esm2015/lib/kms-ngx-ui-presentational.service.js +13 -0
- package/esm2015/lib/models/address.model.js +6 -0
- package/esm2015/lib/models/iconSize.enum.js +17 -0
- package/esm2015/lib/models/index.js +5 -0
- package/esm2015/lib/models/is-value.function.js +17 -0
- package/esm2015/lib/models/salutation.enum.js +8 -0
- package/esm2015/lib/models/types/attached-file-dto.model.js +6 -0
- package/esm2015/lib/models/types/nullable.type.js +5 -0
- package/esm2015/lib/parent-components/actions.component.js +48 -0
- package/esm2015/lib/parent-components/form-control.component.js +73 -0
- package/esm2015/lib/parent-components/form.component.js +77 -0
- package/esm2015/lib/pipes/custom-pipes.module.js +45 -0
- package/esm2015/lib/pipes/decode-uri.pipe.js +15 -0
- package/esm2015/lib/pipes/encode-uri.pipe.js +15 -0
- package/esm2015/lib/pipes/integer-currency.pipe.js +29 -0
- package/esm2015/lib/pipes/safe-html.pipe.js +22 -0
- package/esm2015/lib/pipes/safe-style.pipe.js +22 -0
- package/esm2015/lib/pipes/safe-url.pipe.js +22 -0
- package/esm2015/lib/pipes/to-number.pipe.js +19 -0
- package/esm2015/lib/pipes/trim.pipe.js +16 -0
- package/esm2015/lib/pipes/typeof.pipe.js +12 -0
- package/esm2015/lib/services/viewport.service.js +213 -0
- package/esm2015/lib/ui/back-to-top/back-to-top.component.js +46 -0
- package/esm2015/lib/ui/button-with-confirm-dialog/button-response-types.enum.js +6 -0
- package/esm2015/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.js +56 -0
- package/esm2015/lib/ui/button-with-confirm-dialog/dialog-data.model.js +2 -0
- package/esm2015/lib/ui/checkbox/checkbox.component.js +63 -0
- package/esm2015/lib/ui/color-input/color-input.component.js +63 -0
- package/esm2015/lib/ui/enum-radiogroup/enum-radiogroup.component.js +46 -0
- package/esm2015/lib/ui/file-input/file-input.component.js +215 -0
- package/esm2015/lib/ui/flyout/flyout.component.js +84 -0
- package/esm2015/lib/ui/generic-dialog/generic-dialog.component.js +54 -0
- package/esm2015/lib/ui/icon/icon.component.js +47 -0
- package/esm2015/lib/ui/icon/iconSize.enum.js +17 -0
- package/esm2015/lib/ui/kms-accordion-item/kms-accordion-item.component.js +36 -0
- package/esm2015/lib/ui/loader/loader.component.js +21 -0
- package/esm2015/lib/ui/map/map.component.js +137 -0
- package/esm2015/lib/ui/radiobutton/radiobutton.component.js +66 -0
- package/esm2015/lib/ui/salutation-dropdown/salutation-dropdown.component.js +49 -0
- package/esm2015/lib/ui/salutation-radiogroup/salutation-radiogroup.component.js +44 -0
- package/esm2015/lib/ui/time-input/time-input.component.js +80 -0
- package/esm2015/lib/ui/tooltip/tooltip.component.js +17 -0
- package/esm2015/lib/ui/tooltip-icon/tooltip-icon.component.js +29 -0
- package/esm2015/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.js +74 -0
- package/esm2015/public-api.js +12 -0
- package/fesm2015/kms-ngx-ui-presentational.js +1962 -0
- package/fesm2015/kms-ngx-ui-presentational.js.map +1 -0
- package/kms-ngx-ui-presentational.d.ts +37 -0
- package/kms-ngx-ui-presentational.metadata.json +1 -0
- package/lib/kms-ngx-ui-presentational.component.d.ts +5 -0
- package/lib/kms-ngx-ui-presentational.module.d.ts +2 -0
- package/lib/kms-ngx-ui-presentational.service.d.ts +3 -0
- package/lib/models/address.model.d.ts +14 -0
- package/lib/models/iconSize.enum.d.ts +15 -0
- package/lib/models/index.d.ts +4 -0
- package/lib/models/is-value.function.d.ts +9 -0
- package/lib/models/salutation.enum.d.ts +5 -0
- package/lib/models/types/attached-file-dto.model.d.ts +11 -0
- package/lib/models/types/nullable.type.d.ts +4 -0
- package/lib/parent-components/actions.component.d.ts +28 -0
- package/lib/parent-components/form-control.component.d.ts +24 -0
- package/lib/parent-components/form.component.d.ts +31 -0
- package/lib/pipes/custom-pipes.module.d.ts +5 -0
- package/lib/pipes/decode-uri.pipe.d.ts +7 -0
- package/lib/pipes/encode-uri.pipe.d.ts +7 -0
- package/lib/pipes/integer-currency.pipe.d.ts +10 -0
- package/lib/pipes/safe-html.pipe.d.ts +10 -0
- package/lib/pipes/safe-style.pipe.d.ts +10 -0
- package/lib/pipes/safe-url.pipe.d.ts +10 -0
- package/lib/pipes/to-number.pipe.d.ts +7 -0
- package/lib/pipes/trim.pipe.d.ts +7 -0
- package/lib/pipes/typeof.pipe.d.ts +4 -0
- package/lib/services/viewport.service.d.ts +74 -0
- package/lib/ui/back-to-top/back-to-top.component.d.ts +10 -0
- package/lib/ui/button-with-confirm-dialog/button-response-types.enum.d.ts +4 -0
- package/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.d.ts +16 -0
- package/lib/ui/button-with-confirm-dialog/dialog-data.model.d.ts +9 -0
- package/lib/ui/checkbox/checkbox.component.d.ts +28 -0
- package/lib/ui/color-input/color-input.component.d.ts +15 -0
- package/lib/ui/enum-radiogroup/enum-radiogroup.component.d.ts +14 -0
- package/lib/ui/file-input/file-input.component.d.ts +86 -0
- package/lib/ui/flyout/flyout.component.d.ts +32 -0
- package/lib/ui/generic-dialog/generic-dialog.component.d.ts +23 -0
- package/lib/ui/icon/icon.component.d.ts +39 -0
- package/lib/ui/icon/iconSize.enum.d.ts +15 -0
- package/lib/ui/kms-accordion-item/kms-accordion-item.component.d.ts +18 -0
- package/lib/ui/loader/loader.component.d.ts +6 -0
- package/lib/ui/map/map.component.d.ts +70 -0
- package/lib/ui/radiobutton/radiobutton.component.d.ts +23 -0
- package/lib/ui/salutation-dropdown/salutation-dropdown.component.d.ts +14 -0
- package/lib/ui/salutation-radiogroup/salutation-radiogroup.component.d.ts +12 -0
- package/lib/ui/time-input/time-input.component.d.ts +19 -0
- package/lib/ui/tooltip/tooltip.component.d.ts +3 -0
- package/lib/ui/tooltip-icon/tooltip-icon.component.d.ts +10 -0
- package/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.d.ts +24 -0
- package/package.json +25 -0
- package/public-api.d.ts +6 -0
- package/src/lib/ui/back-to-top/back-to-top.component.scss +47 -0
- package/src/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.scss +0 -0
- package/src/lib/ui/checkbox/checkbox.component.scss +57 -0
- package/src/lib/ui/color-input/color-input.component.scss +38 -0
- package/src/lib/ui/file-input/file-input.component.scss +0 -0
- package/src/lib/ui/flyout/flyout.component.scss +34 -0
- package/src/lib/ui/generic-dialog/generic-dialog.component.scss +59 -0
- package/src/lib/ui/icon/icon.component.scss +149 -0
- package/src/lib/ui/kms-accordion-item/kms-accordion-item.component.scss +95 -0
- package/src/lib/ui/loader/loader.component.scss +0 -0
- package/src/lib/ui/map/map.component.scss +0 -0
- package/src/lib/ui/radiobutton/radiobutton.component.scss +30 -0
- package/src/lib/ui/time-input/time-input.component.scss +10 -0
- package/src/lib/ui/tooltip/tooltip.component.scss +27 -0
- package/src/lib/ui/tooltip-icon/tooltip-icon.component.scss +2 -0
- package/src/styles/mixins.scss +9 -0
- package/src/styles/styles.scss +30 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { Component, Input, forwardRef, ViewChild, Renderer2, EventEmitter, Output, ApplicationRef, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { FormBuilder, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, } from '@angular/forms';
|
|
3
|
+
//import { TranslateService } from '@ngx-translate/core';
|
|
4
|
+
import { IconSize } from '../../models/iconSize.enum';
|
|
5
|
+
import { isValue } from '../../models/is-value.function';
|
|
6
|
+
// Max size in bytes of uploaded image
|
|
7
|
+
const MAX_SIZE_BYTES = 2097152;
|
|
8
|
+
export class FileInputComponent {
|
|
9
|
+
/**
|
|
10
|
+
* Constructor
|
|
11
|
+
* @param formBuilder
|
|
12
|
+
* @param appRef
|
|
13
|
+
* @param cd
|
|
14
|
+
* @param translateService
|
|
15
|
+
* @param renderer
|
|
16
|
+
*/
|
|
17
|
+
constructor(formBuilder, appRef, cd,
|
|
18
|
+
//private translateService: TranslateService,
|
|
19
|
+
renderer) {
|
|
20
|
+
this.formBuilder = formBuilder;
|
|
21
|
+
this.appRef = appRef;
|
|
22
|
+
this.cd = cd;
|
|
23
|
+
this.renderer = renderer;
|
|
24
|
+
this.label = '';
|
|
25
|
+
this.previewImage = true;
|
|
26
|
+
this.allowRemove = true;
|
|
27
|
+
this.previewImageText = '';
|
|
28
|
+
this.maxSizeBytes = MAX_SIZE_BYTES;
|
|
29
|
+
this.resizePixels = 0;
|
|
30
|
+
this.acceptedFileMimetypes = 'image/jpeg, image/jpg, image/png';
|
|
31
|
+
this.form = this.formBuilder.group({
|
|
32
|
+
ImageIdent: new FormControl(''),
|
|
33
|
+
ImageLink: new FormControl(''),
|
|
34
|
+
Filename: new FormControl(''),
|
|
35
|
+
ImageAsDataURL: new FormControl(''),
|
|
36
|
+
Text: new FormControl(''),
|
|
37
|
+
});
|
|
38
|
+
this.subscriptions = [];
|
|
39
|
+
this.newImageLoading = false;
|
|
40
|
+
this.IconSize = IconSize;
|
|
41
|
+
this.formDataChanged = new EventEmitter();
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
43
|
+
this.onChange = () => { };
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
45
|
+
this.onTouch = () => { };
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Click on button triggers file-input to open OS file dialog
|
|
49
|
+
*/
|
|
50
|
+
selectImageOverlay() {
|
|
51
|
+
this.fileInput.nativeElement.click();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Function to manage the input image
|
|
55
|
+
* Returns an error if the file exceeds maximum wanted filesize (Mb).
|
|
56
|
+
* @param ev
|
|
57
|
+
* @returns
|
|
58
|
+
*/
|
|
59
|
+
selectImage(ev) {
|
|
60
|
+
if (ev.target.files && ev.target.files[0]) {
|
|
61
|
+
const file = ev.target.files[0];
|
|
62
|
+
if (file.size > this.maxSizeBytes) {
|
|
63
|
+
this.clearInputValue(ev);
|
|
64
|
+
//alert(this.translateService.instant('errors.fileTooBig'));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.newImageLoading = true;
|
|
69
|
+
if (this.resizePixels > 0) {
|
|
70
|
+
const logoUrl = URL.createObjectURL(file);
|
|
71
|
+
const imgEl = document.createElement('img');
|
|
72
|
+
imgEl.addEventListener('load', () => {
|
|
73
|
+
const resizedLogo = this.resizeImage(imgEl, this.resizePixels);
|
|
74
|
+
const newFile = this.generateModel(file.name, resizedLogo, this.value.ImageIdent, this.value.ImageLink, this.value.Text);
|
|
75
|
+
this.value = newFile;
|
|
76
|
+
this.newImageLoading = false;
|
|
77
|
+
this.cd.markForCheck();
|
|
78
|
+
});
|
|
79
|
+
imgEl.src = logoUrl;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const reader = new FileReader();
|
|
83
|
+
reader.readAsDataURL(file);
|
|
84
|
+
reader.onload = (e) => {
|
|
85
|
+
const newFile = this.generateModel(file.name, e.target.result, this.value.ImageIdent, this.value.ImageLink, this.value.Text);
|
|
86
|
+
this.value = newFile;
|
|
87
|
+
this.newImageLoading = false;
|
|
88
|
+
this.cd.markForCheck();
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
console.warn("No file selected");
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Resize an image
|
|
99
|
+
* @param imgEl
|
|
100
|
+
* @param wantedWidth as number
|
|
101
|
+
* @returns string
|
|
102
|
+
*/
|
|
103
|
+
resizeImage(imgEl, wantedWidth) {
|
|
104
|
+
const canvas = document.createElement('canvas');
|
|
105
|
+
const ctx = canvas.getContext('2d');
|
|
106
|
+
const aspect = imgEl.width / imgEl.height;
|
|
107
|
+
canvas.width = wantedWidth;
|
|
108
|
+
canvas.height = wantedWidth / aspect;
|
|
109
|
+
if (isValue(ctx))
|
|
110
|
+
ctx.drawImage(imgEl, 0, 0, canvas.width, canvas.height);
|
|
111
|
+
return canvas.toDataURL();
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Generate default object
|
|
115
|
+
* @param name as string
|
|
116
|
+
* @param content as string
|
|
117
|
+
* @returns AttachedFileDTO
|
|
118
|
+
*/
|
|
119
|
+
generateModel(name, content, ident, imageLink, text) {
|
|
120
|
+
return {
|
|
121
|
+
ImageIdent: ident ? ident : '',
|
|
122
|
+
Filename: name ? name : '',
|
|
123
|
+
ImageAsDataURL: content ? content : '',
|
|
124
|
+
ImageLink: imageLink ? imageLink : '',
|
|
125
|
+
Text: text ? text : ''
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Remove image
|
|
130
|
+
*/
|
|
131
|
+
removeFromList() {
|
|
132
|
+
this.value = this.generateModel('', '', '', '');
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* get value
|
|
136
|
+
*/
|
|
137
|
+
get value() {
|
|
138
|
+
return this.form.value;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* set value
|
|
142
|
+
*/
|
|
143
|
+
set value(value) {
|
|
144
|
+
this.form.setValue(value);
|
|
145
|
+
this.onChange(value);
|
|
146
|
+
this.formDataChanged.emit(this.form);
|
|
147
|
+
}
|
|
148
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
149
|
+
ngOnInit() { }
|
|
150
|
+
ngOnDestroy() {
|
|
151
|
+
this.subscriptions.forEach(s => s.unsubscribe());
|
|
152
|
+
}
|
|
153
|
+
registerOnChange(fn) {
|
|
154
|
+
this.onChange = fn;
|
|
155
|
+
}
|
|
156
|
+
registerOnTouched(fn) {
|
|
157
|
+
this.onTouch = fn;
|
|
158
|
+
}
|
|
159
|
+
writeValue(value) {
|
|
160
|
+
if (value) {
|
|
161
|
+
this.value = value;
|
|
162
|
+
}
|
|
163
|
+
if (value === null) {
|
|
164
|
+
this.form.reset();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures
|
|
168
|
+
validate(_) {
|
|
169
|
+
return this.form.valid ? null : { styles: { valid: false } };
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* OnClick event listener of input#fileInput to clear his input value
|
|
173
|
+
*/
|
|
174
|
+
clearInputValue(ev) {
|
|
175
|
+
const element = ev.target;
|
|
176
|
+
element.value = '';
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
FileInputComponent.decorators = [
|
|
180
|
+
{ type: Component, args: [{
|
|
181
|
+
selector: 'kms-file-input',
|
|
182
|
+
template: "<form [formGroup]=\"form\" (change)=\"newImageLoading=true\" class=\"fileInput\"> \n\n <div *ngIf=\"form.value.Filename && previewImage\">\n <div *ngIf=\"newImageLoading\">\n {{ 'file-input.loading' | translate }}\n </div>\n <div *ngIf=\"!newImageLoading\">\n <div class=\"\">\n <div class=\"\">\n <img *ngIf=\"form.value.ImageLink && form.value.ImageLink !== '' && !(form.value.ImageAsDataURL && form.value.ImageAsDataURL !== '')\" [src]=\"form.value.ImageAsDataURL\" [src]=\"form.value.ImageLink\" style=\"height: 40px; width: fit-content;\" />\n <img *ngIf=\"form.value.ImageAsDataURL && form.value.ImageAsDataURL !== ''\" [src]=\"form.value.ImageAsDataURL\" style=\"height: 40px; width: fit-content;\" />\n </div>\n <div class=\"\">{{form.value.Filename}}</div>\n <div class=\"\">\n <div (click)=\"removeFromList()\" *ngIf=\"allowRemove\">\n <kms-icon icon=\"trash\" [iconSize]=\"IconSize.TINY\" iconClass=\"color-black\"></kms-icon> \n {{ 'file-input.remove' }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!previewImage\">\n <div class=\"\">{{form.value.Filename}}</div>\n </div>\n\n <button (click)=\"selectImageOverlay()\" class=\"button-primary-font-color\" mat-stroked-button>\n <span>{{ label }}</span>\n </button>\n <input\n type=\"file\"\n [accept]=\"acceptedFileMimetypes\"\n style=\"display: none\"\n #fileInput\n (click)=\"clearInputValue($event)\"\n (change)=\"selectImage($event)\"\n />\n\n <input type=\"hidden\" [formControl]=\"form.controls['ImageIdent']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['ImageLink']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['Filename']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['ImageAsDataURL']\" />\n <input type=\"hidden\" [formControl]=\"form.controls['Text']\" />\n\n</form>",
|
|
183
|
+
providers: [
|
|
184
|
+
{
|
|
185
|
+
provide: NG_VALUE_ACCESSOR,
|
|
186
|
+
useExisting: forwardRef(() => FileInputComponent),
|
|
187
|
+
multi: true,
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
provide: NG_VALIDATORS,
|
|
191
|
+
useExisting: forwardRef(() => FileInputComponent),
|
|
192
|
+
multi: true,
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
styles: [""]
|
|
196
|
+
},] }
|
|
197
|
+
];
|
|
198
|
+
FileInputComponent.ctorParameters = () => [
|
|
199
|
+
{ type: FormBuilder },
|
|
200
|
+
{ type: ApplicationRef },
|
|
201
|
+
{ type: ChangeDetectorRef },
|
|
202
|
+
{ type: Renderer2 }
|
|
203
|
+
];
|
|
204
|
+
FileInputComponent.propDecorators = {
|
|
205
|
+
fileInput: [{ type: ViewChild, args: ['fileInput',] }],
|
|
206
|
+
label: [{ type: Input }],
|
|
207
|
+
previewImage: [{ type: Input }],
|
|
208
|
+
allowRemove: [{ type: Input }],
|
|
209
|
+
previewImageText: [{ type: Input }],
|
|
210
|
+
maxSizeBytes: [{ type: Input }],
|
|
211
|
+
resizePixels: [{ type: Input }],
|
|
212
|
+
acceptedFileMimetypes: [{ type: Input }],
|
|
213
|
+
formDataChanged: [{ type: Output }]
|
|
214
|
+
};
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvdWkvZmlsZS1pbnB1dC9maWxlLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQVUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwSixPQUFPLEVBRUgsV0FBVyxFQUNYLFdBQVcsRUFFWCxhQUFhLEVBQ2IsaUJBQWlCLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIseURBQXlEO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekQsc0NBQXNDO0FBQ3RDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztBQW9CL0IsTUFBTSxPQUFPLGtCQUFrQjtJQTRCM0I7Ozs7Ozs7T0FPRztJQUNILFlBQ1csV0FBd0IsRUFDeEIsTUFBc0IsRUFDdEIsRUFBcUI7SUFDNUIsNkNBQTZDO0lBQ3RDLFFBQW1CO1FBSm5CLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBRXJCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFyQ3JCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFWCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsaUJBQVksR0FBRyxjQUFjLENBQUM7UUFDOUIsaUJB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QUFjO1lBQUUsaUJBQWlCO1lBQWxFLFNBQVM7Ozt3QkF3QzlELFNBQVMsU0FBQyxXQUFXO29CQUVyQixLQUFLOzJCQUVMLEtBQUs7MEJBQ0wsS0FBSzsrQkFDTCxLQUFLOzJCQUNMLEtBQUs7MkJBQ0wsS0FBSztvQ0FDTCxLQUFLOzhCQWVMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBmb3J3YXJkUmVmLCBPbkluaXQsIFZpZXdDaGlsZCwgUmVuZGVyZXIyLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgQXBwbGljYXRpb25SZWYsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgRm9ybUJ1aWxkZXIsXG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUdyb3VwLFxuICAgIE5HX1ZBTElEQVRPUlMsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG4vL2ltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEljb25TaXplIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ljb25TaXplLmVudW0nO1xuaW1wb3J0IHsgQXR0YWNoZWRGaWxlRFRPIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3R5cGVzL2F0dGFjaGVkLWZpbGUtZHRvLm1vZGVsJztcbmltcG9ydCB7IGlzVmFsdWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvaXMtdmFsdWUuZnVuY3Rpb24nO1xuXG4vLyBNYXggc2l6ZSBpbiBieXRlcyBvZiB1cGxvYWRlZCBpbWFnZVxuY29uc3QgTUFYX1NJWkVfQllURVMgPSAyMDk3MTUyO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ttcy1maWxlLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZpbGVJbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZpbGVJbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcblxuZXhwb3J0IGNsYXNzIEZpbGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuICAgIFxuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIHB1YmxpYyBmaWxlSW5wdXQ6IGFueTtcblxuICAgIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gICAgXG4gICAgQElucHV0KCkgcHJldmlld0ltYWdlID0gdHJ1ZTsgXG4gICAgQElucHV0KCkgYWxsb3dSZW1vdmUgPSB0cnVlOyBcbiAgICBASW5wdXQoKSBwcmV2aWV3SW1hZ2VUZXh0ID0gJyc7IFxuICAgIEBJbnB1dCgpIG1heFNpemVCeXRlcyA9IE1BWF9TSVpFX0JZVEVTOyBcbiAgICBASW5wdXQoKSByZXNpemVQaXhlbHMgPSAwOyBcbiAgICBASW5wdXQoKSBhY2NlcHRlZEZpbGVNaW1ldHlwZXMgPSAnaW1hZ2UvanBlZywgaW1hZ2UvanBnLCBpbWFnZS9wbmcnOyBcblxuICAgIGZvcm09IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBJbWFnZUlkZW50OiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBJbWFnZUxpbms6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICAgIEZpbGVuYW1lOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgICAgICBJbWFnZUFzRGF0YVVSTDogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgICAgVGV4dDogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICB9KTtcblxuICAgIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gICAgbmV3SW1hZ2VMb2FkaW5nID0gZmFsc2VcblxuICAgIEljb25TaXplID0gSWNvblNpemU7XG5cbiAgICBAT3V0cHV0KCkgZm9ybURhdGFDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Rm9ybUdyb3VwPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIGZvcm1CdWlsZGVyIFxuICAgICAqIEBwYXJhbSBhcHBSZWYgXG4gICAgICogQHBhcmFtIGNkIFxuICAgICAqIEBwYXJhbSB0cmFuc2xhdGVTZXJ2aWNlIFxuICAgICAqIEBwYXJhbSByZW5kZXJlciBcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgXG4gICAgICAgIHB1YmxpYyBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAvL3ByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHtcbiAgICAgICAgXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIENsaWNrIG9uIGJ1dHRvbiB0cmlnZ2VycyBmaWxlLWlucHV0IHRvIG9wZW4gT1MgZmlsZSBkaWFsb2dcbiAgICAgKi9cbiAgICBzZWxlY3RJbWFnZU92ZXJsYXkoKSB7XG4gICAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBtYW5hZ2UgdGhlIGlucHV0IGltYWdlXG4gICAgICogUmV0dXJucyBhbiBlcnJvciBpZiB0aGUgZmlsZSBleGNlZWRzIG1heGltdW0gd2FudGVkIGZpbGVzaXplIChNYikuIFxuICAgICAqIEBwYXJhbSBldlxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgc2VsZWN0SW1hZ2UoZXY6IGFueSkge1xuICAgICAgICBpZiAoZXYudGFyZ2V0LmZpbGVzICYmIGV2LnRhcmdldC5maWxlc1swXSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZTpGaWxlID0gZXYudGFyZ2V0LmZpbGVzWzBdO1xuXG4gICAgICAgICAgICBpZiAoZmlsZS5zaXplID4gdGhpcy5tYXhTaXplQnl0ZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFySW5wdXRWYWx1ZShldik7XG4gICAgICAgICAgICAgICAgLy9hbGVydCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZXJyb3JzLmZpbGVUb29CaWcnKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5ld0ltYWdlTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBpZih0aGlzLnJlc2l6ZVBpeGVscyA+IDApe1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2dvVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1nRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcbiAgICAgICAgICAgICAgICAgICAgaW1nRWwuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc2l6ZWRMb2dvID0gdGhpcy5yZXNpemVJbWFnZShpbWdFbCwgdGhpcy5yZXNpemVQaXhlbHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3RmlsZSA9IHRoaXMuZ2VuZXJhdGVNb2RlbChmaWxlLm5hbWUsIHJlc2l6ZWRMb2dvLCB0aGlzLnZhbHVlLkltYWdlSWRlbnQsIHRoaXMudmFsdWUuSW1hZ2VMaW5rLCB0aGlzLnZhbHVlLlRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZT1uZXdGaWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdJbWFnZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpbWdFbC5zcmMgPSBsb2dvVXJsO1xuICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSB0aGlzLmdlbmVyYXRlTW9kZWwoZmlsZS5uYW1lLCBlLnRhcmdldC5yZXN1bHQsIHRoaXMudmFsdWUuSW1hZ2VJZGVudCwgdGhpcy52YWx1ZS5JbWFnZUxpbmssIHRoaXMudmFsdWUuVGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlPW5ld0ZpbGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld0ltYWdlTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiTm8gZmlsZSBzZWxlY3RlZFwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2l6ZSBhbiBpbWFnZVxuICAgICAqIEBwYXJhbSBpbWdFbFxuICAgICAqIEBwYXJhbSB3YW50ZWRXaWR0aCBhcyBudW1iZXJcbiAgICAgKiBAcmV0dXJucyBzdHJpbmcgXG4gICAgICovXG4gICAgIHByaXZhdGUgcmVzaXplSW1hZ2UoaW1nRWw6IGFueSwgd2FudGVkV2lkdGg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGNvbnN0IGFzcGVjdCA9IGltZ0VsLndpZHRoIC8gaW1nRWwuaGVpZ2h0O1xuICAgICAgICBjYW52YXMud2lkdGggPSB3YW50ZWRXaWR0aDtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IHdhbnRlZFdpZHRoIC8gYXNwZWN0O1xuICAgICAgICBpZiAoaXNWYWx1ZShjdHgpKSBjdHguZHJhd0ltYWdlKGltZ0VsLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlIGRlZmF1bHQgb2JqZWN0XG4gICAgICogQHBhcmFtIG5hbWUgYXMgc3RyaW5nXG4gICAgICogQHBhcmFtIGNvbnRlbnQgYXMgc3RyaW5nXG4gICAgICogQHJldHVybnMgQXR0YWNoZWRGaWxlRFRPXG4gICAgICovXG4gICAgZ2VuZXJhdGVNb2RlbChuYW1lPzogc3RyaW5nLCBjb250ZW50Pzogc3RyaW5nLCBpZGVudD86IHN0cmluZywgaW1hZ2VMaW5rPzogc3RyaW5nLCB0ZXh0Pzogc3RyaW5nKXtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIEltYWdlSWRlbnQ6IGlkZW50ID8gaWRlbnQgOiAnJyxcbiAgICAgICAgICAgIEZpbGVuYW1lOiBuYW1lID8gbmFtZSA6ICcnLFxuICAgICAgICAgICAgSW1hZ2VBc0RhdGFVUkw6IGNvbnRlbnQgPyBjb250ZW50IDogJycsXG4gICAgICAgICAgICBJbWFnZUxpbms6IGltYWdlTGluayA/IGltYWdlTGluayA6ICcnLFxuICAgICAgICAgICAgVGV4dDogdGV4dCA/IHRleHQgOiAnJ1xuICAgICAgICB9IGFzIEF0dGFjaGVkRmlsZURUTztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgaW1hZ2UgXG4gICAgICovXG4gICAgIHJlbW92ZUZyb21MaXN0KCl7XG4gICAgICAgIHRoaXMudmFsdWU9IHRoaXMuZ2VuZXJhdGVNb2RlbCgnJywnJywgJycsICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXQgdmFsdWVcbiAgICAgKi9cbiAgICAgICAgZ2V0IHZhbHVlKCk6IEF0dGFjaGVkRmlsZURUTyB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0udmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0IHZhbHVlXG4gICAgICovXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBBdHRhY2hlZEZpbGVEVE8pIHtcbiAgICAgICAgdGhpcy5mb3JtLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuZm9ybURhdGFDaGFuZ2VkLmVtaXQodGhpcy5mb3JtKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIG9uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIG5nT25Jbml0KCkge31cblxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB9ICAgXG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoID0gZm47XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogQXR0YWNoZWRGaWxlRFRPIHwgbnVsbCkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2FkamFjZW50LW92ZXJsb2FkLXNpZ25hdHVyZXNcbiAgICB2YWxpZGF0ZShfOiBGb3JtQ29udHJvbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLnZhbGlkID8gbnVsbCA6IHsgc3R5bGVzOiB7IHZhbGlkOiBmYWxzZSB9IH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT25DbGljayBldmVudCBsaXN0ZW5lciBvZiBpbnB1dCNmaWxlSW5wdXQgdG8gY2xlYXIgaGlzIGlucHV0IHZhbHVlXG4gICAgICovXG4gICAgY2xlYXJJbnB1dFZhbHVlKGV2OiBhbnkpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGV2LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBlbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* @copyright FLYACTS GmbH 2019
|
|
3
|
+
*/
|
|
4
|
+
import { state, style, trigger } from '@angular/animations';
|
|
5
|
+
import { Component, Input, ViewChild, } from '@angular/core';
|
|
6
|
+
export class FlyoutComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.icon = 'filter';
|
|
9
|
+
this.isDropdownOpened = false;
|
|
10
|
+
this.targetHeight = '0';
|
|
11
|
+
this.animationTime = 5000;
|
|
12
|
+
this.headerCssClass = '';
|
|
13
|
+
this.bodyCssClass = '';
|
|
14
|
+
this.headerTitle = '';
|
|
15
|
+
this.headerText = '';
|
|
16
|
+
this.hasButtonForMore = false;
|
|
17
|
+
this.moreText = '';
|
|
18
|
+
this.lessText = '';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Open/close dropdown if click on header.
|
|
22
|
+
* Except, if mode is set to hasButtonForMore. When there is a extra button to open/close
|
|
23
|
+
*/
|
|
24
|
+
toggleDropdownHeader() {
|
|
25
|
+
if (!this.hasButtonForMore) {
|
|
26
|
+
this.toggleDropdown();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Open or close the dropdown
|
|
31
|
+
*/
|
|
32
|
+
toggleDropdown() {
|
|
33
|
+
this.isDropdownOpened = !this.isDropdownOpened;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Set the height of the dropdown list items dynamic - needed for the animation
|
|
37
|
+
*/
|
|
38
|
+
setDropdownListHeight(contentHeight) {
|
|
39
|
+
this.targetHeight = `${contentHeight}px`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
FlyoutComponent.decorators = [
|
|
43
|
+
{ type: Component, args: [{
|
|
44
|
+
selector: 'kms-flyout',
|
|
45
|
+
template: "<div class=\"flyout\"\n [ngClass]=\"{'is-active': isDropdownOpened}\"\n>\n <div class=\"flyout-header\" (click)=\"toggleDropdownHeader()\" [ngClass]=\"headerCssClass\">\n <span [innerHtml]=\"headerTitle | kmsSafeHtml\"></span>\n <span [innerHtml]=\"headerText | kmsSafeHtml\"></span>\n\n <ng-content select=\"[header]\"></ng-content>\n\n <div *ngIf=\"hasButtonForMore\" (click)=\"toggleDropdown()\" class=\"flyout-header-more\">\n <span *ngIf=\"!isDropdownOpened\">\n {{ moreText }}\n </span>\n <span *ngIf=\"isDropdownOpened\">\n {{ lessText }}\n </span>\n <kms-icon [icon]=\"'chevron-down'\"\n [iconClass]=\"{'size-16': true, 'is-rotating180': isDropdownOpened}\" >\n </kms-icon>\n </div>\n </div>\n <div \n class=\"flyout-body\"\n [ngClass]=\"bodyCssClass\"\n tabindex=\"0\"\n [@dropdownAnimation]=\"{value: isDropdownOpened, params: {targetHeight: targetHeight, animationTime: '500'}}\"\n getMaxHeight=\"inner\"\n (sumOfHeight)=\"setDropdownListHeight($event)\"\n #flyoutHeader>\n <div class=\"inner\" #content>\n <ng-content ></ng-content>\n </div>\n </div>\n\n</div>\n",
|
|
46
|
+
animations: [
|
|
47
|
+
trigger('dropdownAnimation', [
|
|
48
|
+
state('true', style({
|
|
49
|
+
height: '{{targetHeight}}',
|
|
50
|
+
transition: 'height {{animationTime}}ms ease-in-out',
|
|
51
|
+
}), {
|
|
52
|
+
params: {
|
|
53
|
+
targetHeight: '300px',
|
|
54
|
+
animationTime: 3000,
|
|
55
|
+
},
|
|
56
|
+
}),
|
|
57
|
+
state('false', style({
|
|
58
|
+
height: 0,
|
|
59
|
+
transition: 'height {{animationTime}}ms ease-in-out',
|
|
60
|
+
}), {
|
|
61
|
+
params: {
|
|
62
|
+
targetHeight: '300px',
|
|
63
|
+
opacity: 0,
|
|
64
|
+
animationTime: 3000,
|
|
65
|
+
},
|
|
66
|
+
}),
|
|
67
|
+
]),
|
|
68
|
+
],
|
|
69
|
+
styles: [".flyout{position:relative;display:block;padding:20px 45px}.flyout-header-more{font:normal normal normal 16px/25px var(--fontName-text03);letter-spacing:.26px;color:var(--primaryColor);cursor:pointer}.flyout-header-more kms-icon .icon,.flyout-header-more kms-icon .icon svg{width:16px!important;height:20px!important}.flyout-header-more kms-icon .icon svg use{fill:var(--primaryColor)}.flyout-body{padding:0;margin:0;overflow:hidden;outline:none}"]
|
|
70
|
+
},] }
|
|
71
|
+
];
|
|
72
|
+
FlyoutComponent.propDecorators = {
|
|
73
|
+
icon: [{ type: Input }],
|
|
74
|
+
headerCssClass: [{ type: Input }],
|
|
75
|
+
bodyCssClass: [{ type: Input }],
|
|
76
|
+
headerTitle: [{ type: Input }],
|
|
77
|
+
headerText: [{ type: Input }],
|
|
78
|
+
hasButtonForMore: [{ type: Input }],
|
|
79
|
+
moreText: [{ type: Input }],
|
|
80
|
+
lessText: [{ type: Input }],
|
|
81
|
+
content: [{ type: ViewChild, args: ['content',] }],
|
|
82
|
+
flyoutHeader: [{ type: ViewChild, args: ['flyoutHeader',] }]
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9mbHlvdXQvZmx5b3V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFDSCxTQUFTLEVBRVQsS0FBSyxFQUNMLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQXVDdkIsTUFBTSxPQUFPLGVBQWU7SUFyQzVCO1FBdUNhLFNBQUksR0FBRyxRQUFRLENBQUM7UUFFekIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGlCQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRVosbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFFbEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsZUFBVSxHQUFJLEVBQUUsQ0FBQztRQUNqQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGFBQVEsR0FBRyxFQUFFLENBQUM7SUE4QjNCLENBQUM7SUF2Qkc7OztPQUdHO0lBQ0gsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYztRQUNWLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxxQkFBcUIsQ0FBQyxhQUFxQjtRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsYUFBYSxJQUFJLENBQUM7SUFDN0MsQ0FBQzs7O1lBakZKLFNBQVMsU0FBQztnQkFFUCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsMnlDQUFzQztnQkFFdEMsVUFBVSxFQUFFO29CQUNSLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTt3QkFDekIsS0FBSyxDQUNELE1BQU0sRUFDTixLQUFLLENBQUM7NEJBQ0YsTUFBTSxFQUFFLGtCQUFrQjs0QkFDMUIsVUFBVSxFQUFFLHdDQUF3Qzt5QkFDdkQsQ0FBQyxFQUNGOzRCQUNJLE1BQU0sRUFBRTtnQ0FDSixZQUFZLEVBQUUsT0FBTztnQ0FDckIsYUFBYSxFQUFFLElBQUk7NkJBQ3RCO3lCQUNKLENBQ0o7d0JBQ0QsS0FBSyxDQUNELE9BQU8sRUFDUCxLQUFLLENBQUM7NEJBQ0YsTUFBTSxFQUFFLENBQUM7NEJBQ1QsVUFBVSxFQUFFLHdDQUF3Qzt5QkFDdkQsQ0FBQyxFQUNGOzRCQUNJLE1BQU0sRUFBRTtnQ0FDSixZQUFZLEVBQUUsT0FBTztnQ0FDckIsT0FBTyxFQUFFLENBQUM7Z0NBQ1YsYUFBYSxFQUFFLElBQUk7NkJBQ3RCO3lCQUNKLENBQ0o7cUJBQ0osQ0FBQztpQkFDTDs7YUFDSjs7O21CQUdJLEtBQUs7NkJBTUwsS0FBSzsyQkFDTCxLQUFLOzBCQUVMLEtBQUs7eUJBQ0wsS0FBSzsrQkFDTCxLQUFLO3VCQUNMLEtBQUs7dUJBQ0wsS0FBSztzQkFHTCxTQUFTLFNBQUMsU0FBUzsyQkFFbkIsU0FBUyxTQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBjb3B5cmlnaHQgRkxZQUNUUyBHbWJIIDIwMTlcbiAqL1xuXG5pbXBvcnQgeyBzdGF0ZSwgc3R5bGUsIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgXG4gICAgc2VsZWN0b3I6ICdrbXMtZmx5b3V0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmx5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mbHlvdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2Ryb3Bkb3duQW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ3RydWUnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAne3t0YXJnZXRIZWlnaHR9fScsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246ICdoZWlnaHQge3thbmltYXRpb25UaW1lfX1tcyBlYXNlLWluLW91dCcsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEhlaWdodDogJzMwMHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvblRpbWU6IDMwMDAsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnZmFsc2UnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiAnaGVpZ2h0IHt7YW5pbWF0aW9uVGltZX19bXMgZWFzZS1pbi1vdXQnLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRIZWlnaHQ6ICczMDBweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uVGltZTogMzAwMCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgXSksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRmx5b3V0Q29tcG9uZW50IHtcblxuICAgIEBJbnB1dCgpIGljb24gPSAnZmlsdGVyJztcblxuICAgIGlzRHJvcGRvd25PcGVuZWQgPSBmYWxzZTtcbiAgICB0YXJnZXRIZWlnaHQgPSAnMCc7XG4gICAgYW5pbWF0aW9uVGltZSA9IDUwMDA7XG5cbiAgICBASW5wdXQoKSBoZWFkZXJDc3NDbGFzcyA9ICcnO1xuICAgIEBJbnB1dCgpIGJvZHlDc3NDbGFzcyA9ICcnO1xuXG4gICAgQElucHV0KCkgaGVhZGVyVGl0bGUgPSAnJztcbiAgICBASW5wdXQoKSBoZWFkZXJUZXh0ICA9ICcnO1xuICAgIEBJbnB1dCgpIGhhc0J1dHRvbkZvck1vcmUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBtb3JlVGV4dCA9ICcnO1xuICAgIEBJbnB1dCgpIGxlc3NUZXh0ID0gJyc7XG5cbiAgICBcbiAgICBAVmlld0NoaWxkKCdjb250ZW50JykgY29udGVudDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgICBcbiAgICBAVmlld0NoaWxkKCdmbHlvdXRIZWFkZXInKSBmbHlvdXRIZWFkZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBPcGVuL2Nsb3NlIGRyb3Bkb3duIGlmIGNsaWNrIG9uIGhlYWRlci5cbiAgICAgKiBFeGNlcHQsIGlmIG1vZGUgaXMgc2V0IHRvIGhhc0J1dHRvbkZvck1vcmUuIFdoZW4gdGhlcmUgaXMgYSBleHRyYSBidXR0b24gdG8gb3Blbi9jbG9zZVxuICAgICAqL1xuICAgIHRvZ2dsZURyb3Bkb3duSGVhZGVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzQnV0dG9uRm9yTW9yZSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbiBvciBjbG9zZSB0aGUgZHJvcGRvd25cbiAgICAgKi9cbiAgICB0b2dnbGVEcm9wZG93bigpIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duT3BlbmVkID0gIXRoaXMuaXNEcm9wZG93bk9wZW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIGhlaWdodCBvZiB0aGUgZHJvcGRvd24gbGlzdCBpdGVtcyBkeW5hbWljIC0gbmVlZGVkIGZvciB0aGUgYW5pbWF0aW9uXG4gICAgICovXG4gICAgc2V0RHJvcGRvd25MaXN0SGVpZ2h0KGNvbnRlbnRIZWlnaHQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnRhcmdldEhlaWdodCA9IGAke2NvbnRlbnRIZWlnaHR9cHhgO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright KMS GmbH
|
|
3
|
+
*/
|
|
4
|
+
import { Component, Inject, NgZone } from '@angular/core';
|
|
5
|
+
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
6
|
+
import { isValue } from '../../models';
|
|
7
|
+
import { ButtonResponseType } from '../button-with-confirm-dialog/button-response-types.enum';
|
|
8
|
+
/**
|
|
9
|
+
* A generic dialog component
|
|
10
|
+
*/
|
|
11
|
+
export class GenericDialogComponent {
|
|
12
|
+
constructor(dialogRef, zone, data) {
|
|
13
|
+
this.dialogRef = dialogRef;
|
|
14
|
+
this.zone = zone;
|
|
15
|
+
this.data = data;
|
|
16
|
+
this.ButtonResponseType = ButtonResponseType;
|
|
17
|
+
if (isValue(data.buttons)) {
|
|
18
|
+
this.buttons = data.buttons;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.buttons = { primary: 'Yes', secondary: 'No' };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Action called when clicked
|
|
26
|
+
* @param clickedButton Whether the primary or secondary button was clicked
|
|
27
|
+
*/
|
|
28
|
+
onClickAction(clickedButton) {
|
|
29
|
+
this.zone.run(() => {
|
|
30
|
+
this.dialogRef.close(clickedButton);
|
|
31
|
+
this.dialogRef.afterClosed().subscribe(() => {
|
|
32
|
+
const buttonList = document.querySelectorAll('.mat-flat-button, .mat-button');
|
|
33
|
+
let i = 0;
|
|
34
|
+
for (i; i < buttonList.length; i++) {
|
|
35
|
+
buttonList[i].classList.remove('cdk-focused');
|
|
36
|
+
buttonList[i].classList.remove('cdk-program-focused');
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
GenericDialogComponent.decorators = [
|
|
43
|
+
{ type: Component, args: [{
|
|
44
|
+
selector: 'kms-generic-dialog',
|
|
45
|
+
template: "<div mat-dialog-title class=\"mat-dialog-title\">\n <h3>{{ data.title }}</h3>\n</div>\n<div mat-dialog-content class=\"mat-dialog-content\">\n {{ data.message }}\n</div>\n<div mat-dialog-actions class=\"custom-dialog-actions\">\n <button\n mat-flat-button\n class=\"test_secondary_button\"\n color=\"accent\"\n (click)=\"onClickAction(ButtonResponseType.secondary)\"\n >\n {{ buttons.secondary }}\n </button>\n <button\n mat-flat-button\n class=\"test_primary_button\"\n color=\"primary\"\n (click)=\"onClickAction(ButtonResponseType.primary)\"\n >\n {{ buttons.primary }}\n </button>\n</div>\n",
|
|
46
|
+
styles: [""]
|
|
47
|
+
},] }
|
|
48
|
+
];
|
|
49
|
+
GenericDialogComponent.ctorParameters = () => [
|
|
50
|
+
{ type: MatDialogRef },
|
|
51
|
+
{ type: NgZone },
|
|
52
|
+
{ type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
|
53
|
+
];
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2dlbmVyaWMtZGlhbG9nL2dlbmVyaWMtZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFHOUY7O0dBRUc7QUFNSCxNQUFNLE9BQU8sc0JBQXNCO0lBTS9CLFlBQ1csU0FBK0MsRUFDL0MsSUFBWSxFQUNhLElBQWdCO1FBRnpDLGNBQVMsR0FBVCxTQUFTLENBQXNDO1FBQy9DLFNBQUksR0FBSixJQUFJLENBQVE7UUFDYSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBUHBELHVCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBU3BDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDL0I7YUFBTTtZQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQXVCLENBQUM7U0FDM0U7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYSxDQUFDLGFBQWlDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDeEMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLCtCQUErQixDQUFDLENBQUM7Z0JBQzlFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDVixLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDaEMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzlDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7aUJBQ3pEO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OztZQXZDSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsNnJCQUE4Qzs7YUFFakQ7OztZQVp5QixZQUFZO1lBRFYsTUFBTTs0Q0F1QnpCLE1BQU0sU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY29weXJpZ2h0IEtNUyBHbWJIXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgaXNWYWx1ZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBCdXR0b25SZXNwb25zZVR5cGUgfSBmcm9tICcuLi9idXR0b24td2l0aC1jb25maXJtLWRpYWxvZy9idXR0b24tcmVzcG9uc2UtdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBEaWFsb2dEYXRhLCBEaWFsb2dEYXRhQnV0dG9ucyB9IGZyb20gJy4uL2J1dHRvbi13aXRoLWNvbmZpcm0tZGlhbG9nL2RpYWxvZy1kYXRhLm1vZGVsJztcblxuLyoqXG4gKiBBIGdlbmVyaWMgZGlhbG9nIGNvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ttcy1nZW5lcmljLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmljRGlhbG9nQ29tcG9uZW50IHtcblxuICAgIEJ1dHRvblJlc3BvbnNlVHlwZSA9IEJ1dHRvblJlc3BvbnNlVHlwZTtcblxuICAgIHB1YmxpYyBidXR0b25zOiBEaWFsb2dEYXRhQnV0dG9uc1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8R2VuZXJpY0RpYWxvZ0NvbXBvbmVudD4sXG4gICAgICAgIHB1YmxpYyB6b25lOiBOZ1pvbmUsXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogRGlhbG9nRGF0YVxuICAgICkge1xuICAgICAgICBpZiAoaXNWYWx1ZShkYXRhLmJ1dHRvbnMpKSB7XG4gICAgICAgICAgICB0aGlzLmJ1dHRvbnMgPSBkYXRhLmJ1dHRvbnM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJ1dHRvbnMgPSB7IHByaW1hcnk6ICdZZXMnLCBzZWNvbmRhcnk6ICdObycgfSBhcyBEaWFsb2dEYXRhQnV0dG9ucztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFjdGlvbiBjYWxsZWQgd2hlbiBjbGlja2VkXG4gICAgICogQHBhcmFtIGNsaWNrZWRCdXR0b24gV2hldGhlciB0aGUgcHJpbWFyeSBvciBzZWNvbmRhcnkgYnV0dG9uIHdhcyBjbGlja2VkXG4gICAgICovXG4gICAgcHVibGljIG9uQ2xpY2tBY3Rpb24oY2xpY2tlZEJ1dHRvbjogQnV0dG9uUmVzcG9uc2VUeXBlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoY2xpY2tlZEJ1dHRvbik7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnV0dG9uTGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYXQtZmxhdC1idXR0b24sIC5tYXQtYnV0dG9uJyk7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoaTsgaSA8IGJ1dHRvbkxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uTGlzdFtpXS5jbGFzc0xpc3QucmVtb3ZlKCdjZGstZm9jdXNlZCcpO1xuICAgICAgICAgICAgICAgICAgICBidXR0b25MaXN0W2ldLmNsYXNzTGlzdC5yZW1vdmUoJ2Nkay1wcm9ncmFtLWZvY3VzZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright KMS GmbH
|
|
3
|
+
*/
|
|
4
|
+
import { Component, Input, VERSION } from '@angular/core';
|
|
5
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
6
|
+
import { IconSize } from './iconSize.enum';
|
|
7
|
+
export class IconComponent {
|
|
8
|
+
constructor(sanitizer) {
|
|
9
|
+
this.sanitizer = sanitizer;
|
|
10
|
+
/**
|
|
11
|
+
* Optional: Different size via CSS inline style.
|
|
12
|
+
*/
|
|
13
|
+
this.iconSize = IconSize.FULLSIZE;
|
|
14
|
+
/**
|
|
15
|
+
* Dont use icon sprite
|
|
16
|
+
*/
|
|
17
|
+
this.dontUseSprite = false;
|
|
18
|
+
this.IconSize = IconSize;
|
|
19
|
+
this.Version = VERSION.full;
|
|
20
|
+
this.timestamp = 0;
|
|
21
|
+
this.iconToShow = this.icon;
|
|
22
|
+
}
|
|
23
|
+
ngOnInit() {
|
|
24
|
+
this.iconToShow = this.icon;
|
|
25
|
+
const d = new Date();
|
|
26
|
+
const n = d.getTime();
|
|
27
|
+
this.timestamp = n;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
IconComponent.decorators = [
|
|
31
|
+
{ type: Component, args: [{
|
|
32
|
+
selector: 'kms-icon',
|
|
33
|
+
template: "<ng-container *ngIf=\"icon !== 'none' && dontUseSprite === false\">\n <span class=\"icon {{ iconSize }}\" [ngClass]=\"iconClass\" [ngStyle]=\"iconStyle\">\n <svg>\n <use\n [attr.xlink:href]=\"\n 'assets/sprite.svg?Version=' + Version + '#' + iconToShow\n \"\n ></use>\n </svg>\n </span>\n</ng-container>\n<ng-container *ngIf=\"icon !== 'none' && dontUseSprite === true\">\n <object\n [data]=\"\n sanitizer.bypassSecurityTrustResourceUrl('assets/icons/' + icon + '')\n \"\n type=\"image/svg+xml\"\n class=\"icon {{ iconSize }}\"\n [ngClass]=\"iconClass\"\n [ngStyle]=\"iconStyle\"\n ></object>\n</ng-container>\n",
|
|
34
|
+
styles: [""]
|
|
35
|
+
},] }
|
|
36
|
+
];
|
|
37
|
+
IconComponent.ctorParameters = () => [
|
|
38
|
+
{ type: DomSanitizer }
|
|
39
|
+
];
|
|
40
|
+
IconComponent.propDecorators = {
|
|
41
|
+
icon: [{ type: Input }],
|
|
42
|
+
iconClass: [{ type: Input }],
|
|
43
|
+
iconStyle: [{ type: Input }],
|
|
44
|
+
iconSize: [{ type: Input }],
|
|
45
|
+
dontUseSprite: [{ type: Input }]
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvdWkvaWNvbi9pY29uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBUTNDLE1BQU0sT0FBTyxhQUFhO0lBd0N0QixZQUFtQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBckIxQzs7V0FFRztRQUNNLGFBQVEsR0FBYSxRQUFRLENBQUMsUUFBUSxDQUFDO1FBRWhEOztXQUVHO1FBRU0sa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFL0IsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUNwQixZQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUVoQixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBUWpCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QixNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDOzs7WUF2REosU0FBUyxTQUFDO2dCQUVQLFFBQVEsRUFBRSxVQUFVO2dCQUNwQixpckJBQW9DOzthQUV2Qzs7O1lBVFEsWUFBWTs7O21CQWdCaEIsS0FBSzt3QkFLTCxLQUFLO3dCQU1MLEtBQUs7dUJBS0wsS0FBSzs0QkFNTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY29weXJpZ2h0IEtNUyBHbWJIXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBWRVJTSU9OIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgSWNvblNpemUgfSBmcm9tICcuL2ljb25TaXplLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBcbiAgICBzZWxlY3RvcjogJ2ttcy1pY29uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaWNvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIC8qKlxuICAgICAqIFJlcXVpcmVkOiBOYW1lIG9mIHRoZSBTVkcgaWNvbiBpbnNpZGUgeW91ciBzcHJpdGUgc2hlZXQgZmlsZSB3aXRoIG5hbWUgJ2ljb25zLnN2ZycuXG4gICAgICogUGFzcyAnbm9uZScgaWYgbm8gaWNvbiBzaG91bGQgYmUgcmVuZGVyZWQuXG4gICAgICovXG4gICAgQElucHV0KCkgaWNvbiE6IHN0cmluZyB8ICcnO1xuXG4gICAgLyoqXG4gICAgICogT3B0aW9uYWw6IERpZmZlcmVudCBhcHBlYXJhbmNlIHZpYSBDU1MgY2xhc3MgZGVmaW5lZCBpbiB0aGlzIGNvbXBvbmVudMK0cyBzdHlsZSBzaGVldC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBpY29uQ2xhc3MhOiBzdHJpbmcgfCAnJztcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsOiBEaWZmZXJlbnQgYXBwZWFyYW5jZSB2aWEgQ1NTIGlubGluZSBzdHlsZS5cbiAgICAgKi9cbiAgICBcbiAgICBASW5wdXQoKSBpY29uU3R5bGU6IGFueTtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsOiBEaWZmZXJlbnQgc2l6ZSB2aWEgQ1NTIGlubGluZSBzdHlsZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBpY29uU2l6ZTogSWNvblNpemUgPSBJY29uU2l6ZS5GVUxMU0laRTtcblxuICAgIC8qKlxuICAgICAqIERvbnQgdXNlIGljb24gc3ByaXRlXG4gICAgICovXG4gICAgXG4gICAgQElucHV0KCkgZG9udFVzZVNwcml0ZSA9IGZhbHNlO1xuXG4gICAgSWNvblNpemUgPSBJY29uU2l6ZTtcbiAgICBWZXJzaW9uID0gVkVSU0lPTi5mdWxsO1xuXG4gICAgcHVibGljIHRpbWVzdGFtcCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBSZW5kZXJzIHRoaXMgaWNvbiBmcm9tIFNWRyBzcHJpdGUgc2hlZXRcbiAgICAgKi9cbiAgICBwdWJsaWMgaWNvblRvU2hvdyE6IHN0cmluZyB8ICcnO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XG4gICAgICAgIHRoaXMuaWNvblRvU2hvdyA9IHRoaXMuaWNvbjtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pY29uVG9TaG93ID0gdGhpcy5pY29uO1xuICAgICAgICBjb25zdCBkID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgbiA9IGQuZ2V0VGltZSgpO1xuICAgICAgICB0aGlzLnRpbWVzdGFtcCA9IG47XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* @copyright FLYACTS GmbH 2019
|
|
3
|
+
*/
|
|
4
|
+
export var IconSize;
|
|
5
|
+
(function (IconSize) {
|
|
6
|
+
IconSize["FULLSIZE"] = "size-full";
|
|
7
|
+
IconSize["TINY"] = "size-16";
|
|
8
|
+
IconSize["SMALLER"] = "size-20";
|
|
9
|
+
IconSize["SMALL"] = "size-32";
|
|
10
|
+
IconSize["MEDIUM"] = "size-64";
|
|
11
|
+
IconSize["LARGE"] = "size-128";
|
|
12
|
+
IconSize["XL"] = "size-256";
|
|
13
|
+
IconSize["XXL"] = "size-512";
|
|
14
|
+
IconSize["XXXL"] = "size-1024";
|
|
15
|
+
IconSize["NONE"] = "NONE";
|
|
16
|
+
})(IconSize || (IconSize = {}));
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvblNpemUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9pY29uL2ljb25TaXplLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxNQUFNLENBQU4sSUFBWSxRQVdYO0FBWEQsV0FBWSxRQUFRO0lBQ2hCLGtDQUFzQixDQUFBO0lBQ3RCLDRCQUFnQixDQUFBO0lBQ2hCLCtCQUFtQixDQUFBO0lBQ25CLDZCQUFpQixDQUFBO0lBQ2pCLDhCQUFrQixDQUFBO0lBQ2xCLDhCQUFrQixDQUFBO0lBQ2xCLDJCQUFlLENBQUE7SUFDZiw0QkFBZ0IsQ0FBQTtJQUNoQiw4QkFBa0IsQ0FBQTtJQUNsQix5QkFBYSxDQUFBO0FBQ2pCLENBQUMsRUFYVyxRQUFRLEtBQVIsUUFBUSxRQVduQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGNvcHlyaWdodCBGTFlBQ1RTIEdtYkggMjAxOVxuICovXG5cbmV4cG9ydCBlbnVtIEljb25TaXplIHtcbiAgICBGVUxMU0laRSA9ICdzaXplLWZ1bGwnLFxuICAgIFRJTlkgPSAnc2l6ZS0xNicsXG4gICAgU01BTExFUiA9ICdzaXplLTIwJyxcbiAgICBTTUFMTCA9ICdzaXplLTMyJyxcbiAgICBNRURJVU0gPSAnc2l6ZS02NCcsXG4gICAgTEFSR0UgPSAnc2l6ZS0xMjgnLFxuICAgIFhMID0gJ3NpemUtMjU2JyxcbiAgICBYWEwgPSAnc2l6ZS01MTInLFxuICAgIFhYWEwgPSAnc2l6ZS0xMDI0JyxcbiAgICBOT05FID0gJ05PTkUnLFxufVxuXG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* @copyright FLYACTS GmbH 2019
|
|
3
|
+
*/
|
|
4
|
+
import { Component, Input } from '@angular/core';
|
|
5
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
6
|
+
/**
|
|
7
|
+
* A generic dialog component
|
|
8
|
+
*/
|
|
9
|
+
export class KMSAccordionItemComponent {
|
|
10
|
+
constructor(sanitizer) {
|
|
11
|
+
this.sanitizer = sanitizer;
|
|
12
|
+
this.itemTitle = '';
|
|
13
|
+
this.showAsCard = false;
|
|
14
|
+
this.isSmall = false;
|
|
15
|
+
this.panelOpenState = false;
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
this.itemTitleTrustHtml = this.sanitizer.bypassSecurityTrustHtml(this.itemTitle);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
KMSAccordionItemComponent.decorators = [
|
|
22
|
+
{ type: Component, args: [{
|
|
23
|
+
selector: 'kms-accordion-item',
|
|
24
|
+
template: "<mat-expansion-panel\n class=\"accordion-item\" \n [ngClass]=\"{showAsCard: showAsCard, showFlat: !showAsCard, isSmall: isSmall}\"\n (opened)=\"panelOpenState = true\" \n (closed)=\"panelOpenState = false\"\n hideToggle=\"true\">\n <mat-expansion-panel-header class=\"accordion-item-header\">\n <mat-panel-title class=\"mat-subheading-2 accordion-item-title\">\n <div [innerHtml]=\"itemTitleTrustHtml\"></div>\n <ng-content select=\"[itemTitleElement]\"></ng-content> \n </mat-panel-title>\n <div class=\"accordion-item-header-icon-wrapper\">\n <kms-icon *ngIf=\"!panelOpenState\" icon=\"ic_plus\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-desktop\"></kms-icon>\n <kms-icon *ngIf=\"panelOpenState\" icon=\"ic_minus\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-desktop\"></kms-icon>\n\n <kms-icon *ngIf=\"!panelOpenState\" icon=\"chevron-down\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-mobile\"></kms-icon>\n <kms-icon *ngIf=\"panelOpenState\" icon=\"chevron-top\" iconClass=\"color-red\" class=\"accordion-item-header-icon-wrapper-mobile\"></kms-icon>\n </div>\n </mat-expansion-panel-header>\n <ng-content></ng-content>\n</mat-expansion-panel>",
|
|
25
|
+
styles: [""]
|
|
26
|
+
},] }
|
|
27
|
+
];
|
|
28
|
+
KMSAccordionItemComponent.ctorParameters = () => [
|
|
29
|
+
{ type: DomSanitizer }
|
|
30
|
+
];
|
|
31
|
+
KMSAccordionItemComponent.propDecorators = {
|
|
32
|
+
itemTitle: [{ type: Input }],
|
|
33
|
+
showAsCard: [{ type: Input }],
|
|
34
|
+
isSmall: [{ type: Input }]
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia21zLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9rbXMtYWNjb3JkaW9uLWl0ZW0va21zLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSwyQkFBMkIsQ0FBQztBQUVuRTs7R0FFRztBQU9ILE1BQU0sT0FBTyx5QkFBeUI7SUFRbEMsWUFBbUIsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQVAxQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBR2YsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBSXZCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7OztZQXBCSixTQUFTLFNBQUM7Z0JBRVAsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsdTFDQUFrRDs7YUFFckQ7OztZQVZRLFlBQVk7Ozt3QkFZaEIsS0FBSzt5QkFHTCxLQUFLO3NCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBjb3B5cmlnaHQgRkxZQUNUUyBHbWJIIDIwMTlcbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuLyoqXG4gKiBBIGdlbmVyaWMgZGlhbG9nIGNvbXBvbmVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBcbiAgICBzZWxlY3RvcjogJ2ttcy1hY2NvcmRpb24taXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ttcy1hY2NvcmRpb24taXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4va21zLWFjY29yZGlvbi1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEtNU0FjY29yZGlvbkl0ZW1Db21wb25lbnQgIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbVRpdGxlID0gJyc7XG4gICAgXG4gICAgcHVibGljIGl0ZW1UaXRsZVRydXN0SHRtbDogU2FmZUh0bWwgfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgcHVibGljIHNob3dBc0NhcmQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNTbWFsbCA9IGZhbHNlO1xuICAgIHBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcblxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLml0ZW1UaXRsZVRydXN0SHRtbCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHRoaXMuaXRlbVRpdGxlKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
export class LoaderComponent {
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
4
|
+
constructor() {
|
|
5
|
+
this.loading = false;
|
|
6
|
+
}
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
8
|
+
ngOnInit() { }
|
|
9
|
+
}
|
|
10
|
+
LoaderComponent.decorators = [
|
|
11
|
+
{ type: Component, args: [{
|
|
12
|
+
selector: 'kms-loader',
|
|
13
|
+
template: "<div class=\"loading-spinner-shade\" *ngIf=\"loading\">\n <mat-spinner class=\"spinnerMargin\" color=\"accent\" diameter=\"44\"></mat-spinner>\n</div>\n",
|
|
14
|
+
styles: [""]
|
|
15
|
+
},] }
|
|
16
|
+
];
|
|
17
|
+
LoaderComponent.ctorParameters = () => [];
|
|
18
|
+
LoaderComponent.propDecorators = {
|
|
19
|
+
loading: [{ type: Input }]
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQU96RCxNQUFNLE9BQU8sZUFBZTtJQUd4QixnRUFBZ0U7SUFDaEU7UUFIUyxZQUFPLEdBQUMsS0FBSyxDQUFDO0lBR1IsQ0FBQztJQUVoQixnRUFBZ0U7SUFDaEUsUUFBUSxLQUFJLENBQUM7OztZQVpoQixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLHVLQUFzQzs7YUFFekM7Ozs7c0JBRUksS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ttcy1sb2FkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9sb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2xvYWRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBMb2FkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGxvYWRpbmc9ZmFsc2U7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIG5nT25Jbml0KCkge31cbn1cbiJdfQ==
|