@klippa/ngx-enhancy-forms 10.2.1 → 11.1.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/esm2020/klippa-ngx-enhancy-forms.mjs +5 -0
- package/esm2020/lib/elements/button/button.component.mjs +57 -0
- package/esm2020/lib/elements/checkbox/checkbox.component.mjs +23 -0
- package/esm2020/lib/elements/date-picker/date-picker.component.mjs +108 -0
- package/esm2020/lib/elements/date-time-picker/date-time-picker.component.mjs +360 -0
- package/esm2020/lib/elements/email/email-input.component.mjs +20 -0
- package/esm2020/lib/elements/file-input/file-input.component.mjs +71 -0
- package/esm2020/lib/elements/hour-minute-input/hour-minute-input.component.mjs +90 -0
- package/esm2020/lib/elements/loading-indicator/loading-indicator.component.mjs +20 -0
- package/esm2020/lib/elements/number-input/number-input.component.mjs +31 -0
- package/esm2020/lib/elements/password-field/password-field.component.mjs +21 -0
- package/esm2020/lib/elements/select/select-footer/select-footer.component.mjs +15 -0
- package/esm2020/lib/elements/select/select.component.mjs +129 -0
- package/esm2020/lib/elements/sortable-grouped-items/sortable-grouped-items.component.mjs +51 -0
- package/esm2020/lib/elements/sortable-items/sortable-items.component.mjs +70 -0
- package/esm2020/lib/elements/text-input/text-input.component.mjs +28 -0
- package/esm2020/lib/elements/toggle/toggle.component.mjs +15 -0
- package/esm2020/lib/elements/value-accessor-base/multiple-value-accessor-base.component.mjs +61 -0
- package/esm2020/lib/elements/value-accessor-base/value-accessor-base.component.mjs +144 -0
- package/esm2020/lib/form/form-caption/form-caption.component.mjs +36 -0
- package/esm2020/lib/form/form-element/form-element.component.mjs +124 -0
- package/esm2020/lib/form/form-error/form-error.component.mjs +39 -0
- package/esm2020/lib/form/form-submit-button/form-submit-button.component.mjs +61 -0
- package/esm2020/lib/form/form.component.mjs +180 -0
- package/esm2020/lib/material.module.mjs +22 -0
- package/esm2020/lib/ngx-enhancy-forms.module.mjs +158 -0
- package/esm2020/lib/types.mjs +2 -0
- package/esm2020/lib/util/arrays.mjs +45 -0
- package/esm2020/lib/util/values.mjs +23 -0
- package/esm2020/lib/validators/dateValidator.mjs +6 -0
- package/esm2020/lib/validators/timeValidator.mjs +6 -0
- package/esm2020/public-api.mjs +30 -0
- package/fesm2015/klippa-ngx-enhancy-forms.mjs +1894 -0
- package/fesm2015/klippa-ngx-enhancy-forms.mjs.map +1 -0
- package/fesm2020/klippa-ngx-enhancy-forms.mjs +1858 -0
- package/fesm2020/klippa-ngx-enhancy-forms.mjs.map +1 -0
- package/{klippa-ngx-enhancy-forms.d.ts → index.d.ts} +1 -1
- package/lib/elements/button/button.component.d.ts +3 -0
- package/lib/elements/checkbox/checkbox.component.d.ts +3 -0
- package/lib/elements/date-picker/date-picker.component.d.ts +3 -0
- package/lib/elements/date-time-picker/date-time-picker.component.d.ts +3 -0
- package/lib/elements/email/email-input.component.d.ts +3 -0
- package/lib/elements/file-input/file-input.component.d.ts +3 -0
- package/lib/elements/hour-minute-input/hour-minute-input.component.d.ts +3 -0
- package/lib/elements/loading-indicator/loading-indicator.component.d.ts +3 -0
- package/lib/elements/number-input/number-input.component.d.ts +3 -0
- package/lib/elements/password-field/password-field.component.d.ts +3 -0
- package/lib/elements/select/select-footer/select-footer.component.d.ts +3 -0
- package/lib/elements/select/select.component.d.ts +5 -0
- package/lib/elements/sortable-grouped-items/sortable-grouped-items.component.d.ts +3 -0
- package/lib/elements/sortable-items/sortable-items.component.d.ts +3 -0
- package/lib/elements/text-input/text-input.component.d.ts +3 -0
- package/lib/elements/toggle/toggle.component.d.ts +3 -0
- package/lib/elements/value-accessor-base/multiple-value-accessor-base.component.d.ts +3 -0
- package/lib/elements/value-accessor-base/value-accessor-base.component.d.ts +5 -2
- package/lib/form/form-caption/form-caption.component.d.ts +3 -0
- package/lib/form/form-element/form-element.component.d.ts +8 -5
- package/lib/form/form-error/form-error.component.d.ts +3 -0
- package/lib/form/form-submit-button/form-submit-button.component.d.ts +3 -0
- package/lib/form/form.component.d.ts +10 -5
- package/lib/material.module.d.ts +9 -0
- package/lib/ngx-enhancy-forms.module.d.ts +32 -0
- package/package.json +29 -16
- package/src/lib/form/README.md +1 -0
- package/bundles/klippa-ngx-enhancy-forms.umd.js +0 -2185
- package/bundles/klippa-ngx-enhancy-forms.umd.js.map +0 -1
- package/bundles/klippa-ngx-enhancy-forms.umd.min.js +0 -17
- package/bundles/klippa-ngx-enhancy-forms.umd.min.js.map +0 -1
- package/esm2015/klippa-ngx-enhancy-forms.js +0 -6
- package/esm2015/lib/elements/button/button.component.js +0 -50
- package/esm2015/lib/elements/checkbox/checkbox.component.js +0 -22
- package/esm2015/lib/elements/date-picker/date-picker.component.js +0 -95
- package/esm2015/lib/elements/date-time-picker/date-time-picker.component.js +0 -330
- package/esm2015/lib/elements/email/email-input.component.js +0 -21
- package/esm2015/lib/elements/file-input/file-input.component.js +0 -66
- package/esm2015/lib/elements/hour-minute-input/hour-minute-input.component.js +0 -90
- package/esm2015/lib/elements/loading-indicator/loading-indicator.component.js +0 -19
- package/esm2015/lib/elements/number-input/number-input.component.js +0 -30
- package/esm2015/lib/elements/password-field/password-field.component.js +0 -21
- package/esm2015/lib/elements/select/select-footer/select-footer.component.js +0 -15
- package/esm2015/lib/elements/select/select.component.js +0 -104
- package/esm2015/lib/elements/sortable-grouped-items/sortable-grouped-items.component.js +0 -49
- package/esm2015/lib/elements/sortable-items/sortable-items.component.js +0 -67
- package/esm2015/lib/elements/text-input/text-input.component.js +0 -25
- package/esm2015/lib/elements/toggle/toggle.component.js +0 -14
- package/esm2015/lib/elements/value-accessor-base/multiple-value-accessor-base.component.js +0 -54
- package/esm2015/lib/elements/value-accessor-base/value-accessor-base.component.js +0 -135
- package/esm2015/lib/form/form-caption/form-caption.component.js +0 -35
- package/esm2015/lib/form/form-element/form-element.component.js +0 -118
- package/esm2015/lib/form/form-error/form-error.component.js +0 -37
- package/esm2015/lib/form/form-submit-button/form-submit-button.component.js +0 -53
- package/esm2015/lib/form/form.component.js +0 -173
- package/esm2015/lib/material.module.js +0 -17
- package/esm2015/lib/ngx-enhancy-forms.module.js +0 -97
- package/esm2015/lib/types.js +0 -2
- package/esm2015/lib/util/arrays.js +0 -45
- package/esm2015/lib/util/values.js +0 -23
- package/esm2015/lib/validators/dateValidator.js +0 -6
- package/esm2015/lib/validators/timeValidator.js +0 -6
- package/esm2015/public-api.js +0 -30
- package/fesm2015/klippa-ngx-enhancy-forms.js +0 -1716
- package/fesm2015/klippa-ngx-enhancy-forms.js.map +0 -1
- package/klippa-ngx-enhancy-forms.metadata.json +0 -1
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { ControlContainer } from '@angular/forms';
|
|
2
|
-
import { Component, EventEmitter, Host, Input, Optional, Output } from '@angular/core';
|
|
3
|
-
import { FormElementComponent } from '../../form/form-element/form-element.component';
|
|
4
|
-
import { isNullOrUndefined, isValueSet, stringIsSetAndFilled } from '../../util/values';
|
|
5
|
-
import { arrayIsSetAndFilled } from '../../util/arrays';
|
|
6
|
-
/**
|
|
7
|
-
* This component is a base in order to create a component that supports ngModel.
|
|
8
|
-
* Some important things to know about it:
|
|
9
|
-
*
|
|
10
|
-
* innerValue = your own inner state, which you should use to store the current state of what ngModel should be.
|
|
11
|
-
* writeValue() = called by angular, when ngModel is changed from OUTSIDE of the component. Feel free to patch this method if you need inner logic to happen when ngModel is altered from the outside. Always remember to also call the super.writeValue if you do!
|
|
12
|
-
* setInnerValueAndNotify() = call this when you want your ngModel to be updated from INSIDE of your component, and provide it to the OUTSIDE.
|
|
13
|
-
* ngOnInit() = Used to support the angular reactive forms framework. If you use ngOnInit in your own component (which happens fairly often) you must not forget to call the super.ngOnInit() method.
|
|
14
|
-
*/
|
|
15
|
-
export class ValueAccessorBase {
|
|
16
|
-
constructor(parent, controlContainer) {
|
|
17
|
-
this.parent = parent;
|
|
18
|
-
this.controlContainer = controlContainer;
|
|
19
|
-
this.changed = new Array();
|
|
20
|
-
this.touched = new Array();
|
|
21
|
-
this.prevValue = null;
|
|
22
|
-
this.disabled = false;
|
|
23
|
-
// we support both providing just the formControlName and the full formControl
|
|
24
|
-
this.formControlName = null;
|
|
25
|
-
this.formControl = null;
|
|
26
|
-
this.onTouch = new EventEmitter();
|
|
27
|
-
this.validators = [];
|
|
28
|
-
}
|
|
29
|
-
ngOnInit() {
|
|
30
|
-
var _a, _b, _c, _d;
|
|
31
|
-
if (this.formControl) {
|
|
32
|
-
this.attachedFormControl = this.formControl;
|
|
33
|
-
}
|
|
34
|
-
else if (stringIsSetAndFilled(this.formControlName)) {
|
|
35
|
-
this.attachedFormControl = (_a = this.controlContainer) === null || _a === void 0 ? void 0 : _a.control.get(this.formControlName);
|
|
36
|
-
if (isNullOrUndefined(this.attachedFormControl)) {
|
|
37
|
-
throw new Error(`Form element '${this.formControlName}' with caption '${(_b = this.parent) === null || _b === void 0 ? void 0 : _b.caption}' is not declared in your FormGroup.`);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (this.attachedFormControl) {
|
|
41
|
-
this.disabled = this.attachedFormControl.disabled;
|
|
42
|
-
this.attachedFormControl.statusChanges.subscribe(() => {
|
|
43
|
-
this.disabled = this.attachedFormControl.disabled;
|
|
44
|
-
});
|
|
45
|
-
(_c = this.parent) === null || _c === void 0 ? void 0 : _c.registerControl(this.attachedFormControl, this);
|
|
46
|
-
if ((_d = this.attachedFormControl) === null || _d === void 0 ? void 0 : _d.validator) {
|
|
47
|
-
const vals = this.attachedFormControl.validator({});
|
|
48
|
-
if (isValueSet(vals)) {
|
|
49
|
-
this.validators = Object.keys(vals);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
this.validators = [];
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
isInErrorState() {
|
|
58
|
-
return this.attachedFormControl && this.attachedFormControl.status === 'INVALID' && this.attachedFormControl.touched;
|
|
59
|
-
}
|
|
60
|
-
ngOnDestroy() {
|
|
61
|
-
var _a;
|
|
62
|
-
if (this.attachedFormControl) {
|
|
63
|
-
(_a = this.parent) === null || _a === void 0 ? void 0 : _a.unregisterControl(this.attachedFormControl);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
touch() {
|
|
67
|
-
this.touched.forEach((f) => f());
|
|
68
|
-
}
|
|
69
|
-
writeValue(value) {
|
|
70
|
-
this.innerValue = value;
|
|
71
|
-
this.prevValue = value;
|
|
72
|
-
}
|
|
73
|
-
registerOnChange(fn) {
|
|
74
|
-
this.changed.push(fn);
|
|
75
|
-
}
|
|
76
|
-
registerOnTouched(fn) {
|
|
77
|
-
this.touched.push(fn);
|
|
78
|
-
}
|
|
79
|
-
setInnerValueAndNotify(value) {
|
|
80
|
-
const actuallySetValue = (valueToSet) => {
|
|
81
|
-
this.innerValue = valueToSet;
|
|
82
|
-
this.prevValue = valueToSet;
|
|
83
|
-
this.changed.forEach((fn) => fn(valueToSet));
|
|
84
|
-
};
|
|
85
|
-
if (isValueSet(this.innerValueChangeInterceptor)) {
|
|
86
|
-
this.latestInnerValueChangedInterceptorPromise = this.innerValueChangeInterceptor(this.prevValue, value);
|
|
87
|
-
const myPromise = this.latestInnerValueChangedInterceptorPromise;
|
|
88
|
-
this.latestInnerValueChangedInterceptorPromise.then(() => {
|
|
89
|
-
if (this.latestInnerValueChangedInterceptorPromise === myPromise) {
|
|
90
|
-
actuallySetValue(value);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
// ignore outdated promises
|
|
94
|
-
}
|
|
95
|
-
}).catch(() => {
|
|
96
|
-
if (this.latestInnerValueChangedInterceptorPromise === myPromise) {
|
|
97
|
-
actuallySetValue(this.prevValue);
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
// ignore outdated promises
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
actuallySetValue(value);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
resetToNull() {
|
|
109
|
-
this.setInnerValueAndNotify(null);
|
|
110
|
-
}
|
|
111
|
-
hasValidator(validatorName) {
|
|
112
|
-
if (arrayIsSetAndFilled(this.validators)) {
|
|
113
|
-
return this.validators.includes(validatorName);
|
|
114
|
-
}
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
ValueAccessorBase.decorators = [
|
|
119
|
-
{ type: Component, args: [{
|
|
120
|
-
selector: '',
|
|
121
|
-
template: ''
|
|
122
|
-
},] }
|
|
123
|
-
];
|
|
124
|
-
ValueAccessorBase.ctorParameters = () => [
|
|
125
|
-
{ type: FormElementComponent, decorators: [{ type: Host }, { type: Optional }] },
|
|
126
|
-
{ type: ControlContainer, decorators: [{ type: Host }, { type: Optional }] }
|
|
127
|
-
];
|
|
128
|
-
ValueAccessorBase.propDecorators = {
|
|
129
|
-
disabled: [{ type: Input }],
|
|
130
|
-
innerValueChangeInterceptor: [{ type: Input }],
|
|
131
|
-
formControlName: [{ type: Input }],
|
|
132
|
-
formControl: [{ type: Input }],
|
|
133
|
-
onTouch: [{ type: Output }]
|
|
134
|
-
};
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbmd4LWVuaGFuY3ktZm9ybXMvbmd4LWVuaGFuY3ktZm9ybXMvcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9lbGVtZW50cy92YWx1ZS1hY2Nlc3Nvci1iYXNlL3ZhbHVlLWFjY2Vzc29yLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBb0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRixPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV4RDs7Ozs7Ozs7R0FRRztBQU1ILE1BQU0sT0FBTyxpQkFBaUI7SUFrQjdCLFlBQytCLE1BQTRCLEVBQzVCLGdCQUFrQztRQURsQyxXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBbEIxRCxZQUFPLEdBQUcsSUFBSSxLQUFLLEVBQXNCLENBQUM7UUFDekMsWUFBTyxHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7UUFDbEMsY0FBUyxHQUFNLElBQUksQ0FBQztRQUVaLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFJakMsOEVBQThFO1FBQzlELG9CQUFlLEdBQVcsSUFBSSxDQUFDO1FBQy9CLGdCQUFXLEdBQWdCLElBQUksQ0FBQztRQUMvQixZQUFPLEdBQUcs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LEtBQUssQ0FBQztJQUNkLENBQUM7OztZQXJIRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLEVBQUU7Z0JBQ1osUUFBUSxFQUFFLEVBQUU7YUFDWjs7O1lBakJPLG9CQUFvQix1QkFxQ3pCLElBQUksWUFBSSxRQUFRO1lBdkNYLGdCQUFnQix1QkF3Q3JCLElBQUksWUFBSSxRQUFROzs7dUJBZGpCLEtBQUs7MENBR0wsS0FBSzs4QkFFTCxLQUFLOzBCQUNMLEtBQUs7c0JBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udHJvbENvbnRhaW5lciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtRWxlbWVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZm9ybS9mb3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQge2lzTnVsbE9yVW5kZWZpbmVkLCBpc1ZhbHVlU2V0LCBzdHJpbmdJc1NldEFuZEZpbGxlZH0gZnJvbSAnLi4vLi4vdXRpbC92YWx1ZXMnO1xuaW1wb3J0IHsgYXJyYXlJc1NldEFuZEZpbGxlZCB9IGZyb20gJy4uLy4uL3V0aWwvYXJyYXlzJztcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBhIGJhc2UgaW4gb3JkZXIgdG8gY3JlYXRlIGEgY29tcG9uZW50IHRoYXQgc3VwcG9ydHMgbmdNb2RlbC5cbiAqIFNvbWUgaW1wb3J0YW50IHRoaW5ncyB0byBrbm93IGFib3V0IGl0OlxuICpcbiAqIGlubmVyVmFsdWUgPSB5b3VyIG93biBpbm5lciBzdGF0ZSwgd2hpY2ggeW91IHNob3VsZCB1c2UgdG8gc3RvcmUgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygd2hhdCBuZ01vZGVsIHNob3VsZCBiZS5cbiAqIHdyaXRlVmFsdWUoKSA9IGNhbGxlZCBieSBhbmd1bGFyLCB3aGVuIG5nTW9kZWwgaXMgY2hhbmdlZCBmcm9tIE9VVFNJREUgb2YgdGhlIGNvbXBvbmVudC4gRmVlbCBmcmVlIHRvIHBhdGNoIHRoaXMgbWV0aG9kIGlmIHlvdSBuZWVkIGlubmVyIGxvZ2ljIHRvIGhhcHBlbiB3aGVuIG5nTW9kZWwgaXMgYWx0ZXJlZCBmcm9tIHRoZSBvdXRzaWRlLiBBbHdheXMgcmVtZW1iZXIgdG8gYWxzbyBjYWxsIHRoZSBzdXBlci53cml0ZVZhbHVlIGlmIHlvdSBkbyFcbiAqIHNldElubmVyVmFsdWVBbmROb3RpZnkoKSA9IGNhbGwgdGhpcyB3aGVuIHlvdSB3YW50IHlvdXIgbmdNb2RlbCB0byBiZSB1cGRhdGVkIGZyb20gSU5TSURFIG9mIHlvdXIgY29tcG9uZW50LCBhbmQgcHJvdmlkZSBpdCB0byB0aGUgT1VUU0lERS5cbiAqIG5nT25Jbml0KCkgPSBVc2VkIHRvIHN1cHBvcnQgdGhlIGFuZ3VsYXIgcmVhY3RpdmUgZm9ybXMgZnJhbWV3b3JrLiBJZiB5b3UgdXNlIG5nT25Jbml0IGluIHlvdXIgb3duIGNvbXBvbmVudCAod2hpY2ggaGFwcGVucyBmYWlybHkgb2Z0ZW4pIHlvdSBtdXN0IG5vdCBmb3JnZXQgdG8gY2FsbCB0aGUgc3VwZXIubmdPbkluaXQoKSBtZXRob2QuXG4gKi9cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnJyxcblx0dGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBjbGFzcyBWYWx1ZUFjY2Vzc29yQmFzZTxUPiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XG5cdHB1YmxpYyBpbm5lclZhbHVlOiBUO1xuXHRwdWJsaWMgY2hhbmdlZCA9IG5ldyBBcnJheTwodmFsdWU6IFQpID0+IHZvaWQ+KCk7XG5cdHByaXZhdGUgdG91Y2hlZCA9IG5ldyBBcnJheTwoKSA9PiB2b2lkPigpO1xuXHRwcml2YXRlIHByZXZWYWx1ZTogVCA9IG51bGw7XG5cblx0QElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cdC8vIG5lZWRlZCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9uc1xuXHRwcml2YXRlIGxhdGVzdElubmVyVmFsdWVDaGFuZ2VkSW50ZXJjZXB0b3JQcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xuXHRASW5wdXQoKSBpbm5lclZhbHVlQ2hhbmdlSW50ZXJjZXB0b3I6IChwcmV2OiBULCBjdXI6IFQpID0+IFByb21pc2U8dm9pZD47XG5cdC8vIHdlIHN1cHBvcnQgYm90aCBwcm92aWRpbmcganVzdCB0aGUgZm9ybUNvbnRyb2xOYW1lIGFuZCB0aGUgZnVsbCBmb3JtQ29udHJvbFxuXHRASW5wdXQoKSBwdWJsaWMgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcgPSBudWxsO1xuXHRASW5wdXQoKSBwdWJsaWMgZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gbnVsbDtcblx0QE91dHB1dCgpIHB1YmxpYyBvblRvdWNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG5cdHByaXZhdGUgYXR0YWNoZWRGb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XG5cdHByaXZhdGUgdmFsaWRhdG9yczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIHBhcmVudDogRm9ybUVsZW1lbnRDb21wb25lbnQsXG5cdFx0QEhvc3QoKSBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lclxuXHQpIHtcblx0fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmZvcm1Db250cm9sKSB7XG5cdFx0XHR0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sO1xuXHRcdH0gZWxzZSBpZiAoc3RyaW5nSXNTZXRBbmRGaWxsZWQodGhpcy5mb3JtQ29udHJvbE5hbWUpKSB7XG5cdFx0XHR0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wgPSB0aGlzLmNvbnRyb2xDb250YWluZXI/LmNvbnRyb2wuZ2V0KHRoaXMuZm9ybUNvbnRyb2xOYW1lKSBhcyBGb3JtQ29udHJvbDtcblx0XHRcdGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgRm9ybSBlbGVtZW50ICcke3RoaXMuZm9ybUNvbnRyb2xOYW1lfScgd2l0aCBjYXB0aW9uICcke3RoaXMucGFyZW50Py5jYXB0aW9ufScgaXMgbm90IGRlY2xhcmVkIGluIHlvdXIgRm9ybUdyb3VwLmApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAodGhpcy5hdHRhY2hlZEZvcm1Db250cm9sKSB7XG5cdFx0XHR0aGlzLmRpc2FibGVkID0gdGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLmRpc2FibGVkO1xuXHRcdFx0dGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdFx0dGhpcy5kaXNhYmxlZCA9IHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbC5kaXNhYmxlZDtcblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5wYXJlbnQ/LnJlZ2lzdGVyQ29udHJvbCh0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wsIHRoaXMpO1xuXHRcdFx0aWYgKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbD8udmFsaWRhdG9yKSB7XG5cdFx0XHRcdGNvbnN0IHZhbHMgPSB0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wudmFsaWRhdG9yKHt9IGFzIGFueSk7XG5cdFx0XHRcdGlmIChpc1ZhbHVlU2V0KHZhbHMpKSB7XG5cdFx0XHRcdFx0dGhpcy52YWxpZGF0b3JzID0gT2JqZWN0LmtleXModmFscyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy52YWxpZGF0b3JzID0gW107XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpc0luRXJyb3JTdGF0ZSgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5hdHRhY2hlZEZvcm1Db250cm9sICYmIHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbC5zdGF0dXMgPT09ICdJTlZBTElEJyAmJiB0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wudG91Y2hlZDtcblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wpIHtcblx0XHRcdHRoaXMucGFyZW50Py51bnJlZ2lzdGVyQ29udHJvbCh0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wpO1xuXHRcdH1cblx0fVxuXG5cdHRvdWNoKCk6IHZvaWQge1xuXHRcdHRoaXMudG91Y2hlZC5mb3JFYWNoKChmKSA9PiBmKCkpO1xuXHR9XG5cblx0d3JpdGVWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuXHRcdHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlO1xuXHRcdHRoaXMucHJldlZhbHVlID0gdmFsdWU7XG5cdH1cblxuXHRyZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IFQpID0+IHZvaWQpOiB2b2lkIHtcblx0XHR0aGlzLmNoYW5nZWQucHVzaChmbik7XG5cdH1cblxuXHRyZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuXHRcdHRoaXMudG91Y2hlZC5wdXNoKGZuKTtcblx0fVxuXG5cdHNldElubmVyVmFsdWVBbmROb3RpZnkodmFsdWU6IFQpOiB2b2lkIHtcblx0XHRjb25zdCBhY3R1YWxseVNldFZhbHVlID0gKHZhbHVlVG9TZXQ6IFQpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlVG9TZXQ7XG5cdFx0XHR0aGlzLnByZXZWYWx1ZSA9IHZhbHVlVG9TZXQ7XG5cdFx0XHR0aGlzLmNoYW5nZWQuZm9yRWFjaCgoZm4pID0+IGZuKHZhbHVlVG9TZXQpKTtcblx0XHR9O1xuXHRcdGlmIChpc1ZhbHVlU2V0KHRoaXMuaW5uZXJWYWx1ZUNoYW5nZUludGVyY2VwdG9yKSkge1xuXHRcdFx0dGhpcy5sYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZSA9IHRoaXMuaW5uZXJWYWx1ZUNoYW5nZUludGVyY2VwdG9yKHRoaXMucHJldlZhbHVlLCB2YWx1ZSk7XG5cdFx0XHRjb25zdCBteVByb21pc2UgPSB0aGlzLmxhdGVzdElubmVyVmFsdWVDaGFuZ2VkSW50ZXJjZXB0b3JQcm9taXNlO1xuXHRcdFx0dGhpcy5sYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZS50aGVuKCgpID0+IHtcblx0XHRcdFx0aWYgKHRoaXMubGF0ZXN0SW5uZXJWYWx1ZUNoYW5nZWRJbnRlcmNlcHRvclByb21pc2UgPT09IG15UHJvbWlzZSkge1xuXHRcdFx0XHRcdGFjdHVhbGx5U2V0VmFsdWUodmFsdWUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIGlnbm9yZSBvdXRkYXRlZCBwcm9taXNlc1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmxhdGVzdElubmVyVmFsdWVDaGFuZ2VkSW50ZXJjZXB0b3JQcm9taXNlID09PSBteVByb21pc2UpIHtcblx0XHRcdFx0XHRhY3R1YWxseVNldFZhbHVlKHRoaXMucHJldlZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBpZ25vcmUgb3V0ZGF0ZWQgcHJvbWlzZXNcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFjdHVhbGx5U2V0VmFsdWUodmFsdWUpO1xuXHRcdH1cblx0fVxuXG5cdHJlc2V0VG9OdWxsKCk6IHZvaWQge1xuXHRcdHRoaXMuc2V0SW5uZXJWYWx1ZUFuZE5vdGlmeShudWxsKTtcblx0fVxuXG5cdGhhc1ZhbGlkYXRvcih2YWxpZGF0b3JOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRpZiAoYXJyYXlJc1NldEFuZEZpbGxlZCh0aGlzLnZhbGlkYXRvcnMpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy52YWxpZGF0b3JzLmluY2x1ZGVzKHZhbGlkYXRvck5hbWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { Component, Host, Optional, ViewChild } from '@angular/core';
|
|
2
|
-
import { FormElementComponent } from "../form-element/form-element.component";
|
|
3
|
-
import { isNullOrUndefined } from "../../util/values";
|
|
4
|
-
export class FormCaptionComponent {
|
|
5
|
-
constructor(parent) {
|
|
6
|
-
this.parent = parent;
|
|
7
|
-
}
|
|
8
|
-
ngOnInit() {
|
|
9
|
-
// this is being run next cycle, because we dont want to fail if the order of components is as follows:
|
|
10
|
-
// <app-form-error />
|
|
11
|
-
// <some-input />
|
|
12
|
-
// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet
|
|
13
|
-
setTimeout(() => {
|
|
14
|
-
const attachedControl = this.parent.getAttachedControl();
|
|
15
|
-
this.parent.registerCaption(this.contentRef);
|
|
16
|
-
if (isNullOrUndefined(attachedControl)) {
|
|
17
|
-
throw new Error('You added a Form Caption component without an attached Form Control');
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
FormCaptionComponent.decorators = [
|
|
23
|
-
{ type: Component, args: [{
|
|
24
|
-
selector: 'klp-form-caption',
|
|
25
|
-
template: "<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\n",
|
|
26
|
-
styles: [":host{display:block}"]
|
|
27
|
-
},] }
|
|
28
|
-
];
|
|
29
|
-
FormCaptionComponent.ctorParameters = () => [
|
|
30
|
-
{ type: FormElementComponent, decorators: [{ type: Host }, { type: Optional }] }
|
|
31
|
-
];
|
|
32
|
-
FormCaptionComponent.propDecorators = {
|
|
33
|
-
contentRef: [{ type: ViewChild, args: ['contentRef',] }]
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jYXB0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9uZ3gtZW5oYW5jeS1mb3Jtcy9uZ3gtZW5oYW5jeS1mb3Jtcy9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjLyIsInNvdXJjZXMiOlsibGliL2Zvcm0vZm9ybS1jYXB0aW9uL2Zvcm0tY2FwdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxJQUFJLEVBQVUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQU9wRCxNQUFNLE9BQU8sb0JBQW9CO0lBR2hDLFlBQXdDLE1BQTRCO1FBQTVCLFdBQU0sR0FBTixNQUFNLENBQXNCO0lBQUcsQ0FBQztJQUV4RSxRQUFRO1FBQ1AsdUdBQXVHO1FBQ3ZHLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsOEhBQThIO1FBQzlILFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLElBQUksaUJBQWlCLENBQUMsZUFBZSxDQUFDLEVBQUU7Z0JBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQzthQUN2RjtRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7O1lBdEJELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixvRkFBNEM7O2FBRTVDOzs7WUFQTyxvQkFBb0IsdUJBV2QsSUFBSSxZQUFJLFFBQVE7Ozt5QkFGNUIsU0FBUyxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3QsIE9uSW5pdCwgT3B0aW9uYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtRWxlbWVudENvbXBvbmVudH0gZnJvbSBcIi4uL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50XCI7XG5pbXBvcnQge2lzTnVsbE9yVW5kZWZpbmVkfSBmcm9tIFwiLi4vLi4vdXRpbC92YWx1ZXNcIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tY2FwdGlvbicsXG5cdHRlbXBsYXRlVXJsOiAnLi9mb3JtLWNhcHRpb24uY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9mb3JtLWNhcHRpb24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUNhcHRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXHRAVmlld0NoaWxkKCdjb250ZW50UmVmJykgcHVibGljIGNvbnRlbnRSZWY6IEVsZW1lbnRSZWY7XG5cblx0Y29uc3RydWN0b3IoQEhvc3QoKSBAT3B0aW9uYWwoKSBwcml2YXRlIHBhcmVudDogRm9ybUVsZW1lbnRDb21wb25lbnQpIHt9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0Ly8gdGhpcyBpcyBiZWluZyBydW4gbmV4dCBjeWNsZSwgYmVjYXVzZSB3ZSBkb250IHdhbnQgdG8gZmFpbCBpZiB0aGUgb3JkZXIgb2YgY29tcG9uZW50cyBpcyBhcyBmb2xsb3dzOlxuXHRcdC8vIDxhcHAtZm9ybS1lcnJvciAvPlxuXHRcdC8vIDxzb21lLWlucHV0IC8+XG5cdFx0Ly8gVGhhdCB3b3VsZCBmYWlsLCBiZWNhdXNlIHRoZSBsb2dpYyBvZiB0aGUgZm9ybSBlcnJvciBpcyBydW4gZmlyc3QsIGFuZCBhdCB0aGF0IG1vbWVudCwgdGhlIGBzb21lLWlucHV0YCBpc250IHJlZ2lzdGVyZWQgeWV0XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRjb25zdCBhdHRhY2hlZENvbnRyb2wgPSB0aGlzLnBhcmVudC5nZXRBdHRhY2hlZENvbnRyb2woKTtcblx0XHRcdHRoaXMucGFyZW50LnJlZ2lzdGVyQ2FwdGlvbih0aGlzLmNvbnRlbnRSZWYpO1xuXHRcdFx0aWYgKGlzTnVsbE9yVW5kZWZpbmVkKGF0dGFjaGVkQ29udHJvbCkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdZb3UgYWRkZWQgYSBGb3JtIENhcHRpb24gY29tcG9uZW50IHdpdGhvdXQgYW4gYXR0YWNoZWQgRm9ybSBDb250cm9sJyk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { Component, Host, Inject, InjectionToken, Input, Optional, ViewChild } from '@angular/core';
|
|
2
|
-
import { FormComponent } from '../form.component';
|
|
3
|
-
import { isValueSet } from '../../util/values';
|
|
4
|
-
export const FORM_ERROR_MESSAGES = new InjectionToken('form.error.messages');
|
|
5
|
-
export const DEFAULT_ERROR_MESSAGES = {
|
|
6
|
-
min: 'Use a number larger than %min%',
|
|
7
|
-
max: 'Use a number smaller than %max%',
|
|
8
|
-
required: 'This field is required',
|
|
9
|
-
email: 'Use a valid email address',
|
|
10
|
-
minLength: 'Has to be longer than %minLength% character(s)',
|
|
11
|
-
maxLength: 'Has to be shorter than %maxLength% character(s)',
|
|
12
|
-
pattern: 'This input is not valid',
|
|
13
|
-
matchPassword: 'Passwords must match',
|
|
14
|
-
date: 'Enter a valid date',
|
|
15
|
-
};
|
|
16
|
-
export class FormElementComponent {
|
|
17
|
-
constructor(parent, customMessages) {
|
|
18
|
-
this.parent = parent;
|
|
19
|
-
this.customMessages = customMessages;
|
|
20
|
-
this.direction = 'horizontal';
|
|
21
|
-
this.captionSpacing = 'percentages';
|
|
22
|
-
this.spaceDistribution = '40-60';
|
|
23
|
-
this.swapInputAndCaption = false;
|
|
24
|
-
this.errorMessages = DEFAULT_ERROR_MESSAGES;
|
|
25
|
-
this.customErrorHandlers = [];
|
|
26
|
-
}
|
|
27
|
-
shouldShowErrorMessages() {
|
|
28
|
-
var _a;
|
|
29
|
-
return ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.showErrorMessages) !== false;
|
|
30
|
-
}
|
|
31
|
-
substituteParameters(message, parameters) {
|
|
32
|
-
return Object.keys(parameters).reduce((msg, key) => {
|
|
33
|
-
return msg.replace(`%${key}%`, parameters[key]);
|
|
34
|
-
}, message);
|
|
35
|
-
}
|
|
36
|
-
registerControl(formControl, input = null) {
|
|
37
|
-
this.attachedControl = formControl;
|
|
38
|
-
this.parent.registerControl(formControl, this);
|
|
39
|
-
this.input = input;
|
|
40
|
-
}
|
|
41
|
-
unregisterControl(formControl) {
|
|
42
|
-
this.attachedControl = null;
|
|
43
|
-
this.parent.unregisterControl(formControl);
|
|
44
|
-
}
|
|
45
|
-
getAttachedControl() {
|
|
46
|
-
return this.attachedControl;
|
|
47
|
-
}
|
|
48
|
-
registerErrorHandler(error, templateRef) {
|
|
49
|
-
this.customErrorHandlers.push({ error, templateRef });
|
|
50
|
-
}
|
|
51
|
-
registerCaption(templateRef) {
|
|
52
|
-
this.captionRef = templateRef;
|
|
53
|
-
}
|
|
54
|
-
getErrorToShow() {
|
|
55
|
-
var _a, _b, _c;
|
|
56
|
-
if (((_a = this.attachedControl) === null || _a === void 0 ? void 0 : _a.touched) === true && ((_b = this.attachedControl) === null || _b === void 0 ? void 0 : _b.errors)) {
|
|
57
|
-
return Object.keys((_c = this.attachedControl) === null || _c === void 0 ? void 0 : _c.errors)[0];
|
|
58
|
-
}
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
getCustomErrorHandler(error) {
|
|
62
|
-
return this.customErrorHandlers.find((e) => e.error === error);
|
|
63
|
-
}
|
|
64
|
-
showDefaultError(error) {
|
|
65
|
-
return this.getErrorToShow() === error && !this.customErrorHandlers.some((e) => e.error === error);
|
|
66
|
-
}
|
|
67
|
-
getScrollableParent(node) {
|
|
68
|
-
if (node == null) {
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
if (node.scrollHeight > node.clientHeight) {
|
|
72
|
-
return node;
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
return this.getScrollableParent(node.parentNode);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
scrollTo() {
|
|
79
|
-
var _a;
|
|
80
|
-
this.internalComponentRef.nativeElement.scrollIntoView(true);
|
|
81
|
-
// to give some breathing room, we scroll 100px more to the top
|
|
82
|
-
(_a = this.getScrollableParent(this.internalComponentRef.nativeElement)) === null || _a === void 0 ? void 0 : _a.scrollBy(0, -100);
|
|
83
|
-
}
|
|
84
|
-
isRequired() {
|
|
85
|
-
if (isValueSet(this.input)) {
|
|
86
|
-
return this.input.hasValidator('required');
|
|
87
|
-
}
|
|
88
|
-
return false;
|
|
89
|
-
}
|
|
90
|
-
getErrorMessage(key) {
|
|
91
|
-
var _a, _b, _c;
|
|
92
|
-
return (_c = (_b = (_a = this.customMessages) === null || _a === void 0 ? void 0 : _a[key]) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : this.errorMessages[key];
|
|
93
|
-
}
|
|
94
|
-
getErrorLocation() {
|
|
95
|
-
var _a, _b;
|
|
96
|
-
return (_b = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.errorMessageLocation) !== null && _b !== void 0 ? _b : 'belowCaption';
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
FormElementComponent.decorators = [
|
|
100
|
-
{ type: Component, args: [{
|
|
101
|
-
selector: 'klp-form-element',
|
|
102
|
-
template: "<ng-template #errorRef>\n\t<div *ngIf=\"shouldShowErrorMessages() && getErrorToShow()\" class=\"errorContainer\" [ngClass]=\"{hasCaption: caption || captionRef, 'd30-70': spaceDistribution === '30-70'}\">\n\t\t<div *ngIf=\"showDefaultError('min')\">{{substituteParameters(getErrorMessage(\"min\"), {min: attachedControl.errors.min.min})}}</div>\n\t\t<div *ngIf=\"showDefaultError('max')\">{{substituteParameters(getErrorMessage(\"max\"), {max: attachedControl.errors.max.max})}}</div>\n\t\t<div *ngIf=\"showDefaultError('required')\">{{getErrorMessage(\"required\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('email')\">{{getErrorMessage(\"email\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('minlength')\">{{substituteParameters(getErrorMessage(\"minLength\"), {minLength: attachedControl.errors.minlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('maxlength')\">{{substituteParameters(getErrorMessage(\"maxLength\"), {maxLength: attachedControl.errors.maxlength.requiredLength})}}</div>\n\t\t<div *ngIf=\"showDefaultError('pattern')\">{{getErrorMessage(\"pattern\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('MatchPassword')\">{{getErrorMessage(\"matchPassword\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('date')\">{{getErrorMessage(\"date\")}}</div>\n\t\t<div *ngIf=\"showDefaultError('message')\">{{attachedControl.errors.message.value}}</div>\n\t\t<div [ngTemplateOutlet]=\"getCustomErrorHandler(getErrorToShow())?.templateRef\"></div>\n\t</div>\n</ng-template>\n\n<ng-container *ngIf=\"direction === 'horizontal'\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\n<div class=\"componentContainer\" [ngClass]=\"{hasCaption: caption || captionRef, vertical: direction === 'vertical', reverseOrder: swapInputAndCaption}\" #internalComponentRef>\n\t<div class=\"caption\" *ngIf=\"caption || captionRef\"\n\t\t[ngClass]=\"{\n\t\t\thasErrors: getErrorToShow() && attachedControl.touched,\n\t\t\tpercentageSpacing: captionSpacing === 'percentages', 'd30-70': spaceDistribution === '30-70',\n\t\t\twithErrorRightOfCaption: getErrorLocation() === 'rightOfCaption'\n\t\t}\"\n\t>\n\t\t<div *ngIf=\"captionRef\" class=\"captionRefContainer\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"captionRef\"></ng-container>\n\t\t\t<div *ngIf=\"isRequired()\"> *</div>\n\t\t</div>\n\t\t<div *ngIf=\"!captionRef\">{{caption}}<span *ngIf=\"isRequired()\"> *</span></div>\n\t\t<div class=\"rightOfCaptionError\">\n\t\t\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'rightOfCaption'\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t</div>\n\t</div>\n\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'belowCaption'\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t<div class=\"inputContainer\" [ngClass]=\"{ percentageSpacing: captionSpacing === 'percentages', 'd30-70': spaceDistribution === '30-70' }\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n",
|
|
103
|
-
styles: [":host{display:block}.componentContainer{align-items:center;display:flex;min-height:42px}.componentContainer:not(.hasCaption){display:block}.componentContainer:not(.hasCaption) .inputContainer{margin-top:0}.componentContainer.reverseOrder{flex-direction:row-reverse;justify-content:flex-end}.componentContainer.vertical{display:block}.componentContainer.vertical .inputContainer{margin-top:.3125rem}.componentContainer.vertical .errorContainer{margin-left:0}.componentContainer.vertical .caption{padding-right:0}.captionRefContainer{display:flex}.caption{color:#515365;flex:0 0 auto;font-weight:700;padding-right:1.25rem}.caption.percentageSpacing{flex:0 0 40%}.caption.percentageSpacing.d30-70{flex-basis:30%}.caption.hasErrors{color:#ff8000}.caption.withErrorRightOfCaption{display:flex;gap:2.5rem;justify-content:space-between}.caption.withErrorRightOfCaption .rightOfCaptionError{font-weight:400;overflow:hidden}.caption.withErrorRightOfCaption .rightOfCaptionError *{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inputContainer{flex:1}.inputContainer.percentageSpacing{flex:0 0 60%}.inputContainer.percentageSpacing.d30-70{flex-basis:70%}.errorContainer{color:#ff8000}.errorContainer.hasCaption{margin-left:40%}.errorContainer.hasCaption.d30-70{margin-left:30%}"]
|
|
104
|
-
},] }
|
|
105
|
-
];
|
|
106
|
-
FormElementComponent.ctorParameters = () => [
|
|
107
|
-
{ type: FormComponent, decorators: [{ type: Host }, { type: Optional }] },
|
|
108
|
-
{ type: undefined, decorators: [{ type: Inject, args: [FORM_ERROR_MESSAGES,] }, { type: Optional }] }
|
|
109
|
-
];
|
|
110
|
-
FormElementComponent.propDecorators = {
|
|
111
|
-
caption: [{ type: Input }],
|
|
112
|
-
direction: [{ type: Input }],
|
|
113
|
-
captionSpacing: [{ type: Input }],
|
|
114
|
-
spaceDistribution: [{ type: Input }],
|
|
115
|
-
swapInputAndCaption: [{ type: Input }],
|
|
116
|
-
internalComponentRef: [{ type: ViewChild, args: ['internalComponentRef',] }]
|
|
117
|
-
};
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9uZ3gtZW5oYW5jeS1mb3Jtcy9uZ3gtZW5oYW5jeS1mb3Jtcy9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjLyIsInNvdXJjZXMiOlsibGliL2Zvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBeUIsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakksT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBR2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IscUJBQXFCLENBQUMsQ0FBQztBQUVsRyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBc0I7SUFDeEQsR0FBRyxFQUFFLGdDQUFnQztJQUNyQyxHQUFHLEVBQUUsaUNBQWlDO0lBQ3RDLFFBQVEsRUFBRSx3QkFBd0I7SUFDbEMsS0FBSyxFQUFFLDJCQUEyQjtJQUNsQyxTQUFTLEVBQUUsZ0RBQWdEO0lBQzNELFNBQVMsRUFBRSxpREFBaUQ7SUFDNUQsT0FBTyxFQUFFLHlCQUF5QjtJQUNsQyxhQUFhLEVBQUUsc0JBQXNCO0lBQ3JDLElBQUksRUFBRSxvQkFBb0I7Q0FDMUIsQ0FBQztBQU9GLE1BQU0sT0FBTyxvQkFBb0I7SUFjaEMsWUFDNkIsTUFBcUIsRUFDQSxjQUFtQztRQUR4RCxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ0EsbUJBQWMsR0FBZCxjQUFjLENBQXFCO1FBYnJFLGNBQVMsR0FBOEIsWUFBWSxDQUFDO1FBQ3BELG1CQUFjLEdBQTJCLGFBQWEsQ0FBQztRQUN2RCxzQkFBaUIsR0FBc0IsT0FBTyxDQUFDO1FBQy9DLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUk5QyxrQkFBYSxHQUFzQixzQkFBc0IsQ0FBQztRQUMxRCx3QkFBbUIsR0FBc0QsRUFBRSxDQUFDO0lBT25GLENBQUM7SUFFTSx1QkFBdUI7O1FBQzdCLE9BQU8sT0FBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxpQkFBaUIsTUFBSyxLQUFLLENBQUM7SUFDakQsQ0FBQztJQUVNLG9CQUFvQixDQUFDLE9BQWUsRUFBRSxVQUErQjtRQUMzRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2xELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pELENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFTSxlQUFlLENBQUMsV0FBd0IsRUFBRSxRQUFnQyxJQUFJO1FBQ3BGLElBQUksQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRU0saUJBQWlCLENBQUMsV0FBd0I7UUFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM3QixDQUFDO0lBRU0sb0JBQW9CLENBQUMsS0FBYSxFQUFFLFdBQXVCO1FBQ2pFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sZUFBZSxDQUFDLFdBQXVCO1FBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjOztRQUNiLElBQUksT0FBQSxJQUFJLENBQUMsZUFBZSwwQ0FBRSxPQUFPLE1BQUssSUFBSSxXQUFJLElBQUksQ0FBQyxlQUFlLDBDQUFFLE1BQU0sQ0FBQSxFQUFFO1lBQzNFLE9BQU8sTUFBTSxDQUFDLElBQUksT0FBQyxJQUFJLENBQUMsZUFBZSwwQ0FBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQWE7UUFDbEMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQUk7UUFDdkIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ2pCLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUMxQyxPQUFPLElBQUksQ0FBQztTQUNaO2FBQU07WUFDTixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDakQ7SUFDRixDQUFDO0lBRUQsUUFBUTs7UUFDUCxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RCwrREFBK0Q7UUFDL0QsTUFBQSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQywwQ0FBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFO0lBQ3RGLENBQUM7SUFFRCxVQUFVO1FBQ1QsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDM0M7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBNEI7O1FBQzNDLHlCQUFPLElBQUksQ0FBQyxjQUFjLDBDQUFHLEdBQUcsc0ZBQVMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU0sZ0JBQWdCOztRQUN0QixtQkFBTyxJQUFJLENBQUMsTUFBTSwwQ0FBRSxvQkFBb0IsbUNBQUksY0FBYyxDQUFDO0lBQzVELENBQUM7OztZQXZHRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsKzNGQUE0Qzs7YUFFNUM7OztZQXZCTyxhQUFhLHVCQXVDbEIsSUFBSSxZQUFJLFFBQVE7NENBQ2hCLE1BQU0sU0FBQyxtQkFBbUIsY0FBRyxRQUFROzs7c0JBZHRDLEtBQUs7d0JBQ0wsS0FBSzs2QkFDTCxLQUFLO2dDQUNMLEtBQUs7a0NBQ0wsS0FBSzttQ0FDTCxTQUFTLFNBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdCwgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gJy4uL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7Q3VzdG9tRXJyb3JNZXNzYWdlcywgRm9ybUVycm9yTWVzc2FnZXN9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFZhbHVlQWNjZXNzb3JCYXNlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdmFsdWUtYWNjZXNzb3ItYmFzZS92YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpc1ZhbHVlU2V0IH0gZnJvbSAnLi4vLi4vdXRpbC92YWx1ZXMnO1xuXG5leHBvcnQgY29uc3QgRk9STV9FUlJPUl9NRVNTQUdFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDdXN0b21FcnJvck1lc3NhZ2VzPignZm9ybS5lcnJvci5tZXNzYWdlcycpO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFUzogRm9ybUVycm9yTWVzc2FnZXMgPSB7XG5cdG1pbjogJ1VzZSBhIG51bWJlciBsYXJnZXIgdGhhbiAlbWluJScsXG5cdG1heDogJ1VzZSBhIG51bWJlciBzbWFsbGVyIHRoYW4gJW1heCUnLFxuXHRyZXF1aXJlZDogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnLFxuXHRlbWFpbDogJ1VzZSBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxuXHRtaW5MZW5ndGg6ICdIYXMgdG8gYmUgbG9uZ2VyIHRoYW4gJW1pbkxlbmd0aCUgY2hhcmFjdGVyKHMpJyxcblx0bWF4TGVuZ3RoOiAnSGFzIHRvIGJlIHNob3J0ZXIgdGhhbiAlbWF4TGVuZ3RoJSBjaGFyYWN0ZXIocyknLFxuXHRwYXR0ZXJuOiAnVGhpcyBpbnB1dCBpcyBub3QgdmFsaWQnLFxuXHRtYXRjaFBhc3N3b3JkOiAnUGFzc3dvcmRzIG11c3QgbWF0Y2gnLFxuXHRkYXRlOiAnRW50ZXIgYSB2YWxpZCBkYXRlJyxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2tscC1mb3JtLWVsZW1lbnQnLFxuXHR0ZW1wbGF0ZVVybDogJy4vZm9ybS1lbGVtZW50LmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZm9ybS1lbGVtZW50LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50Q29tcG9uZW50IHtcblx0cHVibGljIGF0dGFjaGVkQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuXHRASW5wdXQoKSBwdWJsaWMgY2FwdGlvbjogc3RyaW5nO1xuXHRASW5wdXQoKSBwdWJsaWMgZGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ2hvcml6b250YWwnO1xuXHRASW5wdXQoKSBwdWJsaWMgY2FwdGlvblNwYWNpbmc6ICdwZXJjZW50YWdlcycgfCAnbm9uZScgPSAncGVyY2VudGFnZXMnO1xuXHRASW5wdXQoKSBwdWJsaWMgc3BhY2VEaXN0cmlidXRpb246ICc0MC02MCcgfCAnMzAtNzAnID0gJzQwLTYwJztcblx0QElucHV0KCkgcHVibGljIHN3YXBJbnB1dEFuZENhcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcblx0QFZpZXdDaGlsZCgnaW50ZXJuYWxDb21wb25lbnRSZWYnKSBwdWJsaWMgaW50ZXJuYWxDb21wb25lbnRSZWY6IEVsZW1lbnRSZWY7XG5cblx0cHVibGljIGNhcHRpb25SZWY6IEVsZW1lbnRSZWY7XG5cdHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBGb3JtRXJyb3JNZXNzYWdlcyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVM7XG5cdHB1YmxpYyBjdXN0b21FcnJvckhhbmRsZXJzOiBBcnJheTx7IGVycm9yOiBzdHJpbmc7IHRlbXBsYXRlUmVmOiBFbGVtZW50UmVmIH0+ID0gW107XG5cdHByaXZhdGUgaW5wdXQ6IFZhbHVlQWNjZXNzb3JCYXNlPGFueT47XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0QEhvc3QoKSBAT3B0aW9uYWwoKSBwcml2YXRlIHBhcmVudDogRm9ybUNvbXBvbmVudCxcblx0XHRASW5qZWN0KEZPUk1fRVJST1JfTUVTU0FHRVMpIEBPcHRpb25hbCgpIHByaXZhdGUgY3VzdG9tTWVzc2FnZXM6IEN1c3RvbUVycm9yTWVzc2FnZXMsXG5cdCkge1xuXHR9XG5cblx0cHVibGljIHNob3VsZFNob3dFcnJvck1lc3NhZ2VzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLnBhcmVudD8uc2hvd0Vycm9yTWVzc2FnZXMgIT09IGZhbHNlO1xuXHR9XG5cblx0cHVibGljIHN1YnN0aXR1dGVQYXJhbWV0ZXJzKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZyB7XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLnJlZHVjZSgobXNnLCBrZXkpID0+IHtcblx0XHRcdHJldHVybiBtc2cucmVwbGFjZShgJSR7a2V5fSVgLCBwYXJhbWV0ZXJzW2tleV0pO1xuXHRcdH0sIG1lc3NhZ2UpO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbDogRm9ybUNvbnRyb2wsIGlucHV0OiBWYWx1ZUFjY2Vzc29yQmFzZTxhbnk+ID0gbnVsbCk6IHZvaWQge1xuXHRcdHRoaXMuYXR0YWNoZWRDb250cm9sID0gZm9ybUNvbnRyb2w7XG5cdFx0dGhpcy5wYXJlbnQucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sLCB0aGlzKTtcblx0XHR0aGlzLmlucHV0ID0gaW5wdXQ7XG5cdH1cblxuXHRwdWJsaWMgdW5yZWdpc3RlckNvbnRyb2woZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sKTogdm9pZCB7XG5cdFx0dGhpcy5hdHRhY2hlZENvbnRyb2wgPSBudWxsO1xuXHRcdHRoaXMucGFyZW50LnVucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRBdHRhY2hlZENvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcblx0XHRyZXR1cm4gdGhpcy5hdHRhY2hlZENvbnRyb2w7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJFcnJvckhhbmRsZXIoZXJyb3I6IHN0cmluZywgdGVtcGxhdGVSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcblx0XHR0aGlzLmN1c3RvbUVycm9ySGFuZGxlcnMucHVzaCh7ZXJyb3IsIHRlbXBsYXRlUmVmfSk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJDYXB0aW9uKHRlbXBsYXRlUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG5cdFx0dGhpcy5jYXB0aW9uUmVmID0gdGVtcGxhdGVSZWY7XG5cdH1cblxuXHRnZXRFcnJvclRvU2hvdygpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLmF0dGFjaGVkQ29udHJvbD8udG91Y2hlZCA9PT0gdHJ1ZSAmJiB0aGlzLmF0dGFjaGVkQ29udHJvbD8uZXJyb3JzKSB7XG5cdFx0XHRyZXR1cm4gT2JqZWN0LmtleXModGhpcy5hdHRhY2hlZENvbnRyb2w/LmVycm9ycylbMF07XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Z2V0Q3VzdG9tRXJyb3JIYW5kbGVyKGVycm9yOiBzdHJpbmcpOiB7IGVycm9yOiBzdHJpbmc7IHRlbXBsYXRlUmVmOiBFbGVtZW50UmVmIH0ge1xuXHRcdHJldHVybiB0aGlzLmN1c3RvbUVycm9ySGFuZGxlcnMuZmluZCgoZSkgPT4gZS5lcnJvciA9PT0gZXJyb3IpO1xuXHR9XG5cblx0c2hvd0RlZmF1bHRFcnJvcihlcnJvcjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0RXJyb3JUb1Nob3coKSA9PT0gZXJyb3IgJiYgIXRoaXMuY3VzdG9tRXJyb3JIYW5kbGVycy5zb21lKChlKSA9PiBlLmVycm9yID09PSBlcnJvcik7XG5cdH1cblxuXHRnZXRTY3JvbGxhYmxlUGFyZW50KG5vZGUpOiBhbnkge1xuXHRcdGlmIChub2RlID09IG51bGwpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAobm9kZS5zY3JvbGxIZWlnaHQgPiBub2RlLmNsaWVudEhlaWdodCkge1xuXHRcdFx0cmV0dXJuIG5vZGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFNjcm9sbGFibGVQYXJlbnQobm9kZS5wYXJlbnROb2RlKTtcblx0XHR9XG5cdH1cblxuXHRzY3JvbGxUbygpOiB2b2lke1xuXHRcdHRoaXMuaW50ZXJuYWxDb21wb25lbnRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh0cnVlKTtcblx0XHQvLyB0byBnaXZlIHNvbWUgYnJlYXRoaW5nIHJvb20sIHdlIHNjcm9sbCAxMDBweCBtb3JlIHRvIHRoZSB0b3Bcblx0XHR0aGlzLmdldFNjcm9sbGFibGVQYXJlbnQodGhpcy5pbnRlcm5hbENvbXBvbmVudFJlZi5uYXRpdmVFbGVtZW50KT8uc2Nyb2xsQnkoMCwgLTEwMCk7XG5cdH1cblxuXHRpc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xuXHRcdGlmIChpc1ZhbHVlU2V0KHRoaXMuaW5wdXQpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pbnB1dC5oYXNWYWxpZGF0b3IoJ3JlcXVpcmVkJyk7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGdldEVycm9yTWVzc2FnZShrZXk6IGtleW9mIEZvcm1FcnJvck1lc3NhZ2VzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5jdXN0b21NZXNzYWdlcz8uW2tleV0/LigpID8/IHRoaXMuZXJyb3JNZXNzYWdlc1trZXldO1xuXHR9XG5cblx0cHVibGljIGdldEVycm9yTG9jYXRpb24oKTogJ2JlbG93Q2FwdGlvbicgfCAncmlnaHRPZkNhcHRpb24nIHtcblx0XHRyZXR1cm4gdGhpcy5wYXJlbnQ/LmVycm9yTWVzc2FnZUxvY2F0aW9uID8/ICdiZWxvd0NhcHRpb24nO1xuXHR9XG59XG4iXX0=
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Component, Host, Input, Optional, ViewChild } from '@angular/core';
|
|
2
|
-
import { FormElementComponent } from "../form-element/form-element.component";
|
|
3
|
-
import { isNullOrUndefined } from "../../util/values";
|
|
4
|
-
export class FormErrorComponent {
|
|
5
|
-
constructor(parent) {
|
|
6
|
-
this.parent = parent;
|
|
7
|
-
this.showError = false;
|
|
8
|
-
}
|
|
9
|
-
ngOnInit() {
|
|
10
|
-
// this is being run next cycle, because we dont want to fail if the order of components is as follows:
|
|
11
|
-
// <app-form-error />
|
|
12
|
-
// <some-input />
|
|
13
|
-
// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet
|
|
14
|
-
setTimeout(() => {
|
|
15
|
-
const attachedControl = this.parent.getAttachedControl();
|
|
16
|
-
this.parent.registerErrorHandler(this.error, this.contentRef);
|
|
17
|
-
if (isNullOrUndefined(attachedControl)) {
|
|
18
|
-
throw new Error('You added a Form Error component without an attached Form Control');
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
FormErrorComponent.decorators = [
|
|
24
|
-
{ type: Component, args: [{
|
|
25
|
-
selector: 'klp-form-error',
|
|
26
|
-
template: "<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\n",
|
|
27
|
-
styles: [":host{display:block}"]
|
|
28
|
-
},] }
|
|
29
|
-
];
|
|
30
|
-
FormErrorComponent.ctorParameters = () => [
|
|
31
|
-
{ type: FormElementComponent, decorators: [{ type: Host }, { type: Optional }] }
|
|
32
|
-
];
|
|
33
|
-
FormErrorComponent.propDecorators = {
|
|
34
|
-
error: [{ type: Input }],
|
|
35
|
-
contentRef: [{ type: ViewChild, args: ['contentRef',] }]
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcnVubmVyL3dvcmsvbmd4LWVuaGFuY3ktZm9ybXMvbmd4LWVuaGFuY3ktZm9ybXMvcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxJQUFJLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFRcEQsTUFBTSxPQUFPLGtCQUFrQjtJQUk5QixZQUF3QyxNQUE0QjtRQUE1QixXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUY3RCxjQUFTLEdBQUcsS0FBSyxDQUFDO0lBRThDLENBQUM7SUFFeEUsUUFBUTtRQUNQLHVHQUF1RztRQUN2RyxxQkFBcUI7UUFDckIsaUJBQWlCO1FBQ2pCLDhIQUE4SDtRQUM5SCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2YsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDOUQsSUFBSSxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO2FBQ3JGO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzs7WUF2QkQsU0FBUyxTQUFDO2dCQUNWLFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLG9GQUEwQzs7YUFFMUM7OztZQVJPLG9CQUFvQix1QkFhZCxJQUFJLFlBQUksUUFBUTs7O29CQUg1QixLQUFLO3lCQUVMLFNBQVMsU0FBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1FbGVtZW50Q29tcG9uZW50fSBmcm9tIFwiLi4vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnRcIjtcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCIuLi8uLi91dGlsL3ZhbHVlc1wiO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tZXJyb3InLFxuXHR0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2Zvcm0tZXJyb3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUVycm9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0QElucHV0KCkgZXJyb3I6IEVycm9yVHlwZXM7XG5cdHB1YmxpYyBzaG93RXJyb3IgPSBmYWxzZTtcblx0QFZpZXdDaGlsZCgnY29udGVudFJlZicpIHB1YmxpYyBjb250ZW50UmVmOiBFbGVtZW50UmVmO1xuXHRjb25zdHJ1Y3RvcihASG9zdCgpIEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50OiBGb3JtRWxlbWVudENvbXBvbmVudCkge31cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHQvLyB0aGlzIGlzIGJlaW5nIHJ1biBuZXh0IGN5Y2xlLCBiZWNhdXNlIHdlIGRvbnQgd2FudCB0byBmYWlsIGlmIHRoZSBvcmRlciBvZiBjb21wb25lbnRzIGlzIGFzIGZvbGxvd3M6XG5cdFx0Ly8gPGFwcC1mb3JtLWVycm9yIC8+XG5cdFx0Ly8gPHNvbWUtaW5wdXQgLz5cblx0XHQvLyBUaGF0IHdvdWxkIGZhaWwsIGJlY2F1c2UgdGhlIGxvZ2ljIG9mIHRoZSBmb3JtIGVycm9yIGlzIHJ1biBmaXJzdCwgYW5kIGF0IHRoYXQgbW9tZW50LCB0aGUgYHNvbWUtaW5wdXRgIGlzbnQgcmVnaXN0ZXJlZCB5ZXRcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGNvbnN0IGF0dGFjaGVkQ29udHJvbCA9IHRoaXMucGFyZW50LmdldEF0dGFjaGVkQ29udHJvbCgpO1xuXHRcdFx0dGhpcy5wYXJlbnQucmVnaXN0ZXJFcnJvckhhbmRsZXIodGhpcy5lcnJvciwgdGhpcy5jb250ZW50UmVmKTtcblx0XHRcdGlmIChpc051bGxPclVuZGVmaW5lZChhdHRhY2hlZENvbnRyb2wpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignWW91IGFkZGVkIGEgRm9ybSBFcnJvciBjb21wb25lbnQgd2l0aG91dCBhbiBhdHRhY2hlZCBGb3JtIENvbnRyb2wnKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Component, Host, HostBinding, Input, Optional } from '@angular/core';
|
|
2
|
-
import { FormComponent, invalidFieldsSymbol } from "../form.component";
|
|
3
|
-
import { isNullOrUndefined } from "../../util/values";
|
|
4
|
-
export class FormSubmitButtonComponent {
|
|
5
|
-
constructor(parentForm) {
|
|
6
|
-
this.parentForm = parentForm;
|
|
7
|
-
this.isLoading = false;
|
|
8
|
-
this.fullWidth = false;
|
|
9
|
-
this.variant = 'greenFilled';
|
|
10
|
-
}
|
|
11
|
-
get _() {
|
|
12
|
-
return this.fullWidth;
|
|
13
|
-
}
|
|
14
|
-
submitForm() {
|
|
15
|
-
this.parentForm
|
|
16
|
-
.trySubmit()
|
|
17
|
-
.then((value) => {
|
|
18
|
-
this.isLoading = true;
|
|
19
|
-
const submitCallbackResult = this.submitCallback(value);
|
|
20
|
-
if (isNullOrUndefined(submitCallbackResult)) {
|
|
21
|
-
throw new Error('No promise is returned in your submit function.');
|
|
22
|
-
}
|
|
23
|
-
return submitCallbackResult.then(() => (this.isLoading = false)).catch((e) => {
|
|
24
|
-
this.isLoading = false;
|
|
25
|
-
throw e;
|
|
26
|
-
});
|
|
27
|
-
})
|
|
28
|
-
.catch((e) => {
|
|
29
|
-
if (e === invalidFieldsSymbol) {
|
|
30
|
-
return; // swallow the error, the framework will scroll to the field that needs attention
|
|
31
|
-
}
|
|
32
|
-
throw e;
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
FormSubmitButtonComponent.decorators = [
|
|
37
|
-
{ type: Component, args: [{
|
|
38
|
-
selector: 'klp-form-submit-button',
|
|
39
|
-
template: "<klp-form-button\n\t\t[variant]=\"variant\"\n\t\t(click)=\"submitForm()\"\n\t\t[disabled]=\"isLoading\"\n\t\t[isLoading]=\"isLoading\"\n\t\t[fullWidth]=\"fullWidth\"\n\t\ttype=\"submit\"\n\t\t[ngClass]=\"fullWidth ? 'fullWidth' : ''\"\n\t>\n\t<ng-content></ng-content>\n</klp-form-button>\n",
|
|
40
|
-
styles: [":host{display:inline-block}:host._fullWidth{display:block}.fullWidth{width:100%}"]
|
|
41
|
-
},] }
|
|
42
|
-
];
|
|
43
|
-
FormSubmitButtonComponent.ctorParameters = () => [
|
|
44
|
-
{ type: FormComponent, decorators: [{ type: Host }, { type: Optional }] }
|
|
45
|
-
];
|
|
46
|
-
FormSubmitButtonComponent.propDecorators = {
|
|
47
|
-
isLoading: [{ type: Input }],
|
|
48
|
-
fullWidth: [{ type: Input }],
|
|
49
|
-
variant: [{ type: Input }],
|
|
50
|
-
submitCallback: [{ type: Input }],
|
|
51
|
-
_: [{ type: HostBinding, args: ['class._fullWidth',] }]
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdWJtaXQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9uZ3gtZW5oYW5jeS1mb3Jtcy9uZ3gtZW5oYW5jeS1mb3Jtcy9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjLyIsInNvdXJjZXMiOlsibGliL2Zvcm0vZm9ybS1zdWJtaXQtYnV0dG9uL2Zvcm0tc3VibWl0LWJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBT3BELE1BQU0sT0FBTyx5QkFBeUI7SUFVckMsWUFBd0MsVUFBeUI7UUFBekIsZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQVRqRCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsWUFBTyxHQUFnQyxhQUFhLENBQUM7SUFPTSxDQUFDO0lBSnJFLElBQXFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3ZCLENBQUM7SUFJRCxVQUFVO1FBQ1QsSUFBSSxDQUFDLFVBQVU7YUFDYixTQUFTLEVBQUU7YUFDWCxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4RCxJQUFJLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEVBQUU7Z0JBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQzthQUNuRTtZQUNELE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM1RSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTtnQkFDdEIsTUFBTSxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1osSUFBSSxDQUFDLEtBQUssbUJBQW1CLEVBQUU7Z0JBQzlCLE9BQU0sQ0FBQyxpRkFBaUY7YUFDeEY7WUFDRCxNQUFNLENBQUMsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBckNELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyw4U0FBa0Q7O2FBRWxEOzs7WUFQTyxhQUFhLHVCQWtCUCxJQUFJLFlBQUksUUFBUTs7O3dCQVQ1QixLQUFLO3dCQUNMLEtBQUs7c0JBQ0wsS0FBSzs2QkFDTCxLQUFLO2dCQUVMLFdBQVcsU0FBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3QsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUNvbXBvbmVudCwgaW52YWxpZEZpZWxkc1N5bWJvbH0gZnJvbSBcIi4uL2Zvcm0uY29tcG9uZW50XCI7XG5pbXBvcnQge2lzTnVsbE9yVW5kZWZpbmVkfSBmcm9tIFwiLi4vLi4vdXRpbC92YWx1ZXNcIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tc3VibWl0LWJ1dHRvbicsXG5cdHRlbXBsYXRlVXJsOiAnLi9mb3JtLXN1Ym1pdC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9mb3JtLXN1Ym1pdC1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVN1Ym1pdEJ1dHRvbkNvbXBvbmVudCB7XG5cdEBJbnB1dCgpIHB1YmxpYyBpc0xvYWRpbmcgPSBmYWxzZTtcblx0QElucHV0KCkgZnVsbFdpZHRoID0gZmFsc2U7XG5cdEBJbnB1dCgpIHZhcmlhbnQ6ICdncmVlbkZpbGxlZCcgfCAncmVkRmlsbGVkJyA9ICdncmVlbkZpbGxlZCc7XG5cdEBJbnB1dCgpIHB1YmxpYyBzdWJtaXRDYWxsYmFjazogKGFueTogYW55KSA9PiBQcm9taXNlPGFueT47XG5cblx0QEhvc3RCaW5kaW5nKCdjbGFzcy5fZnVsbFdpZHRoJykgZ2V0IF8oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZnVsbFdpZHRoO1xuXHR9XG5cblx0Y29uc3RydWN0b3IoQEhvc3QoKSBAT3B0aW9uYWwoKSBwcml2YXRlIHBhcmVudEZvcm06IEZvcm1Db21wb25lbnQpIHt9XG5cblx0c3VibWl0Rm9ybSgpIHtcblx0XHR0aGlzLnBhcmVudEZvcm1cblx0XHRcdC50cnlTdWJtaXQoKVxuXHRcdFx0LnRoZW4oKHZhbHVlKSA9PiB7XG5cdFx0XHRcdHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcblx0XHRcdFx0Y29uc3Qgc3VibWl0Q2FsbGJhY2tSZXN1bHQgPSB0aGlzLnN1Ym1pdENhbGxiYWNrKHZhbHVlKTtcblx0XHRcdFx0aWYgKGlzTnVsbE9yVW5kZWZpbmVkKHN1Ym1pdENhbGxiYWNrUmVzdWx0KSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignTm8gcHJvbWlzZSBpcyByZXR1cm5lZCBpbiB5b3VyIHN1Ym1pdCBmdW5jdGlvbi4nKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc3VibWl0Q2FsbGJhY2tSZXN1bHQudGhlbigoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSBmYWxzZSkpLmNhdGNoKChlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5pc0xvYWRpbmcgPSBmYWxzZVxuXHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgoZSkgPT4ge1xuXHRcdFx0XHRpZiAoZSA9PT0gaW52YWxpZEZpZWxkc1N5bWJvbCkge1xuXHRcdFx0XHRcdHJldHVybiAvLyBzd2FsbG93IHRoZSBlcnJvciwgdGhlIGZyYW1ld29yayB3aWxsIHNjcm9sbCB0byB0aGUgZmllbGQgdGhhdCBuZWVkcyBhdHRlbnRpb25cblx0XHRcdFx0fVxuXHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|