@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.
- package/esm2022/lib/elementIsTruncatedCb.component.mjs +15 -6
- package/esm2022/lib/form/form-error/form-error.component.mjs +7 -10
- package/fesm2022/klippa-ngx-enhancy-forms.mjs +19 -12
- package/fesm2022/klippa-ngx-enhancy-forms.mjs.map +1 -1
- package/lib/elementIsTruncatedCb.component.d.ts +4 -2
- package/lib/form/form-error/form-error.component.d.ts +2 -2
- package/package.json +1 -1
|
@@ -11,11 +11,17 @@ export class ElementIsTruncatedCbComponent {
|
|
|
11
11
|
if (!isValueSet(this.elementIsTruncatedCb)) {
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
|
-
this.elementRef.nativeElement
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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,
|
|
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-
|
|
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-
|
|
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,
|
|
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
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
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-
|
|
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-
|
|
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 {
|