@klippa/ngx-enhancy-forms 18.34.0 → 20.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.
- package/fesm2022/klippa-ngx-enhancy-forms.mjs +145 -140
- package/fesm2022/klippa-ngx-enhancy-forms.mjs.map +1 -1
- package/index.d.ts +707 -3
- package/package.json +5 -7
- package/esm2022/klippa-ngx-enhancy-forms.mjs +0 -5
- package/esm2022/lib/elementIsTruncatedCb.component.mjs +0 -58
- package/esm2022/lib/elements/button/button.component.mjs +0 -57
- package/esm2022/lib/elements/checkbox/checkbox.component.mjs +0 -23
- package/esm2022/lib/elements/date-picker/date-picker.component.mjs +0 -108
- package/esm2022/lib/elements/date-time-picker/date-time-picker.component.mjs +0 -436
- package/esm2022/lib/elements/email/email-input.component.mjs +0 -21
- package/esm2022/lib/elements/file-input/file-input.component.mjs +0 -76
- package/esm2022/lib/elements/hour-minute-input/hour-minute-input.component.mjs +0 -90
- package/esm2022/lib/elements/loading-indicator/loading-indicator.component.mjs +0 -20
- package/esm2022/lib/elements/number-input/number-input.component.mjs +0 -31
- package/esm2022/lib/elements/password-field/password-field.component.mjs +0 -21
- package/esm2022/lib/elements/radio/radio.component.mjs +0 -34
- package/esm2022/lib/elements/select/select-footer/select-footer.component.mjs +0 -15
- package/esm2022/lib/elements/select/select.component.mjs +0 -385
- package/esm2022/lib/elements/sortable-grouped-items/sortable-grouped-items.component.mjs +0 -54
- package/esm2022/lib/elements/sortable-items/sortable-items.component.mjs +0 -189
- package/esm2022/lib/elements/text-area/text-area.component.mjs +0 -23
- package/esm2022/lib/elements/text-input/text-input.component.mjs +0 -52
- package/esm2022/lib/elements/toggle/toggle.component.mjs +0 -21
- package/esm2022/lib/elements/value-accessor-base/multiple-value-accessor-base.component.mjs +0 -61
- package/esm2022/lib/elements/value-accessor-base/value-accessor-base.component.mjs +0 -167
- package/esm2022/lib/form/form-caption/form-caption.component.mjs +0 -31
- package/esm2022/lib/form/form-caption-end/form-caption-end.component.mjs +0 -34
- package/esm2022/lib/form/form-element/form-element.component.mjs +0 -317
- package/esm2022/lib/form/form-error/form-error.component.mjs +0 -40
- package/esm2022/lib/form/form-submit-button/form-submit-button.component.mjs +0 -71
- package/esm2022/lib/form/form-validation-error/form-validation-error.mjs +0 -22
- package/esm2022/lib/form/form.component.mjs +0 -456
- package/esm2022/lib/material.module.mjs +0 -22
- package/esm2022/lib/ngx-enhancy-forms.module.mjs +0 -191
- package/esm2022/lib/onRender.component.mjs +0 -19
- package/esm2022/lib/types.mjs +0 -2
- package/esm2022/lib/util/angular.mjs +0 -9
- package/esm2022/lib/util/arrays.mjs +0 -48
- package/esm2022/lib/util/classes.mjs +0 -2
- package/esm2022/lib/util/dom.mjs +0 -15
- package/esm2022/lib/util/objects.mjs +0 -38
- package/esm2022/lib/util/values.mjs +0 -23
- package/esm2022/lib/validators/dateValidator.mjs +0 -6
- package/esm2022/lib/validators/timeValidator.mjs +0 -6
- package/esm2022/lib/warning-icon/warning-icon.component.mjs +0 -17
- package/esm2022/lib/withTooltip.component.mjs +0 -185
- package/esm2022/public-api.mjs +0 -38
- package/lib/elementIsTruncatedCb.component.d.ts +0 -14
- package/lib/elements/button/button.component.d.ts +0 -16
- package/lib/elements/checkbox/checkbox.component.d.ts +0 -8
- package/lib/elements/date-picker/date-picker.component.d.ts +0 -26
- package/lib/elements/date-time-picker/date-time-picker.component.d.ts +0 -83
- package/lib/elements/email/email-input.component.d.ts +0 -7
- package/lib/elements/file-input/file-input.component.d.ts +0 -18
- package/lib/elements/hour-minute-input/hour-minute-input.component.d.ts +0 -20
- package/lib/elements/loading-indicator/loading-indicator.component.d.ts +0 -7
- package/lib/elements/number-input/number-input.component.d.ts +0 -9
- package/lib/elements/password-field/password-field.component.d.ts +0 -7
- package/lib/elements/radio/radio.component.d.ts +0 -21
- package/lib/elements/select/select-footer/select-footer.component.d.ts +0 -7
- package/lib/elements/select/select.component.d.ts +0 -91
- package/lib/elements/sortable-grouped-items/sortable-grouped-items.component.d.ts +0 -12
- package/lib/elements/sortable-items/sortable-items.component.d.ts +0 -29
- package/lib/elements/text-area/text-area.component.d.ts +0 -9
- package/lib/elements/text-input/text-input.component.d.ts +0 -19
- package/lib/elements/toggle/toggle.component.d.ts +0 -7
- package/lib/elements/value-accessor-base/multiple-value-accessor-base.component.d.ts +0 -14
- package/lib/elements/value-accessor-base/value-accessor-base.component.d.ts +0 -50
- package/lib/form/form-caption/form-caption.component.d.ts +0 -11
- package/lib/form/form-caption-end/form-caption-end.component.d.ts +0 -12
- package/lib/form/form-element/form-element.component.d.ts +0 -81
- package/lib/form/form-error/form-error.component.d.ts +0 -15
- package/lib/form/form-submit-button/form-submit-button.component.d.ts +0 -21
- package/lib/form/form-validation-error/form-validation-error.d.ts +0 -10
- package/lib/form/form.component.d.ts +0 -62
- package/lib/material.module.d.ts +0 -11
- package/lib/ngx-enhancy-forms.module.d.ts +0 -41
- package/lib/onRender.component.d.ts +0 -8
- package/lib/types.d.ts +0 -16
- package/lib/util/angular.d.ts +0 -2
- package/lib/util/arrays.d.ts +0 -8
- package/lib/util/classes.d.ts +0 -1
- package/lib/util/dom.d.ts +0 -2
- package/lib/util/objects.d.ts +0 -1
- package/lib/util/values.d.ts +0 -6
- package/lib/validators/dateValidator.d.ts +0 -3
- package/lib/validators/timeValidator.d.ts +0 -3
- package/lib/warning-icon/warning-icon.component.d.ts +0 -6
- package/lib/withTooltip.component.d.ts +0 -23
- package/public-api.d.ts +0 -34
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@klippa/ngx-enhancy-forms",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "20.0.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
7
|
"peerDependencies": {
|
|
8
|
-
"@angular/common": ">=
|
|
9
|
-
"@angular/core": ">=
|
|
10
|
-
"@ng-select/ng-select": ">=
|
|
11
|
-
"
|
|
8
|
+
"@angular/common": ">=20",
|
|
9
|
+
"@angular/core": ">=20",
|
|
10
|
+
"@ng-select/ng-select": ">=20",
|
|
11
|
+
"@angular/material-date-fns-adapter": ">=20",
|
|
12
12
|
"date-fns": ">=2.29",
|
|
13
13
|
"lodash-es": ">=4.17"
|
|
14
14
|
},
|
|
@@ -27,8 +27,6 @@
|
|
|
27
27
|
},
|
|
28
28
|
".": {
|
|
29
29
|
"types": "./index.d.ts",
|
|
30
|
-
"esm2022": "./esm2022/klippa-ngx-enhancy-forms.mjs",
|
|
31
|
-
"esm": "./esm2022/klippa-ngx-enhancy-forms.mjs",
|
|
32
30
|
"default": "./fesm2022/klippa-ngx-enhancy-forms.mjs"
|
|
33
31
|
}
|
|
34
32
|
},
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2xpcHBhLW5neC1lbmhhbmN5LWZvcm1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9rbGlwcGEtbmd4LWVuaGFuY3ktZm9ybXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { Directive, Input } from "@angular/core";
|
|
2
|
-
import { awaitableForNextCycle } from "./util/angular";
|
|
3
|
-
import { isValueSet } from "./util/values";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class ElementIsTruncatedCbComponent {
|
|
6
|
-
constructor(elementRef) {
|
|
7
|
-
this.elementRef = elementRef;
|
|
8
|
-
this.elementIsTruncatedCb = (isTruncated) => { };
|
|
9
|
-
}
|
|
10
|
-
ngAfterViewInit() {
|
|
11
|
-
if (!isValueSet(this.elementIsTruncatedCb)) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
const targetNode = this.elementRef.nativeElement;
|
|
15
|
-
const observerOptions = {
|
|
16
|
-
childList: true,
|
|
17
|
-
attributes: true,
|
|
18
|
-
subtree: true
|
|
19
|
-
};
|
|
20
|
-
const callback = () => {
|
|
21
|
-
this.checkForTruncation();
|
|
22
|
-
};
|
|
23
|
-
this.observer = new MutationObserver(callback);
|
|
24
|
-
this.observer.observe(targetNode, observerOptions);
|
|
25
|
-
this.checkForTruncation();
|
|
26
|
-
}
|
|
27
|
-
async checkForTruncation() {
|
|
28
|
-
await awaitableForNextCycle();
|
|
29
|
-
const isTruncated = this.isTruncated(this.elementRef.nativeElement);
|
|
30
|
-
if (isValueSet(isTruncated)) {
|
|
31
|
-
this.elementIsTruncatedCb(isTruncated);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
isTruncated(element) {
|
|
35
|
-
if (!(element.scrollWidth > 0)) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
const thisElementIsTruncated = element.scrollWidth > element.clientWidth;
|
|
39
|
-
if (!thisElementIsTruncated) {
|
|
40
|
-
return Array.from(element.children).some((child) => this.isTruncated(child));
|
|
41
|
-
}
|
|
42
|
-
return thisElementIsTruncated;
|
|
43
|
-
}
|
|
44
|
-
ngOnDestroy() {
|
|
45
|
-
this.observer?.disconnect();
|
|
46
|
-
}
|
|
47
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ElementIsTruncatedCbComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
48
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: ElementIsTruncatedCbComponent, selector: "[elementIsTruncatedCb]", inputs: { elementIsTruncatedCb: "elementIsTruncatedCb" }, ngImport: i0 }); }
|
|
49
|
-
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ElementIsTruncatedCbComponent, decorators: [{
|
|
51
|
-
type: Directive,
|
|
52
|
-
args: [{
|
|
53
|
-
selector: '[elementIsTruncatedCb]'
|
|
54
|
-
}]
|
|
55
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { elementIsTruncatedCb: [{
|
|
56
|
-
type: Input
|
|
57
|
-
}] } });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudElzVHJ1bmNhdGVkQ2IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudElzVHJ1bmNhdGVkQ2IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFjLEtBQUssRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQU16QyxNQUFNLE9BQU8sNkJBQTZCO0lBSXpDLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFEakMseUJBQW9CLEdBQUcsQ0FBQyxXQUFvQixFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFHN0QsQ0FBQztJQUVELGVBQWU7UUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTztRQUNSLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUVqRCxNQUFNLGVBQWUsR0FBRztZQUN2QixTQUFTLEVBQUUsSUFBSTtZQUNmLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE9BQU8sRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNyQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCO1FBQy9CLE1BQU0scUJBQXFCLEVBQUUsQ0FBQztRQUM5QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEUsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNGLENBQUM7SUFFTyxXQUFXLENBQUMsT0FBb0I7UUFDdkMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU87UUFDUixDQUFDO1FBQ0QsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDekUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDN0IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBb0IsQ0FBQyxDQUFDLENBQUM7UUFDN0YsQ0FBQztRQUNELE9BQU8sc0JBQXNCLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVc7UUFDVixJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQzdCLENBQUM7OEdBbkRXLDZCQUE2QjtrR0FBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUh6QyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx3QkFBd0I7aUJBQ2xDOytFQUlTLG9CQUFvQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHthd2FpdGFibGVGb3JOZXh0Q3ljbGV9IGZyb20gXCIuL3V0aWwvYW5ndWxhclwiO1xuaW1wb3J0IHtpc1ZhbHVlU2V0fSBmcm9tIFwiLi91dGlsL3ZhbHVlc1wiO1xuXG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1tlbGVtZW50SXNUcnVuY2F0ZWRDYl0nXG59KVxuZXhwb3J0IGNsYXNzIEVsZW1lbnRJc1RydW5jYXRlZENiQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblx0cHJpdmF0ZSBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuXHRASW5wdXQoKSBlbGVtZW50SXNUcnVuY2F0ZWRDYiA9IChpc1RydW5jYXRlZDogYm9vbGVhbikgPT4ge307XG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuXG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cdFx0aWYgKCFpc1ZhbHVlU2V0KHRoaXMuZWxlbWVudElzVHJ1bmNhdGVkQ2IpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGFyZ2V0Tm9kZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG5cdFx0Y29uc3Qgb2JzZXJ2ZXJPcHRpb25zID0ge1xuXHRcdFx0Y2hpbGRMaXN0OiB0cnVlLFxuXHRcdFx0YXR0cmlidXRlczogdHJ1ZSxcblx0XHRcdHN1YnRyZWU6IHRydWVcblx0XHR9O1xuXG5cdFx0Y29uc3QgY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0XHR0aGlzLmNoZWNrRm9yVHJ1bmNhdGlvbigpO1xuXHRcdH07XG5cblx0XHR0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spO1xuXHRcdHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXROb2RlLCBvYnNlcnZlck9wdGlvbnMpO1xuXHRcdHRoaXMuY2hlY2tGb3JUcnVuY2F0aW9uKCk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGNoZWNrRm9yVHJ1bmNhdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCBhd2FpdGFibGVGb3JOZXh0Q3ljbGUoKTtcblx0XHRjb25zdCBpc1RydW5jYXRlZCA9IHRoaXMuaXNUcnVuY2F0ZWQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdGlmIChpc1ZhbHVlU2V0KGlzVHJ1bmNhdGVkKSkge1xuXHRcdFx0dGhpcy5lbGVtZW50SXNUcnVuY2F0ZWRDYihpc1RydW5jYXRlZCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpc1RydW5jYXRlZChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuXHRcdGlmICghKGVsZW1lbnQuc2Nyb2xsV2lkdGggPiAwKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB0aGlzRWxlbWVudElzVHJ1bmNhdGVkID0gZWxlbWVudC5zY3JvbGxXaWR0aCA+IGVsZW1lbnQuY2xpZW50V2lkdGg7XG5cdFx0aWYgKCF0aGlzRWxlbWVudElzVHJ1bmNhdGVkKSB7XG5cdFx0XHRyZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkcmVuKS5zb21lKChjaGlsZCkgPT4gdGhpcy5pc1RydW5jYXRlZChjaGlsZCBhcyBIVE1MRWxlbWVudCkpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpc0VsZW1lbnRJc1RydW5jYXRlZDtcblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcblx0fVxufVxuIl19
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { Component, HostBinding, Input } from '@angular/core';
|
|
2
|
-
import { isValueSet } from "../../util/values";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "../loading-indicator/loading-indicator.component";
|
|
6
|
-
export class ButtonComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.variant = 'white';
|
|
9
|
-
this.size = 'medium';
|
|
10
|
-
this.fullWidth = false;
|
|
11
|
-
this.hasBorder = true;
|
|
12
|
-
this.disabled = false;
|
|
13
|
-
this.isLoading = false;
|
|
14
|
-
this.type = 'button';
|
|
15
|
-
}
|
|
16
|
-
get _() {
|
|
17
|
-
return this.fullWidth;
|
|
18
|
-
}
|
|
19
|
-
async onClick(event) {
|
|
20
|
-
if (this.disabled) {
|
|
21
|
-
event.stopPropagation();
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
if (isValueSet(this.clickCallback)) {
|
|
25
|
-
this.isLoading = true;
|
|
26
|
-
await this.clickCallback(event).finally(() => {
|
|
27
|
-
this.isLoading = false;
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: ButtonComponent, selector: "klp-form-button", inputs: { variant: "variant", size: "size", fullWidth: "fullWidth", hasBorder: "hasBorder", disabled: "disabled", isLoading: "isLoading", type: "type", clickCallback: "clickCallback" }, host: { properties: { "class._fullWidth": "this._" } }, ngImport: i0, template: "<button class=\"buttonFundamentals\"\n\t[ngClass]=\"[\n\t\tvariant,\n\t\tsize,\n\t\tfullWidth ? 'fullWidth' : '',\n\t\thasBorder ? '' : 'no-border',\n\t\tdisabled ? 'disabled' : ''\n\t]\"\n\t[type]=\"type\"\n\t(click)=\"onClick($event)\"\n>\n\t<div class=\"caption\" [ngClass]=\"{invisible: isLoading}\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"loadingSpinnerContainer\" *ngIf=\"isLoading\">\n\t\t<klp-form-loading-indicator variant=\"spinner\" size=\"small\"></klp-form-loading-indicator>\n\t</div>\n</button>\n", styles: [":host{display:inline-block}:host._fullWidth{display:block}.buttonFundamentals{cursor:pointer;letter-spacing:1px;font-size:13px;font-weight:700;padding:0 20px;border:1px solid #D0D5DD;border-radius:8px;color:#101828;height:2.625rem}.buttonFundamentals.disabled{cursor:not-allowed}.buttonFundamentals.tiny{font-size:.75rem;font-weight:400;height:2rem}.buttonFundamentals.large{height:3rem}.fullWidth{width:100%}.no-border{border:none}.caption.invisible{visibility:hidden}button{position:relative}.loadingSpinnerContainer{position:absolute;inset:0;display:flex;justify-content:center;align-items:center}.white{color:#515365;background-color:#fff;border-color:#c1c8d2;font-weight:500}.white:hover,.white:active{color:#515365;background-color:#d6dae1;border-color:#d6dae1}.white:focus{text-decoration:underline}.greenFilled{background-color:#00ac42;border-color:#00ac42;color:#fff}.greenFilled:hover{color:#fff;background-color:#00c64c;border-color:#00c64c}.greenFilled:focus{text-decoration:underline}.greenFilled:active{background-color:#009338;border-color:#009338}.greenOutlined{background-color:#fff;border-color:#00ac42;color:#00ac42}.greenOutlined:hover{color:#fff;background-color:#00c64c;border-color:#00c64c}.greenOutlined:focus{text-decoration:underline}.greenOutlined:active{background-color:#009338;border-color:#009338}.greenLink{color:#00ac42;border:none;background:none;padding:0}.greenLink:hover,.greenLink:focus{text-decoration:underline}.contextMenuItem{color:#101828;background-color:#fff;border-color:#fff}.contextMenuItem:hover{background-color:#f2f4f7;border-color:#f2f4f7}.contextMenuItem:focus,.contextMenuItem:active{text-decoration:underline}.redFilled{color:#fff;background-color:#dc3545;border-color:#dc3545}.redFilled:hover{color:#fff;background-color:#e04b59;border-color:#e04b59}.redFilled:focus{text-decoration:underline}.redFilled:active{background-color:#d32535;border-color:#d32535}.redOutlined{color:#dc3545;background-color:#fff;border-color:#dc3545}.redOutlined:hover{color:#fff;background-color:#e04b59;border-color:#e04b59}.redOutlined:focus{text-decoration:underline}.redOutlined:active{background-color:#d32535;border-color:#d32535}.orangeFilled{color:#fff;background-color:#ff8000;border-color:#ff8000}.orangeFilled:hover{color:#fff;background-color:#ff8d1a;border-color:#ff8d1a}.orangeFilled:focus{text-decoration:underline}.orangeFilled:active{background-color:#e67300;border-color:#e67300}\n"], 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.LoadingIndicatorComponent, selector: "klp-form-loading-indicator", inputs: ["variant", "size"] }] }); }
|
|
33
|
-
}
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
35
|
-
type: Component,
|
|
36
|
-
args: [{ selector: 'klp-form-button', template: "<button class=\"buttonFundamentals\"\n\t[ngClass]=\"[\n\t\tvariant,\n\t\tsize,\n\t\tfullWidth ? 'fullWidth' : '',\n\t\thasBorder ? '' : 'no-border',\n\t\tdisabled ? 'disabled' : ''\n\t]\"\n\t[type]=\"type\"\n\t(click)=\"onClick($event)\"\n>\n\t<div class=\"caption\" [ngClass]=\"{invisible: isLoading}\">\n\t\t<ng-content></ng-content>\n\t</div>\n\t<div class=\"loadingSpinnerContainer\" *ngIf=\"isLoading\">\n\t\t<klp-form-loading-indicator variant=\"spinner\" size=\"small\"></klp-form-loading-indicator>\n\t</div>\n</button>\n", styles: [":host{display:inline-block}:host._fullWidth{display:block}.buttonFundamentals{cursor:pointer;letter-spacing:1px;font-size:13px;font-weight:700;padding:0 20px;border:1px solid #D0D5DD;border-radius:8px;color:#101828;height:2.625rem}.buttonFundamentals.disabled{cursor:not-allowed}.buttonFundamentals.tiny{font-size:.75rem;font-weight:400;height:2rem}.buttonFundamentals.large{height:3rem}.fullWidth{width:100%}.no-border{border:none}.caption.invisible{visibility:hidden}button{position:relative}.loadingSpinnerContainer{position:absolute;inset:0;display:flex;justify-content:center;align-items:center}.white{color:#515365;background-color:#fff;border-color:#c1c8d2;font-weight:500}.white:hover,.white:active{color:#515365;background-color:#d6dae1;border-color:#d6dae1}.white:focus{text-decoration:underline}.greenFilled{background-color:#00ac42;border-color:#00ac42;color:#fff}.greenFilled:hover{color:#fff;background-color:#00c64c;border-color:#00c64c}.greenFilled:focus{text-decoration:underline}.greenFilled:active{background-color:#009338;border-color:#009338}.greenOutlined{background-color:#fff;border-color:#00ac42;color:#00ac42}.greenOutlined:hover{color:#fff;background-color:#00c64c;border-color:#00c64c}.greenOutlined:focus{text-decoration:underline}.greenOutlined:active{background-color:#009338;border-color:#009338}.greenLink{color:#00ac42;border:none;background:none;padding:0}.greenLink:hover,.greenLink:focus{text-decoration:underline}.contextMenuItem{color:#101828;background-color:#fff;border-color:#fff}.contextMenuItem:hover{background-color:#f2f4f7;border-color:#f2f4f7}.contextMenuItem:focus,.contextMenuItem:active{text-decoration:underline}.redFilled{color:#fff;background-color:#dc3545;border-color:#dc3545}.redFilled:hover{color:#fff;background-color:#e04b59;border-color:#e04b59}.redFilled:focus{text-decoration:underline}.redFilled:active{background-color:#d32535;border-color:#d32535}.redOutlined{color:#dc3545;background-color:#fff;border-color:#dc3545}.redOutlined:hover{color:#fff;background-color:#e04b59;border-color:#e04b59}.redOutlined:focus{text-decoration:underline}.redOutlined:active{background-color:#d32535;border-color:#d32535}.orangeFilled{color:#fff;background-color:#ff8000;border-color:#ff8000}.orangeFilled:hover{color:#fff;background-color:#ff8d1a;border-color:#ff8d1a}.orangeFilled:focus{text-decoration:underline}.orangeFilled:active{background-color:#e67300;border-color:#e67300}\n"] }]
|
|
37
|
-
}], propDecorators: { variant: [{
|
|
38
|
-
type: Input
|
|
39
|
-
}], size: [{
|
|
40
|
-
type: Input
|
|
41
|
-
}], fullWidth: [{
|
|
42
|
-
type: Input
|
|
43
|
-
}], hasBorder: [{
|
|
44
|
-
type: Input
|
|
45
|
-
}], disabled: [{
|
|
46
|
-
type: Input
|
|
47
|
-
}], isLoading: [{
|
|
48
|
-
type: Input
|
|
49
|
-
}], type: [{
|
|
50
|
-
type: Input
|
|
51
|
-
}], clickCallback: [{
|
|
52
|
-
type: Input
|
|
53
|
-
}], _: [{
|
|
54
|
-
type: HostBinding,
|
|
55
|
-
args: ['class._fullWidth']
|
|
56
|
-
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1CQUFtQixDQUFDOzs7O0FBZ0I3QyxNQUFNLE9BQU8sZUFBZTtJQUw1QjtRQU1VLFlBQU8sR0FBa0IsT0FBTyxDQUFDO1FBQ2pDLFNBQUksR0FBaUMsUUFBUSxDQUFDO1FBQzlDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsU0FBSSxHQUF3QixRQUFRLENBQUM7S0FvQjlDO0lBakJBLElBQXFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQVk7UUFDekIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLE9BQU87UUFDUixDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQztJQUNGLENBQUM7OEdBMUJXLGVBQWU7a0dBQWYsZUFBZSx5U0NqQjVCLG1oQkFrQkE7OzJGRERhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0MsaUJBQWlCOzhCQUtsQixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRStCLENBQUM7c0JBQXJDLFdBQVc7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aXNWYWx1ZVNldH0gZnJvbSBcIi4uLy4uL3V0aWwvdmFsdWVzXCI7XG5cbmV4cG9ydCB0eXBlIEJ1dHRvblZhcmlhbnQgPSAnd2hpdGUnXG5cdFx0fCAnZ3JlZW5GaWxsZWQnXG5cdFx0fCAnZ3JlZW5PdXRsaW5lZCdcblx0XHR8ICdncmVlbkxpbmsnXG5cdFx0fCAnY29udGV4dE1lbnVJdGVtJ1xuXHRcdHwgJ3JlZEZpbGxlZCdcblx0XHR8ICdyZWRPdXRsaW5lZCdcblx0XHR8ICdvcmFuZ2VGaWxsZWQnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1idXR0b24nLFxuXHR0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbXBvbmVudCB7XG5cdEBJbnB1dCgpIHZhcmlhbnQ6IEJ1dHRvblZhcmlhbnQgPSAnd2hpdGUnO1xuXHRASW5wdXQoKSBzaXplOiAnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnID0gJ21lZGl1bSc7XG5cdEBJbnB1dCgpIGZ1bGxXaWR0aCA9IGZhbHNlO1xuXHRASW5wdXQoKSBoYXNCb3JkZXIgPSB0cnVlO1xuXHRASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXHRASW5wdXQoKSBpc0xvYWRpbmcgPSBmYWxzZTtcblx0QElucHV0KCkgdHlwZTogJ2J1dHRvbicgfCAnc3VibWl0JyA9ICdidXR0b24nO1xuXHRASW5wdXQoKSBjbGlja0NhbGxiYWNrOiAoZXZlbnQ6IEV2ZW50KSA9PiBQcm9taXNlPGFueT47XG5cblx0QEhvc3RCaW5kaW5nKCdjbGFzcy5fZnVsbFdpZHRoJykgZ2V0IF8oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZnVsbFdpZHRoO1xuXHR9XG5cblx0YXN5bmMgb25DbGljayhldmVudDogRXZlbnQpIHtcblx0XHRpZiAodGhpcy5kaXNhYmxlZCkge1xuXHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKGlzVmFsdWVTZXQodGhpcy5jbGlja0NhbGxiYWNrKSkge1xuXHRcdFx0dGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuXHRcdFx0YXdhaXQgdGhpcy5jbGlja0NhbGxiYWNrKGV2ZW50KS5maW5hbGx5KCgpID0+IHtcblx0XHRcdFx0dGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxufVxuIiwiPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbkZ1bmRhbWVudGFsc1wiXG5cdFtuZ0NsYXNzXT1cIltcblx0XHR2YXJpYW50LFxuXHRcdHNpemUsXG5cdFx0ZnVsbFdpZHRoID8gJ2Z1bGxXaWR0aCcgOiAnJyxcblx0XHRoYXNCb3JkZXIgPyAnJyA6ICduby1ib3JkZXInLFxuXHRcdGRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnXG5cdF1cIlxuXHRbdHlwZV09XCJ0eXBlXCJcblx0KGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4+XG5cdDxkaXYgY2xhc3M9XCJjYXB0aW9uXCIgW25nQ2xhc3NdPVwie2ludmlzaWJsZTogaXNMb2FkaW5nfVwiPlxuXHRcdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJsb2FkaW5nU3Bpbm5lckNvbnRhaW5lclwiICpuZ0lmPVwiaXNMb2FkaW5nXCI+XG5cdFx0PGtscC1mb3JtLWxvYWRpbmctaW5kaWNhdG9yIHZhcmlhbnQ9XCJzcGlubmVyXCIgc2l6ZT1cInNtYWxsXCI+PC9rbHAtZm9ybS1sb2FkaW5nLWluZGljYXRvcj5cblx0PC9kaXY+XG48L2J1dHRvbj5cbiJdfQ==
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/common";
|
|
6
|
-
import * as i2 from "@angular/forms";
|
|
7
|
-
export class CheckboxComponent extends ValueAccessorBase {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(...arguments);
|
|
10
|
-
this.renderUndefinedAsIndeterminate = false;
|
|
11
|
-
}
|
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: CheckboxComponent, selector: "klp-form-checkbox", inputs: { caption: "caption", renderUndefinedAsIndeterminate: "renderUndefinedAsIndeterminate" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"componentContainer\">\n\t<label>\n\t\t<div class=\"checkboxContainer\">\n\t\t\t<div class=\"checkBoxVisualContainer\">\n\t\t\t\t<input type=\"checkbox\" class=\"checkboxNative\"\n\t\t\t\t\t[(ngModel)]=\"innerValue\"\n\t\t\t\t\t(change)=\"setInnerValueAndNotify(innerValue); touch()\"\n\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t#nativeInputRef\n\t\t\t\t/>\n\t\t\t\t<div class=\"checkboxVisual\" [ngClass]=\"{filledWithColor: innerValue === true || (renderUndefinedAsIndeterminate && innerValue === undefined)}\">\n\t\t\t\t\t<svg *ngIf=\"innerValue === true\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"9\" viewBox=\"0 0 12 9\" fill=\"none\">\n\t\t\t\t\t\t<path d=\"M10.3333 1L3.91667 7.41667L1 4.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<svg *ngIf=\"renderUndefinedAsIndeterminate && innerValue === undefined\" xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"2\" viewBox=\"0 0 11 2\" fill=\"none\">\n\t\t\t\t\t\t<path d=\"M1 1H9.16667\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"caption\" class=\"caption\">{{ caption }}</div>\n\t</label>\n</div>\n", styles: [":host{display:block}.componentContainer{display:flex;align-items:center;margin-bottom:0}label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.checkboxContainer{position:relative}.checkBoxVisualContainer{padding:2px;margin-right:10px;border-radius:4px}.checkBoxVisualContainer:focus-within{outline:2px solid #00AC42}.caption{cursor:pointer;font-weight:400;color:#101828}.checkboxNative{position:absolute;opacity:0;top:0;left:0;width:20px;height:20px;cursor:pointer}.checkboxVisual{pointer-events:none;padding:.125rem;color:#fff;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border:1px solid #D0D5DD;border-radius:4px;font-size:15px;font-weight:400;line-height:19px;vertical-align:bottom;text-align:center;background-color:#fff;cursor:pointer}.checkboxVisual.filledWithColor{background-color:#00ac42;border-color:#00ac42}.checkboxNative:hover+.checkboxVisual{border-color:#98a2b3}.checkboxNative:hover+.checkboxVisual.filledWithColor{border-color:#00ac42}.checkboxNative:hover[disabled]+.checkboxVisual{border-color:#eaecf0}.checkboxNative:hover[disabled]+.checkboxVisual.filledWithColor{border-color:#f2f4f7}.checkboxNative[disabled]{cursor:not-allowed}.checkboxNative[disabled]+.checkboxVisual{background-color:#f2f4f7;border-color:#eaecf0}.checkboxNative[disabled]+.checkboxVisual svg{color:#101828}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
14
|
-
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
16
|
-
type: Component,
|
|
17
|
-
args: [{ selector: 'klp-form-checkbox', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }], template: "<div class=\"componentContainer\">\n\t<label>\n\t\t<div class=\"checkboxContainer\">\n\t\t\t<div class=\"checkBoxVisualContainer\">\n\t\t\t\t<input type=\"checkbox\" class=\"checkboxNative\"\n\t\t\t\t\t[(ngModel)]=\"innerValue\"\n\t\t\t\t\t(change)=\"setInnerValueAndNotify(innerValue); touch()\"\n\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t#nativeInputRef\n\t\t\t\t/>\n\t\t\t\t<div class=\"checkboxVisual\" [ngClass]=\"{filledWithColor: innerValue === true || (renderUndefinedAsIndeterminate && innerValue === undefined)}\">\n\t\t\t\t\t<svg *ngIf=\"innerValue === true\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"9\" viewBox=\"0 0 12 9\" fill=\"none\">\n\t\t\t\t\t\t<path d=\"M10.3333 1L3.91667 7.41667L1 4.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<svg *ngIf=\"renderUndefinedAsIndeterminate && innerValue === undefined\" xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"2\" viewBox=\"0 0 11 2\" fill=\"none\">\n\t\t\t\t\t\t<path d=\"M1 1H9.16667\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"caption\" class=\"caption\">{{ caption }}</div>\n\t</label>\n</div>\n", styles: [":host{display:block}.componentContainer{display:flex;align-items:center;margin-bottom:0}label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.checkboxContainer{position:relative}.checkBoxVisualContainer{padding:2px;margin-right:10px;border-radius:4px}.checkBoxVisualContainer:focus-within{outline:2px solid #00AC42}.caption{cursor:pointer;font-weight:400;color:#101828}.checkboxNative{position:absolute;opacity:0;top:0;left:0;width:20px;height:20px;cursor:pointer}.checkboxVisual{pointer-events:none;padding:.125rem;color:#fff;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border:1px solid #D0D5DD;border-radius:4px;font-size:15px;font-weight:400;line-height:19px;vertical-align:bottom;text-align:center;background-color:#fff;cursor:pointer}.checkboxVisual.filledWithColor{background-color:#00ac42;border-color:#00ac42}.checkboxNative:hover+.checkboxVisual{border-color:#98a2b3}.checkboxNative:hover+.checkboxVisual.filledWithColor{border-color:#00ac42}.checkboxNative:hover[disabled]+.checkboxVisual{border-color:#eaecf0}.checkboxNative:hover[disabled]+.checkboxVisual.filledWithColor{border-color:#f2f4f7}.checkboxNative[disabled]{cursor:not-allowed}.checkboxNative[disabled]+.checkboxVisual{background-color:#f2f4f7;border-color:#eaecf0}.checkboxNative[disabled]+.checkboxVisual svg{color:#101828}\n"] }]
|
|
18
|
-
}], propDecorators: { caption: [{
|
|
19
|
-
type: Input
|
|
20
|
-
}], renderUndefinedAsIndeterminate: [{
|
|
21
|
-
type: Input
|
|
22
|
-
}] } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7QUFRekYsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGlCQUEwQjtJQU5qRTs7UUFRVSxtQ0FBOEIsR0FBRyxLQUFLLENBQUM7S0FDaEQ7OEdBSFksaUJBQWlCO2tHQUFqQixpQkFBaUIsOElBRmxCLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxpRENSekYsZ3pDQXVCQTs7MkZEYmEsaUJBQWlCO2tCQU43QixTQUFTOytCQUNDLG1CQUFtQixhQUdsQixDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzhCQUcvRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csOEJBQThCO3NCQUF0QyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBWYWx1ZUFjY2Vzc29yQmFzZSB9IGZyb20gJy4uL3ZhbHVlLWFjY2Vzc29yLWJhc2UvdmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1jaGVja2JveCcsXG5cdHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ10sXG5cdHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBDaGVja2JveENvbXBvbmVudCwgbXVsdGk6IHRydWUgfV0sXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94Q29tcG9uZW50IGV4dGVuZHMgVmFsdWVBY2Nlc3NvckJhc2U8Ym9vbGVhbj4ge1xuXHRASW5wdXQoKSBjYXB0aW9uOiBzdHJpbmc7XG5cdEBJbnB1dCgpIHJlbmRlclVuZGVmaW5lZEFzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xufVxuIiwiPGRpdiBjbGFzcz1cImNvbXBvbmVudENvbnRhaW5lclwiPlxuXHQ8bGFiZWw+XG5cdFx0PGRpdiBjbGFzcz1cImNoZWNrYm94Q29udGFpbmVyXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2hlY2tCb3hWaXN1YWxDb250YWluZXJcIj5cblx0XHRcdFx0PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiY2hlY2tib3hOYXRpdmVcIlxuXHRcdFx0XHRcdFsobmdNb2RlbCldPVwiaW5uZXJWYWx1ZVwiXG5cdFx0XHRcdFx0KGNoYW5nZSk9XCJzZXRJbm5lclZhbHVlQW5kTm90aWZ5KGlubmVyVmFsdWUpOyB0b3VjaCgpXCJcblx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuXHRcdFx0XHRcdCNuYXRpdmVJbnB1dFJlZlxuXHRcdFx0XHQvPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2hlY2tib3hWaXN1YWxcIiBbbmdDbGFzc109XCJ7ZmlsbGVkV2l0aENvbG9yOiBpbm5lclZhbHVlID09PSB0cnVlIHx8IChyZW5kZXJVbmRlZmluZWRBc0luZGV0ZXJtaW5hdGUgJiYgaW5uZXJWYWx1ZSA9PT0gdW5kZWZpbmVkKX1cIj5cblx0XHRcdFx0XHQ8c3ZnICpuZ0lmPVwiaW5uZXJWYWx1ZSA9PT0gdHJ1ZVwiIHZlcnNpb249XCIxLjFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjlcIiB2aWV3Qm94PVwiMCAwIDEyIDlcIiBmaWxsPVwibm9uZVwiPlxuXHRcdFx0XHRcdFx0PHBhdGggZD1cIk0xMC4zMzMzIDFMMy45MTY2NyA3LjQxNjY3TDEgNC41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cblx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0XHQ8c3ZnICpuZ0lmPVwicmVuZGVyVW5kZWZpbmVkQXNJbmRldGVybWluYXRlICYmIGlubmVyVmFsdWUgPT09IHVuZGVmaW5lZFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjExXCIgaGVpZ2h0PVwiMlwiIHZpZXdCb3g9XCIwIDAgMTEgMlwiIGZpbGw9XCJub25lXCI+XG5cdFx0XHRcdFx0XHQ8cGF0aCBkPVwiTTEgMUg5LjE2NjY3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cblx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwiY2FwdGlvblwiIGNsYXNzPVwiY2FwdGlvblwiPnt7IGNhcHRpb24gfX08L2Rpdj5cblx0PC9sYWJlbD5cbjwvZGl2PlxuIl19
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { Component, Host, Inject, InjectionToken, Input, Optional } from '@angular/core';
|
|
2
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import { format as dateFormat, parse } from 'date-fns';
|
|
4
|
-
import { MultipleValueAccessorBase } from '../value-accessor-base/multiple-value-accessor-base.component';
|
|
5
|
-
import { invalidDateKey } from '../../validators/dateValidator';
|
|
6
|
-
import { isNullOrUndefined, stringIsSetAndFilled } from '../../util/values';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../../form/form-element/form-element.component";
|
|
9
|
-
import * as i2 from "@angular/forms";
|
|
10
|
-
import * as i3 from "@angular/common";
|
|
11
|
-
import * as i4 from "../date-time-picker/date-time-picker.component";
|
|
12
|
-
export const DATE_PICKER_TRANSLATIONS = new InjectionToken('klp.form.date.translations');
|
|
13
|
-
export class DatePickerComponent extends MultipleValueAccessorBase {
|
|
14
|
-
constructor(parent, controlContainer, translations) {
|
|
15
|
-
super(parent, controlContainer);
|
|
16
|
-
this.parent = parent;
|
|
17
|
-
this.controlContainer = controlContainer;
|
|
18
|
-
this.translations = translations;
|
|
19
|
-
this.minDate = undefined;
|
|
20
|
-
this.maxDate = undefined;
|
|
21
|
-
this.sameMonthOnly = false;
|
|
22
|
-
this.format = 'dd-MM-yyyy';
|
|
23
|
-
this.clearable = false;
|
|
24
|
-
}
|
|
25
|
-
writeValue(value) {
|
|
26
|
-
if (value === invalidDateKey) {
|
|
27
|
-
super.writeValue(invalidDateKey);
|
|
28
|
-
}
|
|
29
|
-
else if (isNullOrUndefined(value)) {
|
|
30
|
-
this.dateValue = this.multiple ? [] : null;
|
|
31
|
-
super.writeValue(this.multiple ? [] : null);
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
if (Array.isArray(value)) {
|
|
35
|
-
this.dateValue = value.map((e) => parse(e, 'yyyy-MM-dd', new Date()));
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
this.dateValue = parse(value, 'yyyy-MM-dd', new Date());
|
|
39
|
-
}
|
|
40
|
-
super.writeValue(value);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
dateChanged(value) {
|
|
44
|
-
if (value === invalidDateKey) {
|
|
45
|
-
this.setInnerValueAndNotify(invalidDateKey);
|
|
46
|
-
}
|
|
47
|
-
else if (isNullOrUndefined(value)) {
|
|
48
|
-
this.dateValue = this.multiple ? [] : null;
|
|
49
|
-
this.setInnerValueAndNotify(this.multiple ? [] : null);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
this.dateValue = value;
|
|
53
|
-
if (Array.isArray(value)) {
|
|
54
|
-
this.setInnerValueAndNotify(value.map((e) => dateFormat(e, 'yyyy-MM-dd')));
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
this.setInnerValueAndNotify(dateFormat(value, 'yyyy-MM-dd'));
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
getDefaultTranslation(key) {
|
|
62
|
-
switch (key) {
|
|
63
|
-
case 'placeholder':
|
|
64
|
-
return () => 'Select date';
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
getTranslation(key, params = null) {
|
|
68
|
-
if (key === 'placeholder' && this.multiple) {
|
|
69
|
-
return '';
|
|
70
|
-
}
|
|
71
|
-
if (key === 'placeholder' && stringIsSetAndFilled(this.placeholder)) {
|
|
72
|
-
return this.placeholder;
|
|
73
|
-
}
|
|
74
|
-
return this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);
|
|
75
|
-
}
|
|
76
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: DatePickerComponent, deps: [{ token: i1.FormElementComponent, host: true, optional: true }, { token: i2.ControlContainer, host: true, optional: true }, { token: DATE_PICKER_TRANSLATIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: DatePickerComponent, selector: "klp-form-date-picker", inputs: { minDate: "minDate", maxDate: "maxDate", sameMonthOnly: "sameMonthOnly", format: "format", placeholder: "placeholder", clearable: "clearable" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DatePickerComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<klp-form-date-time-picker\n\t\t[multiple]=\"multiple\"\n\t\t[disabled]=\"disabled\"\n\t\t[(ngModel)]=\"dateValue\"\n\t\t(ngModelChange)=\"dateChanged($event)\"\n\t\t[minDate]=\"minDate\"\n\t\t[maxDate]=\"maxDate\"\n\t\t[sameMonthOnly]=\"sameMonthOnly\"\n\t\t[format]=\"format\"\n\t\t[placeholder]=\"getTranslation('placeholder')\"\n\t\t[clearable]=\"clearable\"\n\t\t[showTimeInput]=\"false\"\n\t\t(onTouch)=\"touch()\"\n\t></klp-form-date-time-picker>\n\t<div class=\"tail\">\n\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t</div>\n</div>\n", styles: [":host{display:block;--mdc-icon-button-icon-size: 18px}.componentContainer{position:relative}.componentContainer.showErrors ::ng-deep klp-form-date-time-picker .dateContainer,.componentContainer.showErrors ::ng-deep klp-form-date-time-picker .clearButton{border-color:#ff8000}.tail{position:absolute;right:.625rem;display:flex;align-items:center;top:0;bottom:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.DateTimePickerComponent, selector: "klp-form-date-time-picker", inputs: ["minDate", "maxDate", "sameMonthOnly", "format", "placeholder", "clearable", "showTimeInput", "initHour", "initMinute", "invalidTimeAsMidnight"] }] }); }
|
|
78
|
-
}
|
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
80
|
-
type: Component,
|
|
81
|
-
args: [{ selector: 'klp-form-date-picker', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DatePickerComponent, multi: true }], template: "<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<klp-form-date-time-picker\n\t\t[multiple]=\"multiple\"\n\t\t[disabled]=\"disabled\"\n\t\t[(ngModel)]=\"dateValue\"\n\t\t(ngModelChange)=\"dateChanged($event)\"\n\t\t[minDate]=\"minDate\"\n\t\t[maxDate]=\"maxDate\"\n\t\t[sameMonthOnly]=\"sameMonthOnly\"\n\t\t[format]=\"format\"\n\t\t[placeholder]=\"getTranslation('placeholder')\"\n\t\t[clearable]=\"clearable\"\n\t\t[showTimeInput]=\"false\"\n\t\t(onTouch)=\"touch()\"\n\t></klp-form-date-time-picker>\n\t<div class=\"tail\">\n\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t</div>\n</div>\n", styles: [":host{display:block;--mdc-icon-button-icon-size: 18px}.componentContainer{position:relative}.componentContainer.showErrors ::ng-deep klp-form-date-time-picker .dateContainer,.componentContainer.showErrors ::ng-deep klp-form-date-time-picker .clearButton{border-color:#ff8000}.tail{position:absolute;right:.625rem;display:flex;align-items:center;top:0;bottom:0}\n"] }]
|
|
82
|
-
}], ctorParameters: () => [{ type: i1.FormElementComponent, decorators: [{
|
|
83
|
-
type: Host
|
|
84
|
-
}, {
|
|
85
|
-
type: Optional
|
|
86
|
-
}] }, { type: i2.ControlContainer, decorators: [{
|
|
87
|
-
type: Host
|
|
88
|
-
}, {
|
|
89
|
-
type: Optional
|
|
90
|
-
}] }, { type: undefined, decorators: [{
|
|
91
|
-
type: Inject,
|
|
92
|
-
args: [DATE_PICKER_TRANSLATIONS]
|
|
93
|
-
}, {
|
|
94
|
-
type: Optional
|
|
95
|
-
}] }], propDecorators: { minDate: [{
|
|
96
|
-
type: Input
|
|
97
|
-
}], maxDate: [{
|
|
98
|
-
type: Input
|
|
99
|
-
}], sameMonthOnly: [{
|
|
100
|
-
type: Input
|
|
101
|
-
}], format: [{
|
|
102
|
-
type: Input
|
|
103
|
-
}], placeholder: [{
|
|
104
|
-
type: Input
|
|
105
|
-
}], clearable: [{
|
|
106
|
-
type: Input
|
|
107
|
-
}] } });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBbUIsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUMsTUFBTSxJQUFJLFVBQVUsRUFBRSxLQUFLLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDckQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDeEcsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7QUFHMUUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQU0sNEJBQTRCLENBQUMsQ0FBQztBQVE5RixNQUFNLE9BQU8sbUJBQW9CLFNBQVEseUJBQXlEO0lBVWpHLFlBQytCLE1BQTRCLEVBQzVCLGdCQUFrQyxFQUNWLFlBQWlCO1FBRXZFLEtBQUssQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUpGLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBQzVCLHFCQUFnQixHQUFoQixn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Q1gsQ0FBQztRQUNELElBQUksR0FBRyxLQUFLLGFBQWEsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNyRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDekIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RGLENBQUM7OEdBakVXLG1CQUFtQiw4SUFhdEIsd0JBQXdCO2tHQWJyQixtQkFBbUIseU1BRnBCLENBQUMsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQyxpRENkekYsNm9CQW1CQTs7MkZESGEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNDLHNCQUFzQixhQUdyQixDQUFDLEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcscUJBQXFCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDOzswQkFhdEYsSUFBSTs7MEJBQUksUUFBUTs7MEJBQ2hCLElBQUk7OzBCQUFJLFFBQVE7OzBCQUNoQixNQUFNOzJCQUFDLHdCQUF3Qjs7MEJBQUcsUUFBUTt5Q0FaNUIsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSG9zdCwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgSW5wdXQsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbENvbnRhaW5lciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Zm9ybWF0IGFzIGRhdGVGb3JtYXQsIHBhcnNlfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQge011bHRpcGxlVmFsdWVBY2Nlc3NvckJhc2V9IGZyb20gJy4uL3ZhbHVlLWFjY2Vzc29yLWJhc2UvbXVsdGlwbGUtdmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHtpbnZhbGlkRGF0ZUtleX0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycy9kYXRlVmFsaWRhdG9yJztcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWQsIHN0cmluZ0lzU2V0QW5kRmlsbGVkfSBmcm9tICcuLi8uLi91dGlsL3ZhbHVlcyc7XG5pbXBvcnQge0Zvcm1FbGVtZW50Q29tcG9uZW50fSBmcm9tICcuLi8uLi9mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IERBVEVfUElDS0VSX1RSQU5TTEFUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdrbHAuZm9ybS5kYXRlLnRyYW5zbGF0aW9ucycpO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1kYXRlLXBpY2tlcicsXG5cdHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG5cdHByb3ZpZGVyczogW3twcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IERhdGVQaWNrZXJDb21wb25lbnQsIG11bHRpOiB0cnVlfV0sXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBNdWx0aXBsZVZhbHVlQWNjZXNzb3JCYXNlPHN0cmluZyB8IHR5cGVvZiBpbnZhbGlkRGF0ZUtleT4ge1xuXHRASW5wdXQoKSBwdWJsaWMgbWluRGF0ZTogRGF0ZSA9IHVuZGVmaW5lZDtcblx0QElucHV0KCkgcHVibGljIG1heERhdGU6IERhdGUgPSB1bmRlZmluZWQ7XG5cdEBJbnB1dCgpIHB1YmxpYyBzYW1lTW9udGhPbmx5ID0gZmFsc2U7XG5cdEBJbnB1dCgpIHB1YmxpYyBmb3JtYXQgPSAnZGQtTU0teXl5eSc7XG5cdEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXHRASW5wdXQoKSBwdWJsaWMgY2xlYXJhYmxlID0gZmFsc2U7XG5cblx0cHVibGljIGRhdGVWYWx1ZTogRGF0ZSB8IEFycmF5PERhdGU+O1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIHBhcmVudDogRm9ybUVsZW1lbnRDb21wb25lbnQsXG5cdFx0QEhvc3QoKSBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lcixcblx0XHRASW5qZWN0KERBVEVfUElDS0VSX1RSQU5TTEFUSU9OUykgQE9wdGlvbmFsKCkgcHJpdmF0ZSB0cmFuc2xhdGlvbnM6IGFueSxcblx0KSB7XG5cdFx0c3VwZXIocGFyZW50LCBjb250cm9sQ29udGFpbmVyKTtcblx0fVxuXG5cdHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IEFycmF5PHN0cmluZz4gfCB0eXBlb2YgaW52YWxpZERhdGVLZXkpOiB2b2lkIHtcblx0XHRpZiAodmFsdWUgPT09IGludmFsaWREYXRlS2V5KSB7XG5cdFx0XHRzdXBlci53cml0ZVZhbHVlKGludmFsaWREYXRlS2V5KTtcblx0XHR9IGVsc2UgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSkge1xuXHRcdFx0dGhpcy5kYXRlVmFsdWUgPSB0aGlzLm11bHRpcGxlID8gW10gOiBudWxsO1xuXHRcdFx0c3VwZXIud3JpdGVWYWx1ZSh0aGlzLm11bHRpcGxlID8gW10gOiBudWxsKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRcdHRoaXMuZGF0ZVZhbHVlID0gdmFsdWUubWFwKChlKSA9PiBwYXJzZShlLCAneXl5eS1NTS1kZCcsIG5ldyBEYXRlKCkpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuZGF0ZVZhbHVlID0gcGFyc2UodmFsdWUsICd5eXl5LU1NLWRkJywgbmV3IERhdGUoKSk7XG5cdFx0XHR9XG5cdFx0XHRzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRkYXRlQ2hhbmdlZCh2YWx1ZTogRGF0ZSB8IEFycmF5PERhdGU+IHwgdHlwZW9mIGludmFsaWREYXRlS2V5KTogdm9pZCB7XG5cdFx0aWYgKHZhbHVlID09PSBpbnZhbGlkRGF0ZUtleSkge1xuXHRcdFx0dGhpcy5zZXRJbm5lclZhbHVlQW5kTm90aWZ5KGludmFsaWREYXRlS2V5KTtcblx0XHR9IGVsc2UgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSkge1xuXHRcdFx0dGhpcy5kYXRlVmFsdWUgPSB0aGlzLm11bHRpcGxlID8gW10gOiBudWxsO1xuXHRcdFx0dGhpcy5zZXRJbm5lclZhbHVlQW5kTm90aWZ5KHRoaXMubXVsdGlwbGUgPyBbXSA6IG51bGwpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmRhdGVWYWx1ZSA9IHZhbHVlO1xuXHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHRcdHRoaXMuc2V0SW5uZXJWYWx1ZUFuZE5vdGlmeSh2YWx1ZS5tYXAoKGUpID0+IGRhdGVGb3JtYXQoZSwgJ3l5eXktTU0tZGQnKSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5zZXRJbm5lclZhbHVlQW5kTm90aWZ5KGRhdGVGb3JtYXQodmFsdWUsICd5eXl5LU1NLWRkJykpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGdldERlZmF1bHRUcmFuc2xhdGlvbihrZXk6IHN0cmluZyk6ICh4OiBhbnkpID0+IHN0cmluZyB7XG5cdFx0c3dpdGNoIChrZXkpIHtcblx0XHRcdGNhc2UgJ3BsYWNlaG9sZGVyJzpcblx0XHRcdFx0cmV0dXJuICgpID0+ICdTZWxlY3QgZGF0ZSc7XG5cdFx0fVxuXHR9XG5cblx0Z2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtczogYW55ID0gbnVsbCk6IHN0cmluZyB7XG5cdFx0aWYgKGtleSA9PT0gJ3BsYWNlaG9sZGVyJyAmJiB0aGlzLm11bHRpcGxlKSB7XG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fVxuXHRcdGlmIChrZXkgPT09ICdwbGFjZWhvbGRlcicgJiYgc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5wbGFjZWhvbGRlcikpIHtcblx0XHRcdHJldHVybiB0aGlzLnBsYWNlaG9sZGVyO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy50cmFuc2xhdGlvbnM/LltrZXldPy4ocGFyYW1zKSA/PyB0aGlzLmdldERlZmF1bHRUcmFuc2xhdGlvbihrZXkpKHBhcmFtcyk7XG5cdH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb21wb25lbnRDb250YWluZXJcIiBbbmdDbGFzc109XCJ7c2hvd0Vycm9yczogaXNJbkVycm9yU3RhdGUoKX1cIj5cblx0PGtscC1mb3JtLWRhdGUtdGltZS1waWNrZXJcblx0XHRbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuXHRcdFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG5cdFx0WyhuZ01vZGVsKV09XCJkYXRlVmFsdWVcIlxuXHRcdChuZ01vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2VkKCRldmVudClcIlxuXHRcdFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuXHRcdFttYXhEYXRlXT1cIm1heERhdGVcIlxuXHRcdFtzYW1lTW9udGhPbmx5XT1cInNhbWVNb250aE9ubHlcIlxuXHRcdFtmb3JtYXRdPVwiZm9ybWF0XCJcblx0XHRbcGxhY2Vob2xkZXJdPVwiZ2V0VHJhbnNsYXRpb24oJ3BsYWNlaG9sZGVyJylcIlxuXHRcdFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcblx0XHRbc2hvd1RpbWVJbnB1dF09XCJmYWxzZVwiXG5cdFx0KG9uVG91Y2gpPVwidG91Y2goKVwiXG5cdD48L2tscC1mb3JtLWRhdGUtdGltZS1waWNrZXI+XG5cdDxkaXYgY2xhc3M9XCJ0YWlsXCI+XG5cdFx0PG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRUYWlsVHBsKClcIj48L25nLWNvbnRhaW5lcj5cblx0PC9kaXY+XG48L2Rpdj5cbiJdfQ==
|