@klippa/ngx-enhancy-forms 16.7.7 → 16.9.3

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.
@@ -24,6 +24,7 @@ export class ValueAccessorBase {
24
24
  // we support both providing just the formControlName and the full formControl
25
25
  this.formControlName = null;
26
26
  this.formControl = null;
27
+ this.inErrorState = false;
27
28
  this.onTouch = new EventEmitter();
28
29
  this.focus = () => {
29
30
  if (isValueSet(this.nativeInputRef?.nativeElement)) {
@@ -53,6 +54,9 @@ export class ValueAccessorBase {
53
54
  }
54
55
  }
55
56
  isInErrorState() {
57
+ if (this.inErrorState) {
58
+ return true;
59
+ }
56
60
  return this.attachedFormControl && this.attachedFormControl.status === 'INVALID' && this.attachedFormControl.touched;
57
61
  }
58
62
  ngOnDestroy() {
@@ -113,7 +117,7 @@ export class ValueAccessorBase {
113
117
  return false;
114
118
  }
115
119
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ValueAccessorBase, deps: [{ token: i1.FormElementComponent, host: true, optional: true }, { token: i2.ControlContainer, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
116
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: ValueAccessorBase, selector: "ng-component", inputs: { disabled: "disabled", innerValueChangeInterceptor: "innerValueChangeInterceptor", formControlName: "formControlName", formControl: "formControl" }, outputs: { onTouch: "onTouch" }, viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInputRef"], descendants: true }], ngImport: i0, template: '', isInline: true }); }
120
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: ValueAccessorBase, selector: "ng-component", inputs: { disabled: "disabled", innerValueChangeInterceptor: "innerValueChangeInterceptor", formControlName: "formControlName", formControl: "formControl", inErrorState: "inErrorState" }, outputs: { onTouch: "onTouch" }, viewQueries: [{ propertyName: "nativeInputRef", first: true, predicate: ["nativeInputRef"], descendants: true }], ngImport: i0, template: '', isInline: true }); }
117
121
  }
118
122
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ValueAccessorBase, decorators: [{
119
123
  type: Component,
@@ -137,10 +141,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
137
141
  type: Input
138
142
  }], formControl: [{
139
143
  type: Input
144
+ }], inErrorState: [{
145
+ type: Input
140
146
  }], onTouch: [{
141
147
  type: Output
142
148
  }], nativeInputRef: [{
143
149
  type: ViewChild,
144
150
  args: ['nativeInputRef']
145
151
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9lbGVtZW50cy92YWx1ZS1hY2Nlc3Nvci1iYXNlL3ZhbHVlLWFjY2Vzc29yLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9ILE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUV4RDs7Ozs7Ozs7R0FRRztBQU1ILE1BQU0sT0FBTyxpQkFBaUI7SUFrQjdCLFlBQytCLE1BQTRCLEVBQzVCLGdCQUFrQztRQURsQyxXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBbEIxRCxZQUFPLEdBQUcsSUFBSSxLQUFLLEVBQXNCLENBQUM7UUFDekMsWUFBTyxHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7UUFDbEMsY0FBUyxHQUFNLElBQUksQ0FBQztRQUVaLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFJakMsOEVBQThFO1FBQzlELG9CQUFlLEdBQVcsSUFBSSxDQUFDO1FBQy9CLGdCQUFXLEdBQXVCLElBQUksQ0FBQztRQUN0QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQStGN0MsVUFBSyxHQUFHLEdBQVMsRUFBRTtZQUN6QixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxFQUFDO2dCQUNsRCxJ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QUUsRUFBRTtpQkFDWjs7MEJBb0JFLElBQUk7OzBCQUFJLFFBQVE7OzBCQUNoQixJQUFJOzswQkFBSSxRQUFROzRDQWRGLFFBQVE7c0JBQXZCLEtBQUs7Z0JBR0csMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUVVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVyxPQUFPO3NCQUF2QixNQUFNO2dCQUNzQixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udHJvbENvbnRhaW5lciwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFVudHlwZWRGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtRWxlbWVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZm9ybS9mb3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQge2lzTnVsbE9yVW5kZWZpbmVkLCBpc1ZhbHVlU2V0LCBzdHJpbmdJc1NldEFuZEZpbGxlZH0gZnJvbSAnLi4vLi4vdXRpbC92YWx1ZXMnO1xuaW1wb3J0IHsgYXJyYXlJc1NldEFuZEZpbGxlZCB9IGZyb20gJy4uLy4uL3V0aWwvYXJyYXlzJztcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBhIGJhc2UgaW4gb3JkZXIgdG8gY3JlYXRlIGEgY29tcG9uZW50IHRoYXQgc3VwcG9ydHMgbmdNb2RlbC5cbiAqIFNvbWUgaW1wb3J0YW50IHRoaW5ncyB0byBrbm93IGFib3V0IGl0OlxuICpcbiAqIGlubmVyVmFsdWUgPSB5b3VyIG93biBpbm5lciBzdGF0ZSwgd2hpY2ggeW91IHNob3VsZCB1c2UgdG8gc3RvcmUgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygd2hhdCBuZ01vZGVsIHNob3VsZCBiZS5cbiAqIHdyaXRlVmFsdWUoKSA9IGNhbGxlZCBieSBhbmd1bGFyLCB3aGVuIG5nTW9kZWwgaXMgY2hhbmdlZCBmcm9tIE9VVFNJREUgb2YgdGhlIGNvbXBvbmVudC4gRmVlbCBmcmVlIHRvIHBhdGNoIHRoaXMgbWV0aG9kIGlmIHlvdSBuZWVkIGlubmVyIGxvZ2ljIHRvIGhhcHBlbiB3aGVuIG5nTW9kZWwgaXMgYWx0ZXJlZCBmcm9tIHRoZSBvdXRzaWRlLiBBbHdheXMgcmVtZW1iZXIgdG8gYWxzbyBjYWxsIHRoZSBzdXBlci53cml0ZVZhbHVlIGlmIHlvdSBkbyFcbiAqIHNldElubmVyVmFsdWVBbmROb3RpZnkoKSA9IGNhbGwgdGhpcyB3aGVuIHlvdSB3YW50IHlvdXIgbmdNb2RlbCB0byBiZSB1cGRhdGVkIGZyb20gSU5TSURFIG9mIHlvdXIgY29tcG9uZW50LCBhbmQgcHJvdmlkZSBpdCB0byB0aGUgT1VUU0lERS5cbiAqIG5nT25Jbml0KCkgPSBVc2VkIHRvIHN1cHBvcnQgdGhlIGFuZ3VsYXIgcmVhY3RpdmUgZm9ybXMgZnJhbWV3b3JrLiBJZiB5b3UgdXNlIG5nT25Jbml0IGluIHlvdXIgb3duIGNvbXBvbmVudCAod2hpY2ggaGFwcGVucyBmYWlybHkgb2Z0ZW4pIHlvdSBtdXN0IG5vdCBmb3JnZXQgdG8gY2FsbCB0aGUgc3VwZXIubmdPbkluaXQoKSBtZXRob2QuXG4gKi9cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnJyxcblx0dGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBjbGFzcyBWYWx1ZUFjY2Vzc29yQmFzZTxUPiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XG5cdHB1YmxpYyBpbm5lclZhbHVlOiBUO1xuXHRwdWJsaWMgY2hhbmdlZCA9IG5ldyBBcnJheTwodmFsdWU6IFQpID0+IHZvaWQ+KCk7XG5cdHByaXZhdGUgdG91Y2hlZCA9IG5ldyBBcnJheTwoKSA9PiB2b2lkPigpO1xuXHRwcml2YXRlIHByZXZWYWx1ZTogVCA9IG51bGw7XG5cblx0QElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cdC8vIG5lZWRlZCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9uc1xuXHRwcml2YXRlIGxhdGVzdElubmVyVmFsdWVDaGFuZ2VkSW50ZXJjZXB0b3JQcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xuXHRASW5wdXQoKSBpbm5lclZhbHVlQ2hhbmdlSW50ZXJjZXB0b3I6IChwcmV2OiBULCBjdXI6IFQpID0+IFByb21pc2U8dm9pZD47XG5cdC8vIHdlIHN1cHBvcnQgYm90aCBwcm92aWRpbmcganVzdCB0aGUgZm9ybUNvbnRyb2xOYW1lIGFuZCB0aGUgZnVsbCBmb3JtQ29udHJvbFxuXHRASW5wdXQoKSBwdWJsaWMgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcgPSBudWxsO1xuXHRASW5wdXQoKSBwdWJsaWMgZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCA9IG51bGw7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25Ub3VjaCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblx0QFZpZXdDaGlsZCgnbmF0aXZlSW5wdXRSZWYnKSBuYXRpdmVJbnB1dFJlZjogRWxlbWVudFJlZjtcblxuXHRwcml2YXRlIGF0dGFjaGVkRm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRASG9zdCgpIEBPcHRpb25hbCgpIHByb3RlY3RlZCBwYXJlbnQ6IEZvcm1FbGVtZW50Q29tcG9uZW50LFxuXHRcdEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXJcblx0KSB7XG5cdH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5mb3JtQ29udHJvbCkge1xuXHRcdFx0dGhpcy5hdHRhY2hlZEZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udHJvbDtcblx0XHR9IGVsc2UgaWYgKHN0cmluZ0lzU2V0QW5kRmlsbGVkKHRoaXMuZm9ybUNvbnRyb2xOYW1lKSkge1xuXHRcdFx0dGhpcy5hdHRhY2hlZEZvcm1Db250cm9sID0gdGhpcy5jb250cm9sQ29udGFpbmVyPy5jb250cm9sLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuXHRcdFx0aWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGb3JtIGVsZW1lbnQgJyR7dGhpcy5mb3JtQ29udHJvbE5hbWV9JyB3aXRoIGNhcHRpb24gJyR7dGhpcy5wYXJlbnQ/LmNhcHRpb259JyBpcyBub3QgZGVjbGFyZWQgaW4geW91ciBGb3JtR3JvdXAuYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICh0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wpIHtcblx0XHRcdHRoaXMuZGlzYWJsZWQgPSB0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wuZGlzYWJsZWQ7XG5cdFx0XHR0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmRpc2FibGVkID0gdGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLmRpc2FibGVkO1xuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLnBhcmVudD8ucmVnaXN0ZXJDb250cm9sKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCwgdGhpcyk7XG5cdFx0fVxuXHR9XG5cblx0aXNJbkVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCAmJiB0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wuc3RhdHVzID09PSAnSU5WQUxJRCcgJiYgdGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLnRvdWNoZWQ7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5hdHRhY2hlZEZvcm1Db250cm9sKSB7XG5cdFx0XHR0aGlzLnBhcmVudD8udW5yZWdpc3RlckNvbnRyb2wodGhpcy5hdHRhY2hlZEZvcm1Db250cm9sKTtcblx0XHR9XG5cdH1cblxuXHR0b3VjaCgpOiB2b2lkIHtcblx0XHR0aGlzLnRvdWNoZWQuZm9yRWFjaCgoZikgPT4gZigpKTtcblx0fVxuXG5cdHdyaXRlVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcblx0XHR0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcblx0XHR0aGlzLnByZXZWYWx1ZSA9IHZhbHVlO1xuXHR9XG5cblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBUKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0dGhpcy5jaGFuZ2VkLnB1c2goZm4pO1xuXHR9XG5cblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcblx0XHR0aGlzLnRvdWNoZWQucHVzaChmbik7XG5cdH1cblxuXHRzZXRJbm5lclZhbHVlQW5kTm90aWZ5KHZhbHVlOiBUKTogdm9pZCB7XG5cdFx0Y29uc3QgYWN0dWFsbHlTZXRWYWx1ZSA9ICh2YWx1ZVRvU2V0OiBUKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZVRvU2V0O1xuXHRcdFx0dGhpcy5wcmV2VmFsdWUgPSB2YWx1ZVRvU2V0O1xuXHRcdFx0dGhpcy5jaGFuZ2VkLmZvckVhY2goKGZuKSA9PiBmbih2YWx1ZVRvU2V0KSk7XG5cdFx0fTtcblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLmlubmVyVmFsdWVDaGFuZ2VJbnRlcmNlcHRvcikpIHtcblx0XHRcdHRoaXMubGF0ZXN0SW5uZXJWYWx1ZUNoYW5nZWRJbnRlcmNlcHRvclByb21pc2UgPSB0aGlzLmlubmVyVmFsdWVDaGFuZ2VJbnRlcmNlcHRvcih0aGlzLnByZXZWYWx1ZSwgdmFsdWUpO1xuXHRcdFx0Y29uc3QgbXlQcm9taXNlID0gdGhpcy5sYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZTtcblx0XHRcdHRoaXMubGF0ZXN0SW5uZXJWYWx1ZUNoYW5nZWRJbnRlcmNlcHRvclByb21pc2UudGhlbigoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmxhdGVzdElubmVyVmFsdWVDaGFuZ2VkSW50ZXJjZXB0b3JQcm9taXNlID09PSBteVByb21pc2UpIHtcblx0XHRcdFx0XHRhY3R1YWxseVNldFZhbHVlKHZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBpZ25vcmUgb3V0ZGF0ZWQgcHJvbWlzZXNcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goKCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5sYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZSA9PT0gbXlQcm9taXNlKSB7XG5cdFx0XHRcdFx0YWN0dWFsbHlTZXRWYWx1ZSh0aGlzLnByZXZWYWx1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gaWdub3JlIG91dGRhdGVkIHByb21pc2VzXG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhY3R1YWxseVNldFZhbHVlKHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRyZXNldFRvTnVsbCgpOiB2b2lkIHtcblx0XHR0aGlzLnNldElubmVyVmFsdWVBbmROb3RpZnkobnVsbCk7XG5cdH1cblxuXHRoYXNWYWxpZGF0b3IodmFsaWRhdG9yTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgdmFsaWRhdG9ycyA9IE9iamVjdC5rZXlzKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbD8udmFsaWRhdG9yPy4oe30gYXMgYW55KSA/PyB7fSk7XG5cdFx0aWYgKGFycmF5SXNTZXRBbmRGaWxsZWQodmFsaWRhdG9ycykpIHtcblx0XHRcdHJldHVybiB2YWxpZGF0b3JzLmluY2x1ZGVzKHZhbGlkYXRvck5hbWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgZm9jdXMgPSAoKTogdm9pZCA9PiB7XG5cdFx0aWYgKGlzVmFsdWVTZXQodGhpcy5uYXRpdmVJbnB1dFJlZj8ubmF0aXZlRWxlbWVudCkpe1xuXHRcdFx0dGhpcy5uYXRpdmVJbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcblx0XHR9ZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ3RoZSBmb2N1cygpIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBlbGVtZW50IScpO1xuXHRcdH1cblx0fVxufVxuIl19
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9lbGVtZW50cy92YWx1ZS1hY2Nlc3Nvci1iYXNlL3ZhbHVlLWFjY2Vzc29yLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxTQUFTLEVBQWMsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRS9ILE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUV4RDs7Ozs7Ozs7R0FRRztBQU1ILE1BQU0sT0FBTyxpQkFBaUI7SUFtQjdCLFlBQytCLE1BQTRCLEVBQzVCLGdCQUFrQztRQURsQyxXQUFNLEdBQU4sTUFBTSxDQUFzQjtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBbkIxRCxZQUFPLEdBQUcsSUFBSSxLQUFLLEVBQXNCLENBQUM7UUFDekMsWUFBTyxHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7UUFDbEMsY0FBUyxHQUFNLElBQUksQ0FBQztRQUVaLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFJakMsOEVBQThFO1FBQzlELG9CQUFlLEdBQVcsSUFBSSxDQUFDO1FBQy9CLGdCQUFXLEdBQXVCLElBQUksQ0FBQztRQUN2QyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNwQixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQWtHN0MsVUFBSyxHQUFHLEdBQVMsRUFBRTtZQUN6QixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxF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QUFpQixtWUFGbkIsRUFBRTs7MkZBRUEsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxFQUFFO29CQUNaLFFBQVEsRUFBRSxFQUFFO2lCQUNaOzswQkFxQkUsSUFBSTs7MEJBQUksUUFBUTs7MEJBQ2hCLElBQUk7OzBCQUFJLFFBQVE7NENBZkYsUUFBUTtzQkFBdkIsS0FBSztnQkFHRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBRVUsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1csT0FBTztzQkFBdkIsTUFBTTtnQkFDc0IsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnRyb2xDb250YWluZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBVbnR5cGVkRm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUVsZW1lbnRDb21wb25lbnR9IGZyb20gJy4uLy4uL2Zvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHtpc051bGxPclVuZGVmaW5lZCwgaXNWYWx1ZVNldCwgc3RyaW5nSXNTZXRBbmRGaWxsZWR9IGZyb20gJy4uLy4uL3V0aWwvdmFsdWVzJztcbmltcG9ydCB7IGFycmF5SXNTZXRBbmRGaWxsZWQgfSBmcm9tICcuLi8uLi91dGlsL2FycmF5cyc7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgYSBiYXNlIGluIG9yZGVyIHRvIGNyZWF0ZSBhIGNvbXBvbmVudCB0aGF0IHN1cHBvcnRzIG5nTW9kZWwuXG4gKiBTb21lIGltcG9ydGFudCB0aGluZ3MgdG8ga25vdyBhYm91dCBpdDpcbiAqXG4gKiBpbm5lclZhbHVlID0geW91ciBvd24gaW5uZXIgc3RhdGUsIHdoaWNoIHlvdSBzaG91bGQgdXNlIHRvIHN0b3JlIHRoZSBjdXJyZW50IHN0YXRlIG9mIHdoYXQgbmdNb2RlbCBzaG91bGQgYmUuXG4gKiB3cml0ZVZhbHVlKCkgPSBjYWxsZWQgYnkgYW5ndWxhciwgd2hlbiBuZ01vZGVsIGlzIGNoYW5nZWQgZnJvbSBPVVRTSURFIG9mIHRoZSBjb21wb25lbnQuIEZlZWwgZnJlZSB0byBwYXRjaCB0aGlzIG1ldGhvZCBpZiB5b3UgbmVlZCBpbm5lciBsb2dpYyB0byBoYXBwZW4gd2hlbiBuZ01vZGVsIGlzIGFsdGVyZWQgZnJvbSB0aGUgb3V0c2lkZS4gQWx3YXlzIHJlbWVtYmVyIHRvIGFsc28gY2FsbCB0aGUgc3VwZXIud3JpdGVWYWx1ZSBpZiB5b3UgZG8hXG4gKiBzZXRJbm5lclZhbHVlQW5kTm90aWZ5KCkgPSBjYWxsIHRoaXMgd2hlbiB5b3Ugd2FudCB5b3VyIG5nTW9kZWwgdG8gYmUgdXBkYXRlZCBmcm9tIElOU0lERSBvZiB5b3VyIGNvbXBvbmVudCwgYW5kIHByb3ZpZGUgaXQgdG8gdGhlIE9VVFNJREUuXG4gKiBuZ09uSW5pdCgpID0gVXNlZCB0byBzdXBwb3J0IHRoZSBhbmd1bGFyIHJlYWN0aXZlIGZvcm1zIGZyYW1ld29yay4gSWYgeW91IHVzZSBuZ09uSW5pdCBpbiB5b3VyIG93biBjb21wb25lbnQgKHdoaWNoIGhhcHBlbnMgZmFpcmx5IG9mdGVuKSB5b3UgbXVzdCBub3QgZm9yZ2V0IHRvIGNhbGwgdGhlIHN1cGVyLm5nT25Jbml0KCkgbWV0aG9kLlxuICovXG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJycsXG5cdHRlbXBsYXRlOiAnJyxcbn0pXG5leHBvcnQgY2xhc3MgVmFsdWVBY2Nlc3NvckJhc2U8VD4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuXHRwdWJsaWMgaW5uZXJWYWx1ZTogVDtcblx0cHVibGljIGNoYW5nZWQgPSBuZXcgQXJyYXk8KHZhbHVlOiBUKSA9PiB2b2lkPigpO1xuXHRwcml2YXRlIHRvdWNoZWQgPSBuZXcgQXJyYXk8KCkgPT4gdm9pZD4oKTtcblx0cHJpdmF0ZSBwcmV2VmFsdWU6IFQgPSBudWxsO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXHQvLyBuZWVkZWQgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnNcblx0cHJpdmF0ZSBsYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcblx0QElucHV0KCkgaW5uZXJWYWx1ZUNoYW5nZUludGVyY2VwdG9yOiAocHJldjogVCwgY3VyOiBUKSA9PiBQcm9taXNlPHZvaWQ+O1xuXHQvLyB3ZSBzdXBwb3J0IGJvdGggcHJvdmlkaW5nIGp1c3QgdGhlIGZvcm1Db250cm9sTmFtZSBhbmQgdGhlIGZ1bGwgZm9ybUNvbnRyb2xcblx0QElucHV0KCkgcHVibGljIGZvcm1Db250cm9sTmFtZTogc3RyaW5nID0gbnVsbDtcblx0QElucHV0KCkgcHVibGljIGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBudWxsO1xuXHRASW5wdXQoKSBwdWJsaWMgaW5FcnJvclN0YXRlID0gZmFsc2U7XG5cdEBPdXRwdXQoKSBwdWJsaWMgb25Ub3VjaCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblx0QFZpZXdDaGlsZCgnbmF0aXZlSW5wdXRSZWYnKSBuYXRpdmVJbnB1dFJlZjogRWxlbWVudFJlZjtcblxuXHRwcml2YXRlIGF0dGFjaGVkRm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbDtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRASG9zdCgpIEBPcHRpb25hbCgpIHByb3RlY3RlZCBwYXJlbnQ6IEZvcm1FbGVtZW50Q29tcG9uZW50LFxuXHRcdEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXJcblx0KSB7XG5cdH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5mb3JtQ29udHJvbCkge1xuXHRcdFx0dGhpcy5hdHRhY2hlZEZvcm1Db250cm9sID0gdGhpcy5mb3JtQ29udHJvbDtcblx0XHR9IGVsc2UgaWYgKHN0cmluZ0lzU2V0QW5kRmlsbGVkKHRoaXMuZm9ybUNvbnRyb2xOYW1lKSkge1xuXHRcdFx0dGhpcy5hdHRhY2hlZEZvcm1Db250cm9sID0gdGhpcy5jb250cm9sQ29udGFpbmVyPy5jb250cm9sLmdldCh0aGlzLmZvcm1Db250cm9sTmFtZSkgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuXHRcdFx0aWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBGb3JtIGVsZW1lbnQgJyR7dGhpcy5mb3JtQ29udHJvbE5hbWV9JyB3aXRoIGNhcHRpb24gJyR7dGhpcy5wYXJlbnQ/LmNhcHRpb259JyBpcyBub3QgZGVjbGFyZWQgaW4geW91ciBGb3JtR3JvdXAuYCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICh0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wpIHtcblx0XHRcdHRoaXMuZGlzYWJsZWQgPSB0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wuZGlzYWJsZWQ7XG5cdFx0XHR0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmRpc2FibGVkID0gdGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLmRpc2FibGVkO1xuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLnBhcmVudD8ucmVnaXN0ZXJDb250cm9sKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCwgdGhpcyk7XG5cdFx0fVxuXHR9XG5cblx0aXNJbkVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuaW5FcnJvclN0YXRlKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbCAmJiB0aGlzLmF0dGFjaGVkRm9ybUNvbnRyb2wuc3RhdHVzID09PSAnSU5WQUxJRCcgJiYgdGhpcy5hdHRhY2hlZEZvcm1Db250cm9sLnRvdWNoZWQ7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5hdHRhY2hlZEZvcm1Db250cm9sKSB7XG5cdFx0XHR0aGlzLnBhcmVudD8udW5yZWdpc3RlckNvbnRyb2wodGhpcy5hdHRhY2hlZEZvcm1Db250cm9sKTtcblx0XHR9XG5cdH1cblxuXHR0b3VjaCgpOiB2b2lkIHtcblx0XHR0aGlzLnRvdWNoZWQuZm9yRWFjaCgoZikgPT4gZigpKTtcblx0fVxuXG5cdHdyaXRlVmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcblx0XHR0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZTtcblx0XHR0aGlzLnByZXZWYWx1ZSA9IHZhbHVlO1xuXHR9XG5cblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBUKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0dGhpcy5jaGFuZ2VkLnB1c2goZm4pO1xuXHR9XG5cblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcblx0XHR0aGlzLnRvdWNoZWQucHVzaChmbik7XG5cdH1cblxuXHRzZXRJbm5lclZhbHVlQW5kTm90aWZ5KHZhbHVlOiBUKTogdm9pZCB7XG5cdFx0Y29uc3QgYWN0dWFsbHlTZXRWYWx1ZSA9ICh2YWx1ZVRvU2V0OiBUKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLmlubmVyVmFsdWUgPSB2YWx1ZVRvU2V0O1xuXHRcdFx0dGhpcy5wcmV2VmFsdWUgPSB2YWx1ZVRvU2V0O1xuXHRcdFx0dGhpcy5jaGFuZ2VkLmZvckVhY2goKGZuKSA9PiBmbih2YWx1ZVRvU2V0KSk7XG5cdFx0fTtcblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLmlubmVyVmFsdWVDaGFuZ2VJbnRlcmNlcHRvcikpIHtcblx0XHRcdHRoaXMubGF0ZXN0SW5uZXJWYWx1ZUNoYW5nZWRJbnRlcmNlcHRvclByb21pc2UgPSB0aGlzLmlubmVyVmFsdWVDaGFuZ2VJbnRlcmNlcHRvcih0aGlzLnByZXZWYWx1ZSwgdmFsdWUpO1xuXHRcdFx0Y29uc3QgbXlQcm9taXNlID0gdGhpcy5sYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZTtcblx0XHRcdHRoaXMubGF0ZXN0SW5uZXJWYWx1ZUNoYW5nZWRJbnRlcmNlcHRvclByb21pc2UudGhlbigoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmxhdGVzdElubmVyVmFsdWVDaGFuZ2VkSW50ZXJjZXB0b3JQcm9taXNlID09PSBteVByb21pc2UpIHtcblx0XHRcdFx0XHRhY3R1YWxseVNldFZhbHVlKHZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBpZ25vcmUgb3V0ZGF0ZWQgcHJvbWlzZXNcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goKCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5sYXRlc3RJbm5lclZhbHVlQ2hhbmdlZEludGVyY2VwdG9yUHJvbWlzZSA9PT0gbXlQcm9taXNlKSB7XG5cdFx0XHRcdFx0YWN0dWFsbHlTZXRWYWx1ZSh0aGlzLnByZXZWYWx1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gaWdub3JlIG91dGRhdGVkIHByb21pc2VzXG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhY3R1YWxseVNldFZhbHVlKHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRyZXNldFRvTnVsbCgpOiB2b2lkIHtcblx0XHR0aGlzLnNldElubmVyVmFsdWVBbmROb3RpZnkobnVsbCk7XG5cdH1cblxuXHRoYXNWYWxpZGF0b3IodmFsaWRhdG9yTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgdmFsaWRhdG9ycyA9IE9iamVjdC5rZXlzKHRoaXMuYXR0YWNoZWRGb3JtQ29udHJvbD8udmFsaWRhdG9yPy4oe30gYXMgYW55KSA/PyB7fSk7XG5cdFx0aWYgKGFycmF5SXNTZXRBbmRGaWxsZWQodmFsaWRhdG9ycykpIHtcblx0XHRcdHJldHVybiB2YWxpZGF0b3JzLmluY2x1ZGVzKHZhbGlkYXRvck5hbWUpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgZm9jdXMgPSAoKTogdm9pZCA9PiB7XG5cdFx0aWYgKGlzVmFsdWVTZXQodGhpcy5uYXRpdmVJbnB1dFJlZj8ubmF0aXZlRWxlbWVudCkpe1xuXHRcdFx0dGhpcy5uYXRpdmVJbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcblx0XHR9ZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ3RoZSBmb2N1cygpIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBlbGVtZW50IScpO1xuXHRcdH1cblx0fVxufVxuIl19
@@ -3,6 +3,7 @@ import { isValueSet } from '../../util/values';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../form.component";
5
5
  import * as i2 from "@angular/common";
6
+ import * as i3 from "../../withTooltip.component";
6
7
  export const FORM_ERROR_MESSAGES = new InjectionToken('form.error.messages');
7
8
  export const DEFAULT_ERROR_MESSAGES = {
8
9
  min: 'Use a number larger than %min%',
@@ -23,6 +24,7 @@ export class FormElementComponent {
23
24
  this.captionSpacing = 'percentages';
24
25
  this.spaceDistribution = '40-60';
25
26
  this.swapInputAndCaption = false;
27
+ this.errorMessageAsTooltip = false;
26
28
  this.errorMessages = DEFAULT_ERROR_MESSAGES;
27
29
  this.customErrorHandlers = [];
28
30
  }
@@ -93,11 +95,11 @@ export class FormElementComponent {
93
95
  return this.parent?.errorMessageLocation ?? 'belowCaption';
94
96
  }
95
97
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FormElementComponent, deps: [{ token: i1.FormComponent, optional: true }, { token: FORM_ERROR_MESSAGES, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
96
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FormElementComponent, selector: "klp-form-element", inputs: { caption: "caption", direction: "direction", captionSpacing: "captionSpacing", spaceDistribution: "spaceDistribution", swapInputAndCaption: "swapInputAndCaption" }, viewQueries: [{ propertyName: "internalComponentRef", first: true, predicate: ["internalComponentRef"], descendants: true }], ngImport: i0, template: "<ng-template #errorRef>\n\t<div *ngIf=\"shouldShowErrorMessages() && getErrorToShow()\" class=\"errorContainer\" [ngClass]=\"{hasCaption: caption || captionRef, 'd30-70': spaceDistribution === '30-70', 'd34-66': spaceDistribution === '34-66'}\">\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',\n\t\t\t'd30-70': spaceDistribution === '30-70',\n\t\t\t'd34-66': spaceDistribution === '34-66',\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()\">&nbsp;*</div>\n\t\t</div>\n\t\t<div *ngIf=\"!captionRef\">{{caption}}<span *ngIf=\"isRequired()\">&nbsp;*</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]=\"{\n\t\tpercentageSpacing: captionSpacing === 'percentages',\n\t\t'd30-70': spaceDistribution === '30-70',\n\t\t'd34-66': spaceDistribution === '34-66'\n\t}\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n", styles: [":host{display:block}.componentContainer{display:flex;align-items:center;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{font-weight:700;flex:0 0 auto;padding-right:1.25rem;color:#515365}.caption.percentageSpacing{flex:40}.caption.percentageSpacing.d30-70{flex:30}.caption.percentageSpacing.d34-66{flex:34}.caption.hasErrors{color:#ff8000}.caption.withErrorRightOfCaption{display:flex;justify-content:space-between;gap:2.5rem}.caption.withErrorRightOfCaption .rightOfCaptionError{font-weight:400;overflow:hidden}.caption.withErrorRightOfCaption .rightOfCaptionError *{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inputContainer{flex:1}.inputContainer.percentageSpacing{flex:60}.inputContainer.percentageSpacing.d30-70{flex:70}.inputContainer.percentageSpacing.d34-66{flex:66}.errorContainer{color:#ff8000}.errorContainer.hasCaption{margin-left:40%}.errorContainer.hasCaption.d30-70{margin-left:30%}.errorContainer.hasCaption.d34-66{margin-left:34%}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
98
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FormElementComponent, selector: "klp-form-element", inputs: { caption: "caption", direction: "direction", captionSpacing: "captionSpacing", spaceDistribution: "spaceDistribution", swapInputAndCaption: "swapInputAndCaption", errorMessageAsTooltip: "errorMessageAsTooltip" }, viewQueries: [{ propertyName: "internalComponentRef", first: true, predicate: ["internalComponentRef"], descendants: true }], ngImport: i0, template: "<ng-template #errorRef>\n\t<div *ngIf=\"shouldShowErrorMessages() && getErrorToShow()\" class=\"errorContainer\" [ngClass]=\"{hasCaption: caption || captionRef, 'd30-70': spaceDistribution === '30-70', 'd34-66': spaceDistribution === '34-66'}\" [klpWithTooltip]=\"!errorMessageAsTooltip && getErrorLocation() === 'rightOfCaption'\">\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' && !errorMessageAsTooltip\" [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',\n\t\t\t'd30-70': spaceDistribution === '30-70',\n\t\t\t'd34-66': spaceDistribution === '34-66',\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()\">&nbsp;*</div>\n\t\t</div>\n\t\t<div *ngIf=\"!captionRef\" class=\"captionText\">{{caption}}<span *ngIf=\"isRequired()\">&nbsp;*</span></div>\n\t\t<div class=\"rightOfCaptionError\">\n\t\t\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'rightOfCaption' && !errorMessageAsTooltip\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t</div>\n\t</div>\n\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'belowCaption' && !errorMessageAsTooltip\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t<div class=\"inputContainer\" [ngClass]=\"{\n\t\tpercentageSpacing: captionSpacing === 'percentages',\n\t\t'd30-70': spaceDistribution === '30-70',\n\t\t'd34-66': spaceDistribution === '34-66'\n\t}\">\n\t\t<ng-container *ngIf=\"errorMessageAsTooltip && shouldShowErrorMessages() && getErrorToShow()\">\n\t\t\t<div class=\"errorTooltipTriangle\"></div>\n\t\t\t<div class=\"errorTooltipTriangleWhite\"></div>\n\t\t\t<div class=\"errorTooltip\">\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t\t</div>\n\t\t</ng-container>\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n", styles: [":host{display:block}.componentContainer{display:flex;align-items:center;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{font-weight:700;flex:0 0 auto;padding-right:1.25rem;color:#515365}.caption.percentageSpacing{flex:40}.caption.percentageSpacing.d30-70{flex:30}.caption.percentageSpacing.d34-66{flex:34}.caption.hasErrors{color:#ff8000}.caption.hasErrors.withErrorRightOfCaption .rightOfCaptionError{display:block}.caption.withErrorRightOfCaption{display:flex;justify-content:space-between;gap:1rem}.caption.withErrorRightOfCaption .captionText{flex:1 2 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.caption.withErrorRightOfCaption .rightOfCaptionError{display:none;font-weight:400;overflow:hidden;flex:1 1 auto;text-align:right}.caption.withErrorRightOfCaption .rightOfCaptionError ::ng-deep *{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inputContainer{position:relative;flex:1}.inputContainer .errorTooltipTriangle{z-index:1;position:absolute;display:none;right:0;transform:translate(-50%,calc(-100% + .1rem));width:0px;height:0px;border-left:12px solid transparent;border-right:12px solid transparent;border-top:12px solid rgba(255,128,0,.125)}.inputContainer .errorTooltipTriangleWhite{z-index:3;position:absolute;display:none;right:0;transform:translate(-50%,calc(-100% + .1rem - 2px));width:0px;height:0px;border-left:12px solid transparent;border-right:12px solid transparent;border-top:12px solid white}.inputContainer .errorTooltip{position:absolute;top:-.6rem;right:0;display:none;z-index:2;color:#515365;transform:translateY(-100%);max-width:20rem;white-space:break-spaces;background-color:#fff;border:1px solid rgba(255,128,0,.125);box-shadow:#ff800020 2px 3px 10px;padding:.3rem .5rem;box-sizing:border-box;border-radius:3px}.inputContainer .errorTooltip .errorContainer{margin-left:initial}.inputContainer:hover .errorTooltip,.inputContainer:hover .errorTooltipTriangle,.inputContainer:hover .errorTooltipTriangleWhite{display:block}.inputContainer.percentageSpacing{flex:60}.inputContainer.percentageSpacing.d30-70{flex:70}.inputContainer.percentageSpacing.d34-66{flex:66}.errorContainer{color:#ff8000}.errorContainer.hasCaption{margin-left:40%}.errorContainer.hasCaption.d30-70{margin-left:30%}.errorContainer.hasCaption.d34-66{margin-left:34%}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.WithTooltipDirective, selector: "[klpWithTooltip]", inputs: ["klpWithTooltip"] }] }); }
97
99
  }
98
100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FormElementComponent, decorators: [{
99
101
  type: Component,
100
- args: [{ selector: 'klp-form-element', template: "<ng-template #errorRef>\n\t<div *ngIf=\"shouldShowErrorMessages() && getErrorToShow()\" class=\"errorContainer\" [ngClass]=\"{hasCaption: caption || captionRef, 'd30-70': spaceDistribution === '30-70', 'd34-66': spaceDistribution === '34-66'}\">\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',\n\t\t\t'd30-70': spaceDistribution === '30-70',\n\t\t\t'd34-66': spaceDistribution === '34-66',\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()\">&nbsp;*</div>\n\t\t</div>\n\t\t<div *ngIf=\"!captionRef\">{{caption}}<span *ngIf=\"isRequired()\">&nbsp;*</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]=\"{\n\t\tpercentageSpacing: captionSpacing === 'percentages',\n\t\t'd30-70': spaceDistribution === '30-70',\n\t\t'd34-66': spaceDistribution === '34-66'\n\t}\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n", styles: [":host{display:block}.componentContainer{display:flex;align-items:center;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{font-weight:700;flex:0 0 auto;padding-right:1.25rem;color:#515365}.caption.percentageSpacing{flex:40}.caption.percentageSpacing.d30-70{flex:30}.caption.percentageSpacing.d34-66{flex:34}.caption.hasErrors{color:#ff8000}.caption.withErrorRightOfCaption{display:flex;justify-content:space-between;gap:2.5rem}.caption.withErrorRightOfCaption .rightOfCaptionError{font-weight:400;overflow:hidden}.caption.withErrorRightOfCaption .rightOfCaptionError *{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inputContainer{flex:1}.inputContainer.percentageSpacing{flex:60}.inputContainer.percentageSpacing.d30-70{flex:70}.inputContainer.percentageSpacing.d34-66{flex:66}.errorContainer{color:#ff8000}.errorContainer.hasCaption{margin-left:40%}.errorContainer.hasCaption.d30-70{margin-left:30%}.errorContainer.hasCaption.d34-66{margin-left:34%}\n"] }]
102
+ args: [{ selector: 'klp-form-element', template: "<ng-template #errorRef>\n\t<div *ngIf=\"shouldShowErrorMessages() && getErrorToShow()\" class=\"errorContainer\" [ngClass]=\"{hasCaption: caption || captionRef, 'd30-70': spaceDistribution === '30-70', 'd34-66': spaceDistribution === '34-66'}\" [klpWithTooltip]=\"!errorMessageAsTooltip && getErrorLocation() === 'rightOfCaption'\">\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' && !errorMessageAsTooltip\" [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',\n\t\t\t'd30-70': spaceDistribution === '30-70',\n\t\t\t'd34-66': spaceDistribution === '34-66',\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()\">&nbsp;*</div>\n\t\t</div>\n\t\t<div *ngIf=\"!captionRef\" class=\"captionText\">{{caption}}<span *ngIf=\"isRequired()\">&nbsp;*</span></div>\n\t\t<div class=\"rightOfCaptionError\">\n\t\t\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'rightOfCaption' && !errorMessageAsTooltip\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t</div>\n\t</div>\n\t<ng-container *ngIf=\"direction === 'vertical' && getErrorLocation() === 'belowCaption' && !errorMessageAsTooltip\" [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t<div class=\"inputContainer\" [ngClass]=\"{\n\t\tpercentageSpacing: captionSpacing === 'percentages',\n\t\t'd30-70': spaceDistribution === '30-70',\n\t\t'd34-66': spaceDistribution === '34-66'\n\t}\">\n\t\t<ng-container *ngIf=\"errorMessageAsTooltip && shouldShowErrorMessages() && getErrorToShow()\">\n\t\t\t<div class=\"errorTooltipTriangle\"></div>\n\t\t\t<div class=\"errorTooltipTriangleWhite\"></div>\n\t\t\t<div class=\"errorTooltip\">\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n\t\t\t</div>\n\t\t</ng-container>\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n", styles: [":host{display:block}.componentContainer{display:flex;align-items:center;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{font-weight:700;flex:0 0 auto;padding-right:1.25rem;color:#515365}.caption.percentageSpacing{flex:40}.caption.percentageSpacing.d30-70{flex:30}.caption.percentageSpacing.d34-66{flex:34}.caption.hasErrors{color:#ff8000}.caption.hasErrors.withErrorRightOfCaption .rightOfCaptionError{display:block}.caption.withErrorRightOfCaption{display:flex;justify-content:space-between;gap:1rem}.caption.withErrorRightOfCaption .captionText{flex:1 2 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.caption.withErrorRightOfCaption .rightOfCaptionError{display:none;font-weight:400;overflow:hidden;flex:1 1 auto;text-align:right}.caption.withErrorRightOfCaption .rightOfCaptionError ::ng-deep *{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inputContainer{position:relative;flex:1}.inputContainer .errorTooltipTriangle{z-index:1;position:absolute;display:none;right:0;transform:translate(-50%,calc(-100% + .1rem));width:0px;height:0px;border-left:12px solid transparent;border-right:12px solid transparent;border-top:12px solid rgba(255,128,0,.125)}.inputContainer .errorTooltipTriangleWhite{z-index:3;position:absolute;display:none;right:0;transform:translate(-50%,calc(-100% + .1rem - 2px));width:0px;height:0px;border-left:12px solid transparent;border-right:12px solid transparent;border-top:12px solid white}.inputContainer .errorTooltip{position:absolute;top:-.6rem;right:0;display:none;z-index:2;color:#515365;transform:translateY(-100%);max-width:20rem;white-space:break-spaces;background-color:#fff;border:1px solid rgba(255,128,0,.125);box-shadow:#ff800020 2px 3px 10px;padding:.3rem .5rem;box-sizing:border-box;border-radius:3px}.inputContainer .errorTooltip .errorContainer{margin-left:initial}.inputContainer:hover .errorTooltip,.inputContainer:hover .errorTooltipTriangle,.inputContainer:hover .errorTooltipTriangleWhite{display:block}.inputContainer.percentageSpacing{flex:60}.inputContainer.percentageSpacing.d30-70{flex:70}.inputContainer.percentageSpacing.d34-66{flex:66}.errorContainer{color:#ff8000}.errorContainer.hasCaption{margin-left:40%}.errorContainer.hasCaption.d30-70{margin-left:30%}.errorContainer.hasCaption.d34-66{margin-left:34%}\n"] }]
101
103
  }], ctorParameters: function () { return [{ type: i1.FormComponent, decorators: [{
102
104
  type: Optional
103
105
  }] }, { type: undefined, decorators: [{
@@ -115,8 +117,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImpor
115
117
  type: Input
116
118
  }], swapInputAndCaption: [{
117
119
  type: Input
120
+ }], errorMessageAsTooltip: [{
121
+ type: Input
118
122
  }], internalComponentRef: [{
119
123
  type: ViewChild,
120
124
  args: ['internalComponentRef']
121
125
  }] } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBK0IsTUFBTSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUtqSSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFFL0MsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQXNCLHFCQUFxQixDQUFDLENBQUM7QUFFbEcsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQXNCO0lBQ3hELEdBQUcsRUFBRSxnQ0FBZ0M7SUFDckMsR0FBRyxFQUFFLGlDQUFpQztJQUN0QyxRQUFRLEVBQUUsd0JBQXdCO0lBQ2xDLEtBQUssRUFBRSwyQkFBMkI7SUFDbEMsU0FBUyxFQUFFLGdEQUFnRDtJQUMzRCxTQUFTLEVBQUUsaURBQWlEO0lBQzVELE9BQU8sRUFBRSx5QkFBeUI7SUFDbEMsYUFBYSxFQUFFLHNCQUFzQjtJQUNyQyxJQUFJLEVBQUUsb0JBQW9CO0NBQzFCLENBQUM7QUFPRixNQUFNLE9BQU8sb0JBQW9CO0lBY2hDLFlBQ3NCLE1BQXFCLEVBQ08sY0FBbUM7UUFEL0QsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNPLG1CQUFjLEdBQWQsY0FBYyxDQUFxQjtRQWJyRSxjQUFTLEdBQThCLFlBQVks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LCBJbmplY3QsIEluamVjdGlvblRva2VuLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCwgRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gJy4uL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7Q3VzdG9tRXJyb3JNZXNzYWdlcywgRm9ybUVycm9yTWVzc2FnZXN9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFZhbHVlQWNjZXNzb3JCYXNlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdmFsdWUtYWNjZXNzb3ItYmFzZS92YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpc1ZhbHVlU2V0IH0gZnJvbSAnLi4vLi4vdXRpbC92YWx1ZXMnO1xuXG5leHBvcnQgY29uc3QgRk9STV9FUlJPUl9NRVNTQUdFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDdXN0b21FcnJvck1lc3NhZ2VzPignZm9ybS5lcnJvci5tZXNzYWdlcycpO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFUzogRm9ybUVycm9yTWVzc2FnZXMgPSB7XG5cdG1pbjogJ1VzZSBhIG51bWJlciBsYXJnZXIgdGhhbiAlbWluJScsXG5cdG1heDogJ1VzZSBhIG51bWJlciBzbWFsbGVyIHRoYW4gJW1heCUnLFxuXHRyZXF1aXJlZDogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnLFxuXHRlbWFpbDogJ1VzZSBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxuXHRtaW5MZW5ndGg6ICdIYXMgdG8gYmUgbG9uZ2VyIHRoYW4gJW1pbkxlbmd0aCUgY2hhcmFjdGVyKHMpJyxcblx0bWF4TGVuZ3RoOiAnSGFzIHRvIGJlIHNob3J0ZXIgdGhhbiAlbWF4TGVuZ3RoJSBjaGFyYWN0ZXIocyknLFxuXHRwYXR0ZXJuOiAnVGhpcyBpbnB1dCBpcyBub3QgdmFsaWQnLFxuXHRtYXRjaFBhc3N3b3JkOiAnUGFzc3dvcmRzIG11c3QgbWF0Y2gnLFxuXHRkYXRlOiAnRW50ZXIgYSB2YWxpZCBkYXRlJyxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2tscC1mb3JtLWVsZW1lbnQnLFxuXHR0ZW1wbGF0ZVVybDogJy4vZm9ybS1lbGVtZW50LmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZm9ybS1lbGVtZW50LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50Q29tcG9uZW50IHtcblx0cHVibGljIGF0dGFjaGVkQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuXHRASW5wdXQoKSBwdWJsaWMgY2FwdGlvbjogc3RyaW5nO1xuXHRASW5wdXQoKSBwdWJsaWMgZGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ2hvcml6b250YWwnO1xuXHRASW5wdXQoKSBwdWJsaWMgY2FwdGlvblNwYWNpbmc6ICdwZXJjZW50YWdlcycgfCAnbm9uZScgPSAncGVyY2VudGFnZXMnO1xuXHRASW5wdXQoKSBwdWJsaWMgc3BhY2VEaXN0cmlidXRpb246ICc0MC02MCcgfCAnMzQtNjYnIHwgJzMwLTcwJyA9ICc0MC02MCc7XG5cdEBJbnB1dCgpIHB1YmxpYyBzd2FwSW5wdXRBbmRDYXB0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cdEBWaWV3Q2hpbGQoJ2ludGVybmFsQ29tcG9uZW50UmVmJykgcHVibGljIGludGVybmFsQ29tcG9uZW50UmVmOiBFbGVtZW50UmVmO1xuXG5cdHB1YmxpYyBjYXB0aW9uUmVmOiBFbGVtZW50UmVmO1xuXHRwdWJsaWMgZXJyb3JNZXNzYWdlczogRm9ybUVycm9yTWVzc2FnZXMgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTO1xuXHRwdWJsaWMgY3VzdG9tRXJyb3JIYW5kbGVyczogQXJyYXk8eyBlcnJvcjogc3RyaW5nOyB0ZW1wbGF0ZVJlZjogRWxlbWVudFJlZiB9PiA9IFtdO1xuXHRwcml2YXRlIGlucHV0OiBWYWx1ZUFjY2Vzc29yQmFzZTxhbnk+O1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdCBAT3B0aW9uYWwoKSBwcml2YXRlIHBhcmVudDogRm9ybUNvbXBvbmVudCxcblx0XHRASW5qZWN0KEZPUk1fRVJST1JfTUVTU0FHRVMpIEBPcHRpb25hbCgpIHByaXZhdGUgY3VzdG9tTWVzc2FnZXM6IEN1c3RvbUVycm9yTWVzc2FnZXMsXG5cdCkge31cblxuXHRwdWJsaWMgc2hvdWxkU2hvd0Vycm9yTWVzc2FnZXMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMucGFyZW50Py5zaG93RXJyb3JNZXNzYWdlcyAhPT0gZmFsc2U7XG5cdH1cblxuXHRwdWJsaWMgc3Vic3RpdHV0ZVBhcmFtZXRlcnMobWVzc2FnZTogc3RyaW5nLCBwYXJhbWV0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMocGFyYW1ldGVycykucmVkdWNlKChtc2csIGtleSkgPT4ge1xuXHRcdFx0cmV0dXJuIG1zZy5yZXBsYWNlKGAlJHtrZXl9JWAsIHBhcmFtZXRlcnNba2V5XSk7XG5cdFx0fSwgbWVzc2FnZSk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsIGlucHV0OiBWYWx1ZUFjY2Vzc29yQmFzZTxhbnk+ID0gbnVsbCk6IHZvaWQge1xuXHRcdHRoaXMuYXR0YWNoZWRDb250cm9sID0gZm9ybUNvbnRyb2w7XG5cdFx0dGhpcy5wYXJlbnQucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sLCB0aGlzKTtcblx0XHR0aGlzLmlucHV0ID0gaW5wdXQ7XG5cdH1cblxuXHRwdWJsaWMgdW5yZWdpc3RlckNvbnRyb2woZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IHZvaWQge1xuXHRcdHRoaXMuYXR0YWNoZWRDb250cm9sID0gbnVsbDtcblx0XHR0aGlzLnBhcmVudC51bnJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0QXR0YWNoZWRDb250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG5cdFx0cmV0dXJuIHRoaXMuYXR0YWNoZWRDb250cm9sO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyRXJyb3JIYW5kbGVyKGVycm9yOiBzdHJpbmcsIHRlbXBsYXRlUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG5cdFx0dGhpcy5jdXN0b21FcnJvckhhbmRsZXJzLnB1c2goe2Vycm9yLCB0ZW1wbGF0ZVJlZn0pO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQ2FwdGlvbih0ZW1wbGF0ZVJlZjogRWxlbWVudFJlZik6IHZvaWQge1xuXHRcdHRoaXMuY2FwdGlvblJlZiA9IHRlbXBsYXRlUmVmO1xuXHR9XG5cblx0Z2V0RXJyb3JUb1Nob3coKTogc3RyaW5nIHtcblx0XHRpZiAodGhpcy5hdHRhY2hlZENvbnRyb2w/LnRvdWNoZWQgPT09IHRydWUgJiYgdGhpcy5hdHRhY2hlZENvbnRyb2w/LmVycm9ycykge1xuXHRcdFx0cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuYXR0YWNoZWRDb250cm9sPy5lcnJvcnMpWzBdO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGdldEN1c3RvbUVycm9ySGFuZGxlcihlcnJvcjogc3RyaW5nKTogeyBlcnJvcjogc3RyaW5nOyB0ZW1wbGF0ZVJlZjogRWxlbWVudFJlZiB9IHtcblx0XHRyZXR1cm4gdGhpcy5jdXN0b21FcnJvckhhbmRsZXJzLmZpbmQoKGUpID0+IGUuZXJyb3IgPT09IGVycm9yKTtcblx0fVxuXG5cdHNob3dEZWZhdWx0RXJyb3IoZXJyb3I6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmdldEVycm9yVG9TaG93KCkgPT09IGVycm9yICYmICF0aGlzLmN1c3RvbUVycm9ySGFuZGxlcnMuc29tZSgoZSkgPT4gZS5lcnJvciA9PT0gZXJyb3IpO1xuXHR9XG5cblx0Z2V0U2Nyb2xsYWJsZVBhcmVudChub2RlKTogYW55IHtcblx0XHRpZiAobm9kZSA9PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0aWYgKG5vZGUuc2Nyb2xsSGVpZ2h0ID4gbm9kZS5jbGllbnRIZWlnaHQpIHtcblx0XHRcdHJldHVybiBub2RlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRTY3JvbGxhYmxlUGFyZW50KG5vZGUucGFyZW50Tm9kZSk7XG5cdFx0fVxuXHR9XG5cblx0c2Nyb2xsVG8oKTogdm9pZHtcblx0XHR0aGlzLmludGVybmFsQ29tcG9uZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7XG5cdFx0Ly8gdG8gZ2l2ZSBzb21lIGJyZWF0aGluZyByb29tLCB3ZSBzY3JvbGwgMTAwcHggbW9yZSB0byB0aGUgdG9wXG5cdFx0dGhpcy5nZXRTY3JvbGxhYmxlUGFyZW50KHRoaXMuaW50ZXJuYWxDb21wb25lbnRSZWYubmF0aXZlRWxlbWVudCk/LnNjcm9sbEJ5KDAsIC0xMDApO1xuXHR9XG5cblx0aXNSZXF1aXJlZCgpOiBib29sZWFuIHtcblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLmlucHV0KSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuaW5wdXQuaGFzVmFsaWRhdG9yKCdyZXF1aXJlZCcpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRnZXRFcnJvck1lc3NhZ2Uoa2V5OiBrZXlvZiBGb3JtRXJyb3JNZXNzYWdlcyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuY3VzdG9tTWVzc2FnZXM/LltrZXldPy4oKSA/PyB0aGlzLmVycm9yTWVzc2FnZXNba2V5XTtcblx0fVxuXG5cdHB1YmxpYyBnZXRFcnJvckxvY2F0aW9uKCk6ICdiZWxvd0NhcHRpb24nIHwgJ3JpZ2h0T2ZDYXB0aW9uJyB7XG5cdFx0cmV0dXJuIHRoaXMucGFyZW50Py5lcnJvck1lc3NhZ2VMb2NhdGlvbiA/PyAnYmVsb3dDYXB0aW9uJztcblx0fVxufVxuIiwiPG5nLXRlbXBsYXRlICNlcnJvclJlZj5cblx0PGRpdiAqbmdJZj1cInNob3VsZFNob3dFcnJvck1lc3NhZ2VzKCkgJiYgZ2V0RXJyb3JUb1Nob3coKVwiIGNsYXNzPVwiZXJyb3JDb250YWluZXJcIiBbbmdDbGFzc109XCJ7aGFzQ2FwdGlvbjogY2FwdGlvbiB8fCBjYXB0aW9uUmVmLCAnZDMwLTcwJzogc3BhY2VEaXN0cmlidXRpb24gPT09ICczMC03MCcsICdkMzQtNjYnOiBzcGFjZURpc3RyaWJ1dGlvbiA9PT0gJzM0LTY2J31cIj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignbWluJylcIj57e3N1YnN0aXR1dGVQYXJhbWV0ZXJzKGdldEVycm9yTWVzc2FnZShcIm1pblwiKSwge21pbjogYXR0YWNoZWRDb250cm9sLmVycm9ycy5taW4ubWlufSl9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdtYXgnKVwiPnt7c3Vic3RpdHV0ZVBhcmFtZXRlcnMoZ2V0RXJyb3JNZXNzYWdlKFwibWF4XCIpLCB7bWF4OiBhdHRhY2hlZENvbnRyb2wuZXJyb3JzLm1heC5tYXh9KX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ3JlcXVpcmVkJylcIj57e2dldEVycm9yTWVzc2FnZShcInJlcXVpcmVkXCIpfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignZW1haWwnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwiZW1haWxcIil9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdtaW5sZW5ndGgnKVwiPnt7c3Vic3RpdHV0ZVBhcmFtZXRlcnMoZ2V0RXJyb3JNZXNzYWdlKFwibWluTGVuZ3RoXCIpLCB7bWluTGVuZ3RoOiBhdHRhY2hlZENvbnRyb2wuZXJyb3JzLm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aH0pfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignbWF4bGVuZ3RoJylcIj57e3N1YnN0aXR1dGVQYXJhbWV0ZXJzKGdldEVycm9yTWVzc2FnZShcIm1heExlbmd0aFwiKSwge21heExlbmd0aDogYXR0YWNoZWRDb250cm9sLmVycm9ycy5tYXhsZW5ndGgucmVxdWlyZWRMZW5ndGh9KX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ3BhdHRlcm4nKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwicGF0dGVyblwiKX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ01hdGNoUGFzc3dvcmQnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwibWF0Y2hQYXNzd29yZFwiKX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ2RhdGUnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwiZGF0ZVwiKX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ21lc3NhZ2UnKVwiPnt7YXR0YWNoZWRDb250cm9sLmVycm9ycy5tZXNzYWdlLnZhbHVlfX08L2Rpdj5cblx0XHQ8ZGl2IFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldEN1c3RvbUVycm9ySGFuZGxlcihnZXRFcnJvclRvU2hvdygpKT8udGVtcGxhdGVSZWZcIj48L2Rpdj5cblx0PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCdcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJlcnJvclJlZlwiPjwvbmctY29udGFpbmVyPlxuXG48ZGl2IGNsYXNzPVwiY29tcG9uZW50Q29udGFpbmVyXCIgW25nQ2xhc3NdPVwie2hhc0NhcHRpb246IGNhcHRpb24gfHwgY2FwdGlvblJlZiwgdmVydGljYWw6IGRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJywgcmV2ZXJzZU9yZGVyOiBzd2FwSW5wdXRBbmRDYXB0aW9ufVwiICNpbnRlcm5hbENvbXBvbmVudFJlZj5cblx0PGRpdiBjbGFzcz1cImNhcHRpb25cIiAqbmdJZj1cImNhcHRpb24gfHwgY2FwdGlvblJlZlwiXG5cdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0aGFzRXJyb3JzOiBnZXRFcnJvclRvU2hvdygpICYmIGF0dGFjaGVkQ29udHJvbC50b3VjaGVkLFxuXHRcdFx0cGVyY2VudGFnZVNwYWNpbmc6IGNhcHRpb25TcGFjaW5nID09PSAncGVyY2VudGFnZXMnLFxuXHRcdFx0J2QzMC03MCc6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnMzAtNzAnLFxuXHRcdFx0J2QzNC02Nic6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnMzQtNjYnLFxuXHRcdFx0d2l0aEVycm9yUmlnaHRPZkNhcHRpb246IGdldEVycm9yTG9jYXRpb24oKSA9PT0gJ3JpZ2h0T2ZDYXB0aW9uJ1xuXHRcdH1cIlxuXHQ+XG5cdFx0PGRpdiAqbmdJZj1cImNhcHRpb25SZWZcIiBjbGFzcz1cImNhcHRpb25SZWZDb250YWluZXJcIj5cblx0XHRcdDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FwdGlvblJlZlwiPjwvbmctY29udGFpbmVyPlxuXHRcdFx0PGRpdiAqbmdJZj1cImlzUmVxdWlyZWQoKVwiPiZuYnNwOyo8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwiIWNhcHRpb25SZWZcIj57e2NhcHRpb259fTxzcGFuICpuZ0lmPVwiaXNSZXF1aXJlZCgpXCI+Jm5ic3A7Kjwvc3Bhbj48L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwicmlnaHRPZkNhcHRpb25FcnJvclwiPlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJyAmJiBnZXRFcnJvckxvY2F0aW9uKCkgPT09ICdyaWdodE9mQ2FwdGlvbidcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJlcnJvclJlZlwiPjwvbmctY29udGFpbmVyPlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImRpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJyAmJiBnZXRFcnJvckxvY2F0aW9uKCkgPT09ICdiZWxvd0NhcHRpb24nXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXJyb3JSZWZcIj48L25nLWNvbnRhaW5lcj5cblx0PGRpdiBjbGFzcz1cImlucHV0Q29udGFpbmVyXCIgW25nQ2xhc3NdPVwie1xuXHRcdHBlcmNlbnRhZ2VTcGFjaW5nOiBjYXB0aW9uU3BhY2luZyA9PT0gJ3BlcmNlbnRhZ2VzJyxcblx0XHQnZDMwLTcwJzogc3BhY2VEaXN0cmlidXRpb24gPT09ICczMC03MCcsXG5cdFx0J2QzNC02Nic6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnMzQtNjYnXG5cdH1cIj5cblx0XHQ8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cdDwvZGl2PlxuPC9kaXY+XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBK0IsTUFBTSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUtqSSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBRS9DLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFzQixxQkFBcUIsQ0FBQyxDQUFDO0FBRWxHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFzQjtJQUN4RCxHQUFHLEVBQUUsZ0NBQWdDO0lBQ3JDLEdBQUcsRUFBRSxpQ0FBaUM7SUFDdEMsUUFBUSxFQUFFLHdCQUF3QjtJQUNsQyxLQUFLLEVBQUUsMkJBQTJCO0lBQ2xDLFNBQVMsRUFBRSxnREFBZ0Q7SUFDM0QsU0FBUyxFQUFFLGlEQUFpRDtJQUM1RCxPQUFPLEVBQUUseUJBQXlCO0lBQ2xDLGFBQWEsRUFBRSxzQkFBc0I7SUFDckMsSUFBSSxFQUFFLG9CQUFvQjtDQUMxQixDQUFDO0FBT0YsTUFBTSxPQUFPLG9CQUFvQjtJQWVoQyxZQUNzQixNQUFxQixFQUNPLGNBQW1DO1FBRC9ELFdBQU0sR0FBTixNQUFNLENBQWU7UUFDTyxtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7UUFkckUsY0FBUyxHQUE4QixZQUFZ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dGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0LCBJbmplY3QsIEluamVjdGlvblRva2VuLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCwgRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Zvcm1Db21wb25lbnR9IGZyb20gJy4uL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7Q3VzdG9tRXJyb3JNZXNzYWdlcywgRm9ybUVycm9yTWVzc2FnZXN9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFZhbHVlQWNjZXNzb3JCYXNlIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvdmFsdWUtYWNjZXNzb3ItYmFzZS92YWx1ZS1hY2Nlc3Nvci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpc1ZhbHVlU2V0IH0gZnJvbSAnLi4vLi4vdXRpbC92YWx1ZXMnO1xuXG5leHBvcnQgY29uc3QgRk9STV9FUlJPUl9NRVNTQUdFUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDdXN0b21FcnJvck1lc3NhZ2VzPignZm9ybS5lcnJvci5tZXNzYWdlcycpO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9FUlJPUl9NRVNTQUdFUzogRm9ybUVycm9yTWVzc2FnZXMgPSB7XG5cdG1pbjogJ1VzZSBhIG51bWJlciBsYXJnZXIgdGhhbiAlbWluJScsXG5cdG1heDogJ1VzZSBhIG51bWJlciBzbWFsbGVyIHRoYW4gJW1heCUnLFxuXHRyZXF1aXJlZDogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnLFxuXHRlbWFpbDogJ1VzZSBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxuXHRtaW5MZW5ndGg6ICdIYXMgdG8gYmUgbG9uZ2VyIHRoYW4gJW1pbkxlbmd0aCUgY2hhcmFjdGVyKHMpJyxcblx0bWF4TGVuZ3RoOiAnSGFzIHRvIGJlIHNob3J0ZXIgdGhhbiAlbWF4TGVuZ3RoJSBjaGFyYWN0ZXIocyknLFxuXHRwYXR0ZXJuOiAnVGhpcyBpbnB1dCBpcyBub3QgdmFsaWQnLFxuXHRtYXRjaFBhc3N3b3JkOiAnUGFzc3dvcmRzIG11c3QgbWF0Y2gnLFxuXHRkYXRlOiAnRW50ZXIgYSB2YWxpZCBkYXRlJyxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2tscC1mb3JtLWVsZW1lbnQnLFxuXHR0ZW1wbGF0ZVVybDogJy4vZm9ybS1lbGVtZW50LmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZm9ybS1lbGVtZW50LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50Q29tcG9uZW50IHtcblx0cHVibGljIGF0dGFjaGVkQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuXHRASW5wdXQoKSBwdWJsaWMgY2FwdGlvbjogc3RyaW5nO1xuXHRASW5wdXQoKSBwdWJsaWMgZGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ2hvcml6b250YWwnO1xuXHRASW5wdXQoKSBwdWJsaWMgY2FwdGlvblNwYWNpbmc6ICdwZXJjZW50YWdlcycgfCAnbm9uZScgPSAncGVyY2VudGFnZXMnO1xuXHRASW5wdXQoKSBwdWJsaWMgc3BhY2VEaXN0cmlidXRpb246ICc0MC02MCcgfCAnMzQtNjYnIHwgJzMwLTcwJyA9ICc0MC02MCc7XG5cdEBJbnB1dCgpIHB1YmxpYyBzd2FwSW5wdXRBbmRDYXB0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cdEBJbnB1dCgpIHB1YmxpYyBlcnJvck1lc3NhZ2VBc1Rvb2x0aXA6IGJvb2xlYW4gPSBmYWxzZTtcblx0QFZpZXdDaGlsZCgnaW50ZXJuYWxDb21wb25lbnRSZWYnKSBwdWJsaWMgaW50ZXJuYWxDb21wb25lbnRSZWY6IEVsZW1lbnRSZWY7XG5cblx0cHVibGljIGNhcHRpb25SZWY6IEVsZW1lbnRSZWY7XG5cdHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBGb3JtRXJyb3JNZXNzYWdlcyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVM7XG5cdHB1YmxpYyBjdXN0b21FcnJvckhhbmRsZXJzOiBBcnJheTx7IGVycm9yOiBzdHJpbmc7IHRlbXBsYXRlUmVmOiBFbGVtZW50UmVmIH0+ID0gW107XG5cdHByaXZhdGUgaW5wdXQ6IFZhbHVlQWNjZXNzb3JCYXNlPGFueT47XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0IEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50OiBGb3JtQ29tcG9uZW50LFxuXHRcdEBJbmplY3QoRk9STV9FUlJPUl9NRVNTQUdFUykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjdXN0b21NZXNzYWdlczogQ3VzdG9tRXJyb3JNZXNzYWdlcyxcblx0KSB7fVxuXG5cdHB1YmxpYyBzaG91bGRTaG93RXJyb3JNZXNzYWdlcygpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5wYXJlbnQ/LnNob3dFcnJvck1lc3NhZ2VzICE9PSBmYWxzZTtcblx0fVxuXG5cdHB1YmxpYyBzdWJzdGl0dXRlUGFyYW1ldGVycyhtZXNzYWdlOiBzdHJpbmcsIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBzdHJpbmcge1xuXHRcdHJldHVybiBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5yZWR1Y2UoKG1zZywga2V5KSA9PiB7XG5cdFx0XHRyZXR1cm4gbXNnLnJlcGxhY2UoYCUke2tleX0lYCwgcGFyYW1ldGVyc1trZXldKTtcblx0XHR9LCBtZXNzYWdlKTtcblx0fVxuXG5cdHB1YmxpYyByZWdpc3RlckNvbnRyb2woZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCwgaW5wdXQ6IFZhbHVlQWNjZXNzb3JCYXNlPGFueT4gPSBudWxsKTogdm9pZCB7XG5cdFx0dGhpcy5hdHRhY2hlZENvbnRyb2wgPSBmb3JtQ29udHJvbDtcblx0XHR0aGlzLnBhcmVudC5yZWdpc3RlckNvbnRyb2woZm9ybUNvbnRyb2wsIHRoaXMpO1xuXHRcdHRoaXMuaW5wdXQgPSBpbnB1dDtcblx0fVxuXG5cdHB1YmxpYyB1bnJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKTogdm9pZCB7XG5cdFx0dGhpcy5hdHRhY2hlZENvbnRyb2wgPSBudWxsO1xuXHRcdHRoaXMucGFyZW50LnVucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sKTtcblx0fVxuXG5cdHB1YmxpYyBnZXRBdHRhY2hlZENvbnRyb2woKTogQWJzdHJhY3RDb250cm9sIHtcblx0XHRyZXR1cm4gdGhpcy5hdHRhY2hlZENvbnRyb2w7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJFcnJvckhhbmRsZXIoZXJyb3I6IHN0cmluZywgdGVtcGxhdGVSZWY6IEVsZW1lbnRSZWYpOiB2b2lkIHtcblx0XHR0aGlzLmN1c3RvbUVycm9ySGFuZGxlcnMucHVzaCh7ZXJyb3IsIHRlbXBsYXRlUmVmfSk7XG5cdH1cblxuXHRwdWJsaWMgcmVnaXN0ZXJDYXB0aW9uKHRlbXBsYXRlUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG5cdFx0dGhpcy5jYXB0aW9uUmVmID0gdGVtcGxhdGVSZWY7XG5cdH1cblxuXHRnZXRFcnJvclRvU2hvdygpOiBzdHJpbmcge1xuXHRcdGlmICh0aGlzLmF0dGFjaGVkQ29udHJvbD8udG91Y2hlZCA9PT0gdHJ1ZSAmJiB0aGlzLmF0dGFjaGVkQ29udHJvbD8uZXJyb3JzKSB7XG5cdFx0XHRyZXR1cm4gT2JqZWN0LmtleXModGhpcy5hdHRhY2hlZENvbnRyb2w/LmVycm9ycylbMF07XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Z2V0Q3VzdG9tRXJyb3JIYW5kbGVyKGVycm9yOiBzdHJpbmcpOiB7IGVycm9yOiBzdHJpbmc7IHRlbXBsYXRlUmVmOiBFbGVtZW50UmVmIH0ge1xuXHRcdHJldHVybiB0aGlzLmN1c3RvbUVycm9ySGFuZGxlcnMuZmluZCgoZSkgPT4gZS5lcnJvciA9PT0gZXJyb3IpO1xuXHR9XG5cblx0c2hvd0RlZmF1bHRFcnJvcihlcnJvcjogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0RXJyb3JUb1Nob3coKSA9PT0gZXJyb3IgJiYgIXRoaXMuY3VzdG9tRXJyb3JIYW5kbGVycy5zb21lKChlKSA9PiBlLmVycm9yID09PSBlcnJvcik7XG5cdH1cblxuXHRnZXRTY3JvbGxhYmxlUGFyZW50KG5vZGUpOiBhbnkge1xuXHRcdGlmIChub2RlID09IG51bGwpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0XHRpZiAobm9kZS5zY3JvbGxIZWlnaHQgPiBub2RlLmNsaWVudEhlaWdodCkge1xuXHRcdFx0cmV0dXJuIG5vZGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0aGlzLmdldFNjcm9sbGFibGVQYXJlbnQobm9kZS5wYXJlbnROb2RlKTtcblx0XHR9XG5cdH1cblxuXHRzY3JvbGxUbygpOiB2b2lke1xuXHRcdHRoaXMuaW50ZXJuYWxDb21wb25lbnRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh0cnVlKTtcblx0XHQvLyB0byBnaXZlIHNvbWUgYnJlYXRoaW5nIHJvb20sIHdlIHNjcm9sbCAxMDBweCBtb3JlIHRvIHRoZSB0b3Bcblx0XHR0aGlzLmdldFNjcm9sbGFibGVQYXJlbnQodGhpcy5pbnRlcm5hbENvbXBvbmVudFJlZi5uYXRpdmVFbGVtZW50KT8uc2Nyb2xsQnkoMCwgLTEwMCk7XG5cdH1cblxuXHRpc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xuXHRcdGlmIChpc1ZhbHVlU2V0KHRoaXMuaW5wdXQpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5pbnB1dC5oYXNWYWxpZGF0b3IoJ3JlcXVpcmVkJyk7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGdldEVycm9yTWVzc2FnZShrZXk6IGtleW9mIEZvcm1FcnJvck1lc3NhZ2VzKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5jdXN0b21NZXNzYWdlcz8uW2tleV0/LigpID8/IHRoaXMuZXJyb3JNZXNzYWdlc1trZXldO1xuXHR9XG5cblx0cHVibGljIGdldEVycm9yTG9jYXRpb24oKTogJ2JlbG93Q2FwdGlvbicgfCAncmlnaHRPZkNhcHRpb24nIHtcblx0XHRyZXR1cm4gdGhpcy5wYXJlbnQ/LmVycm9yTWVzc2FnZUxvY2F0aW9uID8/ICdiZWxvd0NhcHRpb24nO1xuXHR9XG59XG4iLCI8bmctdGVtcGxhdGUgI2Vycm9yUmVmPlxuXHQ8ZGl2ICpuZ0lmPVwic2hvdWxkU2hvd0Vycm9yTWVzc2FnZXMoKSAmJiBnZXRFcnJvclRvU2hvdygpXCIgY2xhc3M9XCJlcnJvckNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cIntoYXNDYXB0aW9uOiBjYXB0aW9uIHx8IGNhcHRpb25SZWYsICdkMzAtNzAnOiBzcGFjZURpc3RyaWJ1dGlvbiA9PT0gJzMwLTcwJywgJ2QzNC02Nic6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnMzQtNjYnfVwiIFtrbHBXaXRoVG9vbHRpcF09XCIhZXJyb3JNZXNzYWdlQXNUb29sdGlwICYmIGdldEVycm9yTG9jYXRpb24oKSA9PT0gJ3JpZ2h0T2ZDYXB0aW9uJ1wiPlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdtaW4nKVwiPnt7c3Vic3RpdHV0ZVBhcmFtZXRlcnMoZ2V0RXJyb3JNZXNzYWdlKFwibWluXCIpLCB7bWluOiBhdHRhY2hlZENvbnRyb2wuZXJyb3JzLm1pbi5taW59KX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ21heCcpXCI+e3tzdWJzdGl0dXRlUGFyYW1ldGVycyhnZXRFcnJvck1lc3NhZ2UoXCJtYXhcIiksIHttYXg6IGF0dGFjaGVkQ29udHJvbC5lcnJvcnMubWF4Lm1heH0pfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcigncmVxdWlyZWQnKVwiPnt7Z2V0RXJyb3JNZXNzYWdlKFwicmVxdWlyZWRcIil9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdlbWFpbCcpXCI+e3tnZXRFcnJvck1lc3NhZ2UoXCJlbWFpbFwiKX19PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cInNob3dEZWZhdWx0RXJyb3IoJ21pbmxlbmd0aCcpXCI+e3tzdWJzdGl0dXRlUGFyYW1ldGVycyhnZXRFcnJvck1lc3NhZ2UoXCJtaW5MZW5ndGhcIiksIHttaW5MZW5ndGg6IGF0dGFjaGVkQ29udHJvbC5lcnJvcnMubWlubGVuZ3RoLnJlcXVpcmVkTGVuZ3RofSl9fTwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCJzaG93RGVmYXVsdEVycm9yKCdtYXhsZW5ndGgnKVwiPnt7c3Vic3RpdHV0ZVBhcmFtZXRlcnMoZ2V0RXJyb3JNZXNzYWdlKFwibWF4TGVuZ3RoXCIpLCB7bWF4TGVuZ3RoOiBhdHRhY2hlZENvbnRyb2wuZXJyb3JzLm1heGxlbmd0aC5yZXF1aXJlZExlbmd0aH0pfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcigncGF0dGVybicpXCI+e3tnZXRFcnJvck1lc3NhZ2UoXCJwYXR0ZXJuXCIpfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignTWF0Y2hQYXNzd29yZCcpXCI+e3tnZXRFcnJvck1lc3NhZ2UoXCJtYXRjaFBhc3N3b3JkXCIpfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignZGF0ZScpXCI+e3tnZXRFcnJvck1lc3NhZ2UoXCJkYXRlXCIpfX08L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2hvd0RlZmF1bHRFcnJvcignbWVzc2FnZScpXCI+e3thdHRhY2hlZENvbnRyb2wuZXJyb3JzLm1lc3NhZ2UudmFsdWV9fTwvZGl2PlxuXHRcdDxkaXYgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0Q3VzdG9tRXJyb3JIYW5kbGVyKGdldEVycm9yVG9TaG93KCkpPy50ZW1wbGF0ZVJlZlwiPjwvZGl2PlxuXHQ8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyAmJiAhZXJyb3JNZXNzYWdlQXNUb29sdGlwXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXJyb3JSZWZcIj48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImNvbXBvbmVudENvbnRhaW5lclwiIFtuZ0NsYXNzXT1cIntoYXNDYXB0aW9uOiBjYXB0aW9uIHx8IGNhcHRpb25SZWYsIHZlcnRpY2FsOiBkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcsIHJldmVyc2VPcmRlcjogc3dhcElucHV0QW5kQ2FwdGlvbn1cIiAjaW50ZXJuYWxDb21wb25lbnRSZWY+XG5cdDxkaXYgY2xhc3M9XCJjYXB0aW9uXCIgKm5nSWY9XCJjYXB0aW9uIHx8IGNhcHRpb25SZWZcIlxuXHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdGhhc0Vycm9yczogZ2V0RXJyb3JUb1Nob3coKSAmJiBhdHRhY2hlZENvbnRyb2wudG91Y2hlZCxcblx0XHRcdHBlcmNlbnRhZ2VTcGFjaW5nOiBjYXB0aW9uU3BhY2luZyA9PT0gJ3BlcmNlbnRhZ2VzJyxcblx0XHRcdCdkMzAtNzAnOiBzcGFjZURpc3RyaWJ1dGlvbiA9PT0gJzMwLTcwJyxcblx0XHRcdCdkMzQtNjYnOiBzcGFjZURpc3RyaWJ1dGlvbiA9PT0gJzM0LTY2Jyxcblx0XHRcdHdpdGhFcnJvclJpZ2h0T2ZDYXB0aW9uOiBnZXRFcnJvckxvY2F0aW9uKCkgPT09ICdyaWdodE9mQ2FwdGlvbidcblx0XHR9XCJcblx0PlxuXHRcdDxkaXYgKm5nSWY9XCJjYXB0aW9uUmVmXCIgY2xhc3M9XCJjYXB0aW9uUmVmQ29udGFpbmVyXCI+XG5cdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhcHRpb25SZWZcIj48L25nLWNvbnRhaW5lcj5cblx0XHRcdDxkaXYgKm5nSWY9XCJpc1JlcXVpcmVkKClcIj4mbmJzcDsqPC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiAqbmdJZj1cIiFjYXB0aW9uUmVmXCIgY2xhc3M9XCJjYXB0aW9uVGV4dFwiPnt7Y2FwdGlvbn19PHNwYW4gKm5nSWY9XCJpc1JlcXVpcmVkKClcIj4mbmJzcDsqPC9zcGFuPjwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJyaWdodE9mQ2FwdGlvbkVycm9yXCI+XG5cdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZGlyZWN0aW9uID09PSAndmVydGljYWwnICYmIGdldEVycm9yTG9jYXRpb24oKSA9PT0gJ3JpZ2h0T2ZDYXB0aW9uJyAmJiAhZXJyb3JNZXNzYWdlQXNUb29sdGlwXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXJyb3JSZWZcIj48L25nLWNvbnRhaW5lcj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcgJiYgZ2V0RXJyb3JMb2NhdGlvbigpID09PSAnYmVsb3dDYXB0aW9uJyAmJiAhZXJyb3JNZXNzYWdlQXNUb29sdGlwXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXJyb3JSZWZcIj48L25nLWNvbnRhaW5lcj5cblx0PGRpdiBjbGFzcz1cImlucHV0Q29udGFpbmVyXCIgW25nQ2xhc3NdPVwie1xuXHRcdHBlcmNlbnRhZ2VTcGFjaW5nOiBjYXB0aW9uU3BhY2luZyA9PT0gJ3BlcmNlbnRhZ2VzJyxcblx0XHQnZDMwLTcwJzogc3BhY2VEaXN0cmlidXRpb24gPT09ICczMC03MCcsXG5cdFx0J2QzNC02Nic6IHNwYWNlRGlzdHJpYnV0aW9uID09PSAnMzQtNjYnXG5cdH1cIj5cblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JNZXNzYWdlQXNUb29sdGlwICYmIHNob3VsZFNob3dFcnJvck1lc3NhZ2VzKCkgJiYgZ2V0RXJyb3JUb1Nob3coKVwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImVycm9yVG9vbHRpcFRyaWFuZ2xlXCI+PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZXJyb3JUb29sdGlwVHJpYW5nbGVXaGl0ZVwiPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImVycm9yVG9vbHRpcFwiPlxuXHRcdFx0XHQ8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImVycm9yUmVmXCI+PC9uZy1jb250YWluZXI+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHQ8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cdDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -6,7 +6,6 @@ import * as i2 from "@angular/common";
6
6
  export class FormErrorComponent {
7
7
  constructor(parent) {
8
8
  this.parent = parent;
9
- this.showErrorValueAsMessage = false;
10
9
  this.showError = false;
11
10
  }
12
11
  ngOnInit() {
@@ -26,21 +25,19 @@ export class FormErrorComponent {
26
25
  return this.parent.getAttachedControl().errors[this.error];
27
26
  }
28
27
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FormErrorComponent, deps: [{ token: i1.FormElementComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FormErrorComponent, selector: "klp-form-error", inputs: { error: "error", showErrorValueAsMessage: "showErrorValueAsMessage" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentRef"], descendants: true }], ngImport: i0, template: "<ng-template #contentRef>\n\t<ng-content *ngIf=\"!showErrorValueAsMessage\"></ng-content>\n\t<div *ngIf=\"showErrorValueAsMessage\">{{getErrorValueMessage()}}</div>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FormErrorComponent, selector: "klp-form-error", inputs: { error: "error" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentRef"], descendants: true }], ngImport: i0, template: "<ng-template #contentRef>\n\t<ng-content *ngIf=\"error !== 'async'\"></ng-content>\n\t<div *ngIf=\"error === 'async'\">{{getErrorValueMessage()}}</div>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
30
29
  }
31
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FormErrorComponent, decorators: [{
32
31
  type: Component,
33
- args: [{ selector: 'klp-form-error', template: "<ng-template #contentRef>\n\t<ng-content *ngIf=\"!showErrorValueAsMessage\"></ng-content>\n\t<div *ngIf=\"showErrorValueAsMessage\">{{getErrorValueMessage()}}</div>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
32
+ args: [{ selector: 'klp-form-error', template: "<ng-template #contentRef>\n\t<ng-content *ngIf=\"error !== 'async'\"></ng-content>\n\t<div *ngIf=\"error === 'async'\">{{getErrorValueMessage()}}</div>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
34
33
  }], ctorParameters: function () { return [{ type: i1.FormElementComponent, decorators: [{
35
34
  type: Host
36
35
  }, {
37
36
  type: Optional
38
37
  }] }]; }, propDecorators: { error: [{
39
38
  type: Input
40
- }], showErrorValueAsMessage: [{
41
- type: Input
42
39
  }], contentRef: [{
43
40
  type: ViewChild,
44
41
  args: ['contentRef']
45
42
  }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLElBQUksRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQVFwRCxNQUFNLE9BQU8sa0JBQWtCO0lBSzlCLFlBQXdDLE1BQTRCO1FBQTVCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBSDNELDRCQUF1QixHQUFZLEtBQUssQ0FBQztRQUMzQyxjQUFTLEdBQUcsS0FBSyxDQUFDO0lBRThDLENBQUM7SUFFeEUsUUFBUTtRQUNQLHVHQUF1RztRQUN2RyxxQkFBcUI7UUFDckIsaUJBQWlCO1FBQ2pCLDhIQUE4SDtRQUM5SCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2YsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDOUQsSUFBSSxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO2FBQ3JGO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU0sb0JBQW9CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs4R0F2Qlcsa0JBQWtCO2tHQUFsQixrQkFBa0IsZ1BDVi9CLHdMQUlBOzsyRkRNYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0MsZ0JBQWdCOzswQkFTYixJQUFJOzswQkFBSSxRQUFROzRDQUpwQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUUwQixVQUFVO3NCQUF6QyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUVsZW1lbnRDb21wb25lbnR9IGZyb20gXCIuLi9mb3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtpc051bGxPclVuZGVmaW5lZH0gZnJvbSBcIi4uLy4uL3V0aWwvdmFsdWVzXCI7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1lcnJvcicsXG5cdHRlbXBsYXRlVXJsOiAnLi9mb3JtLWVycm9yLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZm9ybS1lcnJvci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRXJyb3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXHRASW5wdXQoKSBlcnJvcjogRXJyb3JUeXBlcztcblx0QElucHV0KCkgc2hvd0Vycm9yVmFsdWVBc01lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblx0cHVibGljIHNob3dFcnJvciA9IGZhbHNlO1xuXHRAVmlld0NoaWxkKCdjb250ZW50UmVmJykgcHVibGljIGNvbnRlbnRSZWY6IEVsZW1lbnRSZWY7XG5cdGNvbnN0cnVjdG9yKEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnQ6IEZvcm1FbGVtZW50Q29tcG9uZW50KSB7fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdC8vIHRoaXMgaXMgYmVpbmcgcnVuIG5leHQgY3ljbGUsIGJlY2F1c2Ugd2UgZG9udCB3YW50IHRvIGZhaWwgaWYgdGhlIG9yZGVyIG9mIGNvbXBvbmVudHMgaXMgYXMgZm9sbG93czpcblx0XHQvLyA8YXBwLWZvcm0tZXJyb3IgLz5cblx0XHQvLyA8c29tZS1pbnB1dCAvPlxuXHRcdC8vIFRoYXQgd291bGQgZmFpbCwgYmVjYXVzZSB0aGUgbG9naWMgb2YgdGhlIGZvcm0gZXJyb3IgaXMgcnVuIGZpcnN0LCBhbmQgYXQgdGhhdCBtb21lbnQsIHRoZSBgc29tZS1pbnB1dGAgaXNudCByZWdpc3RlcmVkIHlldFxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgYXR0YWNoZWRDb250cm9sID0gdGhpcy5wYXJlbnQuZ2V0QXR0YWNoZWRDb250cm9sKCk7XG5cdFx0XHR0aGlzLnBhcmVudC5yZWdpc3RlckVycm9ySGFuZGxlcih0aGlzLmVycm9yLCB0aGlzLmNvbnRlbnRSZWYpO1xuXHRcdFx0aWYgKGlzTnVsbE9yVW5kZWZpbmVkKGF0dGFjaGVkQ29udHJvbCkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdZb3UgYWRkZWQgYSBGb3JtIEVycm9yIGNvbXBvbmVudCB3aXRob3V0IGFuIGF0dGFjaGVkIEZvcm0gQ29udHJvbCcpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIGdldEVycm9yVmFsdWVNZXNzYWdlKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMucGFyZW50LmdldEF0dGFjaGVkQ29udHJvbCgpLmVycm9yc1t0aGlzLmVycm9yXTtcblx0fVxufVxuIiwiPG5nLXRlbXBsYXRlICNjb250ZW50UmVmPlxuXHQ8bmctY29udGVudCAqbmdJZj1cIiFzaG93RXJyb3JWYWx1ZUFzTWVzc2FnZVwiPjwvbmctY29udGVudD5cblx0PGRpdiAqbmdJZj1cInNob3dFcnJvclZhbHVlQXNNZXNzYWdlXCI+e3tnZXRFcnJvclZhbHVlTWVzc2FnZSgpfX08L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLElBQUksRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQVFwRCxNQUFNLE9BQU8sa0JBQWtCO0lBSTlCLFlBQXdDLE1BQTRCO1FBQTVCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBRjdELGNBQVMsR0FBRyxLQUFLLENBQUM7SUFFOEMsQ0FBQztJQUV4RSxRQUFRO1FBQ1AsdUdBQXVHO1FBQ3ZHLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsOEhBQThIO1FBQzlILFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5RCxJQUFJLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7YUFDckY7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTSxvQkFBb0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDOzhHQXRCVyxrQkFBa0I7a0dBQWxCLGtCQUFrQiw0TENWL0IsMktBSUE7OzJGRE1hLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDQyxnQkFBZ0I7OzBCQVFiLElBQUk7OzBCQUFJLFFBQVE7NENBSHBCLEtBQUs7c0JBQWIsS0FBSztnQkFFMEIsVUFBVTtzQkFBekMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1FbGVtZW50Q29tcG9uZW50fSBmcm9tIFwiLi4vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnRcIjtcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCIuLi8uLi91dGlsL3ZhbHVlc1wiO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tZXJyb3InLFxuXHR0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2Zvcm0tZXJyb3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUVycm9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0QElucHV0KCkgZXJyb3I6IEVycm9yVHlwZXM7XG5cdHB1YmxpYyBzaG93RXJyb3IgPSBmYWxzZTtcblx0QFZpZXdDaGlsZCgnY29udGVudFJlZicpIHB1YmxpYyBjb250ZW50UmVmOiBFbGVtZW50UmVmO1xuXHRjb25zdHJ1Y3RvcihASG9zdCgpIEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50OiBGb3JtRWxlbWVudENvbXBvbmVudCkge31cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHQvLyB0aGlzIGlzIGJlaW5nIHJ1biBuZXh0IGN5Y2xlLCBiZWNhdXNlIHdlIGRvbnQgd2FudCB0byBmYWlsIGlmIHRoZSBvcmRlciBvZiBjb21wb25lbnRzIGlzIGFzIGZvbGxvd3M6XG5cdFx0Ly8gPGFwcC1mb3JtLWVycm9yIC8+XG5cdFx0Ly8gPHNvbWUtaW5wdXQgLz5cblx0XHQvLyBUaGF0IHdvdWxkIGZhaWwsIGJlY2F1c2UgdGhlIGxvZ2ljIG9mIHRoZSBmb3JtIGVycm9yIGlzIHJ1biBmaXJzdCwgYW5kIGF0IHRoYXQgbW9tZW50LCB0aGUgYHNvbWUtaW5wdXRgIGlzbnQgcmVnaXN0ZXJlZCB5ZXRcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGNvbnN0IGF0dGFjaGVkQ29udHJvbCA9IHRoaXMucGFyZW50LmdldEF0dGFjaGVkQ29udHJvbCgpO1xuXHRcdFx0dGhpcy5wYXJlbnQucmVnaXN0ZXJFcnJvckhhbmRsZXIodGhpcy5lcnJvciwgdGhpcy5jb250ZW50UmVmKTtcblx0XHRcdGlmIChpc051bGxPclVuZGVmaW5lZChhdHRhY2hlZENvbnRyb2wpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignWW91IGFkZGVkIGEgRm9ybSBFcnJvciBjb21wb25lbnQgd2l0aG91dCBhbiBhdHRhY2hlZCBGb3JtIENvbnRyb2wnKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRFcnJvclZhbHVlTWVzc2FnZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLnBhcmVudC5nZXRBdHRhY2hlZENvbnRyb2woKS5lcnJvcnNbdGhpcy5lcnJvcl07XG5cdH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjY29udGVudFJlZj5cblx0PG5nLWNvbnRlbnQgKm5nSWY9XCJlcnJvciAhPT0gJ2FzeW5jJ1wiPjwvbmctY29udGVudD5cblx0PGRpdiAqbmdJZj1cImVycm9yID09PSAnYXN5bmMnXCI+e3tnZXRFcnJvclZhbHVlTWVzc2FnZSgpfX08L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,74 +1,59 @@
1
- import { Component, Host, HostBinding, Input, Optional } from '@angular/core';
2
- import { invalidFieldsSymbol } from '../form.component';
3
- import { isNullOrUndefined } from '../../util/values';
1
+ import { Component, HostBinding, inject, Input } from '@angular/core';
2
+ import { FormComponent, invalidFieldsSymbol } from '../form.component';
3
+ import { DefaultErrorHandler, KLP_FORM_ERROR_HANDLER } from '../form-validation-error/form-validation-error';
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "../form.component";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "../../elements/button/button.component";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "../../elements/button/button.component";
8
7
  export class FormSubmitButtonComponent {
9
- get _() {
10
- return this.fullWidth;
11
- }
12
- constructor(parentForm) {
13
- this.parentForm = parentForm;
8
+ constructor() {
9
+ this.parentForm = inject(FormComponent, { optional: true });
10
+ this.handleError = inject(KLP_FORM_ERROR_HANDLER, { optional: true }) ?? DefaultErrorHandler;
14
11
  this.isLoading = false;
15
12
  this.fullWidth = false;
16
13
  this.variant = 'greenFilled';
17
14
  this.before = () => Promise.resolve();
18
15
  this.after = () => Promise.resolve();
16
+ this.setValidationError = (e) => {
17
+ this.parentForm.formGroup.get(e.path)?.setErrors({ message: { value: e.message } });
18
+ };
19
19
  }
20
20
  async submitForm() {
21
+ await this.before().catch(() => null);
21
22
  try {
22
- await this.before();
23
+ const [renderedAndEnabledValues, renderedValues] = await this.parentForm.trySubmit();
24
+ this.isLoading = true;
25
+ await this.submitCallback(renderedAndEnabledValues, renderedValues)
26
+ .finally(() => this.isLoading = false);
23
27
  }
24
28
  catch (e) {
25
- return;
26
- }
27
- this.parentForm
28
- .trySubmit()
29
- .then(([renderedAndEnabledValues, renderedValues]) => {
30
- this.isLoading = true;
31
- const submitCallbackResult = this.submitCallback(renderedAndEnabledValues, renderedValues);
32
- if (isNullOrUndefined(submitCallbackResult)) {
33
- throw new Error('No promise is returned in your submit function.');
34
- }
35
- return submitCallbackResult.then(() => (this.isLoading = false)).catch((e) => {
36
- this.isLoading = false;
37
- throw e;
38
- });
39
- })
40
- .catch((e) => {
41
29
  if (e === invalidFieldsSymbol) {
42
30
  return; // swallow the error, the framework will scroll to the field that needs attention
43
31
  }
44
- throw e;
45
- });
32
+ this.handleError(e).forEach(this.setValidationError);
33
+ return;
34
+ }
46
35
  await this.after();
47
36
  }
48
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FormSubmitButtonComponent, deps: [{ token: i1.FormComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FormSubmitButtonComponent, selector: "klp-form-submit-button", inputs: { isLoading: "isLoading", fullWidth: "fullWidth", variant: "variant", before: "before", after: "after", submitCallback: "submitCallback" }, host: { properties: { "class._fullWidth": "this._" } }, ngImport: i0, 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", styles: [":host{display:inline-block}:host._fullWidth{display:block}.fullWidth{width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.ButtonComponent, selector: "klp-form-button", inputs: ["variant", "size", "fullWidth", "hasBorder", "disabled", "isLoading", "type", "clickCallback"] }] }); }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FormSubmitButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
38
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: FormSubmitButtonComponent, selector: "klp-form-submit-button", inputs: { isLoading: "isLoading", fullWidth: "fullWidth", variant: "variant", submitCallback: "submitCallback", before: "before", after: "after" }, host: { properties: { "class._fullWidth": "this.fullWidth" } }, ngImport: i0, 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", styles: [":host{display:inline-block}:host._fullWidth{display:block}.fullWidth{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.ButtonComponent, selector: "klp-form-button", inputs: ["variant", "size", "fullWidth", "hasBorder", "disabled", "isLoading", "type", "clickCallback"] }] }); }
50
39
  }
51
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: FormSubmitButtonComponent, decorators: [{
52
41
  type: Component,
53
42
  args: [{ selector: 'klp-form-submit-button', 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", styles: [":host{display:inline-block}:host._fullWidth{display:block}.fullWidth{width:100%}\n"] }]
54
- }], ctorParameters: function () { return [{ type: i1.FormComponent, decorators: [{
55
- type: Host
56
- }, {
57
- type: Optional
58
- }] }]; }, propDecorators: { isLoading: [{
43
+ }], propDecorators: { isLoading: [{
59
44
  type: Input
60
45
  }], fullWidth: [{
61
46
  type: Input
47
+ }, {
48
+ type: HostBinding,
49
+ args: ['class._fullWidth']
62
50
  }], variant: [{
63
51
  type: Input
52
+ }], submitCallback: [{
53
+ type: Input
64
54
  }], before: [{
65
55
  type: Input
66
56
  }], after: [{
67
57
  type: Input
68
- }], submitCallback: [{
69
- type: Input
70
- }], _: [{
71
- type: HostBinding,
72
- args: ['class._fullWidth']
73
58
  }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdWJtaXQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS1zdWJtaXQtYnV0dG9uL2Zvcm0tc3VibWl0LWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tc3VibWl0LWJ1dHRvbi9mb3JtLXN1Ym1pdC1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFnQixtQkFBbUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDOzs7OztBQWVwRCxNQUFNLE9BQU8seUJBQXlCO0lBUXJDLElBQXFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxZQUF3QyxVQUF5QjtRQUF6QixlQUFVLEdBQVYsVUFBVSxDQUFlO1FBWGpELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDekIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixZQUFPLEdBQXdCLGFBQWEsQ0FBQztRQUN0QyxXQUFNLEdBQXVCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyRCxVQUFLLEdBQXVCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQU9BLENBQUM7SUFFckUsS0FBSyxDQUFDLFVBQVU7UUFDZixJQUFJO1lBQ0gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDcEI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNYLE9BQU87U0FDUDtRQUNELElBQUksQ0FBQyxVQUFVO2FBQ2IsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxjQUFjLENBQUMsRUFBRSxFQUFFO1lBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUMzRixJQUFJLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEVBQUU7Z0JBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQzthQUNuRTtZQUNELE9BQU8sb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM1RSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsTUFBTSxDQUFDLENBQUM7WUFDVCxDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1osSUFBSSxDQUFDLEtBQUssbUJBQW1CLEVBQUU7Z0JBQzlCLE9BQU8sQ0FBQyxpRkFBaUY7YUFDekY7WUFDRCxNQUFNLENBQUMsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0osTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQzs4R0F4Q1cseUJBQXlCO2tHQUF6Qix5QkFBeUIsMFFDakJ0QyxvU0FXQTs7MkZETWEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNDLHdCQUF3Qjs7MEJBZ0JyQixJQUFJOzswQkFBSSxRQUFROzRDQVhiLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxLQUFLO3NCQUFwQixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBRStCLENBQUM7c0JBQXJDLFdBQVc7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0LCBIb3N0QmluZGluZywgSW5wdXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db21wb25lbnQsIGludmFsaWRGaWVsZHNTeW1ib2x9IGZyb20gJy4uL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gJy4uLy4uL3V0aWwvdmFsdWVzJztcbmltcG9ydCB7IEJ1dHRvblZhcmlhbnQgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB0eXBlIFN1Ym1pdEJ1dHRvblZhcmlhbnQgPSBFeHRyYWN0PEJ1dHRvblZhcmlhbnQsXG5cdHwgJ2dyZWVuRmlsbGVkJ1xuXHR8ICdyZWRGaWxsZWQnXG5cdHwgJ2dyZWVuT3V0bGluZWQnXG5cdHwgJ3doaXRlJ1xuPjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tc3VibWl0LWJ1dHRvbicsXG5cdHRlbXBsYXRlVXJsOiAnLi9mb3JtLXN1Ym1pdC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9mb3JtLXN1Ym1pdC1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVN1Ym1pdEJ1dHRvbkNvbXBvbmVudCB7XG5cdEBJbnB1dCgpIHB1YmxpYyBpc0xvYWRpbmcgPSBmYWxzZTtcblx0QElucHV0KCkgZnVsbFdpZHRoID0gZmFsc2U7XG5cdEBJbnB1dCgpIHZhcmlhbnQ6IFN1Ym1pdEJ1dHRvblZhcmlhbnQgPSAnZ3JlZW5GaWxsZWQnO1xuXHRASW5wdXQoKSBwdWJsaWMgYmVmb3JlOiAoKSA9PiBQcm9taXNlPGFueT4gPSAoKSA9PiBQcm9taXNlLnJlc29sdmUoKTtcblx0QElucHV0KCkgcHVibGljIGFmdGVyOiAoKSA9PiBQcm9taXNlPGFueT4gPSAoKSA9PiBQcm9taXNlLnJlc29sdmUoKTtcblx0QElucHV0KCkgcHVibGljIHN1Ym1pdENhbGxiYWNrOiAocmVuZGVyZWRBbmRFbmFibGVkVmFsdWVzOiBvYmplY3QsIHJlbmRlcmVkQnV0RGlzYWJsZWRWYWx1ZXM6IG9iamVjdCkgPT4gUHJvbWlzZTxhbnk+O1xuXG5cdEBIb3N0QmluZGluZygnY2xhc3MuX2Z1bGxXaWR0aCcpIGdldCBfKCkge1xuXHRcdHJldHVybiB0aGlzLmZ1bGxXaWR0aDtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBwYXJlbnRGb3JtOiBGb3JtQ29tcG9uZW50KSB7fVxuXG5cdGFzeW5jIHN1Ym1pdEZvcm0oKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IHRoaXMuYmVmb3JlKCk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLnBhcmVudEZvcm1cblx0XHRcdC50cnlTdWJtaXQoKVxuXHRcdFx0LnRoZW4oKFtyZW5kZXJlZEFuZEVuYWJsZWRWYWx1ZXMsIHJlbmRlcmVkVmFsdWVzXSkgPT4ge1xuXHRcdFx0XHR0aGlzLmlzTG9hZGluZyA9IHRydWU7XG5cdFx0XHRcdGNvbnN0IHN1Ym1pdENhbGxiYWNrUmVzdWx0ID0gdGhpcy5zdWJtaXRDYWxsYmFjayhyZW5kZXJlZEFuZEVuYWJsZWRWYWx1ZXMsIHJlbmRlcmVkVmFsdWVzKTtcblx0XHRcdFx0aWYgKGlzTnVsbE9yVW5kZWZpbmVkKHN1Ym1pdENhbGxiYWNrUmVzdWx0KSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignTm8gcHJvbWlzZSBpcyByZXR1cm5lZCBpbiB5b3VyIHN1Ym1pdCBmdW5jdGlvbi4nKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc3VibWl0Q2FsbGJhY2tSZXN1bHQudGhlbigoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSBmYWxzZSkpLmNhdGNoKChlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKGUpID0+IHtcblx0XHRcdFx0aWYgKGUgPT09IGludmFsaWRGaWVsZHNTeW1ib2wpIHtcblx0XHRcdFx0XHRyZXR1cm47IC8vIHN3YWxsb3cgdGhlIGVycm9yLCB0aGUgZnJhbWV3b3JrIHdpbGwgc2Nyb2xsIHRvIHRoZSBmaWVsZCB0aGF0IG5lZWRzIGF0dGVudGlvblxuXHRcdFx0XHR9XG5cdFx0XHRcdHRocm93IGU7XG5cdFx0XHR9KTtcblx0XHRhd2FpdCB0aGlzLmFmdGVyKCk7XG5cdH1cbn1cbiIsIjxrbHAtZm9ybS1idXR0b25cblx0XHRbdmFyaWFudF09XCJ2YXJpYW50XCJcblx0XHQoY2xpY2spPVwic3VibWl0Rm9ybSgpXCJcblx0XHRbZGlzYWJsZWRdPVwiaXNMb2FkaW5nXCJcblx0XHRbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG5cdFx0W2Z1bGxXaWR0aF09XCJmdWxsV2lkdGhcIlxuXHRcdHR5cGU9XCJzdWJtaXRcIlxuXHRcdFtuZ0NsYXNzXT1cImZ1bGxXaWR0aCA/ICdmdWxsV2lkdGgnIDogJydcIlxuXHQ+XG5cdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwva2xwLWZvcm0tYnV0dG9uPlxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdWJtaXQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsaXBwYS9uZ3gtZW5oYW5jeS1mb3Jtcy9zcmMvbGliL2Zvcm0vZm9ybS1zdWJtaXQtYnV0dG9uL2Zvcm0tc3VibWl0LWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tc3VibWl0LWJ1dHRvbi9mb3JtLXN1Ym1pdC1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUMsYUFBYSxFQUFFLG1CQUFtQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFckUsT0FBTyxFQUFFLG1CQUFtQixFQUF1QixzQkFBc0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7O0FBY2xJLE1BQU0sT0FBTyx5QkFBeUI7SUFMdEM7UUFNUyxlQUFVLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3JELGdCQUFXLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLElBQUksbUJBQW1CLENBQUM7UUFFOUUsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNlLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbkQsWUFBTyxHQUF3QixhQUFhLENBQUM7UUFFN0MsV0FBTSxHQUF1QixHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckQsVUFBSyxHQUF1QixHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFNUQsdUJBQWtCLEdBQUcsQ0FBQyxDQUFzQixFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FBQztRQUNwRixDQUFDLENBQUE7S0FvQkQ7SUFsQkEsS0FBSyxDQUFDLFVBQVU7UUFDZixNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEMsSUFBSTtZQUNILE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxjQUFjLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixFQUFFLGNBQWMsQ0FBQztpQkFDakUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUM7U0FDeEM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNYLElBQUksQ0FBQyxLQUFLLG1CQUFtQixFQUFFO2dCQUM5QixPQUFPLENBQUMsaUZBQWlGO2FBQ3pGO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDckQsT0FBTztTQUNQO1FBRUQsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQzs4R0FoQ1cseUJBQXlCO2tHQUF6Qix5QkFBeUIsa1JDakJ0QyxvU0FXQTs7MkZETWEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNDLHdCQUF3Qjs4QkFRbEIsU0FBUztzQkFBeEIsS0FBSztnQkFDMkMsU0FBUztzQkFBekQsS0FBSzs7c0JBQUksV0FBVzt1QkFBQyxrQkFBa0I7Z0JBQ3hCLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db21wb25lbnQsIGludmFsaWRGaWVsZHNTeW1ib2x9IGZyb20gJy4uL2Zvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvblZhcmlhbnQgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWZhdWx0RXJyb3JIYW5kbGVyLCBGb3JtVmFsaWRhdGlvbkVycm9yLCBLTFBfRk9STV9FUlJPUl9IQU5ETEVSIH0gZnJvbSAnLi4vZm9ybS12YWxpZGF0aW9uLWVycm9yL2Zvcm0tdmFsaWRhdGlvbi1lcnJvcic7XG5cbmV4cG9ydCB0eXBlIFN1Ym1pdEJ1dHRvblZhcmlhbnQgPSBFeHRyYWN0PEJ1dHRvblZhcmlhbnQsXG5cdHwgJ2dyZWVuRmlsbGVkJ1xuXHR8ICdyZWRGaWxsZWQnXG5cdHwgJ2dyZWVuT3V0bGluZWQnXG5cdHwgJ3doaXRlJ1xuPjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tc3VibWl0LWJ1dHRvbicsXG5cdHRlbXBsYXRlVXJsOiAnLi9mb3JtLXN1Ym1pdC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9mb3JtLXN1Ym1pdC1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybVN1Ym1pdEJ1dHRvbkNvbXBvbmVudCB7XG5cdHByaXZhdGUgcGFyZW50Rm9ybSA9IGluamVjdChGb3JtQ29tcG9uZW50LCB7b3B0aW9uYWw6IHRydWV9KTtcblx0cHJpdmF0ZSBoYW5kbGVFcnJvciA9IGluamVjdChLTFBfRk9STV9FUlJPUl9IQU5ETEVSLCB7b3B0aW9uYWw6IHRydWV9KSA/PyBEZWZhdWx0RXJyb3JIYW5kbGVyO1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBpc0xvYWRpbmcgPSBmYWxzZTtcblx0QElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5fZnVsbFdpZHRoJykgcHVibGljIGZ1bGxXaWR0aCA9IGZhbHNlO1xuXHRASW5wdXQoKSBwdWJsaWMgdmFyaWFudDogU3VibWl0QnV0dG9uVmFyaWFudCA9ICdncmVlbkZpbGxlZCc7XG5cdEBJbnB1dCgpIHB1YmxpYyBzdWJtaXRDYWxsYmFjazogKHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlczogb2JqZWN0LCByZW5kZXJlZEJ1dERpc2FibGVkVmFsdWVzOiBvYmplY3QpID0+IFByb21pc2U8YW55Pjtcblx0QElucHV0KCkgcHVibGljIGJlZm9yZTogKCkgPT4gUHJvbWlzZTxhbnk+ID0gKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdEBJbnB1dCgpIHB1YmxpYyBhZnRlcjogKCkgPT4gUHJvbWlzZTxhbnk+ID0gKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cblx0cHJpdmF0ZSBzZXRWYWxpZGF0aW9uRXJyb3IgPSAoZTogRm9ybVZhbGlkYXRpb25FcnJvcikgPT4ge1xuXHRcdHRoaXMucGFyZW50Rm9ybS5mb3JtR3JvdXAuZ2V0KGUucGF0aCk/LnNldEVycm9ycyh7IG1lc3NhZ2U6IHsgdmFsdWU6IGUubWVzc2FnZSB9fSk7XG5cdH1cblxuXHRhc3luYyBzdWJtaXRGb3JtKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGF3YWl0IHRoaXMuYmVmb3JlKCkuY2F0Y2goKCkgPT4gbnVsbCk7XG5cblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgW3JlbmRlcmVkQW5kRW5hYmxlZFZhbHVlcywgcmVuZGVyZWRWYWx1ZXNdID0gYXdhaXQgdGhpcy5wYXJlbnRGb3JtLnRyeVN1Ym1pdCgpO1xuXHRcdFx0dGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuXHRcdFx0YXdhaXQgdGhpcy5zdWJtaXRDYWxsYmFjayhyZW5kZXJlZEFuZEVuYWJsZWRWYWx1ZXMsIHJlbmRlcmVkVmFsdWVzKVxuXHRcdFx0XHQuZmluYWxseSgoKSA9PiB0aGlzLmlzTG9hZGluZyA9IGZhbHNlKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRpZiAoZSA9PT0gaW52YWxpZEZpZWxkc1N5bWJvbCkge1xuXHRcdFx0XHRyZXR1cm47IC8vIHN3YWxsb3cgdGhlIGVycm9yLCB0aGUgZnJhbWV3b3JrIHdpbGwgc2Nyb2xsIHRvIHRoZSBmaWVsZCB0aGF0IG5lZWRzIGF0dGVudGlvblxuXHRcdFx0fVxuXHRcdFx0dGhpcy5oYW5kbGVFcnJvcihlKS5mb3JFYWNoKHRoaXMuc2V0VmFsaWRhdGlvbkVycm9yKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRhd2FpdCB0aGlzLmFmdGVyKCk7XG5cdH1cbn1cbiIsIjxrbHAtZm9ybS1idXR0b25cblx0XHRbdmFyaWFudF09XCJ2YXJpYW50XCJcblx0XHQoY2xpY2spPVwic3VibWl0Rm9ybSgpXCJcblx0XHRbZGlzYWJsZWRdPVwiaXNMb2FkaW5nXCJcblx0XHRbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG5cdFx0W2Z1bGxXaWR0aF09XCJmdWxsV2lkdGhcIlxuXHRcdHR5cGU9XCJzdWJtaXRcIlxuXHRcdFtuZ0NsYXNzXT1cImZ1bGxXaWR0aCA/ICdmdWxsV2lkdGgnIDogJydcIlxuXHQ+XG5cdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwva2xwLWZvcm0tYnV0dG9uPlxuIl19
@@ -0,0 +1,22 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { isArrayOf } from '../../util/arrays';
3
+ export class FormValidationError extends Error {
4
+ constructor(path, message) {
5
+ super(message);
6
+ this.name = 'FormValidationError';
7
+ this.path = path;
8
+ }
9
+ }
10
+ export const KLP_FORM_ERROR_HANDLER = new InjectionToken('KLP_FORM_ERROR_HANDLER');
11
+ export const DefaultErrorHandler = (error) => {
12
+ if (Array.isArray(error) && isArrayOf(error, FormValidationError)) {
13
+ // If the error is an array of FormValidationErrors, then pass it along.
14
+ return error;
15
+ }
16
+ else if (error instanceof FormValidationError) {
17
+ // If the error is a FormValidationError, then wrap it and pass it on.
18
+ return [error];
19
+ }
20
+ throw error;
21
+ };
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0aW9uLWVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZm9ybS9mb3JtLXZhbGlkYXRpb24tZXJyb3IvZm9ybS12YWxpZGF0aW9uLWVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTlDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxLQUFLO0lBSTdDLFlBQVksSUFBWSxFQUFFLE9BQWU7UUFDeEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBSkEsU0FBSSxHQUFHLHFCQUFxQixDQUFDO1FBSzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLENBQUM7Q0FDRDtBQU1ELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUFtQix3QkFBd0IsQ0FBQyxDQUFDO0FBR3JHLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFxQixDQUFDLEtBQVUsRUFBRSxFQUFFO0lBQ25FLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLEVBQUU7UUFDbEUsd0VBQXdFO1FBQ3hFLE9BQU8sS0FBSyxDQUFDO0tBQ2I7U0FBTSxJQUFJLEtBQUssWUFBWSxtQkFBbUIsRUFBRTtRQUNoRCxzRUFBc0U7UUFDdEUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2Y7SUFFRCxNQUFNLEtBQUssQ0FBQztBQUNiLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0FycmF5T2YgfSBmcm9tICcuLi8uLi91dGlsL2FycmF5cyc7XG5cbmV4cG9ydCBjbGFzcyBGb3JtVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXHRwdWJsaWMgcmVhZG9ubHkgbmFtZSA9ICdGb3JtVmFsaWRhdGlvbkVycm9yJztcblx0cHVibGljIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuXHRjb25zdHJ1Y3RvcihwYXRoOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykge1xuXHRcdHN1cGVyKG1lc3NhZ2UpO1xuXHRcdHRoaXMucGF0aCA9IHBhdGg7XG5cdH1cbn1cblxuZXhwb3J0IHR5cGUgRm9ybVZhbGlkYXRpb25FcnJvcnMgPSBBcnJheTxGb3JtVmFsaWRhdGlvbkVycm9yPjtcblxuZXhwb3J0IHR5cGUgRm9ybUVycm9ySGFuZGxlciA9IChlcnJvcjogYW55KSA9PiBGb3JtVmFsaWRhdGlvbkVycm9ycztcblxuZXhwb3J0IGNvbnN0IEtMUF9GT1JNX0VSUk9SX0hBTkRMRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48Rm9ybUVycm9ySGFuZGxlcj4oJ0tMUF9GT1JNX0VSUk9SX0hBTkRMRVInKTtcblxuXG5leHBvcnQgY29uc3QgRGVmYXVsdEVycm9ySGFuZGxlcjogRm9ybUVycm9ySGFuZGxlciA9IChlcnJvcjogYW55KSA9PiB7XG5cdGlmIChBcnJheS5pc0FycmF5KGVycm9yKSAmJiBpc0FycmF5T2YoZXJyb3IsIEZvcm1WYWxpZGF0aW9uRXJyb3IpKSB7XG5cdFx0Ly8gSWYgdGhlIGVycm9yIGlzIGFuIGFycmF5IG9mIEZvcm1WYWxpZGF0aW9uRXJyb3JzLCB0aGVuIHBhc3MgaXQgYWxvbmcuXG5cdFx0cmV0dXJuIGVycm9yO1xuXHR9IGVsc2UgaWYgKGVycm9yIGluc3RhbmNlb2YgRm9ybVZhbGlkYXRpb25FcnJvcikge1xuXHRcdC8vIElmIHRoZSBlcnJvciBpcyBhIEZvcm1WYWxpZGF0aW9uRXJyb3IsIHRoZW4gd3JhcCBpdCBhbmQgcGFzcyBpdCBvbi5cblx0XHRyZXR1cm4gW2Vycm9yXTtcblx0fVxuXG5cdHRocm93IGVycm9yO1xufTtcblxuIl19