@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.
Files changed (122) hide show
  1. package/README.md +24 -0
  2. package/bundles/kms-ngx-ui-presentational.umd.js +2441 -0
  3. package/bundles/kms-ngx-ui-presentational.umd.js.map +1 -0
  4. package/bundles/kms-ngx-ui-presentational.umd.min.js +38 -0
  5. package/bundles/kms-ngx-ui-presentational.umd.min.js.map +1 -0
  6. package/esm2015/kms-ngx-ui-presentational.js +37 -0
  7. package/esm2015/lib/kms-ngx-ui-presentational.component.js +18 -0
  8. package/esm2015/lib/kms-ngx-ui-presentational.module.js +98 -0
  9. package/esm2015/lib/kms-ngx-ui-presentational.service.js +13 -0
  10. package/esm2015/lib/models/address.model.js +6 -0
  11. package/esm2015/lib/models/iconSize.enum.js +17 -0
  12. package/esm2015/lib/models/index.js +5 -0
  13. package/esm2015/lib/models/is-value.function.js +17 -0
  14. package/esm2015/lib/models/salutation.enum.js +8 -0
  15. package/esm2015/lib/models/types/attached-file-dto.model.js +6 -0
  16. package/esm2015/lib/models/types/nullable.type.js +5 -0
  17. package/esm2015/lib/parent-components/actions.component.js +48 -0
  18. package/esm2015/lib/parent-components/form-control.component.js +73 -0
  19. package/esm2015/lib/parent-components/form.component.js +77 -0
  20. package/esm2015/lib/pipes/custom-pipes.module.js +45 -0
  21. package/esm2015/lib/pipes/decode-uri.pipe.js +15 -0
  22. package/esm2015/lib/pipes/encode-uri.pipe.js +15 -0
  23. package/esm2015/lib/pipes/integer-currency.pipe.js +29 -0
  24. package/esm2015/lib/pipes/safe-html.pipe.js +22 -0
  25. package/esm2015/lib/pipes/safe-style.pipe.js +22 -0
  26. package/esm2015/lib/pipes/safe-url.pipe.js +22 -0
  27. package/esm2015/lib/pipes/to-number.pipe.js +19 -0
  28. package/esm2015/lib/pipes/trim.pipe.js +16 -0
  29. package/esm2015/lib/pipes/typeof.pipe.js +12 -0
  30. package/esm2015/lib/services/viewport.service.js +213 -0
  31. package/esm2015/lib/ui/back-to-top/back-to-top.component.js +46 -0
  32. package/esm2015/lib/ui/button-with-confirm-dialog/button-response-types.enum.js +6 -0
  33. package/esm2015/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.js +56 -0
  34. package/esm2015/lib/ui/button-with-confirm-dialog/dialog-data.model.js +2 -0
  35. package/esm2015/lib/ui/checkbox/checkbox.component.js +63 -0
  36. package/esm2015/lib/ui/color-input/color-input.component.js +63 -0
  37. package/esm2015/lib/ui/enum-radiogroup/enum-radiogroup.component.js +46 -0
  38. package/esm2015/lib/ui/file-input/file-input.component.js +215 -0
  39. package/esm2015/lib/ui/flyout/flyout.component.js +84 -0
  40. package/esm2015/lib/ui/generic-dialog/generic-dialog.component.js +54 -0
  41. package/esm2015/lib/ui/icon/icon.component.js +47 -0
  42. package/esm2015/lib/ui/icon/iconSize.enum.js +17 -0
  43. package/esm2015/lib/ui/kms-accordion-item/kms-accordion-item.component.js +36 -0
  44. package/esm2015/lib/ui/loader/loader.component.js +21 -0
  45. package/esm2015/lib/ui/map/map.component.js +137 -0
  46. package/esm2015/lib/ui/radiobutton/radiobutton.component.js +66 -0
  47. package/esm2015/lib/ui/salutation-dropdown/salutation-dropdown.component.js +49 -0
  48. package/esm2015/lib/ui/salutation-radiogroup/salutation-radiogroup.component.js +44 -0
  49. package/esm2015/lib/ui/time-input/time-input.component.js +80 -0
  50. package/esm2015/lib/ui/tooltip/tooltip.component.js +17 -0
  51. package/esm2015/lib/ui/tooltip-icon/tooltip-icon.component.js +29 -0
  52. package/esm2015/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.js +74 -0
  53. package/esm2015/public-api.js +12 -0
  54. package/fesm2015/kms-ngx-ui-presentational.js +1962 -0
  55. package/fesm2015/kms-ngx-ui-presentational.js.map +1 -0
  56. package/kms-ngx-ui-presentational.d.ts +37 -0
  57. package/kms-ngx-ui-presentational.metadata.json +1 -0
  58. package/lib/kms-ngx-ui-presentational.component.d.ts +5 -0
  59. package/lib/kms-ngx-ui-presentational.module.d.ts +2 -0
  60. package/lib/kms-ngx-ui-presentational.service.d.ts +3 -0
  61. package/lib/models/address.model.d.ts +14 -0
  62. package/lib/models/iconSize.enum.d.ts +15 -0
  63. package/lib/models/index.d.ts +4 -0
  64. package/lib/models/is-value.function.d.ts +9 -0
  65. package/lib/models/salutation.enum.d.ts +5 -0
  66. package/lib/models/types/attached-file-dto.model.d.ts +11 -0
  67. package/lib/models/types/nullable.type.d.ts +4 -0
  68. package/lib/parent-components/actions.component.d.ts +28 -0
  69. package/lib/parent-components/form-control.component.d.ts +24 -0
  70. package/lib/parent-components/form.component.d.ts +31 -0
  71. package/lib/pipes/custom-pipes.module.d.ts +5 -0
  72. package/lib/pipes/decode-uri.pipe.d.ts +7 -0
  73. package/lib/pipes/encode-uri.pipe.d.ts +7 -0
  74. package/lib/pipes/integer-currency.pipe.d.ts +10 -0
  75. package/lib/pipes/safe-html.pipe.d.ts +10 -0
  76. package/lib/pipes/safe-style.pipe.d.ts +10 -0
  77. package/lib/pipes/safe-url.pipe.d.ts +10 -0
  78. package/lib/pipes/to-number.pipe.d.ts +7 -0
  79. package/lib/pipes/trim.pipe.d.ts +7 -0
  80. package/lib/pipes/typeof.pipe.d.ts +4 -0
  81. package/lib/services/viewport.service.d.ts +74 -0
  82. package/lib/ui/back-to-top/back-to-top.component.d.ts +10 -0
  83. package/lib/ui/button-with-confirm-dialog/button-response-types.enum.d.ts +4 -0
  84. package/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.d.ts +16 -0
  85. package/lib/ui/button-with-confirm-dialog/dialog-data.model.d.ts +9 -0
  86. package/lib/ui/checkbox/checkbox.component.d.ts +28 -0
  87. package/lib/ui/color-input/color-input.component.d.ts +15 -0
  88. package/lib/ui/enum-radiogroup/enum-radiogroup.component.d.ts +14 -0
  89. package/lib/ui/file-input/file-input.component.d.ts +86 -0
  90. package/lib/ui/flyout/flyout.component.d.ts +32 -0
  91. package/lib/ui/generic-dialog/generic-dialog.component.d.ts +23 -0
  92. package/lib/ui/icon/icon.component.d.ts +39 -0
  93. package/lib/ui/icon/iconSize.enum.d.ts +15 -0
  94. package/lib/ui/kms-accordion-item/kms-accordion-item.component.d.ts +18 -0
  95. package/lib/ui/loader/loader.component.d.ts +6 -0
  96. package/lib/ui/map/map.component.d.ts +70 -0
  97. package/lib/ui/radiobutton/radiobutton.component.d.ts +23 -0
  98. package/lib/ui/salutation-dropdown/salutation-dropdown.component.d.ts +14 -0
  99. package/lib/ui/salutation-radiogroup/salutation-radiogroup.component.d.ts +12 -0
  100. package/lib/ui/time-input/time-input.component.d.ts +19 -0
  101. package/lib/ui/tooltip/tooltip.component.d.ts +3 -0
  102. package/lib/ui/tooltip-icon/tooltip-icon.component.d.ts +10 -0
  103. package/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.d.ts +24 -0
  104. package/package.json +25 -0
  105. package/public-api.d.ts +6 -0
  106. package/src/lib/ui/back-to-top/back-to-top.component.scss +47 -0
  107. package/src/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.scss +0 -0
  108. package/src/lib/ui/checkbox/checkbox.component.scss +57 -0
  109. package/src/lib/ui/color-input/color-input.component.scss +38 -0
  110. package/src/lib/ui/file-input/file-input.component.scss +0 -0
  111. package/src/lib/ui/flyout/flyout.component.scss +34 -0
  112. package/src/lib/ui/generic-dialog/generic-dialog.component.scss +59 -0
  113. package/src/lib/ui/icon/icon.component.scss +149 -0
  114. package/src/lib/ui/kms-accordion-item/kms-accordion-item.component.scss +95 -0
  115. package/src/lib/ui/loader/loader.component.scss +0 -0
  116. package/src/lib/ui/map/map.component.scss +0 -0
  117. package/src/lib/ui/radiobutton/radiobutton.component.scss +30 -0
  118. package/src/lib/ui/time-input/time-input.component.scss +10 -0
  119. package/src/lib/ui/tooltip/tooltip.component.scss +27 -0
  120. package/src/lib/ui/tooltip-icon/tooltip-icon.component.scss +2 -0
  121. package/src/styles/mixins.scss +9 -0
  122. 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==