@kms-ngx-ui/presentational 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/bundles/kms-ngx-ui-presentational.umd.js +2441 -0
- package/bundles/kms-ngx-ui-presentational.umd.js.map +1 -0
- package/bundles/kms-ngx-ui-presentational.umd.min.js +38 -0
- package/bundles/kms-ngx-ui-presentational.umd.min.js.map +1 -0
- package/esm2015/kms-ngx-ui-presentational.js +37 -0
- package/esm2015/lib/kms-ngx-ui-presentational.component.js +18 -0
- package/esm2015/lib/kms-ngx-ui-presentational.module.js +98 -0
- package/esm2015/lib/kms-ngx-ui-presentational.service.js +13 -0
- package/esm2015/lib/models/address.model.js +6 -0
- package/esm2015/lib/models/iconSize.enum.js +17 -0
- package/esm2015/lib/models/index.js +5 -0
- package/esm2015/lib/models/is-value.function.js +17 -0
- package/esm2015/lib/models/salutation.enum.js +8 -0
- package/esm2015/lib/models/types/attached-file-dto.model.js +6 -0
- package/esm2015/lib/models/types/nullable.type.js +5 -0
- package/esm2015/lib/parent-components/actions.component.js +48 -0
- package/esm2015/lib/parent-components/form-control.component.js +73 -0
- package/esm2015/lib/parent-components/form.component.js +77 -0
- package/esm2015/lib/pipes/custom-pipes.module.js +45 -0
- package/esm2015/lib/pipes/decode-uri.pipe.js +15 -0
- package/esm2015/lib/pipes/encode-uri.pipe.js +15 -0
- package/esm2015/lib/pipes/integer-currency.pipe.js +29 -0
- package/esm2015/lib/pipes/safe-html.pipe.js +22 -0
- package/esm2015/lib/pipes/safe-style.pipe.js +22 -0
- package/esm2015/lib/pipes/safe-url.pipe.js +22 -0
- package/esm2015/lib/pipes/to-number.pipe.js +19 -0
- package/esm2015/lib/pipes/trim.pipe.js +16 -0
- package/esm2015/lib/pipes/typeof.pipe.js +12 -0
- package/esm2015/lib/services/viewport.service.js +213 -0
- package/esm2015/lib/ui/back-to-top/back-to-top.component.js +46 -0
- package/esm2015/lib/ui/button-with-confirm-dialog/button-response-types.enum.js +6 -0
- package/esm2015/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.js +56 -0
- package/esm2015/lib/ui/button-with-confirm-dialog/dialog-data.model.js +2 -0
- package/esm2015/lib/ui/checkbox/checkbox.component.js +63 -0
- package/esm2015/lib/ui/color-input/color-input.component.js +63 -0
- package/esm2015/lib/ui/enum-radiogroup/enum-radiogroup.component.js +46 -0
- package/esm2015/lib/ui/file-input/file-input.component.js +215 -0
- package/esm2015/lib/ui/flyout/flyout.component.js +84 -0
- package/esm2015/lib/ui/generic-dialog/generic-dialog.component.js +54 -0
- package/esm2015/lib/ui/icon/icon.component.js +47 -0
- package/esm2015/lib/ui/icon/iconSize.enum.js +17 -0
- package/esm2015/lib/ui/kms-accordion-item/kms-accordion-item.component.js +36 -0
- package/esm2015/lib/ui/loader/loader.component.js +21 -0
- package/esm2015/lib/ui/map/map.component.js +137 -0
- package/esm2015/lib/ui/radiobutton/radiobutton.component.js +66 -0
- package/esm2015/lib/ui/salutation-dropdown/salutation-dropdown.component.js +49 -0
- package/esm2015/lib/ui/salutation-radiogroup/salutation-radiogroup.component.js +44 -0
- package/esm2015/lib/ui/time-input/time-input.component.js +80 -0
- package/esm2015/lib/ui/tooltip/tooltip.component.js +17 -0
- package/esm2015/lib/ui/tooltip-icon/tooltip-icon.component.js +29 -0
- package/esm2015/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.js +74 -0
- package/esm2015/public-api.js +12 -0
- package/fesm2015/kms-ngx-ui-presentational.js +1962 -0
- package/fesm2015/kms-ngx-ui-presentational.js.map +1 -0
- package/kms-ngx-ui-presentational.d.ts +37 -0
- package/kms-ngx-ui-presentational.metadata.json +1 -0
- package/lib/kms-ngx-ui-presentational.component.d.ts +5 -0
- package/lib/kms-ngx-ui-presentational.module.d.ts +2 -0
- package/lib/kms-ngx-ui-presentational.service.d.ts +3 -0
- package/lib/models/address.model.d.ts +14 -0
- package/lib/models/iconSize.enum.d.ts +15 -0
- package/lib/models/index.d.ts +4 -0
- package/lib/models/is-value.function.d.ts +9 -0
- package/lib/models/salutation.enum.d.ts +5 -0
- package/lib/models/types/attached-file-dto.model.d.ts +11 -0
- package/lib/models/types/nullable.type.d.ts +4 -0
- package/lib/parent-components/actions.component.d.ts +28 -0
- package/lib/parent-components/form-control.component.d.ts +24 -0
- package/lib/parent-components/form.component.d.ts +31 -0
- package/lib/pipes/custom-pipes.module.d.ts +5 -0
- package/lib/pipes/decode-uri.pipe.d.ts +7 -0
- package/lib/pipes/encode-uri.pipe.d.ts +7 -0
- package/lib/pipes/integer-currency.pipe.d.ts +10 -0
- package/lib/pipes/safe-html.pipe.d.ts +10 -0
- package/lib/pipes/safe-style.pipe.d.ts +10 -0
- package/lib/pipes/safe-url.pipe.d.ts +10 -0
- package/lib/pipes/to-number.pipe.d.ts +7 -0
- package/lib/pipes/trim.pipe.d.ts +7 -0
- package/lib/pipes/typeof.pipe.d.ts +4 -0
- package/lib/services/viewport.service.d.ts +74 -0
- package/lib/ui/back-to-top/back-to-top.component.d.ts +10 -0
- package/lib/ui/button-with-confirm-dialog/button-response-types.enum.d.ts +4 -0
- package/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.d.ts +16 -0
- package/lib/ui/button-with-confirm-dialog/dialog-data.model.d.ts +9 -0
- package/lib/ui/checkbox/checkbox.component.d.ts +28 -0
- package/lib/ui/color-input/color-input.component.d.ts +15 -0
- package/lib/ui/enum-radiogroup/enum-radiogroup.component.d.ts +14 -0
- package/lib/ui/file-input/file-input.component.d.ts +86 -0
- package/lib/ui/flyout/flyout.component.d.ts +32 -0
- package/lib/ui/generic-dialog/generic-dialog.component.d.ts +23 -0
- package/lib/ui/icon/icon.component.d.ts +39 -0
- package/lib/ui/icon/iconSize.enum.d.ts +15 -0
- package/lib/ui/kms-accordion-item/kms-accordion-item.component.d.ts +18 -0
- package/lib/ui/loader/loader.component.d.ts +6 -0
- package/lib/ui/map/map.component.d.ts +70 -0
- package/lib/ui/radiobutton/radiobutton.component.d.ts +23 -0
- package/lib/ui/salutation-dropdown/salutation-dropdown.component.d.ts +14 -0
- package/lib/ui/salutation-radiogroup/salutation-radiogroup.component.d.ts +12 -0
- package/lib/ui/time-input/time-input.component.d.ts +19 -0
- package/lib/ui/tooltip/tooltip.component.d.ts +3 -0
- package/lib/ui/tooltip-icon/tooltip-icon.component.d.ts +10 -0
- package/lib/ui/yes-no-radiogroup/yes-no-radiogroup.component.d.ts +24 -0
- package/package.json +25 -0
- package/public-api.d.ts +6 -0
- package/src/lib/ui/back-to-top/back-to-top.component.scss +47 -0
- package/src/lib/ui/button-with-confirm-dialog/button-with-confirm-dialog.component.scss +0 -0
- package/src/lib/ui/checkbox/checkbox.component.scss +57 -0
- package/src/lib/ui/color-input/color-input.component.scss +38 -0
- package/src/lib/ui/file-input/file-input.component.scss +0 -0
- package/src/lib/ui/flyout/flyout.component.scss +34 -0
- package/src/lib/ui/generic-dialog/generic-dialog.component.scss +59 -0
- package/src/lib/ui/icon/icon.component.scss +149 -0
- package/src/lib/ui/kms-accordion-item/kms-accordion-item.component.scss +95 -0
- package/src/lib/ui/loader/loader.component.scss +0 -0
- package/src/lib/ui/map/map.component.scss +0 -0
- package/src/lib/ui/radiobutton/radiobutton.component.scss +30 -0
- package/src/lib/ui/time-input/time-input.component.scss +10 -0
- package/src/lib/ui/tooltip/tooltip.component.scss +27 -0
- package/src/lib/ui/tooltip-icon/tooltip-icon.component.scss +2 -0
- package/src/styles/mixins.scss +9 -0
- package/src/styles/styles.scss +30 -0
|
@@ -0,0 +1,213 @@
|
|
|
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
|
+
/**
|
|
8
|
+
* Service to get viewport
|
|
9
|
+
*/
|
|
10
|
+
export class ViewportService {
|
|
11
|
+
constructor(platformId) {
|
|
12
|
+
this.platformId = platformId;
|
|
13
|
+
this.viewports = [
|
|
14
|
+
{
|
|
15
|
+
name: 'xs',
|
|
16
|
+
low: 420,
|
|
17
|
+
high: 990,
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 's',
|
|
21
|
+
low: 991,
|
|
22
|
+
high: 1024,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'm',
|
|
26
|
+
low: 1025,
|
|
27
|
+
high: 1200,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'l',
|
|
31
|
+
low: 12001,
|
|
32
|
+
high: 1400,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'xl',
|
|
36
|
+
low: 1401,
|
|
37
|
+
high: 1600,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'xxl',
|
|
41
|
+
low: 1601,
|
|
42
|
+
high: 1920,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'xxxl',
|
|
46
|
+
low: 1921,
|
|
47
|
+
high: 99999,
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
this.viewportChangedSubscriber = new Subject();
|
|
51
|
+
this.viewportResizedSubscriber = new Subject();
|
|
52
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
53
|
+
window.addEventListener('resize', this.documentSizeChanged.bind(this), { passive: true });
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get window height
|
|
58
|
+
*/
|
|
59
|
+
getDocumentHeight() {
|
|
60
|
+
return isPlatformBrowser(this.platformId) ? document.body.clientHeight : 1200;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get window width
|
|
64
|
+
*/
|
|
65
|
+
getDocumentWidth() {
|
|
66
|
+
return isPlatformBrowser(this.platformId) ? document.body.clientWidth : 1200;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get window height
|
|
70
|
+
*/
|
|
71
|
+
getWindowHeight() {
|
|
72
|
+
return isPlatformBrowser(this.platformId) ? window.innerHeight : 1200;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get window width
|
|
76
|
+
*/
|
|
77
|
+
getWindowWidth() {
|
|
78
|
+
return isPlatformBrowser(this.platformId) ? window.innerWidth : 1200;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Returns the current viewport MQ as string
|
|
82
|
+
* @returns string
|
|
83
|
+
*/
|
|
84
|
+
getCurrentViewPort() {
|
|
85
|
+
if (!this.currentViewport) {
|
|
86
|
+
const currentWidth = isPlatformBrowser(this.platformId) ? document.body.clientWidth : 1200;
|
|
87
|
+
this.currentViewport = this.convertWidthToMediaQuery(currentWidth);
|
|
88
|
+
}
|
|
89
|
+
return this.currentViewport;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Provides mq´s as string
|
|
93
|
+
*/
|
|
94
|
+
getViewportChangedObserver() {
|
|
95
|
+
return this.viewportChangedSubscriber.asObservable();
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Provides the current window width as number
|
|
99
|
+
*/
|
|
100
|
+
getViewportResizedObserver() {
|
|
101
|
+
return this.viewportResizedSubscriber.asObservable();
|
|
102
|
+
}
|
|
103
|
+
scrollToElementId(el, alignCenter = false) {
|
|
104
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
105
|
+
this.scrollToElement(document.querySelector('#' + el), alignCenter);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Helper function that scrolls to the given markup element.
|
|
110
|
+
* @param el - nativeElement from markup
|
|
111
|
+
* @param alignCenter - defines if the element needs to be centered on window
|
|
112
|
+
*/
|
|
113
|
+
scrollToElement(el, alignCenter = false) {
|
|
114
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
115
|
+
let extraScrollTop = 0;
|
|
116
|
+
if (alignCenter) {
|
|
117
|
+
extraScrollTop = (window.innerHeight - el.clientHeight) / 2;
|
|
118
|
+
}
|
|
119
|
+
/*
|
|
120
|
+
const elementPos: DOMRect = el.getBoundingClientRect();
|
|
121
|
+
const scrollTopPosition = elementPos.x - extraScrollTop;
|
|
122
|
+
*/
|
|
123
|
+
//let offsetLeft = 0;
|
|
124
|
+
let offsetTop = 0;
|
|
125
|
+
let elTemp = el;
|
|
126
|
+
while (elTemp) {
|
|
127
|
+
//offsetLeft += elTemp.offsetLeft;
|
|
128
|
+
offsetTop += elTemp.offsetTop;
|
|
129
|
+
elTemp = elTemp.parentElement ? elTemp.parentElement : null;
|
|
130
|
+
}
|
|
131
|
+
window.scrollTo({ left: 0, top: offsetTop - extraScrollTop, behavior: 'smooth' });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Scroll to the top position
|
|
136
|
+
* @param top - top position value
|
|
137
|
+
*/
|
|
138
|
+
scrollTop(top) {
|
|
139
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
140
|
+
window.scrollTo({ left: 0, top: top, behavior: 'smooth' });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
ngOnDestroy() {
|
|
144
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
145
|
+
window.removeEventListener('resize', this.documentSizeChanged);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* If viewport changed
|
|
150
|
+
* @event
|
|
151
|
+
*/
|
|
152
|
+
documentSizeChanged(event) {
|
|
153
|
+
const currentWindowWidth = event.target.innerWidth;
|
|
154
|
+
// inform who´s interested
|
|
155
|
+
this.viewportResizedSubscriber.next(currentWindowWidth);
|
|
156
|
+
if (currentWindowWidth > 0) {
|
|
157
|
+
for (const mqs of this.viewports) {
|
|
158
|
+
if (currentWindowWidth > mqs.high) {
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
else if ((currentWindowWidth >= mqs.low || currentWindowWidth <= mqs.high) &&
|
|
162
|
+
this.currentViewport !== mqs.name) {
|
|
163
|
+
this.currentViewport = mqs.name;
|
|
164
|
+
// inform who´s interested
|
|
165
|
+
this.viewportChangedSubscriber.next(mqs.name);
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
else if (this.currentViewport === mqs.name) {
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
console.error('ERROR');
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Get the Media Query for the given width
|
|
179
|
+
* @param width Width to get the according MQ for
|
|
180
|
+
*/
|
|
181
|
+
convertWidthToMediaQuery(width) {
|
|
182
|
+
let currentViewport = '';
|
|
183
|
+
for (const mqs of this.viewports) {
|
|
184
|
+
if (width <= mqs.high && width >= mqs.low) {
|
|
185
|
+
currentViewport = mqs.name;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return currentViewport;
|
|
190
|
+
}
|
|
191
|
+
isPortrait() {
|
|
192
|
+
if (isPlatformBrowser(this.platformId))
|
|
193
|
+
return window.innerHeight > window.innerWidth;
|
|
194
|
+
else
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
isLandscape() {
|
|
198
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
199
|
+
const isLandscape = window.orientation === 90 || window.orientation === -90;
|
|
200
|
+
return isLandscape;
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
ViewportService.decorators = [
|
|
208
|
+
{ type: Injectable }
|
|
209
|
+
];
|
|
210
|
+
ViewportService.ctorParameters = () => [
|
|
211
|
+
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
|
|
212
|
+
];
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFTM0M7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZUFBZTtJQTJDeEIsWUFBeUMsVUFBa0I7UUFBbEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQTFDM0MsY0FBUyxHQUFHO1lBQ3hCO2dCQUNJLElBQUksRUFBRSxJQUFJO2dCQUNWLEdBQUcsRUFBRSxHQUFHO2dCQUNSLElBQUksRUFBRSxHQUFHO2FBQ1o7WUFDRDtnQkFDSSxJQUFJLEVBQUUsR0FBRztnQkFDVCxHQUFHLEVBQUUsR0FBRztnQkFDUixJQUFJLEVBQUUsSUFBSTthQUNiO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsR0FBRyxFQUFFLElBQUk7Z0JBQ1QsSUFBSSxFQUFFLElBQUk7YUFDYjtZQUNEO2dCQUNJLElBQUksRUFBRSxHQUFHO2dCQUNULEdBQUcsRUFBRSxLQUFLO2dCQUNWLElBQUksRUFBRSxJQUFJO2FBQ2I7WUFDRDtnQkFDSSxJQUFJLEVBQUUsSUFBSTtnQkFDVixHQUFHLEVBQUUsSUFBSTtnQkFDVCxJQUFJLEVBQUUsSUFBSTthQUNiO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsR0FBRyxFQUFFLElBQUk7Z0JBQ1QsSUFBSSxFQUFFLElBQUk7YUFDYjtZQUNEO2dCQUNJLElBQUksRUFBRSxNQUFN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LFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxXQUFXLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUUsT0FBTyxXQUFXLENBQUM7U0FDdEI7YUFBTTtZQUNILE9BQU87U0FDVjtJQUNMLENBQUM7OztZQTdOSixVQUFVOzs7WUE0QzhDLE1BQU0sdUJBQTlDLE1BQU0sU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY29weXJpZ2h0IEtNUyBHbWJIXG4gKi9cblxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOdWxsQWJsZSB9IGZyb20gJy4uL21vZGVscyc7XG5cbi8vIG5lZWRlZCBmb3Igc2Nyb2xsVG9FbGVtZW50IGZ1bmN0aW9uYWxpdHlcblxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IGFueTtcblxuZGVjbGFyZSBjb25zdCBkb2N1bWVudDogYW55O1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gZ2V0IHZpZXdwb3J0XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBWaWV3cG9ydFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyByZWFkb25seSB2aWV3cG9ydHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICd4cycsXG4gICAgICAgICAgICBsb3c6IDQyMCxcbiAgICAgICAgICAgIGhpZ2g6IDk5MCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3MnLFxuICAgICAgICAgICAgbG93OiA5OTEsXG4gICAgICAgICAgICBoaWdoOiAxMDI0LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnbScsXG4gICAgICAgICAgICBsb3c6IDEwMjUsXG4gICAgICAgICAgICBoaWdoOiAxMjAwLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnbCcsXG4gICAgICAgICAgICBsb3c6IDEyMDAxLFxuICAgICAgICAgICAgaGlnaDogMTQwMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3hsJyxcbiAgICAgICAgICAgIGxvdzogMTQwMSxcbiAgICAgICAgICAgIGhpZ2g6IDE2MDAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICd4eGwnLFxuICAgICAgICAgICAgbG93OiAxNjAxLFxuICAgICAgICAgICAgaGlnaDogMTkyMCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3h4eGwnLFxuICAgICAgICAgICAgbG93OiAxOTIxLFxuICAgICAgICAgICAgaGlnaDogOTk5OTksXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIHByaXZhdGUgdmlld3BvcnRDaGFuZ2VkU3Vic2NyaWJlcjogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgIHByaXZhdGUgdmlld3BvcnRSZXNpemVkU3Vic2NyaWJlcjogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICAgIHByaXZhdGUgY3VycmVudFZpZXdwb3J0ITogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmRvY3VtZW50U2l6ZUNoYW5nZWQuYmluZCh0aGlzKSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHdpbmRvdyBoZWlnaHRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RG9jdW1lbnRIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgPyBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCA6IDEyMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHdpbmRvdyB3aWR0aFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREb2N1bWVudFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpID8gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA6IDEyMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHdpbmRvdyBoZWlnaHRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0V2luZG93SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpID8gd2luZG93LmlubmVySGVpZ2h0IDogMTIwMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgd2luZG93IHdpZHRoXG4gICAgICovXG4gICAgcHVibGljIGdldFdpbmRvd1dpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpID8gd2luZG93LmlubmVyV2lkdGggOiAxMjAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdmlld3BvcnQgTVEgYXMgc3RyaW5nXG4gICAgICogQHJldHVybnMgc3RyaW5nXG4gICAgICovXG4gICAgZ2V0Q3VycmVudFZpZXdQb3J0KCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50Vmlld3BvcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRXaWR0aDogbnVtYmVyID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSA/IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggOiAxMjAwO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld3BvcnQgPSB0aGlzLmNvbnZlcnRXaWR0aFRvTWVkaWFRdWVyeShjdXJyZW50V2lkdGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZpZXdwb3J0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIG1xwrRzIGFzIHN0cmluZ1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRWaWV3cG9ydENoYW5nZWRPYnNlcnZlcigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3cG9ydENoYW5nZWRTdWJzY3JpYmVyLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIHRoZSBjdXJyZW50IHdpbmRvdyB3aWR0aCBhcyBudW1iZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Vmlld3BvcnRSZXNpemVkT2JzZXJ2ZXIoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld3BvcnRSZXNpemVkU3Vic2NyaWJlci5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2Nyb2xsVG9FbGVtZW50SWQoZWw6IHN0cmluZywgYWxpZ25DZW50ZXIgPSBmYWxzZSkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0VsZW1lbnQoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignIycgKyBlbCksIGFsaWduQ2VudGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhlbHBlciBmdW5jdGlvbiB0aGF0IHNjcm9sbHMgdG8gdGhlIGdpdmVuIG1hcmt1cCBlbGVtZW50LlxuICAgICAqIEBwYXJhbSBlbCAtIG5hdGl2ZUVsZW1lbnQgZnJvbSBtYXJrdXBcbiAgICAgKiBAcGFyYW0gYWxpZ25DZW50ZXIgLSBkZWZpbmVzIGlmIHRoZSBlbGVtZW50IG5lZWRzIHRvIGJlIGNlbnRlcmVkIG9uIHdpbmRvd1xuICAgICAqL1xuXG4gICAgcHVibGljIHNjcm9sbFRvRWxlbWVudChlbDogSFRNTEVsZW1lbnQsIGFsaWduQ2VudGVyID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGxldCBleHRyYVNjcm9sbFRvcCA9IDA7XG5cbiAgICAgICAgICAgIGlmIChhbGlnbkNlbnRlcikge1xuICAgICAgICAgICAgICAgIGV4dHJhU2Nyb2xsVG9wID0gKHdpbmRvdy5pbm5lckhlaWdodCAtIGVsLmNsaWVudEhlaWdodCkgLyAyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFBvczogRE9NUmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsVG9wUG9zaXRpb24gPSBlbGVtZW50UG9zLnggLSBleHRyYVNjcm9sbFRvcDtcbiAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIC8vbGV0IG9mZnNldExlZnQgPSAwO1xuICAgICAgICAgICAgbGV0IG9mZnNldFRvcCA9IDA7XG5cbiAgICAgICAgICAgIGxldCBlbFRlbXA6IE51bGxBYmxlPEhUTUxFbGVtZW50PiA9IGVsO1xuXG4gICAgICAgICAgICB3aGlsZSAoZWxUZW1wKSB7XG4gICAgICAgICAgICAgICAgLy9vZmZzZXRMZWZ0ICs9IGVsVGVtcC5vZmZzZXRMZWZ0O1xuICAgICAgICAgICAgICAgIG9mZnNldFRvcCArPSBlbFRlbXAub2Zmc2V0VG9wO1xuICAgICAgICAgICAgICAgIGVsVGVtcCA9IGVsVGVtcC5wYXJlbnRFbGVtZW50ID8gZWxUZW1wLnBhcmVudEVsZW1lbnQgOiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyBsZWZ0OiAwLCB0b3A6IG9mZnNldFRvcCAtIGV4dHJhU2Nyb2xsVG9wLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTY3JvbGwgdG8gdGhlIHRvcCBwb3NpdGlvblxuICAgICAqIEBwYXJhbSB0b3AgLSB0b3AgcG9zaXRpb24gdmFsdWVcbiAgICAgKi9cbiAgICBwdWJsaWMgc2Nyb2xsVG9wKHRvcDogbnVtYmVyKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyBsZWZ0OiAwLCB0b3A6IHRvcCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5kb2N1bWVudFNpemVDaGFuZ2VkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHZpZXdwb3J0IGNoYW5nZWRcbiAgICAgKiBAZXZlbnRcbiAgICAgKi9cblxuICAgIHByaXZhdGUgZG9jdW1lbnRTaXplQ2hhbmdlZChldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRXaW5kb3dXaWR0aDogbnVtYmVyID0gZXZlbnQudGFyZ2V0LmlubmVyV2lkdGg7XG4gICAgICAgIC8vIGluZm9ybSB3aG/CtHMgaW50ZXJlc3RlZFxuICAgICAgICB0aGlzLnZpZXdwb3J0UmVzaXplZFN1YnNjcmliZXIubmV4dChjdXJyZW50V2luZG93V2lkdGgpO1xuXG4gICAgICAgIGlmIChjdXJyZW50V2luZG93V2lkdGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1xcyBvZiB0aGlzLnZpZXdwb3J0cykge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50V2luZG93V2lkdGggPiBtcXMuaGlnaCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAoY3VycmVudFdpbmRvd1dpZHRoID49IG1xcy5sb3cgfHwgY3VycmVudFdpbmRvd1dpZHRoIDw9IG1xcy5oaWdoKSAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3cG9ydCAhPT0gbXFzLm5hbWVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld3BvcnQgPSBtcXMubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW5mb3JtIHdob8K0cyBpbnRlcmVzdGVkXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld3BvcnRDaGFuZ2VkU3Vic2NyaWJlci5uZXh0KG1xcy5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRWaWV3cG9ydCA9PT0gbXFzLm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRVJST1InKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIE1lZGlhIFF1ZXJ5IGZvciB0aGUgZ2l2ZW4gd2lkdGhcbiAgICAgKiBAcGFyYW0gd2lkdGggV2lkdGggdG8gZ2V0IHRoZSBhY2NvcmRpbmcgTVEgZm9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb252ZXJ0V2lkdGhUb01lZGlhUXVlcnkod2lkdGg6IG51bWJlcikge1xuICAgICAgICBsZXQgY3VycmVudFZpZXdwb3J0ID0gJyc7XG5cbiAgICAgICAgZm9yIChjb25zdCBtcXMgb2YgdGhpcy52aWV3cG9ydHMpIHtcbiAgICAgICAgICAgIGlmICh3aWR0aCA8PSBtcXMuaGlnaCAmJiB3aWR0aCA+PSBtcXMubG93KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFZpZXdwb3J0ID0gbXFzLm5hbWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3VycmVudFZpZXdwb3J0O1xuICAgIH1cblxuICAgIGlzUG9ydHJhaXQoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0ID4gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGVsc2UgcmV0dXJuO1xuICAgIH1cblxuICAgIGlzTGFuZHNjYXBlKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgY29uc3QgaXNMYW5kc2NhcGUgPSB3aW5kb3cub3JpZW50YXRpb24gPT09IDkwIHx8IHdpbmRvdy5vcmllbnRhdGlvbiA9PT0gLTkwO1xuICAgICAgICAgICAgcmV0dXJuIGlzTGFuZHNjYXBlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @copyright KMS GmbH
|
|
3
|
+
*/
|
|
4
|
+
import { Component, HostListener, Inject, PLATFORM_ID } from '@angular/core';
|
|
5
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
6
|
+
export class BackToTopComponent {
|
|
7
|
+
constructor(platformId) {
|
|
8
|
+
this.platformId = platformId;
|
|
9
|
+
}
|
|
10
|
+
onWindowScroll() {
|
|
11
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
12
|
+
if (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop > 100) {
|
|
13
|
+
this.windowScrolled = true;
|
|
14
|
+
}
|
|
15
|
+
else if ((this.windowScrolled && window.pageYOffset) ||
|
|
16
|
+
document.documentElement.scrollTop ||
|
|
17
|
+
document.body.scrollTop < 10) {
|
|
18
|
+
this.windowScrolled = false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
scrollToTop() {
|
|
23
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
24
|
+
(function smoothscroll() {
|
|
25
|
+
const currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
|
|
26
|
+
if (currentScroll > 0) {
|
|
27
|
+
window.requestAnimationFrame(smoothscroll);
|
|
28
|
+
window.scrollTo(0, currentScroll - currentScroll / 8);
|
|
29
|
+
}
|
|
30
|
+
})();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
BackToTopComponent.decorators = [
|
|
35
|
+
{ type: Component, args: [{
|
|
36
|
+
selector: 'kms-back-to-top',
|
|
37
|
+
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>"
|
|
38
|
+
},] }
|
|
39
|
+
];
|
|
40
|
+
BackToTopComponent.ctorParameters = () => [
|
|
41
|
+
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
|
|
42
|
+
];
|
|
43
|
+
BackToTopComponent.propDecorators = {
|
|
44
|
+
onWindowScroll: [{ type: HostListener, args: ['window:scroll', [],] }]
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay10by10b3AuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2JhY2stdG8tdG9wL2JhY2stdG8tdG9wLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFNcEQsTUFBTSxPQUFPLGtCQUFrQjtJQUczQixZQUF3QyxVQUFrQjtRQUFsQixlQUFVLEdBQVYsVUFBVSxDQUFRO0lBQUcsQ0FBQztJQUc5RCxjQUFjO1FBQ1YsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtnQkFDM0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7YUFDOUI7aUJBQU0sSUFDSCxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFDM0MsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTO2dCQUNsQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEVBQzlCO2dCQUNFLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2FBQy9CO1NBQ0o7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3BDLENBQUMsU0FBUyxZQUFZO2dCQUNsQixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDcEYsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFO29CQUNuQixNQUFNLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzNDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsR0FBRyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ3pEO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNSO0lBQ0wsQ0FBQzs7O1lBbENKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixpUkFBMkM7YUFDOUM7OztZQUl1RCxNQUFNLHVCQUE3QyxNQUFNLFNBQUMsV0FBVzs7OzZCQUU5QixZQUFZLFNBQUMsZUFBZSxFQUFFLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBjb3B5cmlnaHQgS01TIEdtYkhcbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ttcy1iYWNrLXRvLXRvcCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhY2stdG8tdG9wLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgQmFja1RvVG9wQ29tcG9uZW50IHtcbiAgICB3aW5kb3dTY3JvbGxlZD86IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwdWJsaWMgcGxhdGZvcm1JZDogT2JqZWN0KSB7fVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFtdKVxuICAgIG9uV2luZG93U2Nyb2xsKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID4gMTAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aW5kb3dTY3JvbGxlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICh0aGlzLndpbmRvd1Njcm9sbGVkICYmIHdpbmRvdy5wYWdlWU9mZnNldCkgfHxcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPCAxMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aW5kb3dTY3JvbGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2Nyb2xsVG9Ub3AoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICAoZnVuY3Rpb24gc21vb3Roc2Nyb2xsKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTY3JvbGwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2Nyb2xsID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHNtb290aHNjcm9sbCk7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCBjdXJyZW50U2Nyb2xsIC0gY3VycmVudFNjcm9sbCAvIDgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXJlc3BvbnNlLXR5cGVzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvdWkvYnV0dG9uLXdpdGgtY29uZmlybS1kaWFsb2cvYnV0dG9uLXJlc3BvbnNlLXR5cGVzLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksa0JBR1g7QUFIRCxXQUFZLGtCQUFrQjtJQUMxQix5Q0FBbUIsQ0FBQTtJQUNuQiw2Q0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEJ1dHRvblJlc3BvbnNlVHlwZXtcbiAgICBwcmltYXJ5ID0gJ3ByaW1hcnknLFxuICAgIHNlY29uZGFyeSA9ICdzZWNvbmRhcnknXG59Il19
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
+
import { SubSink } from 'subsink';
|
|
4
|
+
import { GenericDialogComponent } from '../generic-dialog/generic-dialog.component';
|
|
5
|
+
import { ButtonResponseType } from './button-response-types.enum';
|
|
6
|
+
export class ButtonWithConfirmDialogComponent {
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
8
|
+
constructor(dialog) {
|
|
9
|
+
this.dialog = dialog;
|
|
10
|
+
// Outputs when dialogue was closed. Returns true, if yes was clicked, false otherwise
|
|
11
|
+
this.onConfirmClosed = new EventEmitter();
|
|
12
|
+
this.subs = new SubSink();
|
|
13
|
+
}
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
15
|
+
ngOnInit() { }
|
|
16
|
+
start() {
|
|
17
|
+
const data = {
|
|
18
|
+
title: this.confirmTitle,
|
|
19
|
+
buttons: {
|
|
20
|
+
primary: this.confirmTextYes,
|
|
21
|
+
secondary: this.confirmTextNo,
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const dialogRef = this.dialog.open(GenericDialogComponent, {
|
|
25
|
+
data: data,
|
|
26
|
+
});
|
|
27
|
+
this.subs.sink = dialogRef.afterClosed().subscribe(result => {
|
|
28
|
+
if (result === ButtonResponseType.primary) {
|
|
29
|
+
this.onConfirmClosed.emit(true);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.onConfirmClosed.emit(false);
|
|
33
|
+
}
|
|
34
|
+
dialogRef.close();
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
ButtonWithConfirmDialogComponent.decorators = [
|
|
39
|
+
{ type: Component, args: [{
|
|
40
|
+
selector: 'kms-button-with-confirm-dialog',
|
|
41
|
+
template: "<button\n type=\"button\"\n (click)=\"start()\"\n mat-stroked-button\n [disabled]=\"disabled\"\n>\n {{ buttonText }}\n</button>\n",
|
|
42
|
+
styles: [""]
|
|
43
|
+
},] }
|
|
44
|
+
];
|
|
45
|
+
ButtonWithConfirmDialogComponent.ctorParameters = () => [
|
|
46
|
+
{ type: MatDialog }
|
|
47
|
+
];
|
|
48
|
+
ButtonWithConfirmDialogComponent.propDecorators = {
|
|
49
|
+
disabled: [{ type: Input }],
|
|
50
|
+
buttonText: [{ type: Input }],
|
|
51
|
+
confirmTitle: [{ type: Input }],
|
|
52
|
+
confirmTextYes: [{ type: Input }],
|
|
53
|
+
confirmTextNo: [{ type: Input }],
|
|
54
|
+
onConfirmClosed: [{ type: Output }]
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXdpdGgtY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2J1dHRvbi13aXRoLWNvbmZpcm0tZGlhbG9nL2J1dHRvbi13aXRoLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBUWxFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFZekMsZ0VBQWdFO0lBQ2hFLFlBQ1csTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVA1QixzRkFBc0Y7UUFDNUUsb0JBQWUsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU5RCxTQUFJLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUsxQixDQUFDO0lBRUosZ0VBQWdFO0lBQ2hFLFFBQVEsS0FBSSxDQUFDO0lBRWIsS0FBSztRQUNELE1BQU0sSUFBSSxHQUFlO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWTtZQUN4QixPQUFPLEVBQUM7Z0JBQ0osT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjO2dCQUM1QixTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWE7YUFDaEM7U0FDSixDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDdkQsSUFBSSxFQUFFLElBQUk7U0FDYixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hELElBQUksTUFBTSxLQUFLLGtCQUFrQixDQUFDLE9BQU8sRUFBRTtnQkFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkM7aUJBQUk7Z0JBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDcEM7WUFDRCxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs7WUE3Q0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxnQ0FBZ0M7Z0JBQzFDLDRKQUEwRDs7YUFFN0Q7OztZQVhRLFNBQVM7Ozt1QkFhYixLQUFLO3lCQUNMLEtBQUs7MkJBQ0wsS0FBSzs2QkFDTCxLQUFLOzRCQUNMLEtBQUs7OEJBR0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTdWJTaW5rIH0gZnJvbSAnc3Vic2luayc7XG5pbXBvcnQgeyBOdWxsQWJsZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBHZW5lcmljRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vZ2VuZXJpYy1kaWFsb2cvZ2VuZXJpYy1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvblJlc3BvbnNlVHlwZSB9IGZyb20gJy4vYnV0dG9uLXJlc3BvbnNlLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgRGlhbG9nRGF0YSB9IGZyb20gJy4vZGlhbG9nLWRhdGEubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ttcy1idXR0b24td2l0aC1jb25maXJtLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi13aXRoLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9idXR0b24td2l0aC1jb25maXJtLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25XaXRoQ29uZmlybURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IE51bGxBYmxlPGJvb2xlYW4+O1xuICAgIEBJbnB1dCgpIGJ1dHRvblRleHQ6IE51bGxBYmxlPHN0cmluZz47XG4gICAgQElucHV0KCkgY29uZmlybVRpdGxlOiBOdWxsQWJsZTxzdHJpbmc+O1xuICAgIEBJbnB1dCgpIGNvbmZpcm1UZXh0WWVzOiBOdWxsQWJsZTxzdHJpbmc+O1xuICAgIEBJbnB1dCgpIGNvbmZpcm1UZXh0Tm86IE51bGxBYmxlPHN0cmluZz47XG5cbiAgICAvLyBPdXRwdXRzIHdoZW4gZGlhbG9ndWUgd2FzIGNsb3NlZC4gUmV0dXJucyB0cnVlLCBpZiB5ZXMgd2FzIGNsaWNrZWQsIGZhbHNlIG90aGVyd2lzZVxuICAgIEBPdXRwdXQoKSBvbkNvbmZpcm1DbG9zZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHByaXZhdGUgc3VicyA9IG5ldyBTdWJTaW5rKCk7XG4gICAgXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgKSB7fVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIG5nT25Jbml0KCkge31cblxuICAgIHN0YXJ0KCl7XG4gICAgICAgIGNvbnN0IGRhdGE6IERpYWxvZ0RhdGEgPSB7XG4gICAgICAgICAgICB0aXRsZTogdGhpcy5jb25maXJtVGl0bGUsXG4gICAgICAgICAgICBidXR0b25zOntcbiAgICAgICAgICAgICAgICBwcmltYXJ5OiB0aGlzLmNvbmZpcm1UZXh0WWVzLFxuICAgICAgICAgICAgICAgIHNlY29uZGFyeTogdGhpcy5jb25maXJtVGV4dE5vLFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEdlbmVyaWNEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3Vicy5zaW5rID0gZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBCdXR0b25SZXNwb25zZVR5cGUucHJpbWFyeSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Db25maXJtQ2xvc2VkLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29uZmlybUNsb3NlZC5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbXMtbmd4LXVpLXByZXNlbnRhdGlvbmFsL3NyYy9saWIvdWkvYnV0dG9uLXdpdGgtY29uZmlybS1kaWFsb2cvZGlhbG9nLWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nRGF0YSB7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xuICAgIGJ1dHRvbnM/OiBEaWFsb2dEYXRhQnV0dG9uc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0RhdGFCdXR0b25zIHtcbiAgICBwcmltYXJ5OiBzdHJpbmcsXG4gICAgc2Vjb25kYXJ5OiBzdHJpbmcsXG59XG4iXX0=
|
|
@@ -0,0 +1,63 @@
|
|
|
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
|
+
export class CheckboxComponent extends ActionsParentComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
/**
|
|
11
|
+
* Internal description name. All checkboxes with the same name belong to the same group.
|
|
12
|
+
* User can select none, one or all checkboxes with the same name.
|
|
13
|
+
*/
|
|
14
|
+
this.name = '';
|
|
15
|
+
this.select = new EventEmitter();
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
17
|
+
this.onChange = () => { };
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
19
|
+
this.onTouch = () => { };
|
|
20
|
+
}
|
|
21
|
+
selectAction(id) {
|
|
22
|
+
this.select.emit(id);
|
|
23
|
+
this.checked = !this.checked;
|
|
24
|
+
}
|
|
25
|
+
get value() {
|
|
26
|
+
return this.checked;
|
|
27
|
+
}
|
|
28
|
+
set value(value) {
|
|
29
|
+
this.checked = value;
|
|
30
|
+
this.onChange(value);
|
|
31
|
+
this.onTouch(value);
|
|
32
|
+
}
|
|
33
|
+
writeValue(value) {
|
|
34
|
+
this.value = value;
|
|
35
|
+
}
|
|
36
|
+
registerOnChange(fn) {
|
|
37
|
+
this.onChange = fn;
|
|
38
|
+
}
|
|
39
|
+
registerOnTouched(fn) {
|
|
40
|
+
this.onTouch = fn;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
CheckboxComponent.decorators = [
|
|
44
|
+
{ type: Component, args: [{
|
|
45
|
+
selector: 'kms-checkbox',
|
|
46
|
+
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>",
|
|
47
|
+
providers: [
|
|
48
|
+
{
|
|
49
|
+
provide: NG_VALUE_ACCESSOR,
|
|
50
|
+
useExisting: forwardRef(() => CheckboxComponent),
|
|
51
|
+
multi: true,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
styles: [".test{color:#0000cd}"]
|
|
55
|
+
},] }
|
|
56
|
+
];
|
|
57
|
+
CheckboxComponent.ctorParameters = () => [];
|
|
58
|
+
CheckboxComponent.propDecorators = {
|
|
59
|
+
infoText: [{ type: Input }],
|
|
60
|
+
name: [{ type: Input }],
|
|
61
|
+
select: [{ type: Output }]
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQWVuRixNQUFNLE9BQU8saUJBQWtCLFNBQVEsc0JBQXNCO0lBb0J6RDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBYlo7OztXQUdHO1FBQ00sU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVULFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBVXRDLGdFQUFnRTtRQUNoRSxhQUFRLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRXpCLGdFQUFnRTtRQUNoRSxZQUFPLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBTnhCLENBQUM7SUFQRyxZQUFZLENBQUMsRUFBVTtRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0lBWUQsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFjO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7O1lBOURKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsMmtCQUF3QztnQkFFeEMsU0FBUyxFQUFFO29CQUNQO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7d0JBQ2hELEtBQUssRUFBRSxJQUFJO3FCQUNkO2lCQUNKOzthQUNKOzs7O3VCQU9JLEtBQUs7bUJBTUwsS0FBSztxQkFFTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAY29weXJpZ2h0IEZMWUFDVFMgR21iSCAyMDE5XG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE51bGxBYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuaW1wb3J0IHsgQWN0aW9uc1BhcmVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhcmVudC1jb21wb25lbnRzL2FjdGlvbnMuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ttcy1jaGVja2JveCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrYm94Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94Q29tcG9uZW50IGV4dGVuZHMgQWN0aW9uc1BhcmVudENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuXG4gICAgLyoqXG4gICAgICogQWRkaXRpb25hbCBkZXNjcmlwdGlvbiB0ZXh0IHRoYXQgd2lsbCBiZSBzaG93biBiZWxvdyB0aGUgY2hlY2tib3guXG4gICAgICovXG4gICAgQElucHV0KCkgaW5mb1RleHQ6IE51bGxBYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBJbnRlcm5hbCBkZXNjcmlwdGlvbiBuYW1lLiBBbGwgY2hlY2tib3hlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYmVsb25nIHRvIHRoZSBzYW1lIGdyb3VwLlxuICAgICAqIFVzZXIgY2FuIHNlbGVjdCBub25lLCBvbmUgb3IgYWxsIGNoZWNrYm94ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIG5hbWUgPSAnJztcblxuICAgIEBPdXRwdXQoKSBzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgICAgIHNlbGVjdEFjdGlvbihpZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0LmVtaXQoaWQpO1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG5cbiAgICBnZXQgdmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrZWQ7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vblRvdWNoKHZhbHVlKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Component, forwardRef, Input, Renderer2 } from '@angular/core';
|
|
2
|
+
import { FormBuilder, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { FormControlParentComponent } from './../../parent-components/form-control.component';
|
|
4
|
+
export class ColorInputComponent extends FormControlParentComponent {
|
|
5
|
+
constructor(formBuilder, renderer) {
|
|
6
|
+
super(formBuilder, renderer);
|
|
7
|
+
this.formBuilder = formBuilder;
|
|
8
|
+
this.renderer = renderer;
|
|
9
|
+
this.label = '';
|
|
10
|
+
this.tooltipText = '';
|
|
11
|
+
this.placeholder = '';
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
this.form = this.formBuilder.group({
|
|
15
|
+
color: '',
|
|
16
|
+
});
|
|
17
|
+
this.formInitialized = true;
|
|
18
|
+
this.form.valueChanges.subscribe((value) => {
|
|
19
|
+
this.internalValue = value.color;
|
|
20
|
+
this.onChange(value.color);
|
|
21
|
+
});
|
|
22
|
+
super.ngOnInit();
|
|
23
|
+
}
|
|
24
|
+
validate(_) {
|
|
25
|
+
// TODO fix to validate complete form
|
|
26
|
+
this.valid = this.matchesHex(this.form.value) ? null : false;
|
|
27
|
+
return this.valid && {
|
|
28
|
+
invalid: !this.valid
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
matchesHex(match) {
|
|
32
|
+
if (match) {
|
|
33
|
+
const ret = match.match(/^#[0-9a-f]{6}$/i);
|
|
34
|
+
this.valid = ret && ret.length > 0;
|
|
35
|
+
return ret;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
ColorInputComponent.decorators = [
|
|
41
|
+
{ type: Component, args: [{
|
|
42
|
+
selector: 'kms-color-input',
|
|
43
|
+
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\" [value]=\"value\" matInput formControlName=\"color\" [placeholder]=\"placeholder\" [ngClass]=\"{'my-inValid': !matchesHex(value)}\" />\n <input type=\"color\" [value]=\"value && matchesHex(value) ? value : '#ffffff'\" formControlName=\"color\" [ngClass]=\"{'my-inValid': !matchesHex(value)}\" />\n </mat-form-field>\n </div>\n</form>",
|
|
44
|
+
providers: [
|
|
45
|
+
{
|
|
46
|
+
provide: NG_VALUE_ACCESSOR,
|
|
47
|
+
useExisting: forwardRef(() => ColorInputComponent),
|
|
48
|
+
multi: true,
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
styles: [".colorInput{position:relative}.colorInput input[type=color]{display:block;position:absolute;width:20px;height:20px;left:0;bottom:10px;padding:0;margin:0;border:1px solid transparent}.colorInput input.my-inValid[type=color]{border:1px dotted red}.colorInput input[type=text]{padding-left:30px}.colorInput input.my-inValid[type=text]{color:red}.colorInput kms-tooltip-icon{position:absolute;right:0;top:-10px}.colorInput .mat-form-field-label{padding-left:30px}.colorInput .mat-form-field-can-float.mat-focused .mat-form-label{padding-left:0}"]
|
|
52
|
+
},] }
|
|
53
|
+
];
|
|
54
|
+
ColorInputComponent.ctorParameters = () => [
|
|
55
|
+
{ type: FormBuilder },
|
|
56
|
+
{ type: Renderer2 }
|
|
57
|
+
];
|
|
58
|
+
ColorInputComponent.propDecorators = {
|
|
59
|
+
label: [{ type: Input }],
|
|
60
|
+
tooltipText: [{ type: Input }],
|
|
61
|
+
placeholder: [{ type: Input }]
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva21zLW5neC11aS1wcmVzZW50YXRpb25hbC9zcmMvbGliL3VpL2NvbG9yLWlucHV0L2NvbG9yLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBd0IsV0FBVyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFjOUYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLDBCQUEwQjtJQU8vRCxZQUFtQixXQUF3QixFQUFTLFFBQW1CO1FBQ25FLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFEZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQVc7UUFMOUQsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO0lBSzFCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUMvQixLQUFLLEVBQUUsRUFBRTtTQUNaLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTVCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUSxDQUFDLENBQWM7UUFDbkIscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3RCxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUk7WUFDakIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUs7U0FDdkIsQ0FBQztJQUNOLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYztRQUNyQixJQUFHLEtBQUssRUFBQztZQUNMLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQztZQUNqQyxPQUFPLEdBQUcsQ0FBQztTQUNkO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzs7O1lBcERKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQix5cEJBQTJDO2dCQUUzQyxTQUFTLEVBQUU7b0JBQ1A7d0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQzt3QkFDbEQsS0FBSyxFQUFFLElBQUk7cUJBQ2Q7aUJBQ0o7O2FBQ0o7OztZQWQ4QixXQUFXO1lBREssU0FBUzs7O29CQWtCbkQsS0FBSzswQkFDTCxLQUFLOzBCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbFBhcmVudENvbXBvbmVudCB9IGZyb20gJy4vLi4vLi4vcGFyZW50LWNvbXBvbmVudHMvZm9ybS1jb250cm9sLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna21zLWNvbG9yLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sb3ItaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbG9yLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ29sb3JJbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb2xvcklucHV0Q29tcG9uZW50IGV4dGVuZHMgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gICAgQElucHV0KCkgdG9vbHRpcFRleHQgPSAnJztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICAgIHZhbGlkOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgICAgIHN1cGVyKGZvcm1CdWlsZGVyLCByZW5kZXJlcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgY29sb3I6ICcnLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlID0gdmFsdWUuY29sb3I7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlLmNvbG9yKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZShfOiBGb3JtQ29udHJvbCkge1xuICAgICAgICAvLyBUT0RPIGZpeCB0byB2YWxpZGF0ZSBjb21wbGV0ZSBmb3JtXG4gICAgICAgIHRoaXMudmFsaWQgPSB0aGlzLm1hdGNoZXNIZXgodGhpcy5mb3JtLnZhbHVlKSA/IG51bGwgOiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWQgJiYge1xuICAgICAgICAgICAgaW52YWxpZDogIXRoaXMudmFsaWRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXRjaGVzSGV4KG1hdGNoPzogc3RyaW5nKXtcbiAgICAgICAgaWYobWF0Y2gpe1xuICAgICAgICAgICAgY29uc3QgcmV0ID0gbWF0Y2gubWF0Y2goL14jWzAtOWEtZl17Nn0kL2kpO1xuICAgICAgICAgICAgdGhpcy52YWxpZCA9IHJldCAmJiByZXQubGVuZ3RoPjA7XG4gICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Component, forwardRef, Input, Renderer2 } from '@angular/core';
|
|
2
|
+
import { FormBuilder, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { FormControlParentComponent } from './../../parent-components/form-control.component';
|
|
4
|
+
export class EnumRadiogroupComponent extends FormControlParentComponent {
|
|
5
|
+
constructor(formBuilder, renderer) {
|
|
6
|
+
super(formBuilder, renderer);
|
|
7
|
+
this.formBuilder = formBuilder;
|
|
8
|
+
this.renderer = renderer;
|
|
9
|
+
this.translationPrefix = '';
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
this.optionValues = Object.keys(this.optionsEnum).filter(x => !(parseInt(x) >= 0));
|
|
13
|
+
this.form = this.formBuilder.group({
|
|
14
|
+
enumData: [],
|
|
15
|
+
});
|
|
16
|
+
this.formInitialized = true;
|
|
17
|
+
this.form.valueChanges.subscribe((value) => {
|
|
18
|
+
this.internalValue = value.enumData;
|
|
19
|
+
this.onChange(value.enumData);
|
|
20
|
+
});
|
|
21
|
+
super.ngOnInit();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
EnumRadiogroupComponent.decorators = [
|
|
25
|
+
{ type: Component, args: [{
|
|
26
|
+
selector: 'kms-enum-radiogroup',
|
|
27
|
+
template: "<form [formGroup]=\"form\">\n <div>{{ header }}</div>\n <mat-radio-group [formControl]=\"form.controls['enumData']\" [disabled]=\"disabled\" #child>\n <mat-radio-button [value]=\"choice\" [checked]=\"value === choice\" *ngFor=\"let choice of optionValues\">{{ translationPrefix + '.' + choice | translate }}</mat-radio-button>\n </mat-radio-group>\n</form>",
|
|
28
|
+
providers: [
|
|
29
|
+
{
|
|
30
|
+
provide: NG_VALUE_ACCESSOR,
|
|
31
|
+
useExisting: forwardRef(() => EnumRadiogroupComponent),
|
|
32
|
+
multi: true,
|
|
33
|
+
},
|
|
34
|
+
]
|
|
35
|
+
},] }
|
|
36
|
+
];
|
|
37
|
+
EnumRadiogroupComponent.ctorParameters = () => [
|
|
38
|
+
{ type: FormBuilder },
|
|
39
|
+
{ type: Renderer2 }
|
|
40
|
+
];
|
|
41
|
+
EnumRadiogroupComponent.propDecorators = {
|
|
42
|
+
header: [{ type: Input }],
|
|
43
|
+
optionsEnum: [{ type: Input }],
|
|
44
|
+
translationPrefix: [{ type: Input }]
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS1yYWRpb2dyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ttcy1uZ3gtdWktcHJlc2VudGF0aW9uYWwvc3JjL2xpYi91aS9lbnVtLXJhZGlvZ3JvdXAvZW51bS1yYWRpb2dyb3VwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFhOUYsTUFBTSxPQUFPLHVCQUF3QixTQUFRLDBCQUEwQjtJQU9uRSxZQUFtQixXQUF3QixFQUFTLFFBQW1CO1FBQ25FLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFEZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFTLGFBQVEsR0FBUixRQUFRLENBQVc7UUFKOUQsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO0lBTWhDLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUMvQixRQUFRLEVBQUUsRUFBRTtTQUNmLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTVCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDOzs7WUFuQ0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLGdZQUErQztnQkFDL0MsU0FBUyxFQUFFO29CQUNQO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7d0JBQ3RELEtBQUssRUFBRSxJQUFJO3FCQUNkO2lCQUNKO2FBQ0o7OztZQWY4QixXQUFXO1lBREssU0FBUzs7O3FCQWtCbkQsS0FBSzswQkFDTCxLQUFLO2dDQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1CdWlsZGVyLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE51bGxBYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuaW1wb3J0IHsgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnQgfSBmcm9tICcuLy4uLy4uL3BhcmVudC1jb21wb25lbnRzL2Zvcm0tY29udHJvbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ttcy1lbnVtLXJhZGlvZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lbnVtLXJhZGlvZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVudW1SYWRpb2dyb3VwQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVudW1SYWRpb2dyb3VwQ29tcG9uZW50IGV4dGVuZHMgRm9ybUNvbnRyb2xQYXJlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBASW5wdXQoKSBoZWFkZXI6IE51bGxBYmxlPFN0cmluZz47XG4gICAgQElucHV0KCkgb3B0aW9uc0VudW06IGFueTtcbiAgICBASW5wdXQoKSB0cmFuc2xhdGlvblByZWZpeCA9ICcnO1xuXG4gICAgcHVibGljIG9wdGlvblZhbHVlczogYW55O1xuICAgIFxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgICAgIHN1cGVyKGZvcm1CdWlsZGVyLCByZW5kZXJlcik7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKXtcbiAgICAgICAgdGhpcy5vcHRpb25WYWx1ZXMgPSBPYmplY3Qua2V5cyh0aGlzLm9wdGlvbnNFbnVtKS5maWx0ZXIoeCA9PiAhKHBhcnNlSW50KHgpID49IDApKTtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBlbnVtRGF0YTogW10sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvcm1Jbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmludGVybmFsVmFsdWUgPSB2YWx1ZS5lbnVtRGF0YTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUuZW51bURhdGEpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cbn1cbiJdfQ==
|