@kms-ngx-ui/presentational 0.0.24 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/README.md +28 -28
  2. package/{esm2015/kms-ngx-ui-presentational.js → esm2020/kms-ngx-ui-presentational.mjs} +4 -4
  3. package/esm2020/lib/directives/directives.module.mjs +40 -0
  4. package/{esm2015/lib/directives/mousewheel.directive.js → esm2020/lib/directives/mousewheel.directive.mjs} +56 -56
  5. package/{esm2015/lib/directives/sum-of-height.directive.js → esm2020/lib/directives/sum-of-height.directive.mjs} +74 -74
  6. package/{esm2015/lib/directives/swipe.directive.js → esm2020/lib/directives/swipe.directive.mjs} +183 -183
  7. package/esm2020/lib/directives/swipe.model.mjs +5 -0
  8. package/{esm2015/lib/directives/tooltip.directive.js → esm2020/lib/directives/tooltip.directive.mjs} +144 -144
  9. package/esm2020/lib/kms-ngx-ui-presentational.component.mjs +22 -0
  10. package/{esm2015/lib/kms-ngx-ui-presentational.module.js → esm2020/lib/kms-ngx-ui-presentational.module.mjs} +215 -217
  11. package/{esm2015/lib/kms-ngx-ui-presentational.service.js → esm2020/lib/kms-ngx-ui-presentational.service.mjs} +14 -14
  12. package/esm2020/lib/models/address.model.mjs +6 -0
  13. package/{esm2015/lib/models/iconSize.enum.js → esm2020/lib/models/iconSize.enum.mjs} +17 -17
  14. package/{esm2015/lib/models/image-snippet.model.js → esm2020/lib/models/image-snippet.model.mjs} +18 -18
  15. package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +5 -5
  16. package/{esm2015/lib/models/is-value.function.js → esm2020/lib/models/is-value.function.mjs} +17 -17
  17. package/{esm2015/lib/models/salutation.enum.js → esm2020/lib/models/salutation.enum.mjs} +8 -8
  18. package/{esm2015/lib/models/types/attached-file-dto.model.js → esm2020/lib/models/types/attached-file-dto.model.mjs} +6 -6
  19. package/{esm2015/lib/models/types/nullable.type.js → esm2020/lib/models/types/nullable.type.mjs} +5 -5
  20. package/{esm2015/lib/parent-components/actions.component.js → esm2020/lib/parent-components/actions.component.mjs} +56 -56
  21. package/esm2020/lib/parent-components/form-control.component.mjs +75 -0
  22. package/esm2020/lib/parent-components/form.component.mjs +78 -0
  23. package/{esm2015/lib/pipes/custom-pipes.module.js → esm2020/lib/pipes/custom-pipes.module.mjs} +71 -71
  24. package/esm2020/lib/pipes/decode-uri.pipe.mjs +19 -0
  25. package/esm2020/lib/pipes/encode-uri.pipe.mjs +19 -0
  26. package/{esm2015/lib/pipes/integer-currency.pipe.js → esm2020/lib/pipes/integer-currency.pipe.mjs} +27 -27
  27. package/{esm2015/lib/pipes/safe-html.pipe.js → esm2020/lib/pipes/safe-html.pipe.mjs} +23 -23
  28. package/{esm2015/lib/pipes/safe-resource-url.pipe.js → esm2020/lib/pipes/safe-resource-url.pipe.mjs} +23 -23
  29. package/{esm2015/lib/pipes/safe-style.pipe.js → esm2020/lib/pipes/safe-style.pipe.mjs} +23 -23
  30. package/{esm2015/lib/pipes/safe-url.pipe.js → esm2020/lib/pipes/safe-url.pipe.mjs} +23 -23
  31. package/{esm2015/lib/pipes/to-number.pipe.js → esm2020/lib/pipes/to-number.pipe.mjs} +23 -23
  32. package/{esm2015/lib/pipes/trim.pipe.js → esm2020/lib/pipes/trim.pipe.mjs} +20 -20
  33. package/{esm2015/lib/pipes/typeof.pipe.js → esm2020/lib/pipes/typeof.pipe.mjs} +16 -16
  34. package/esm2020/lib/services/viewport.service.mjs +216 -0
  35. package/esm2020/lib/ui/back-to-top/back-to-top.component.mjs +49 -0
  36. package/{esm2015/lib/ui/button-with-confirm-dialog/button-response-types.enum.js → esm2020/lib/ui/button-with-confirm-dialog/button-response-types.enum.mjs} +6 -6
  37. package/esm2020/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.mjs +58 -0
  38. package/{esm2015/lib/ui/button-with-confirm-dialog/dialog-data.model.js → esm2020/lib/ui/button-with-confirm-dialog/dialog-data.model.mjs} +2 -2
  39. package/esm2020/lib/ui/checkbox/checkbox.component.mjs +71 -0
  40. package/esm2020/lib/ui/color-input/color-input.component.mjs +76 -0
  41. package/esm2020/lib/ui/dropdown-from-data/dropdown-from-data.component.mjs +165 -0
  42. package/esm2020/lib/ui/enum-radiogroup/enum-radiogroup.component.mjs +53 -0
  43. package/esm2020/lib/ui/file-input/file-input.component.mjs +232 -0
  44. package/esm2020/lib/ui/flyout/flyout.component.mjs +119 -0
  45. package/esm2020/lib/ui/generic-dialog/generic-dialog.component.mjs +54 -0
  46. package/esm2020/lib/ui/icon/icon.component.mjs +48 -0
  47. package/esm2020/lib/ui/icon/iconSize.enum.mjs +17 -0
  48. package/esm2020/lib/ui/image-slider/image-slider.component.mjs +189 -0
  49. package/esm2020/lib/ui/kms-accordion-item/kms-accordion-item.component.mjs +40 -0
  50. package/esm2020/lib/ui/loader/loader.component.mjs +21 -0
  51. package/esm2020/lib/ui/map/map.component.mjs +116 -0
  52. package/esm2020/lib/ui/radiobutton/radiobutton.component.mjs +73 -0
  53. package/esm2020/lib/ui/salutation-dropdown/salutation-dropdown.component.mjs +55 -0
  54. package/esm2020/lib/ui/salutation-radiogroup/salutation-radiogroup.component.mjs +49 -0
  55. package/esm2020/lib/ui/time-input/time-input.component.mjs +83 -0
  56. package/esm2020/lib/ui/tooltip/tooltip.component.mjs +16 -0
  57. package/esm2020/lib/ui/tooltip-icon/tooltip-icon.component.mjs +35 -0
  58. package/esm2020/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.mjs +82 -0
  59. package/esm2020/public-api.mjs +49 -0
  60. package/fesm2015/kms-ngx-ui-presentational.mjs +3013 -0
  61. package/fesm2015/kms-ngx-ui-presentational.mjs.map +1 -0
  62. package/{fesm2015/kms-ngx-ui-presentational.js → fesm2020/kms-ngx-ui-presentational.mjs} +2894 -3108
  63. package/fesm2020/kms-ngx-ui-presentational.mjs.map +1 -0
  64. package/{kms-ngx-ui-presentational.d.ts → index.d.ts} +5 -5
  65. package/lib/directives/directives.module.d.ts +11 -13
  66. package/lib/directives/mousewheel.directive.d.ts +15 -15
  67. package/lib/directives/sum-of-height.directive.d.ts +31 -31
  68. package/lib/directives/swipe.directive.d.ts +45 -45
  69. package/lib/directives/swipe.model.d.ts +49 -49
  70. package/lib/directives/tooltip.directive.d.ts +29 -29
  71. package/lib/kms-ngx-ui-presentational.component.d.ts +8 -8
  72. package/lib/kms-ngx-ui-presentational.module.d.ts +47 -47
  73. package/lib/kms-ngx-ui-presentational.service.d.ts +6 -6
  74. package/lib/models/address.model.d.ts +14 -14
  75. package/lib/models/iconSize.enum.d.ts +15 -15
  76. package/lib/models/image-snippet.model.d.ts +15 -15
  77. package/lib/models/index.d.ts +4 -4
  78. package/lib/models/is-value.function.d.ts +9 -9
  79. package/lib/models/salutation.enum.d.ts +5 -5
  80. package/lib/models/types/attached-file-dto.model.d.ts +11 -11
  81. package/lib/models/types/nullable.type.d.ts +4 -4
  82. package/lib/parent-components/actions.component.d.ts +31 -31
  83. package/lib/parent-components/form-control.component.d.ts +27 -27
  84. package/lib/parent-components/form.component.d.ts +34 -40
  85. package/lib/pipes/custom-pipes.module.d.ts +17 -17
  86. package/lib/pipes/decode-uri.pipe.d.ts +10 -10
  87. package/lib/pipes/encode-uri.pipe.d.ts +10 -10
  88. package/lib/pipes/integer-currency.pipe.d.ts +13 -13
  89. package/lib/pipes/safe-html.pipe.d.ts +13 -13
  90. package/lib/pipes/safe-resource-url.pipe.d.ts +13 -13
  91. package/lib/pipes/safe-style.pipe.d.ts +13 -13
  92. package/lib/pipes/safe-url.pipe.d.ts +13 -13
  93. package/lib/pipes/to-number.pipe.d.ts +10 -10
  94. package/lib/pipes/trim.pipe.d.ts +10 -10
  95. package/lib/pipes/typeof.pipe.d.ts +7 -7
  96. package/lib/services/viewport.service.d.ts +74 -83
  97. package/lib/ui/back-to-top/back-to-top.component.d.ts +10 -10
  98. package/lib/ui/button-with-confirm-dialog/button-response-types.enum.d.ts +4 -4
  99. package/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.d.ts +19 -19
  100. package/lib/ui/button-with-confirm-dialog/dialog-data.model.d.ts +9 -9
  101. package/lib/ui/checkbox/checkbox.component.d.ts +31 -31
  102. package/lib/ui/color-input/color-input.component.d.ts +19 -19
  103. package/lib/ui/dropdown-from-data/dropdown-from-data.component.d.ts +55 -55
  104. package/lib/ui/enum-radiogroup/enum-radiogroup.component.d.ts +17 -17
  105. package/lib/ui/file-input/file-input.component.d.ts +89 -89
  106. package/lib/ui/flyout/flyout.component.d.ts +32 -32
  107. package/lib/ui/generic-dialog/generic-dialog.component.d.ts +26 -26
  108. package/lib/ui/icon/icon.component.d.ts +42 -48
  109. package/lib/ui/icon/iconSize.enum.d.ts +15 -25
  110. package/lib/ui/image-slider/image-slider.component.d.ts +62 -62
  111. package/lib/ui/kms-accordion-item/kms-accordion-item.component.d.ts +22 -22
  112. package/lib/ui/loader/loader.component.d.ts +9 -9
  113. package/lib/ui/map/map.component.d.ts +70 -69
  114. package/lib/ui/radiobutton/radiobutton.component.d.ts +26 -27
  115. package/lib/ui/salutation-dropdown/salutation-dropdown.component.d.ts +17 -17
  116. package/lib/ui/salutation-radiogroup/salutation-radiogroup.component.d.ts +15 -15
  117. package/lib/ui/time-input/time-input.component.d.ts +22 -22
  118. package/lib/ui/tooltip/tooltip.component.d.ts +6 -6
  119. package/lib/ui/tooltip-icon/tooltip-icon.component.d.ts +13 -13
  120. package/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.d.ts +27 -27
  121. package/package.json +27 -14
  122. package/public-api.d.ts +45 -46
  123. package/src/lib/ui/back-to-top/back-to-top.component.scss +46 -45
  124. package/src/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.scss +2 -2
  125. package/src/lib/ui/checkbox/checkbox.component.scss +48 -48
  126. package/src/lib/ui/color-input/color-input.component.scss +38 -38
  127. package/src/lib/ui/file-input/file-input.component.scss +2 -2
  128. package/src/lib/ui/flyout/flyout.component.scss +34 -34
  129. package/src/lib/ui/generic-dialog/generic-dialog.component.scss +59 -59
  130. package/src/lib/ui/icon/icon.component.scss +148 -114
  131. package/src/lib/ui/image-slider/image-slider.component.scss +219 -219
  132. package/src/lib/ui/kms-accordion-item/kms-accordion-item.component.scss +95 -95
  133. package/src/lib/ui/radiobutton/radiobutton.component.scss +31 -31
  134. package/src/lib/ui/time-input/time-input.component.scss +10 -10
  135. package/src/lib/ui/tooltip/tooltip.component.scss +26 -26
  136. package/src/lib/ui/tooltip-icon/tooltip-icon.component.scss +2 -2
  137. package/src/styles/mixins.scss +8 -8
  138. package/src/styles/styles.scss +30 -31
  139. package/bundles/kms-ngx-ui-presentational.umd.js +0 -3751
  140. package/bundles/kms-ngx-ui-presentational.umd.js.map +0 -1
  141. package/esm2015/lib/directives/directives.module.js +0 -45
  142. package/esm2015/lib/directives/size.directive.js +0 -21
  143. package/esm2015/lib/directives/swipe.model.js +0 -5
  144. package/esm2015/lib/kms-ngx-ui-presentational.component.js +0 -26
  145. package/esm2015/lib/models/address.model.js +0 -6
  146. package/esm2015/lib/parent-components/colorable.component.js +0 -35
  147. package/esm2015/lib/parent-components/form-control.component.js +0 -76
  148. package/esm2015/lib/parent-components/form.component.js +0 -99
  149. package/esm2015/lib/pipes/decode-uri.pipe.js +0 -19
  150. package/esm2015/lib/pipes/encode-uri.pipe.js +0 -19
  151. package/esm2015/lib/services/viewport.service.js +0 -242
  152. package/esm2015/lib/ui/back-to-top/back-to-top.component.js +0 -52
  153. package/esm2015/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.js +0 -62
  154. package/esm2015/lib/ui/checkbox/checkbox.component.js +0 -76
  155. package/esm2015/lib/ui/color-input/color-input.component.js +0 -81
  156. package/esm2015/lib/ui/dropdown-from-data/dropdown-from-data.component.js +0 -169
  157. package/esm2015/lib/ui/enum-radiogroup/enum-radiogroup.component.js +0 -57
  158. package/esm2015/lib/ui/file-input/file-input.component.js +0 -237
  159. package/esm2015/lib/ui/flyout/flyout.component.js +0 -125
  160. package/esm2015/lib/ui/generic-dialog/generic-dialog.component.js +0 -58
  161. package/esm2015/lib/ui/icon/icon.component.js +0 -55
  162. package/esm2015/lib/ui/icon/iconSize.enum.js +0 -28
  163. package/esm2015/lib/ui/image-slider/image-slider.component.js +0 -193
  164. package/esm2015/lib/ui/kms-accordion-item/kms-accordion-item.component.js +0 -44
  165. package/esm2015/lib/ui/loader/loader.component.js +0 -25
  166. package/esm2015/lib/ui/map/map.component.js +0 -120
  167. package/esm2015/lib/ui/radiobutton/radiobutton.component.js +0 -82
  168. package/esm2015/lib/ui/salutation-dropdown/salutation-dropdown.component.js +0 -59
  169. package/esm2015/lib/ui/salutation-radiogroup/salutation-radiogroup.component.js +0 -53
  170. package/esm2015/lib/ui/time-input/time-input.component.js +0 -88
  171. package/esm2015/lib/ui/tooltip/tooltip.component.js +0 -20
  172. package/esm2015/lib/ui/tooltip-icon/tooltip-icon.component.js +0 -40
  173. package/esm2015/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.js +0 -86
  174. package/esm2015/public-api.js +0 -50
  175. package/fesm2015/kms-ngx-ui-presentational.js.map +0 -1
  176. package/lib/directives/size.directive.d.ts +0 -10
  177. package/lib/parent-components/colorable.component.d.ts +0 -10
  178. package/src/styles/animations.scss +0 -47
@@ -0,0 +1,216 @@
1
+ /**
2
+ * @copyright KMS GmbH
3
+ */
4
+ import { isPlatformBrowser } from '@angular/common';
5
+ import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
6
+ import { Subject } from 'rxjs';
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * Service to get viewport
10
+ */
11
+ export class ViewportService {
12
+ constructor(platformId) {
13
+ this.platformId = platformId;
14
+ this.viewports = [
15
+ {
16
+ name: 'xs',
17
+ low: 420,
18
+ high: 990,
19
+ },
20
+ {
21
+ name: 's',
22
+ low: 991,
23
+ high: 1024,
24
+ },
25
+ {
26
+ name: 'm',
27
+ low: 1025,
28
+ high: 1200,
29
+ },
30
+ {
31
+ name: 'l',
32
+ low: 12001,
33
+ high: 1400,
34
+ },
35
+ {
36
+ name: 'xl',
37
+ low: 1401,
38
+ high: 1600,
39
+ },
40
+ {
41
+ name: 'xxl',
42
+ low: 1601,
43
+ high: 1920,
44
+ },
45
+ {
46
+ name: 'xxxl',
47
+ low: 1921,
48
+ high: 99999,
49
+ },
50
+ ];
51
+ this.viewportChangedSubscriber = new Subject();
52
+ this.viewportResizedSubscriber = new Subject();
53
+ if (isPlatformBrowser(this.platformId)) {
54
+ window.addEventListener('resize', this.documentSizeChanged.bind(this), { passive: true });
55
+ }
56
+ }
57
+ /**
58
+ * Get window height
59
+ */
60
+ getDocumentHeight() {
61
+ return isPlatformBrowser(this.platformId) ? document.body.clientHeight : 1200;
62
+ }
63
+ /**
64
+ * Get window width
65
+ */
66
+ getDocumentWidth() {
67
+ return isPlatformBrowser(this.platformId) ? document.body.clientWidth : 1200;
68
+ }
69
+ /**
70
+ * Get window height
71
+ */
72
+ getWindowHeight() {
73
+ return isPlatformBrowser(this.platformId) ? window.innerHeight : 1200;
74
+ }
75
+ /**
76
+ * Get window width
77
+ */
78
+ getWindowWidth() {
79
+ return isPlatformBrowser(this.platformId) ? window.innerWidth : 1200;
80
+ }
81
+ /**
82
+ * Returns the current viewport MQ as string
83
+ * @returns string
84
+ */
85
+ getCurrentViewPort() {
86
+ if (!this.currentViewport) {
87
+ const currentWidth = isPlatformBrowser(this.platformId) ? document.body.clientWidth : 1200;
88
+ this.currentViewport = this.convertWidthToMediaQuery(currentWidth);
89
+ }
90
+ return this.currentViewport;
91
+ }
92
+ /**
93
+ * Provides mq´s as string
94
+ */
95
+ getViewportChangedObserver() {
96
+ return this.viewportChangedSubscriber.asObservable();
97
+ }
98
+ /**
99
+ * Provides the current window width as number
100
+ */
101
+ getViewportResizedObserver() {
102
+ return this.viewportResizedSubscriber.asObservable();
103
+ }
104
+ scrollToElementId(el, alignCenter = false) {
105
+ if (isPlatformBrowser(this.platformId)) {
106
+ this.scrollToElement(document.querySelector('#' + el), alignCenter);
107
+ }
108
+ }
109
+ /**
110
+ * Helper function that scrolls to the given markup element.
111
+ * @param el - nativeElement from markup
112
+ * @param alignCenter - defines if the element needs to be centered on window
113
+ */
114
+ scrollToElement(el, alignCenter = false) {
115
+ if (isPlatformBrowser(this.platformId)) {
116
+ let extraScrollTop = 0;
117
+ if (alignCenter) {
118
+ extraScrollTop = (window.innerHeight - el.clientHeight) / 2;
119
+ }
120
+ /*
121
+ const elementPos: DOMRect = el.getBoundingClientRect();
122
+ const scrollTopPosition = elementPos.x - extraScrollTop;
123
+ */
124
+ //let offsetLeft = 0;
125
+ let offsetTop = 0;
126
+ let elTemp = el;
127
+ while (elTemp) {
128
+ //offsetLeft += elTemp.offsetLeft;
129
+ offsetTop += elTemp.offsetTop;
130
+ elTemp = elTemp.parentElement ? elTemp.parentElement : null;
131
+ }
132
+ window.scrollTo({ left: 0, top: offsetTop - extraScrollTop, behavior: 'smooth' });
133
+ }
134
+ }
135
+ /**
136
+ * Scroll to the top position
137
+ * @param top - top position value
138
+ */
139
+ scrollTop(top) {
140
+ if (isPlatformBrowser(this.platformId)) {
141
+ window.scrollTo({ left: 0, top: top, behavior: 'smooth' });
142
+ }
143
+ }
144
+ ngOnDestroy() {
145
+ if (isPlatformBrowser(this.platformId)) {
146
+ window.removeEventListener('resize', this.documentSizeChanged);
147
+ }
148
+ }
149
+ /**
150
+ * If viewport changed
151
+ * @event
152
+ */
153
+ documentSizeChanged(event) {
154
+ const currentWindowWidth = event.target.innerWidth;
155
+ // inform who´s interested
156
+ this.viewportResizedSubscriber.next(currentWindowWidth);
157
+ if (currentWindowWidth > 0) {
158
+ for (const mqs of this.viewports) {
159
+ if (currentWindowWidth > mqs.high) {
160
+ continue;
161
+ }
162
+ else if ((currentWindowWidth >= mqs.low || currentWindowWidth <= mqs.high) &&
163
+ this.currentViewport !== mqs.name) {
164
+ this.currentViewport = mqs.name;
165
+ // inform who´s interested
166
+ this.viewportChangedSubscriber.next(mqs.name);
167
+ break;
168
+ }
169
+ else if (this.currentViewport === mqs.name) {
170
+ break;
171
+ }
172
+ else {
173
+ console.error('ERROR');
174
+ }
175
+ }
176
+ }
177
+ }
178
+ /**
179
+ * Get the Media Query for the given width
180
+ * @param width Width to get the according MQ for
181
+ */
182
+ convertWidthToMediaQuery(width) {
183
+ let currentViewport = '';
184
+ for (const mqs of this.viewports) {
185
+ if (width <= mqs.high && width >= mqs.low) {
186
+ currentViewport = mqs.name;
187
+ break;
188
+ }
189
+ }
190
+ return currentViewport;
191
+ }
192
+ isPortrait() {
193
+ if (isPlatformBrowser(this.platformId))
194
+ return window.innerHeight > window.innerWidth;
195
+ else
196
+ return;
197
+ }
198
+ isLandscape() {
199
+ if (isPlatformBrowser(this.platformId)) {
200
+ const isLandscape = window.orientation === 90 || window.orientation === -90;
201
+ return isLandscape;
202
+ }
203
+ else {
204
+ return;
205
+ }
206
+ }
207
+ }
208
+ ViewportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewportService, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
209
+ ViewportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewportService });
210
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ViewportService, decorators: [{
211
+ type: Injectable
212
+ }], ctorParameters: function () { return [{ type: Object, decorators: [{
213
+ type: Inject,
214
+ args: [PLATFORM_ID]
215
+ }] }]; } });
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBUzNDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUEyQ3hCLFlBQXlDLFVBQWtCO1FBQWxCLGVBQVUsR0FBVixVQUFVLENBQVE7UUExQzNDLGNBQVMsR0FBRztZQUN4QjtnQkFDSSxJQUFJLEVBQUUsSUFBSTtnQkFDVixHQUFHLEVBQUUsR0FBRztnQkFDUixJQUFJLEVBQUUsR0FBRzthQUNaO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsR0FBRyxFQUFFLEdBQUc7Z0JBQ1IsSUFBSSxFQUFFLElBQUk7YUFDYjtZQUNEO2dCQUNJLElBQUksRUFBRSxHQUFHO2dCQUNULEdBQUcsRUFBRSxJQUFJO2dCQUNULElBQUksRUFBRSxJQUFJO2FBQ2I7WUFDRDtnQkFDSSxJQUFJLEVBQUUsR0FBRztnQkFDVCxHQUFHLEVBQUUsS0FBSztnQkFDVixJQUFJLEVBQUUsSUFBSTthQUNiO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLElBQUk7Z0JBQ1YsR0FBRyxFQUFFLElBQUk7Z0JBQ1QsSUFBSSxFQUFFLElBQUk7YUFDYjtZQUNEO2dCQUNJLElBQUksRUFBRSxLQUFLO2dCQUNYLEdBQUcsRUFBRSxJQUFJO2dCQUNULElBQUksRUFBRSxJQUFJO2FBQ2I7WUFDRDtnQkFDSSxJQUFJLEVBQUUsTUFB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QyxVQUFVLENBQUMsRUFBRTtZQUNwQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsV0FBVyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVFLE9BQU8sV0FBVyxDQUFDO1NBQ3RCO2FBQU07WUFDSCxPQUFPO1NBQ1Y7SUFDTCxDQUFDOzs0R0E1TlEsZUFBZSxrQkEyQ0osV0FBVztnSEEzQ3RCLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBNENNLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGNvcHlyaWdodCBLTVMgR21iSFxuICovXG5cbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTnVsbEFibGUgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG4vLyBuZWVkZWQgZm9yIHNjcm9sbFRvRWxlbWVudCBmdW5jdGlvbmFsaXR5XG5cbmRlY2xhcmUgY29uc3Qgd2luZG93OiBhbnk7XG5cbmRlY2xhcmUgY29uc3QgZG9jdW1lbnQ6IGFueTtcblxuLyoqXG4gKiBTZXJ2aWNlIHRvIGdldCB2aWV3cG9ydFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVmlld3BvcnRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmlld3BvcnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAneHMnLFxuICAgICAgICAgICAgbG93OiA0MjAsXG4gICAgICAgICAgICBoaWdoOiA5OTAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdzJyxcbiAgICAgICAgICAgIGxvdzogOTkxLFxuICAgICAgICAgICAgaGlnaDogMTAyNCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ20nLFxuICAgICAgICAgICAgbG93OiAxMDI1LFxuICAgICAgICAgICAgaGlnaDogMTIwMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2wnLFxuICAgICAgICAgICAgbG93OiAxMjAwMSxcbiAgICAgICAgICAgIGhpZ2g6IDE0MDAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICd4bCcsXG4gICAgICAgICAgICBsb3c6IDE0MDEsXG4gICAgICAgICAgICBoaWdoOiAxNjAwLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAneHhsJyxcbiAgICAgICAgICAgIGxvdzogMTYwMSxcbiAgICAgICAgICAgIGhpZ2g6IDE5MjAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICd4eHhsJyxcbiAgICAgICAgICAgIGxvdzogMTkyMSxcbiAgICAgICAgICAgIGhpZ2g6IDk5OTk5LFxuICAgICAgICB9LFxuICAgIF07XG5cbiAgICBwcml2YXRlIHZpZXdwb3J0Q2hhbmdlZFN1YnNjcmliZXI6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgICBwcml2YXRlIHZpZXdwb3J0UmVzaXplZFN1YnNjcmliZXI6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgICBwcml2YXRlIGN1cnJlbnRWaWV3cG9ydCE6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0KSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFNpemVDaGFuZ2VkLmJpbmQodGhpcyksIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB3aW5kb3cgaGVpZ2h0XG4gICAgICovXG4gICAgcHVibGljIGdldERvY3VtZW50SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpID8gZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB3aW5kb3cgd2lkdGhcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RG9jdW1lbnRXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB3aW5kb3cgaGVpZ2h0XG4gICAgICovXG4gICAgcHVibGljIGdldFdpbmRvd0hlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSA/IHdpbmRvdy5pbm5lckhlaWdodCA6IDEyMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHdpbmRvdyB3aWR0aFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRXaW5kb3dXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSA/IHdpbmRvdy5pbm5lcldpZHRoIDogMTIwMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHZpZXdwb3J0IE1RIGFzIHN0cmluZ1xuICAgICAqIEByZXR1cm5zIHN0cmluZ1xuICAgICAqL1xuICAgIGdldEN1cnJlbnRWaWV3UG9ydCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFZpZXdwb3J0KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50V2lkdGg6IG51bWJlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgPyBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDogMTIwMDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdwb3J0ID0gdGhpcy5jb252ZXJ0V2lkdGhUb01lZGlhUXVlcnkoY3VycmVudFdpZHRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRWaWV3cG9ydDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyBtccK0cyBhcyBzdHJpbmdcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Vmlld3BvcnRDaGFuZ2VkT2JzZXJ2ZXIoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld3BvcnRDaGFuZ2VkU3Vic2NyaWJlci5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyB0aGUgY3VycmVudCB3aW5kb3cgd2lkdGggYXMgbnVtYmVyXG4gICAgICovXG4gICAgcHVibGljIGdldFZpZXdwb3J0UmVzaXplZE9ic2VydmVyKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdwb3J0UmVzaXplZFN1YnNjcmliZXIuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNjcm9sbFRvRWxlbWVudElkKGVsOiBzdHJpbmcsIGFsaWduQ2VudGVyID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9FbGVtZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyMnICsgZWwpLCBhbGlnbkNlbnRlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCBzY3JvbGxzIHRvIHRoZSBnaXZlbiBtYXJrdXAgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0gZWwgLSBuYXRpdmVFbGVtZW50IGZyb20gbWFya3VwXG4gICAgICogQHBhcmFtIGFsaWduQ2VudGVyIC0gZGVmaW5lcyBpZiB0aGUgZWxlbWVudCBuZWVkcyB0byBiZSBjZW50ZXJlZCBvbiB3aW5kb3dcbiAgICAgKi9cblxuICAgIHB1YmxpYyBzY3JvbGxUb0VsZW1lbnQoZWw6IEhUTUxFbGVtZW50LCBhbGlnbkNlbnRlciA9IGZhbHNlKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBsZXQgZXh0cmFTY3JvbGxUb3AgPSAwO1xuXG4gICAgICAgICAgICBpZiAoYWxpZ25DZW50ZXIpIHtcbiAgICAgICAgICAgICAgICBleHRyYVNjcm9sbFRvcCA9ICh3aW5kb3cuaW5uZXJIZWlnaHQgLSBlbC5jbGllbnRIZWlnaHQpIC8gMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLypcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRQb3M6IERPTVJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbFRvcFBvc2l0aW9uID0gZWxlbWVudFBvcy54IC0gZXh0cmFTY3JvbGxUb3A7XG4gICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAvL2xldCBvZmZzZXRMZWZ0ID0gMDtcbiAgICAgICAgICAgIGxldCBvZmZzZXRUb3AgPSAwO1xuXG4gICAgICAgICAgICBsZXQgZWxUZW1wOiBOdWxsQWJsZTxIVE1MRWxlbWVudD4gPSBlbDtcblxuICAgICAgICAgICAgd2hpbGUgKGVsVGVtcCkge1xuICAgICAgICAgICAgICAgIC8vb2Zmc2V0TGVmdCArPSBlbFRlbXAub2Zmc2V0TGVmdDtcbiAgICAgICAgICAgICAgICBvZmZzZXRUb3AgKz0gZWxUZW1wLm9mZnNldFRvcDtcbiAgICAgICAgICAgICAgICBlbFRlbXAgPSBlbFRlbXAucGFyZW50RWxlbWVudCA/IGVsVGVtcC5wYXJlbnRFbGVtZW50IDogbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgbGVmdDogMCwgdG9wOiBvZmZzZXRUb3AgLSBleHRyYVNjcm9sbFRvcCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2Nyb2xsIHRvIHRoZSB0b3AgcG9zaXRpb25cbiAgICAgKiBAcGFyYW0gdG9wIC0gdG9wIHBvc2l0aW9uIHZhbHVlXG4gICAgICovXG4gICAgcHVibGljIHNjcm9sbFRvcCh0b3A6IG51bWJlcikge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHsgbGVmdDogMCwgdG9wOiB0b3AsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuZG9jdW1lbnRTaXplQ2hhbmdlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB2aWV3cG9ydCBjaGFuZ2VkXG4gICAgICogQGV2ZW50XG4gICAgICovXG5cbiAgICBwcml2YXRlIGRvY3VtZW50U2l6ZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBjdXJyZW50V2luZG93V2lkdGg6IG51bWJlciA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICAgICAgICAvLyBpbmZvcm0gd2hvwrRzIGludGVyZXN0ZWRcbiAgICAgICAgdGhpcy52aWV3cG9ydFJlc2l6ZWRTdWJzY3JpYmVyLm5leHQoY3VycmVudFdpbmRvd1dpZHRoKTtcblxuICAgICAgICBpZiAoY3VycmVudFdpbmRvd1dpZHRoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtcXMgb2YgdGhpcy52aWV3cG9ydHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFdpbmRvd1dpZHRoID4gbXFzLmhpZ2gpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnRXaW5kb3dXaWR0aCA+PSBtcXMubG93IHx8IGN1cnJlbnRXaW5kb3dXaWR0aCA8PSBtcXMuaGlnaCkgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld3BvcnQgIT09IG1xcy5uYW1lXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFZpZXdwb3J0ID0gbXFzLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIC8vIGluZm9ybSB3aG/CtHMgaW50ZXJlc3RlZFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdwb3J0Q2hhbmdlZFN1YnNjcmliZXIubmV4dChtcXMubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50Vmlld3BvcnQgPT09IG1xcy5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VSUk9SJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBNZWRpYSBRdWVyeSBmb3IgdGhlIGdpdmVuIHdpZHRoXG4gICAgICogQHBhcmFtIHdpZHRoIFdpZHRoIHRvIGdldCB0aGUgYWNjb3JkaW5nIE1RIGZvclxuICAgICAqL1xuICAgIHByaXZhdGUgY29udmVydFdpZHRoVG9NZWRpYVF1ZXJ5KHdpZHRoOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGN1cnJlbnRWaWV3cG9ydCA9ICcnO1xuXG4gICAgICAgIGZvciAoY29uc3QgbXFzIG9mIHRoaXMudmlld3BvcnRzKSB7XG4gICAgICAgICAgICBpZiAod2lkdGggPD0gbXFzLmhpZ2ggJiYgd2lkdGggPj0gbXFzLmxvdykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRWaWV3cG9ydCA9IG1xcy5uYW1lO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRWaWV3cG9ydDtcbiAgICB9XG5cbiAgICBpc1BvcnRyYWl0KCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodCA+IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICBlbHNlIHJldHVybjtcbiAgICB9XG5cbiAgICBpc0xhbmRzY2FwZSgpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTGFuZHNjYXBlID0gd2luZG93Lm9yaWVudGF0aW9uID09PSA5MCB8fCB3aW5kb3cub3JpZW50YXRpb24gPT09IC05MDtcbiAgICAgICAgICAgIHJldHVybiBpc0xhbmRzY2FwZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @copyright KMS GmbH
3
+ */
4
+ import { Component, HostListener, Inject, PLATFORM_ID } from '@angular/core';
5
+ import { isPlatformBrowser } from '@angular/common';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "../icon/icon.component";
9
+ export class BackToTopComponent {
10
+ constructor(platformId) {
11
+ this.platformId = platformId;
12
+ }
13
+ onWindowScroll() {
14
+ if (isPlatformBrowser(this.platformId)) {
15
+ if (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop > 100) {
16
+ this.windowScrolled = true;
17
+ }
18
+ else if ((this.windowScrolled && window.pageYOffset) ||
19
+ document.documentElement.scrollTop ||
20
+ document.body.scrollTop < 10) {
21
+ this.windowScrolled = false;
22
+ }
23
+ }
24
+ }
25
+ scrollToTop() {
26
+ if (isPlatformBrowser(this.platformId)) {
27
+ (function smoothscroll() {
28
+ const currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
29
+ if (currentScroll > 0) {
30
+ window.requestAnimationFrame(smoothscroll);
31
+ window.scrollTo(0, currentScroll - currentScroll / 8);
32
+ }
33
+ })();
34
+ }
35
+ }
36
+ }
37
+ BackToTopComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BackToTopComponent, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
38
+ BackToTopComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: BackToTopComponent, selector: "kms-back-to-top", host: { listeners: { "window:scroll": "onWindowScroll()" } }, ngImport: i0, template: "<div class=\"scrollToTop\"\n [ngClass]=\"{'show': windowScrolled}\"\n (click)=\"scrollToTop()\">\n <div class=\"scrollToTop-inner\">\n <kms-icon icon=\"floating_button_clear\" iconClass=\"color-white\"></kms-icon>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.IconComponent, selector: "kms-icon", inputs: ["icon", "iconClass", "iconStyle", "iconSize", "dontUseSprite"] }] });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BackToTopComponent, decorators: [{
40
+ type: Component,
41
+ args: [{ selector: 'kms-back-to-top', template: "<div class=\"scrollToTop\"\n [ngClass]=\"{'show': windowScrolled}\"\n (click)=\"scrollToTop()\">\n <div class=\"scrollToTop-inner\">\n <kms-icon icon=\"floating_button_clear\" iconClass=\"color-white\"></kms-icon>\n </div>\n</div>" }]
42
+ }], ctorParameters: function () { return [{ type: Object, decorators: [{
43
+ type: Inject,
44
+ args: [PLATFORM_ID]
45
+ }] }]; }, propDecorators: { onWindowScroll: [{
46
+ type: HostListener,
47
+ args: ['window:scroll', []]
48
+ }] } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay10by10b3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2JhY2stdG8tdG9wL2JhY2stdG8tdG9wLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9iYWNrLXRvLXRvcC9iYWNrLXRvLXRvcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFNcEQsTUFBTSxPQUFPLGtCQUFrQjtJQUczQixZQUF3QyxVQUFrQjtRQUFsQixlQUFVLEdBQVYsVUFBVSxDQUFRO0lBQUcsQ0FBQztJQUc5RCxjQUFjO1FBQ1YsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtnQkFDM0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7YUFDOUI7aUJBQU0sSUFDSCxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFDM0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTO2dCQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEVBQzlCO2dCQUNFLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2FBQy9CO1NBQ0o7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLENBQUMsU0FBUyxZQUFZO2dCQUNsQixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDcEYsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFO29CQUNuQixNQUFNLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzNDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsR0FBRyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ3pEO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNSO0lBQ0wsQ0FBQzs7K0dBOUJRLGtCQUFrQixrQkFHUCxXQUFXO21HQUh0QixrQkFBa0IscUhDWC9CLHVRQU1NOzJGREtPLGtCQUFrQjtrQkFKOUIsU0FBUzsrQkFDSSxpQkFBaUI7OzBCQU1kLE1BQU07MkJBQUMsV0FBVzs0Q0FHL0IsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY29weXJpZ2h0IEtNUyBHbWJIXG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrbXMtYmFjay10by10b3AnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYWNrLXRvLXRvcC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEJhY2tUb1RvcENvbXBvbmVudCB7XG4gICAgd2luZG93U2Nyb2xsZWQ/OiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcHVibGljIHBsYXRmb3JtSWQ6IE9iamVjdCkge31cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbXSlcbiAgICBvbldpbmRvd1Njcm9sbCgpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmICh3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA+IDEwMCkge1xuICAgICAgICAgICAgICAgIHRoaXMud2luZG93U2Nyb2xsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAodGhpcy53aW5kb3dTY3JvbGxlZCAmJiB3aW5kb3cucGFnZVlPZmZzZXQpIHx8XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fFxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIDwgMTBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMud2luZG93U2Nyb2xsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNjcm9sbFRvVG9wKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgKGZ1bmN0aW9uIHNtb290aHNjcm9sbCgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2Nyb2xsID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNjcm9sbCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShzbW9vdGhzY3JvbGwpO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgY3VycmVudFNjcm9sbCAtIGN1cnJlbnRTY3JvbGwgLyA4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNjcm9sbFRvVG9wXCJcbiAgICBbbmdDbGFzc109XCJ7J3Nob3cnOiB3aW5kb3dTY3JvbGxlZH1cIlxuICAgIChjbGljayk9XCJzY3JvbGxUb1RvcCgpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzY3JvbGxUb1RvcC1pbm5lclwiPlxuICAgICAgICAgICAgPGttcy1pY29uIGljb249XCJmbG9hdGluZ19idXR0b25fY2xlYXJcIiBpY29uQ2xhc3M9XCJjb2xvci13aGl0ZVwiPjwva21zLWljb24+XG4gICAgICAgIDwvZGl2PlxuPC9kaXY+Il19
@@ -1,6 +1,6 @@
1
- export var ButtonResponseType;
2
- (function (ButtonResponseType) {
3
- ButtonResponseType["primary"] = "primary";
4
- ButtonResponseType["secondary"] = "secondary";
5
- })(ButtonResponseType || (ButtonResponseType = {}));
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXJlc3BvbnNlLXR5cGVzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvdWkvYnV0dG9uLXdpdGgtY29uZmlybS1kaWFsb2cvYnV0dG9uLXJlc3BvbnNlLXR5cGVzLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksa0JBR1g7QUFIRCxXQUFZLGtCQUFrQjtJQUMxQix5Q0FBbUIsQ0FBQTtJQUNuQiw2Q0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEJ1dHRvblJlc3BvbnNlVHlwZXtcclxuICAgIHByaW1hcnkgPSAncHJpbWFyeScsXHJcbiAgICBzZWNvbmRhcnkgPSAnc2Vjb25kYXJ5J1xyXG59Il19
1
+ export var ButtonResponseType;
2
+ (function (ButtonResponseType) {
3
+ ButtonResponseType["primary"] = "primary";
4
+ ButtonResponseType["secondary"] = "secondary";
5
+ })(ButtonResponseType || (ButtonResponseType = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXJlc3BvbnNlLXR5cGVzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvdWkvYnV0dG9uLXdpdGgtY29uZmlybS1kaWFsb2cvYnV0dG9uLXJlc3BvbnNlLXR5cGVzLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksa0JBR1g7QUFIRCxXQUFZLGtCQUFrQjtJQUMxQix5Q0FBbUIsQ0FBQTtJQUNuQiw2Q0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEJ1dHRvblJlc3BvbnNlVHlwZXtcbiAgICBwcmltYXJ5ID0gJ3ByaW1hcnknLFxuICAgIHNlY29uZGFyeSA9ICdzZWNvbmRhcnknXG59Il19
@@ -0,0 +1,58 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { SubSink } from 'subsink';
3
+ import { GenericDialogComponent } from '../generic-dialog/generic-dialog.component';
4
+ import { ButtonResponseType } from './button-response-types.enum';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/material/dialog";
7
+ import * as i2 from "@angular/material/button";
8
+ export class ButtonWithConfirmDialogComponent {
9
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
10
+ constructor(dialog) {
11
+ this.dialog = dialog;
12
+ // Outputs when dialogue was closed. Returns true, if yes was clicked, false otherwise
13
+ this.onConfirmClosed = new EventEmitter();
14
+ this.subs = new SubSink();
15
+ }
16
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
17
+ ngOnInit() { }
18
+ start() {
19
+ const data = {
20
+ title: this.confirmTitle,
21
+ buttons: {
22
+ primary: this.confirmTextYes,
23
+ secondary: this.confirmTextNo,
24
+ }
25
+ };
26
+ const dialogRef = this.dialog.open(GenericDialogComponent, {
27
+ data: data,
28
+ });
29
+ this.subs.sink = dialogRef.afterClosed().subscribe(result => {
30
+ if (result === ButtonResponseType.primary) {
31
+ this.onConfirmClosed.emit(true);
32
+ }
33
+ else {
34
+ this.onConfirmClosed.emit(false);
35
+ }
36
+ dialogRef.close();
37
+ });
38
+ }
39
+ }
40
+ ButtonWithConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ButtonWithConfirmDialogComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
41
+ ButtonWithConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ButtonWithConfirmDialogComponent, selector: "kms-button-with-confirm-dialog", inputs: { disabled: "disabled", buttonText: "buttonText", confirmTitle: "confirmTitle", confirmTextYes: "confirmTextYes", confirmTextNo: "confirmTextNo" }, outputs: { onConfirmClosed: "onConfirmClosed" }, ngImport: i0, template: "<button\n type=\"button\"\n (click)=\"start()\"\n mat-stroked-button\n [disabled]=\"disabled\"\n>\n {{ buttonText }}\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ButtonWithConfirmDialogComponent, decorators: [{
43
+ type: Component,
44
+ args: [{ selector: 'kms-button-with-confirm-dialog', template: "<button\n type=\"button\"\n (click)=\"start()\"\n mat-stroked-button\n [disabled]=\"disabled\"\n>\n {{ buttonText }}\n</button>\n" }]
45
+ }], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { disabled: [{
46
+ type: Input
47
+ }], buttonText: [{
48
+ type: Input
49
+ }], confirmTitle: [{
50
+ type: Input
51
+ }], confirmTextYes: [{
52
+ type: Input
53
+ }], confirmTextNo: [{
54
+ type: Input
55
+ }], onConfirmClosed: [{
56
+ type: Output
57
+ }] } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXdpdGgtY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2J1dHRvbi13aXRoLWNvbmZpcm0tZGlhbG9nL2J1dHRvbi13aXRoLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9idXR0b24td2l0aC1jb25maXJtLWRpYWxvZy9idXR0b24td2l0aC1jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFRbEUsTUFBTSxPQUFPLGdDQUFnQztJQVl6QyxnRUFBZ0U7SUFDaEUsWUFDVyxNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBUDVCLHNGQUFzRjtRQUM1RSxvQkFBZSxHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTlELFNBQUksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBSzFCLENBQUM7SUFFSixnRUFBZ0U7SUFDaEUsUUFBUSxLQUFJLENBQUM7SUFFYixLQUFLO1FBQ0QsTUFBTSxJQUFJLEdBQWU7WUFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQ3hCLE9BQU8sRUFBQztnQkFDSixPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWM7Z0JBQzVCLFNBQVMsRUFBRSxJQUFJLENBQUMsYUFBYTthQUNoQztTQUNKLENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUN2RCxJQUFJLEVBQUUsSUFBSTtTQUNiLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDeEQsSUFBSSxNQUFNLEtBQUssa0JBQWtCLENBQUMsT0FBTyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQztpQkFBSTtnQkFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNwQztZQUNELFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OzZIQXhDUSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyxtUkNiN0Msa0pBUUE7MkZES2EsZ0NBQWdDO2tCQUw1QyxTQUFTOytCQUNJLGdDQUFnQztnR0FLakMsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdJLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgU3ViU2luayB9IGZyb20gJ3N1YnNpbmsnO1xuaW1wb3J0IHsgTnVsbEFibGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgR2VuZXJpY0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2dlbmVyaWMtZGlhbG9nL2dlbmVyaWMtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25SZXNwb25zZVR5cGUgfSBmcm9tICcuL2J1dHRvbi1yZXNwb25zZS10eXBlcy5lbnVtJztcbmltcG9ydCB7IERpYWxvZ0RhdGEgfSBmcm9tICcuL2RpYWxvZy1kYXRhLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrbXMtYnV0dG9uLXdpdGgtY29uZmlybS1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9idXR0b24td2l0aC1jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYnV0dG9uLXdpdGgtY29uZmlybS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uV2l0aENvbmZpcm1EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBOdWxsQWJsZTxib29sZWFuPjtcbiAgICBASW5wdXQoKSBidXR0b25UZXh0OiBOdWxsQWJsZTxzdHJpbmc+O1xuICAgIEBJbnB1dCgpIGNvbmZpcm1UaXRsZTogTnVsbEFibGU8c3RyaW5nPjtcbiAgICBASW5wdXQoKSBjb25maXJtVGV4dFllczogTnVsbEFibGU8c3RyaW5nPjtcbiAgICBASW5wdXQoKSBjb25maXJtVGV4dE5vOiBOdWxsQWJsZTxzdHJpbmc+O1xuXG4gICAgLy8gT3V0cHV0cyB3aGVuIGRpYWxvZ3VlIHdhcyBjbG9zZWQuIFJldHVybnMgdHJ1ZSwgaWYgeWVzIHdhcyBjbGlja2VkLCBmYWxzZSBvdGhlcndpc2VcbiAgICBAT3V0cHV0KCkgb25Db25maXJtQ2xvc2VkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwcml2YXRlIHN1YnMgPSBuZXcgU3ViU2luaygpO1xuICAgIFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICkge31cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBuZ09uSW5pdCgpIHt9XG5cbiAgICBzdGFydCgpe1xuICAgICAgICBjb25zdCBkYXRhOiBEaWFsb2dEYXRhID0ge1xuICAgICAgICAgICAgdGl0bGU6IHRoaXMuY29uZmlybVRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uczp7XG4gICAgICAgICAgICAgICAgcHJpbWFyeTogdGhpcy5jb25maXJtVGV4dFllcyxcbiAgICAgICAgICAgICAgICBzZWNvbmRhcnk6IHRoaXMuY29uZmlybVRleHRObyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihHZW5lcmljRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnN1YnMuc2luayA9IGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gQnV0dG9uUmVzcG9uc2VUeXBlLnByaW1hcnkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29uZmlybUNsb3NlZC5lbWl0KHRydWUpO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvbmZpcm1DbG9zZWQuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIChjbGljayk9XCJzdGFydCgpXCJcbiAgICBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuPlxuICAgIHt7IGJ1dHRvblRleHQgfX1cbjwvYnV0dG9uPlxuIl19
@@ -1,2 +1,2 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvdWkvYnV0dG9uLXdpdGgtY29uZmlybS1kaWFsb2cvZGlhbG9nLWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nRGF0YSB7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgbWVzc2FnZT86IHN0cmluZztcclxuICAgIGJ1dHRvbnM/OiBEaWFsb2dEYXRhQnV0dG9uc1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0RhdGFCdXR0b25zIHtcclxuICAgIHByaW1hcnk6IHN0cmluZyxcclxuICAgIHNlY29uZGFyeTogc3RyaW5nLFxyXG59XHJcbiJdfQ==
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvdWkvYnV0dG9uLXdpdGgtY29uZmlybS1kaWFsb2cvZGlhbG9nLWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nRGF0YSB7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgIGJ1dHRvbnM/OiBEaWFsb2dEYXRhQnV0dG9uc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0RhdGFCdXR0b25zIHtcbiAgICBwcmltYXJ5OiBzdHJpbmcsXG4gICAgc2Vjb25kYXJ5OiBzdHJpbmcsXG59XG4iXX0=
@@ -0,0 +1,71 @@
1
+ /*!
2
+ * @copyright FLYACTS GmbH 2019
3
+ */
4
+ import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';
5
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
6
+ import { ActionsParentComponent } from '../../parent-components/actions.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@angular/material/checkbox";
10
+ import * as i3 from "@angular/forms";
11
+ export class CheckboxComponent extends ActionsParentComponent {
12
+ constructor() {
13
+ super();
14
+ /**
15
+ * Internal description name. All checkboxes with the same name belong to the same group.
16
+ * User can select none, one or all checkboxes with the same name.
17
+ */
18
+ this.name = '';
19
+ this.select = new EventEmitter();
20
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
21
+ this.onChange = () => { };
22
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
23
+ this.onTouch = () => { };
24
+ }
25
+ selectAction(id) {
26
+ this.select.emit(id);
27
+ this.checked = !this.checked;
28
+ }
29
+ get value() {
30
+ return this.checked;
31
+ }
32
+ set value(value) {
33
+ this.checked = value;
34
+ this.onChange(value);
35
+ this.onTouch(value);
36
+ }
37
+ writeValue(value) {
38
+ this.value = value;
39
+ }
40
+ registerOnChange(fn) {
41
+ this.onChange = fn;
42
+ }
43
+ registerOnTouched(fn) {
44
+ this.onTouch = fn;
45
+ }
46
+ }
47
+ CheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
+ CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CheckboxComponent, selector: "kms-checkbox", inputs: { infoText: "infoText", name: "name" }, outputs: { select: "select" }, providers: [
49
+ {
50
+ provide: NG_VALUE_ACCESSOR,
51
+ useExisting: forwardRef(() => CheckboxComponent),
52
+ multi: true,
53
+ },
54
+ ], usesInheritance: true, ngImport: i0, template: "<!-- <label class=\"wrapper ui-copy-text\"\n [ngClass]=\"{'disabled' : disabled}\">{{label}}\n <input type=\"checkbox\" \n [checked]=\"checked\"\n [value]=\"value\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n (change)=\"selectAction($event)\">\n\n</label> -->\n<mat-checkbox class=\"example-margin\" [disabled]=\"disabled\" [name]=\"name\" [(ngModel)]=\"checked\"></mat-checkbox>\n<span *ngIf=\"infoText && infoText.length > 0\" \n class=\"\"\n [ngClass]=\"{'disabled' : disabled}\">{{infoText}}\n</span>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CheckboxComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'kms-checkbox', providers: [
58
+ {
59
+ provide: NG_VALUE_ACCESSOR,
60
+ useExisting: forwardRef(() => CheckboxComponent),
61
+ multi: true,
62
+ },
63
+ ], template: "<!-- <label class=\"wrapper ui-copy-text\"\n [ngClass]=\"{'disabled' : disabled}\">{{label}}\n <input type=\"checkbox\" \n [checked]=\"checked\"\n [value]=\"value\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n (change)=\"selectAction($event)\">\n\n</label> -->\n<mat-checkbox class=\"example-margin\" [disabled]=\"disabled\" [name]=\"name\" [(ngModel)]=\"checked\"></mat-checkbox>\n<span *ngIf=\"infoText && infoText.length > 0\" \n class=\"\"\n [ngClass]=\"{'disabled' : disabled}\">{{infoText}}\n</span>" }]
64
+ }], ctorParameters: function () { return []; }, propDecorators: { infoText: [{
65
+ type: Input
66
+ }], name: [{
67
+ type: Input
68
+ }], select: [{
69
+ type: Output
70
+ }] } });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7QUFlbkYsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHNCQUFzQjtJQW9CekQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQWJaOzs7V0FHRztRQUNNLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFVCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVV0QyxnRUFBZ0U7UUFDaEUsYUFBUSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUV6QixnRUFBZ0U7UUFDaEUsWUFBTyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQU54QixDQUFDO0lBUEcsWUFBWSxDQUFDLEVBQVU7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDakMsQ0FBQztJQVlELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsS0FBYztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7OzhHQWxEUSxpQkFBaUI7a0dBQWpCLGlCQUFpQixzSEFSZjtRQUNQO1lBQ0ksT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hELEtBQUssRUFBRSxJQUFJO1NBQ2Q7S0FDSixpRENyQkwsaWtCQWNPOzJGRFNNLGlCQUFpQjtrQkFaN0IsU0FBUzsrQkFDSSxjQUFjLGFBR2I7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7NEJBQ2hELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzBFQVFRLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGNvcHlyaWdodCBGTFlBQ1RTIEdtYkggMjAxOVxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOdWxsQWJsZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbmltcG9ydCB7IEFjdGlvbnNQYXJlbnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXJlbnQtY29tcG9uZW50cy9hY3Rpb25zLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrbXMtY2hlY2tib3gnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2hlY2tib3guY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaGVja2JveENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbXBvbmVudCBleHRlbmRzIEFjdGlvbnNQYXJlbnRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cblxuICAgIC8qKlxuICAgICAqIEFkZGl0aW9uYWwgZGVzY3JpcHRpb24gdGV4dCB0aGF0IHdpbGwgYmUgc2hvd24gYmVsb3cgdGhlIGNoZWNrYm94LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIGluZm9UZXh0OiBOdWxsQWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogSW50ZXJuYWwgZGVzY3JpcHRpb24gbmFtZS4gQWxsIGNoZWNrYm94ZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGJlbG9uZyB0byB0aGUgc2FtZSBncm91cC5cbiAgICAgKiBVc2VyIGNhbiBzZWxlY3Qgbm9uZSwgb25lIG9yIGFsbCBjaGVja2JveGVzIHdpdGggdGhlIHNhbWUgbmFtZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBuYW1lID0gJyc7XG5cbiAgICBAT3V0cHV0KCkgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgICAgICBzZWxlY3RBY3Rpb24oaWQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlbGVjdC5lbWl0KGlkKTtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIG9uVG91Y2g6IGFueSA9ICgpID0+IHt9O1xuXG4gICAgZ2V0IHZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGVja2VkO1xuICAgIH1cblxuICAgIHNldCB2YWx1ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMub25Ub3VjaCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoID0gZm47XG4gICAgfVxufVxuIiwiPCEtLSA8bGFiZWwgY2xhc3M9XCJ3cmFwcGVyIHVpLWNvcHktdGV4dFwiXG4gICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCcgOiBkaXNhYmxlZH1cIj57e2xhYmVsfX1cbiAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgXG4gICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgKGNoYW5nZSk9XCJzZWxlY3RBY3Rpb24oJGV2ZW50KVwiPlxuXG48L2xhYmVsPiAtLT5cbjxtYXQtY2hlY2tib3ggY2xhc3M9XCJleGFtcGxlLW1hcmdpblwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtuYW1lXT1cIm5hbWVcIiBbKG5nTW9kZWwpXT1cImNoZWNrZWRcIj48L21hdC1jaGVja2JveD5cbjxzcGFuICpuZ0lmPVwiaW5mb1RleHQgJiYgaW5mb1RleHQubGVuZ3RoID4gMFwiIFxuICAgICAgY2xhc3M9XCJcIlxuICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCcgOiBkaXNhYmxlZH1cIj57e2luZm9UZXh0fX1cbjwvc3Bhbj4iXX0=
@@ -0,0 +1,76 @@
1
+ import { Component, forwardRef, Input } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { FormControlParentComponent } from './../../parent-components/form-control.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "@angular/material/form-field";
8
+ import * as i4 from "@angular/material/input";
9
+ import * as i5 from "../tooltip-icon/tooltip-icon.component";
10
+ export class ColorInputComponent extends FormControlParentComponent {
11
+ constructor(formBuilder, renderer) {
12
+ super(formBuilder, renderer);
13
+ this.formBuilder = formBuilder;
14
+ this.renderer = renderer;
15
+ this.label = '';
16
+ this.tooltipText = '';
17
+ this.placeholder = '';
18
+ }
19
+ ngOnInit() {
20
+ this.form = this.formBuilder.group({
21
+ color: '',
22
+ });
23
+ super.ngOnInit();
24
+ this.formInitialized = true;
25
+ this.form.valueChanges.subscribe((value) => {
26
+ this.internalValue = value.color;
27
+ this.onChange(value.color);
28
+ });
29
+ }
30
+ validate(_) {
31
+ // TODO fix to validate complete form
32
+ this.valid = this.matchesHex(this.form.value) ? null : false;
33
+ return this.valid && {
34
+ invalid: !this.valid
35
+ };
36
+ }
37
+ matchesHex(match) {
38
+ if (match) {
39
+ const ret = match.match(/^#[0-9a-f]{6}$/i);
40
+ this.valid = ret && ret.length > 0;
41
+ return ret;
42
+ }
43
+ return false;
44
+ }
45
+ updateSelectedColor(value) {
46
+ const color = value.target.value;
47
+ this.value = color;
48
+ this.internalValue = color;
49
+ this.change(color);
50
+ }
51
+ }
52
+ ColorInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ColorInputComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
53
+ ColorInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ColorInputComponent, selector: "kms-color-input", inputs: { label: "label", tooltipText: "tooltipText", placeholder: "placeholder" }, providers: [
54
+ {
55
+ provide: NG_VALUE_ACCESSOR,
56
+ useExisting: forwardRef(() => ColorInputComponent),
57
+ multi: true,
58
+ },
59
+ ], usesInheritance: true, ngImport: i0, template: "\n<form [formGroup]=\"form\" *ngIf=\"formInitialized\">\n <div>\n <mat-form-field class=\"colorInput\">\n <kms-tooltip-icon [tooltipText]=\"tooltipText\" *ngIf=\"tooltipText\"></kms-tooltip-icon>\n <mat-label>{{ label }}</mat-label>\n <input type=\"text\" [(ngModel)]=\"value\" matInput formControlName=\"color\" [placeholder]=\"placeholder\" [ngClass]=\"{'my-inValid': !matchesHex(value)}\" />\n <input type=\"color\" [value]=\"value && matchesHex(value) ? value : '#ffffff'\" (change)=\"updateSelectedColor($event)\" [ngClass]=\"{'my-inValid': !matchesHex(value)}\" />\n </mat-form-field>\n </div>\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.TooltipIconComponent, selector: "kms-tooltip-icon", inputs: ["tooltipTitle", "tooltipText", "tooltipLinkText", "tooltipLinkUrl", "placement", "delay"] }] });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ColorInputComponent, decorators: [{
61
+ type: Component,
62
+ args: [{ selector: 'kms-color-input', providers: [
63
+ {
64
+ provide: NG_VALUE_ACCESSOR,
65
+ useExisting: forwardRef(() => ColorInputComponent),
66
+ multi: true,
67
+ },
68
+ ], template: "\n<form [formGroup]=\"form\" *ngIf=\"formInitialized\">\n <div>\n <mat-form-field class=\"colorInput\">\n <kms-tooltip-icon [tooltipText]=\"tooltipText\" *ngIf=\"tooltipText\"></kms-tooltip-icon>\n <mat-label>{{ label }}</mat-label>\n <input type=\"text\" [(ngModel)]=\"value\" matInput formControlName=\"color\" [placeholder]=\"placeholder\" [ngClass]=\"{'my-inValid': !matchesHex(value)}\" />\n <input type=\"color\" [value]=\"value && matchesHex(value) ? value : '#ffffff'\" (change)=\"updateSelectedColor($event)\" [ngClass]=\"{'my-inValid': !matchesHex(value)}\" />\n </mat-form-field>\n </div>\n</form>" }]
69
+ }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i0.Renderer2 }]; }, propDecorators: { label: [{
70
+ type: Input
71
+ }], tooltipText: [{
72
+ type: Input
73
+ }], placeholder: [{
74
+ type: Input
75
+ }] } });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2NvbG9yLWlucHV0L2NvbG9yLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9jb2xvci1pbnB1dC9jb2xvci1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBZ0UsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7Ozs7OztBQWM5RixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsMEJBQTBCO0lBTy9ELFlBQW1CLFdBQStCLEVBQVMsUUFBbUI7UUFDMUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQURkLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUFTLGFBQVEsR0FBUixRQUFRLENBQVc7UUFMckUsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO0lBSzFCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUMvQixLQUFLLEVBQUUsRUFBRTtTQUNaLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUU1QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFFUCxDQUFDO0lBRUQsUUFBUSxDQUFDLENBQXFCO1FBQzFCLHFDQUFxQztRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJO1lBQ2pCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLO1NBQ3ZCLENBQUM7SUFDTixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWM7UUFDckIsSUFBRyxLQUFLLEVBQUM7WUFDTCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7WUFDakMsT0FBTyxHQUFHLENBQUM7U0FDZDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFVO1FBQzFCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQzs7Z0hBakRRLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDhIQVJqQjtRQUNQO1lBQ0ksT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO1lBQ2xELEtBQUssRUFBRSxJQUFJO1NBQ2Q7S0FDSixpRENkTCxrcUJBVU87MkZETU0sbUJBQW1CO2tCQVovQixTQUFTOytCQUNJLGlCQUFpQixhQUdoQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7aUlBSVEsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnQgfSBmcm9tICcuLy4uLy4uL3BhcmVudC1jb21wb25lbnRzL2Zvcm0tY29udHJvbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ttcy1jb2xvci1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbG9yLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb2xvci1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvbG9ySW5wdXRDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29sb3JJbnB1dENvbXBvbmVudCBleHRlbmRzIEZvcm1Db250cm9sUGFyZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICAgIEBJbnB1dCgpIHRvb2x0aXBUZXh0ID0gJyc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgICB2YWxpZDogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICAgICAgc3VwZXIoZm9ybUJ1aWxkZXIsIHJlbmRlcmVyKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBjb2xvcjogJycsXG4gICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgXG4gICAgICAgIHRoaXMuZm9ybUluaXRpYWxpemVkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxWYWx1ZSA9IHZhbHVlLmNvbG9yO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZS5jb2xvcik7XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgdmFsaWRhdGUoXzogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgICAgIC8vIFRPRE8gZml4IHRvIHZhbGlkYXRlIGNvbXBsZXRlIGZvcm1cbiAgICAgICAgdGhpcy52YWxpZCA9IHRoaXMubWF0Y2hlc0hleCh0aGlzLmZvcm0udmFsdWUpID8gbnVsbCA6IGZhbHNlO1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZCAmJiB7XG4gICAgICAgICAgICBpbnZhbGlkOiAhdGhpcy52YWxpZFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hdGNoZXNIZXgobWF0Y2g/OiBzdHJpbmcpe1xuICAgICAgICBpZihtYXRjaCl7XG4gICAgICAgICAgICBjb25zdCByZXQgPSBtYXRjaC5tYXRjaCgvXiNbMC05YS1mXXs2fSQvaSk7XG4gICAgICAgICAgICB0aGlzLnZhbGlkID0gcmV0ICYmIHJldC5sZW5ndGg+MDtcbiAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHVwZGF0ZVNlbGVjdGVkQ29sb3IodmFsdWU6IGFueSl7XG4gICAgICAgIGNvbnN0IGNvbG9yID0gdmFsdWUudGFyZ2V0LnZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlID0gY29sb3I7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxWYWx1ZSA9IGNvbG9yO1xuICAgICAgICB0aGlzLmNoYW5nZShjb2xvcik7XG4gICAgfVxufVxuIiwiXG48Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAqbmdJZj1cImZvcm1Jbml0aWFsaXplZFwiPlxuICAgIDxkaXY+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImNvbG9ySW5wdXRcIj5cbiAgICAgICAgICAgIDxrbXMtdG9vbHRpcC1pY29uIFt0b29sdGlwVGV4dF09XCJ0b29sdGlwVGV4dFwiICpuZ0lmPVwidG9vbHRpcFRleHRcIj48L2ttcy10b29sdGlwLWljb24+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY29sb3JcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbbmdDbGFzc109XCJ7J215LWluVmFsaWQnOiAhbWF0Y2hlc0hleCh2YWx1ZSl9XCIgLz5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBbdmFsdWVdPVwidmFsdWUgJiYgbWF0Y2hlc0hleCh2YWx1ZSkgPyB2YWx1ZSA6ICcjZmZmZmZmJ1wiIChjaGFuZ2UpPVwidXBkYXRlU2VsZWN0ZWRDb2xvcigkZXZlbnQpXCIgW25nQ2xhc3NdPVwieydteS1pblZhbGlkJzogIW1hdGNoZXNIZXgodmFsdWUpfVwiIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG48L2Zvcm0+Il19