@klippa/ngx-enhancy-forms 18.26.11 → 18.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,11 +11,17 @@ export class ElementIsTruncatedCbComponent {
11
11
  if (!isValueSet(this.elementIsTruncatedCb)) {
12
12
  return;
13
13
  }
14
- this.elementRef.nativeElement.addEventListener('DOMCharacterDataModified', (event) => {
15
- if (isValueSet(event.target.wholeText)) {
16
- this.checkForTruncation();
17
- }
18
- }, false);
14
+ const targetNode = this.elementRef.nativeElement;
15
+ const observerOptions = {
16
+ childList: true,
17
+ attributes: true,
18
+ subtree: true
19
+ };
20
+ const callback = () => {
21
+ this.checkForTruncation();
22
+ };
23
+ this.observer = new MutationObserver(callback);
24
+ this.observer.observe(targetNode, observerOptions);
19
25
  this.checkForTruncation();
20
26
  }
21
27
  async checkForTruncation() {
@@ -35,6 +41,9 @@ export class ElementIsTruncatedCbComponent {
35
41
  }
36
42
  return thisElementIsTruncated;
37
43
  }
44
+ ngOnDestroy() {
45
+ this.observer?.disconnect();
46
+ }
38
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ElementIsTruncatedCbComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
39
48
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: ElementIsTruncatedCbComponent, selector: "[elementIsTruncatedCb]", inputs: { elementIsTruncatedCb: "elementIsTruncatedCb" }, ngImport: i0 }); }
40
49
  }
@@ -46,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
46
55
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { elementIsTruncatedCb: [{
47
56
  type: Input
48
57
  }] } });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudElzVHJ1bmNhdGVkQ2IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudElzVHJ1bmNhdGVkQ2IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFjLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQU16QyxNQUFNLE9BQU8sNkJBQTZCO0lBRXpDLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFEakMseUJBQW9CLEdBQUcsQ0FBQyxXQUFvQixFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFHN0QsQ0FBQztJQUVELGVBQWU7UUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTztRQUNSLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BGLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDM0IsQ0FBQztRQUNGLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNWLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCO1FBQy9CLE1BQU0scUJBQXFCLEVBQUUsQ0FBQztRQUM5QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEUsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNGLENBQUM7SUFFTyxXQUFXLENBQUMsT0FBb0I7UUFDdkMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU87UUFDUixDQUFDO1FBQ0QsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDekUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDN0IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBb0IsQ0FBQyxDQUFDLENBQUM7UUFDN0YsQ0FBQztRQUNELE9BQU8sc0JBQXNCLENBQUM7SUFDL0IsQ0FBQzs4R0FwQ1csNkJBQTZCO2tHQUE3Qiw2QkFBNkI7OzJGQUE3Qiw2QkFBNkI7a0JBSHpDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHdCQUF3QjtpQkFDbEM7K0VBRVMsb0JBQW9CO3NCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHthd2FpdGFibGVGb3JOZXh0Q3ljbGV9IGZyb20gXCIuL3V0aWwvYW5ndWxhclwiO1xuaW1wb3J0IHtpc1ZhbHVlU2V0fSBmcm9tIFwiLi91dGlsL3ZhbHVlc1wiO1xuXG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1tlbGVtZW50SXNUcnVuY2F0ZWRDYl0nXG59KVxuZXhwb3J0IGNsYXNzIEVsZW1lbnRJc1RydW5jYXRlZENiQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cdEBJbnB1dCgpIGVsZW1lbnRJc1RydW5jYXRlZENiID0gKGlzVHJ1bmNhdGVkOiBib29sZWFuKSA9PiB7fTtcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG5cblx0fVxuXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblx0XHRpZiAoIWlzVmFsdWVTZXQodGhpcy5lbGVtZW50SXNUcnVuY2F0ZWRDYikpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQnLCAoZXZlbnQpID0+IHtcblx0XHRcdGlmIChpc1ZhbHVlU2V0KGV2ZW50LnRhcmdldC53aG9sZVRleHQpKSB7XG5cdFx0XHRcdHRoaXMuY2hlY2tGb3JUcnVuY2F0aW9uKCk7XG5cdFx0XHR9XG5cdFx0fSwgZmFsc2UpO1xuXHRcdHRoaXMuY2hlY2tGb3JUcnVuY2F0aW9uKCk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGNoZWNrRm9yVHJ1bmNhdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCBhd2FpdGFibGVGb3JOZXh0Q3ljbGUoKTtcblx0XHRjb25zdCBpc1RydW5jYXRlZCA9IHRoaXMuaXNUcnVuY2F0ZWQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdGlmIChpc1ZhbHVlU2V0KGlzVHJ1bmNhdGVkKSkge1xuXHRcdFx0dGhpcy5lbGVtZW50SXNUcnVuY2F0ZWRDYihpc1RydW5jYXRlZCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpc1RydW5jYXRlZChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuXHRcdGlmICghKGVsZW1lbnQuc2Nyb2xsV2lkdGggPiAwKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB0aGlzRWxlbWVudElzVHJ1bmNhdGVkID0gZWxlbWVudC5zY3JvbGxXaWR0aCA+IGVsZW1lbnQuY2xpZW50V2lkdGg7XG5cdFx0aWYgKCF0aGlzRWxlbWVudElzVHJ1bmNhdGVkKSB7XG5cdFx0XHRyZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkcmVuKS5zb21lKChjaGlsZCkgPT4gdGhpcy5pc1RydW5jYXRlZChjaGlsZCBhcyBIVE1MRWxlbWVudCkpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpc0VsZW1lbnRJc1RydW5jYXRlZDtcblx0fVxufVxuIl19
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudElzVHJ1bmNhdGVkQ2IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudElzVHJ1bmNhdGVkQ2IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFjLEtBQUssRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQU16QyxNQUFNLE9BQU8sNkJBQTZCO0lBSXpDLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFEakMseUJBQW9CLEdBQUcsQ0FBQyxXQUFvQixFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFHN0QsQ0FBQztJQUVELGVBQWU7UUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTztRQUNSLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUVqRCxNQUFNLGVBQWUsR0FBRztZQUN2QixTQUFTLEVBQUUsSUFBSTtZQUNmLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE9BQU8sRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNyQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCO1FBQy9CLE1BQU0scUJBQXFCLEVBQUUsQ0FBQztRQUM5QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEUsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNGLENBQUM7SUFFTyxXQUFXLENBQUMsT0FBb0I7UUFDdkMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU87UUFDUixDQUFDO1FBQ0QsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDekUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDN0IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBb0IsQ0FBQyxDQUFDLENBQUM7UUFDN0YsQ0FBQztRQUNELE9BQU8sc0JBQXNCLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVc7UUFDVixJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQzdCLENBQUM7OEdBbkRXLDZCQUE2QjtrR0FBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUh6QyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx3QkFBd0I7aUJBQ2xDOytFQUlTLG9CQUFvQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHthd2FpdGFibGVGb3JOZXh0Q3ljbGV9IGZyb20gXCIuL3V0aWwvYW5ndWxhclwiO1xuaW1wb3J0IHtpc1ZhbHVlU2V0fSBmcm9tIFwiLi91dGlsL3ZhbHVlc1wiO1xuXG5cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogJ1tlbGVtZW50SXNUcnVuY2F0ZWRDYl0nXG59KVxuZXhwb3J0IGNsYXNzIEVsZW1lbnRJc1RydW5jYXRlZENiQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblx0cHJpdmF0ZSBvYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuXHRASW5wdXQoKSBlbGVtZW50SXNUcnVuY2F0ZWRDYiA9IChpc1RydW5jYXRlZDogYm9vbGVhbikgPT4ge307XG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuXG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cdFx0aWYgKCFpc1ZhbHVlU2V0KHRoaXMuZWxlbWVudElzVHJ1bmNhdGVkQ2IpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGFyZ2V0Tm9kZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG5cdFx0Y29uc3Qgb2JzZXJ2ZXJPcHRpb25zID0ge1xuXHRcdFx0Y2hpbGRMaXN0OiB0cnVlLFxuXHRcdFx0YXR0cmlidXRlczogdHJ1ZSxcblx0XHRcdHN1YnRyZWU6IHRydWVcblx0XHR9O1xuXG5cdFx0Y29uc3QgY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0XHR0aGlzLmNoZWNrRm9yVHJ1bmNhdGlvbigpO1xuXHRcdH07XG5cblx0XHR0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spO1xuXHRcdHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXROb2RlLCBvYnNlcnZlck9wdGlvbnMpO1xuXHRcdHRoaXMuY2hlY2tGb3JUcnVuY2F0aW9uKCk7XG5cdH1cblxuXHRwcml2YXRlIGFzeW5jIGNoZWNrRm9yVHJ1bmNhdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCBhd2FpdGFibGVGb3JOZXh0Q3ljbGUoKTtcblx0XHRjb25zdCBpc1RydW5jYXRlZCA9IHRoaXMuaXNUcnVuY2F0ZWQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdGlmIChpc1ZhbHVlU2V0KGlzVHJ1bmNhdGVkKSkge1xuXHRcdFx0dGhpcy5lbGVtZW50SXNUcnVuY2F0ZWRDYihpc1RydW5jYXRlZCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpc1RydW5jYXRlZChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuXHRcdGlmICghKGVsZW1lbnQuc2Nyb2xsV2lkdGggPiAwKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCB0aGlzRWxlbWVudElzVHJ1bmNhdGVkID0gZWxlbWVudC5zY3JvbGxXaWR0aCA+IGVsZW1lbnQuY2xpZW50V2lkdGg7XG5cdFx0aWYgKCF0aGlzRWxlbWVudElzVHJ1bmNhdGVkKSB7XG5cdFx0XHRyZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkcmVuKS5zb21lKChjaGlsZCkgPT4gdGhpcy5pc1RydW5jYXRlZChjaGlsZCBhcyBIVE1MRWxlbWVudCkpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpc0VsZW1lbnRJc1RydW5jYXRlZDtcblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdHRoaXMub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcblx0fVxufVxuIl19
@@ -1,12 +1,10 @@
1
- import { Component, Host, Input, Optional, ViewChild } from '@angular/core';
2
- import { isNullOrUndefined } from "../../util/values";
1
+ import { Component, ContentChild, Host, Input, Optional, TemplateRef, ViewChild } from '@angular/core';
3
2
  import * as i0 from "@angular/core";
4
3
  import * as i1 from "../form-element/form-element.component";
5
4
  import * as i2 from "@angular/common";
6
5
  export class FormErrorComponent {
7
6
  constructor(parent) {
8
7
  this.parent = parent;
9
- this.showError = false;
10
8
  }
11
9
  ngOnInit() {
12
10
  // this is being run next cycle, because we dont want to fail if the order of components is as follows:
@@ -14,22 +12,18 @@ export class FormErrorComponent {
14
12
  // <some-input />
15
13
  // That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet
16
14
  setTimeout(() => {
17
- const attachedControl = this.parent.getAttachedControl();
18
15
  this.parent.registerErrorHandler(this.error, this.contentRef);
19
- if (isNullOrUndefined(attachedControl)) {
20
- throw new Error('You added a Form Error component without an attached Form Control');
21
- }
22
16
  });
23
17
  }
24
18
  getErrorValueMessage() {
25
19
  return this.parent.getAttachedControl().errors[this.error];
26
20
  }
27
21
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: FormErrorComponent, deps: [{ token: i1.FormElementComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", 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"] }] }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: FormErrorComponent, selector: "klp-form-error", inputs: { error: "error" }, queries: [{ propertyName: "contentChild", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentRef"], descendants: true }], ngImport: i0, template: "<ng-template #contentRef>\n\t<ng-container *ngIf=\"error !== 'async'\" [ngTemplateOutlet]=\"contentChild\"></ng-container>\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"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
29
23
  }
30
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: FormErrorComponent, decorators: [{
31
25
  type: Component,
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"] }]
26
+ args: [{ selector: 'klp-form-error', template: "<ng-template #contentRef>\n\t<ng-container *ngIf=\"error !== 'async'\" [ngTemplateOutlet]=\"contentChild\"></ng-container>\n\t<div *ngIf=\"error === 'async'\">{{getErrorValueMessage()}}</div>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
33
27
  }], ctorParameters: () => [{ type: i1.FormElementComponent, decorators: [{
34
28
  type: Host
35
29
  }, {
@@ -39,5 +33,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
39
33
  }], contentRef: [{
40
34
  type: ViewChild,
41
35
  args: ['contentRef']
36
+ }], contentChild: [{
37
+ type: ContentChild,
38
+ args: [TemplateRef]
42
39
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFlLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUvRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQVFwRCxNQUFNLE9BQU8sa0JBQWtCO0lBSTlCLFlBQXdDLE1BQTRCO1FBQTVCLFdBQU0sR0FBTixNQUFNLENBQXNCO1FBRjdELGNBQVMsR0FBRyxLQUFLLENBQUM7SUFFOEMsQ0FBQztJQUV4RSxRQUFRO1FBQ1AsdUdBQXVHO1FBQ3ZHLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsOEhBQThIO1FBQzlILFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5RCxJQUFJLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUVBQW1FLENBQUMsQ0FBQztZQUN0RixDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU0sb0JBQW9CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs4R0F0Qlcsa0JBQWtCO2tHQUFsQixrQkFBa0IsNExDVi9CLDJLQUlBOzsyRkRNYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0MsZ0JBQWdCOzswQkFRYixJQUFJOzswQkFBSSxRQUFRO3lDQUhwQixLQUFLO3NCQUFiLEtBQUs7Z0JBRTBCLFVBQVU7c0JBQXpDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1FbGVtZW50Q29tcG9uZW50fSBmcm9tIFwiLi4vZm9ybS1lbGVtZW50L2Zvcm0tZWxlbWVudC5jb21wb25lbnRcIjtcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCIuLi8uLi91dGlsL3ZhbHVlc1wiO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tZXJyb3InLFxuXHR0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2Zvcm0tZXJyb3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUVycm9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0QElucHV0KCkgZXJyb3I6IEVycm9yVHlwZXM7XG5cdHB1YmxpYyBzaG93RXJyb3IgPSBmYWxzZTtcblx0QFZpZXdDaGlsZCgnY29udGVudFJlZicpIHB1YmxpYyBjb250ZW50UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXHRjb25zdHJ1Y3RvcihASG9zdCgpIEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50OiBGb3JtRWxlbWVudENvbXBvbmVudCkge31cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHQvLyB0aGlzIGlzIGJlaW5nIHJ1biBuZXh0IGN5Y2xlLCBiZWNhdXNlIHdlIGRvbnQgd2FudCB0byBmYWlsIGlmIHRoZSBvcmRlciBvZiBjb21wb25lbnRzIGlzIGFzIGZvbGxvd3M6XG5cdFx0Ly8gPGFwcC1mb3JtLWVycm9yIC8+XG5cdFx0Ly8gPHNvbWUtaW5wdXQgLz5cblx0XHQvLyBUaGF0IHdvdWxkIGZhaWwsIGJlY2F1c2UgdGhlIGxvZ2ljIG9mIHRoZSBmb3JtIGVycm9yIGlzIHJ1biBmaXJzdCwgYW5kIGF0IHRoYXQgbW9tZW50LCB0aGUgYHNvbWUtaW5wdXRgIGlzbnQgcmVnaXN0ZXJlZCB5ZXRcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGNvbnN0IGF0dGFjaGVkQ29udHJvbCA9IHRoaXMucGFyZW50LmdldEF0dGFjaGVkQ29udHJvbCgpO1xuXHRcdFx0dGhpcy5wYXJlbnQucmVnaXN0ZXJFcnJvckhhbmRsZXIodGhpcy5lcnJvciwgdGhpcy5jb250ZW50UmVmKTtcblx0XHRcdGlmIChpc051bGxPclVuZGVmaW5lZChhdHRhY2hlZENvbnRyb2wpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcignWW91IGFkZGVkIGEgRm9ybSBFcnJvciBjb21wb25lbnQgd2l0aG91dCBhbiBhdHRhY2hlZCBGb3JtIENvbnRyb2wnKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBnZXRFcnJvclZhbHVlTWVzc2FnZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLnBhcmVudC5nZXRBdHRhY2hlZENvbnRyb2woKS5lcnJvcnNbdGhpcy5lcnJvcl07XG5cdH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjY29udGVudFJlZj5cblx0PG5nLWNvbnRlbnQgKm5nSWY9XCJlcnJvciAhPT0gJ2FzeW5jJ1wiPjwvbmctY29udGVudD5cblx0PGRpdiAqbmdJZj1cImVycm9yID09PSAnYXN5bmMnXCI+e3tnZXRFcnJvclZhbHVlTWVzc2FnZSgpfX08L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBYSxJQUFJLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7O0FBU3hILE1BQU0sT0FBTyxrQkFBa0I7SUFJOUIsWUFBd0MsTUFBNEI7UUFBNUIsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7SUFBRyxDQUFDO0lBRXhFLFFBQVE7UUFDUCx1R0FBdUc7UUFDdkcscUJBQXFCO1FBQ3JCLGlCQUFpQjtRQUNqQiw4SEFBOEg7UUFDOUgsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU0sb0JBQW9CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs4R0FsQlcsa0JBQWtCO2tHQUFsQixrQkFBa0IsNEhBR2hCLFdBQVcsMEpDWjFCLG1OQUlBOzsyRkRLYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0MsZ0JBQWdCOzswQkFRYixJQUFJOzswQkFBSSxRQUFRO3lDQUhwQixLQUFLO3NCQUFiLEtBQUs7Z0JBQzBCLFVBQVU7c0JBQXpDLFNBQVM7dUJBQUMsWUFBWTtnQkFDSSxZQUFZO3NCQUF0QyxZQUFZO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgQ29udGVudENoaWxkLCBEaXJlY3RpdmUsIEhvc3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUVsZW1lbnRDb21wb25lbnR9IGZyb20gXCIuLi9mb3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0tZXJyb3InLFxuXHR0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2Zvcm0tZXJyb3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUVycm9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0QElucHV0KCkgZXJyb3I6IEVycm9yVHlwZXM7XG5cdEBWaWV3Q2hpbGQoJ2NvbnRlbnRSZWYnKSBwdWJsaWMgY29udGVudFJlZjogVGVtcGxhdGVSZWY8YW55Pjtcblx0QENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgY29udGVudENoaWxkOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXHRjb25zdHJ1Y3RvcihASG9zdCgpIEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50OiBGb3JtRWxlbWVudENvbXBvbmVudCkge31cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHQvLyB0aGlzIGlzIGJlaW5nIHJ1biBuZXh0IGN5Y2xlLCBiZWNhdXNlIHdlIGRvbnQgd2FudCB0byBmYWlsIGlmIHRoZSBvcmRlciBvZiBjb21wb25lbnRzIGlzIGFzIGZvbGxvd3M6XG5cdFx0Ly8gPGFwcC1mb3JtLWVycm9yIC8+XG5cdFx0Ly8gPHNvbWUtaW5wdXQgLz5cblx0XHQvLyBUaGF0IHdvdWxkIGZhaWwsIGJlY2F1c2UgdGhlIGxvZ2ljIG9mIHRoZSBmb3JtIGVycm9yIGlzIHJ1biBmaXJzdCwgYW5kIGF0IHRoYXQgbW9tZW50LCB0aGUgYHNvbWUtaW5wdXRgIGlzbnQgcmVnaXN0ZXJlZCB5ZXRcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMucGFyZW50LnJlZ2lzdGVyRXJyb3JIYW5kbGVyKHRoaXMuZXJyb3IsIHRoaXMuY29udGVudFJlZik7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0RXJyb3JWYWx1ZU1lc3NhZ2UoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5wYXJlbnQuZ2V0QXR0YWNoZWRDb250cm9sKCkuZXJyb3JzW3RoaXMuZXJyb3JdO1xuXHR9XG59XG4iLCI8bmctdGVtcGxhdGUgI2NvbnRlbnRSZWY+XG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvciAhPT0gJ2FzeW5jJ1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRDaGlsZFwiPjwvbmctY29udGFpbmVyPlxuXHQ8ZGl2ICpuZ0lmPVwiZXJyb3IgPT09ICdhc3luYydcIj57e2dldEVycm9yVmFsdWVNZXNzYWdlKCl9fTwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -580,11 +580,17 @@ class ElementIsTruncatedCbComponent {
580
580
  if (!isValueSet(this.elementIsTruncatedCb)) {
581
581
  return;
582
582
  }
583
- this.elementRef.nativeElement.addEventListener('DOMCharacterDataModified', (event) => {
584
- if (isValueSet(event.target.wholeText)) {
585
- this.checkForTruncation();
586
- }
587
- }, false);
583
+ const targetNode = this.elementRef.nativeElement;
584
+ const observerOptions = {
585
+ childList: true,
586
+ attributes: true,
587
+ subtree: true
588
+ };
589
+ const callback = () => {
590
+ this.checkForTruncation();
591
+ };
592
+ this.observer = new MutationObserver(callback);
593
+ this.observer.observe(targetNode, observerOptions);
588
594
  this.checkForTruncation();
589
595
  }
590
596
  async checkForTruncation() {
@@ -604,6 +610,9 @@ class ElementIsTruncatedCbComponent {
604
610
  }
605
611
  return thisElementIsTruncated;
606
612
  }
613
+ ngOnDestroy() {
614
+ this.observer?.disconnect();
615
+ }
607
616
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ElementIsTruncatedCbComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
608
617
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: ElementIsTruncatedCbComponent, selector: "[elementIsTruncatedCb]", inputs: { elementIsTruncatedCb: "elementIsTruncatedCb" }, ngImport: i0 }); }
609
618
  }
@@ -1841,7 +1850,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
1841
1850
  class FormErrorComponent {
1842
1851
  constructor(parent) {
1843
1852
  this.parent = parent;
1844
- this.showError = false;
1845
1853
  }
1846
1854
  ngOnInit() {
1847
1855
  // this is being run next cycle, because we dont want to fail if the order of components is as follows:
@@ -1849,22 +1857,18 @@ class FormErrorComponent {
1849
1857
  // <some-input />
1850
1858
  // That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet
1851
1859
  setTimeout(() => {
1852
- const attachedControl = this.parent.getAttachedControl();
1853
1860
  this.parent.registerErrorHandler(this.error, this.contentRef);
1854
- if (isNullOrUndefined(attachedControl)) {
1855
- throw new Error('You added a Form Error component without an attached Form Control');
1856
- }
1857
1861
  });
1858
1862
  }
1859
1863
  getErrorValueMessage() {
1860
1864
  return this.parent.getAttachedControl().errors[this.error];
1861
1865
  }
1862
1866
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: FormErrorComponent, deps: [{ token: FormElementComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
1863
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", 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: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1867
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: FormErrorComponent, selector: "klp-form-error", inputs: { error: "error" }, queries: [{ propertyName: "contentChild", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentRef"], descendants: true }], ngImport: i0, template: "<ng-template #contentRef>\n\t<ng-container *ngIf=\"error !== 'async'\" [ngTemplateOutlet]=\"contentChild\"></ng-container>\n\t<div *ngIf=\"error === 'async'\">{{getErrorValueMessage()}}</div>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
1864
1868
  }
1865
1869
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: FormErrorComponent, decorators: [{
1866
1870
  type: Component,
1867
- 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"] }]
1871
+ args: [{ selector: 'klp-form-error', template: "<ng-template #contentRef>\n\t<ng-container *ngIf=\"error !== 'async'\" [ngTemplateOutlet]=\"contentChild\"></ng-container>\n\t<div *ngIf=\"error === 'async'\">{{getErrorValueMessage()}}</div>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
1868
1872
  }], ctorParameters: () => [{ type: FormElementComponent, decorators: [{
1869
1873
  type: Host
1870
1874
  }, {
@@ -1874,6 +1878,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
1874
1878
  }], contentRef: [{
1875
1879
  type: ViewChild,
1876
1880
  args: ['contentRef']
1881
+ }], contentChild: [{
1882
+ type: ContentChild,
1883
+ args: [TemplateRef]
1877
1884
  }] } });
1878
1885
 
1879
1886
  class FormValidationError extends Error {