@ngx-formly/core 7.1.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +10 -0
  2. package/fesm2022/ngx-formly-core-json-schema.mjs +159 -39
  3. package/fesm2022/ngx-formly-core-json-schema.mjs.map +1 -1
  4. package/fesm2022/ngx-formly-core-preset.mjs +4 -4
  5. package/fesm2022/ngx-formly-core-preset.mjs.map +1 -1
  6. package/fesm2022/ngx-formly-core-select.mjs +28 -21
  7. package/fesm2022/ngx-formly-core-select.mjs.map +1 -1
  8. package/fesm2022/ngx-formly-core-testing.mjs +3 -3
  9. package/fesm2022/ngx-formly-core-testing.mjs.map +1 -1
  10. package/fesm2022/ngx-formly-core.mjs +129 -73
  11. package/fesm2022/ngx-formly-core.mjs.map +1 -1
  12. package/json-schema/formly-json-schema.service.d.ts +5 -0
  13. package/lib/components/formly.field.d.ts +7 -4
  14. package/lib/core.d.ts +1 -1
  15. package/lib/core.module.d.ts +7 -0
  16. package/lib/templates/field-array.type.d.ts +1 -1
  17. package/lib/templates/field.type.d.ts +1 -1
  18. package/lib/templates/field.wrapper.d.ts +1 -1
  19. package/lib/templates/formly.attributes.d.ts +5 -2
  20. package/lib/templates/formly.validation-message.d.ts +2 -2
  21. package/package.json +2 -12
  22. package/select/select-options.pipe.d.ts +1 -0
  23. package/esm2022/json-schema/formly-json-schema.service.mjs +0 -728
  24. package/esm2022/json-schema/ngx-formly-core-json-schema.mjs +0 -5
  25. package/esm2022/json-schema/public_api.mjs +0 -2
  26. package/esm2022/lib/components/formly.field.mjs +0 -292
  27. package/esm2022/lib/components/formly.form.mjs +0 -171
  28. package/esm2022/lib/components/formly.template.mjs +0 -36
  29. package/esm2022/lib/core.config.mjs +0 -66
  30. package/esm2022/lib/core.mjs +0 -20
  31. package/esm2022/lib/core.module.mjs +0 -74
  32. package/esm2022/lib/extensions/core/core.mjs +0 -144
  33. package/esm2022/lib/extensions/field-expression/field-expression.mjs +0 -8
  34. package/esm2022/lib/extensions/field-expression/utils.mjs +0 -459
  35. package/esm2022/lib/extensions/field-expression-legacy/field-expression.mjs +0 -249
  36. package/esm2022/lib/extensions/field-expression-legacy/utils.mjs +0 -20
  37. package/esm2022/lib/extensions/field-form/field-form.mjs +0 -141
  38. package/esm2022/lib/extensions/field-form/utils.mjs +0 -100
  39. package/esm2022/lib/extensions/field-validation/field-validation.mjs +0 -135
  40. package/esm2022/lib/models/config.mjs +0 -2
  41. package/esm2022/lib/models/fieldconfig.cache.mjs +0 -2
  42. package/esm2022/lib/models/fieldconfig.mjs +0 -2
  43. package/esm2022/lib/models/index.mjs +0 -4
  44. package/esm2022/lib/services/formly.builder.mjs +0 -98
  45. package/esm2022/lib/services/formly.config.mjs +0 -236
  46. package/esm2022/lib/templates/field-array.type.mjs +0 -84
  47. package/esm2022/lib/templates/field-template.type.mjs +0 -34
  48. package/esm2022/lib/templates/field.type.mjs +0 -57
  49. package/esm2022/lib/templates/field.wrapper.mjs +0 -21
  50. package/esm2022/lib/templates/formly.attributes.mjs +0 -201
  51. package/esm2022/lib/templates/formly.group.mjs +0 -31
  52. package/esm2022/lib/templates/formly.validation-message.mjs +0 -84
  53. package/esm2022/lib/utils.mjs +0 -313
  54. package/esm2022/ngx-formly-core.mjs +0 -5
  55. package/esm2022/preset/ngx-formly-core-preset.mjs +0 -5
  56. package/esm2022/preset/preset-substitution.extension.mjs +0 -30
  57. package/esm2022/preset/preset.config.mjs +0 -11
  58. package/esm2022/preset/preset.module.mjs +0 -18
  59. package/esm2022/preset/public_api.mjs +0 -3
  60. package/esm2022/public_api.mjs +0 -5
  61. package/esm2022/select/ngx-formly-core-select.mjs +0 -5
  62. package/esm2022/select/public_api.mjs +0 -3
  63. package/esm2022/select/select-options.pipe.mjs +0 -108
  64. package/esm2022/select/select.module.mjs +0 -16
  65. package/esm2022/testing/component-factory.mjs +0 -86
  66. package/esm2022/testing/ngx-formly-core-testing.mjs +0 -5
  67. package/esm2022/testing/public_api.mjs +0 -2
@@ -1,84 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import { UntypedFormArray } from '@angular/forms';
3
- import { FieldType } from './field.type';
4
- import { clone, assignFieldValue, getFieldValue, hasKey } from '../utils';
5
- import { registerControl, unregisterControl, findControl } from '../extensions/field-form/utils';
6
- import * as i0 from "@angular/core";
7
- export class FieldArrayType extends FieldType {
8
- onPopulate(field) {
9
- if (hasKey(field)) {
10
- const control = findControl(field);
11
- registerControl(field, control ? control : new UntypedFormArray([], { updateOn: field.modelOptions.updateOn }));
12
- }
13
- field.fieldGroup = field.fieldGroup || [];
14
- const length = Array.isArray(field.model) ? field.model.length : 0;
15
- if (field.fieldGroup.length > length) {
16
- for (let i = field.fieldGroup.length - 1; i >= length; --i) {
17
- unregisterControl(field.fieldGroup[i], true);
18
- field.fieldGroup.splice(i, 1);
19
- }
20
- }
21
- for (let i = field.fieldGroup.length; i < length; i++) {
22
- const f = { ...clone(typeof field.fieldArray === 'function' ? field.fieldArray(field) : field.fieldArray) };
23
- if (f.key !== null) {
24
- f.key = `${i}`;
25
- }
26
- field.fieldGroup.push(f);
27
- }
28
- }
29
- add(i, initialModel, { markAsDirty } = { markAsDirty: true }) {
30
- markAsDirty && this.formControl.markAsDirty();
31
- i = i == null ? this.field.fieldGroup.length : i;
32
- if (!this.model) {
33
- assignFieldValue(this.field, []);
34
- }
35
- this.model.splice(i, 0, initialModel ? clone(initialModel) : undefined);
36
- this.markFieldForCheck(this.field.fieldGroup[i]);
37
- this._build();
38
- }
39
- remove(i, { markAsDirty } = { markAsDirty: true }) {
40
- markAsDirty && this.formControl.markAsDirty();
41
- this.model.splice(i, 1);
42
- const field = this.field.fieldGroup[i];
43
- this.field.fieldGroup.splice(i, 1);
44
- this.field.fieldGroup.forEach((f, key) => this.updateArrayElementKey(f, `${key}`));
45
- unregisterControl(field, true);
46
- this._build();
47
- }
48
- _build() {
49
- const fields = this.field.formControl._fields ?? [this.field];
50
- fields.forEach((f) => this.options.build(f));
51
- this.options.fieldChanges.next({
52
- field: this.field,
53
- value: getFieldValue(this.field),
54
- type: 'valueChanges',
55
- });
56
- }
57
- updateArrayElementKey(f, newKey) {
58
- if (hasKey(f)) {
59
- f.key = newKey;
60
- return;
61
- }
62
- if (!f.fieldGroup?.length) {
63
- return;
64
- }
65
- for (let i = 0; i < f.fieldGroup.length; i++) {
66
- this.updateArrayElementKey(f.fieldGroup[i], newKey);
67
- }
68
- }
69
- markFieldForCheck(f) {
70
- if (!f) {
71
- return;
72
- }
73
- f.fieldGroup?.forEach((c) => this.markFieldForCheck(c));
74
- if (f.hide === false) {
75
- this.options._hiddenFieldsForCheck.push({ field: f });
76
- }
77
- }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FieldArrayType, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
79
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FieldArrayType, usesInheritance: true, ngImport: i0 }); }
80
- }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FieldArrayType, decorators: [{
82
- type: Directive
83
- }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtYXJyYXkudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL3NyYy9saWIvdGVtcGxhdGVzL2ZpZWxkLWFycmF5LnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQVFqRyxNQUFNLE9BQWdCLGNBQ3BCLFNBQVEsU0FBWTtJQUdwQixVQUFVLENBQUMsS0FBUTtRQUNqQixJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxlQUFlLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsSCxDQUFDO1FBRUQsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUUxQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQ3JDLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDN0MsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEQsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLEtBQUssQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM1RyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQixDQUFDO1lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRCxHQUFHLENBQUMsQ0FBVSxFQUFFLFlBQWtCLEVBQUUsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7UUFDekUsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsQ0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO1FBQ3ZELFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV4QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkYsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU8sTUFBTTtRQUNaLE1BQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxLQUFnQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsSUFBSSxDQUFDLE9BQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLEtBQUssRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNoQyxJQUFJLEVBQUUsY0FBYztTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8scUJBQXFCLENBQUMsQ0FBb0IsRUFBRSxNQUFjO1FBQ2hFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDZCxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQixDQUFDLENBQW9CO1FBQzVDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLE9BQU87UUFDVCxDQUFDO1FBRUQsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBNkMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRixDQUFDO0lBQ0gsQ0FBQzsrR0F2Rm1CLGNBQWM7bUdBQWQsY0FBYzs7NEZBQWQsY0FBYztrQkFEbkMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJy4vZmllbGQudHlwZSc7XG5pbXBvcnQgeyBjbG9uZSwgYXNzaWduRmllbGRWYWx1ZSwgZ2V0RmllbGRWYWx1ZSwgaGFzS2V5IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUV4dGVuc2lvbiwgRm9ybWx5RmllbGRDb25maWdDYWNoZSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyByZWdpc3RlckNvbnRyb2wsIHVucmVnaXN0ZXJDb250cm9sLCBmaW5kQ29udHJvbCB9IGZyb20gJy4uL2V4dGVuc2lvbnMvZmllbGQtZm9ybS91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRBcnJheVR5cGVDb25maWc8VCA9IEZvcm1seUZpZWxkQ29uZmlnWydwcm9wcyddPiBleHRlbmRzIEZvcm1seUZpZWxkQ29uZmlnPFQ+IHtcbiAgZm9ybUNvbnRyb2w6IFVudHlwZWRGb3JtQXJyYXk7XG4gIHByb3BzOiBOb25OdWxsYWJsZTxUPjtcbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmllbGRBcnJheVR5cGU8RiBleHRlbmRzIEZvcm1seUZpZWxkQ29uZmlnID0gRmllbGRBcnJheVR5cGVDb25maWc+XG4gIGV4dGVuZHMgRmllbGRUeXBlPEY+XG4gIGltcGxlbWVudHMgRm9ybWx5RXh0ZW5zaW9uPEY+XG57XG4gIG9uUG9wdWxhdGUoZmllbGQ6IEYpIHtcbiAgICBpZiAoaGFzS2V5KGZpZWxkKSkge1xuICAgICAgY29uc3QgY29udHJvbCA9IGZpbmRDb250cm9sKGZpZWxkKTtcbiAgICAgIHJlZ2lzdGVyQ29udHJvbChmaWVsZCwgY29udHJvbCA/IGNvbnRyb2wgOiBuZXcgVW50eXBlZEZvcm1BcnJheShbXSwgeyB1cGRhdGVPbjogZmllbGQubW9kZWxPcHRpb25zLnVwZGF0ZU9uIH0pKTtcbiAgICB9XG5cbiAgICBmaWVsZC5maWVsZEdyb3VwID0gZmllbGQuZmllbGRHcm91cCB8fCBbXTtcblxuICAgIGNvbnN0IGxlbmd0aCA9IEFycmF5LmlzQXJyYXkoZmllbGQubW9kZWwpID8gZmllbGQubW9kZWwubGVuZ3RoIDogMDtcbiAgICBpZiAoZmllbGQuZmllbGRHcm91cC5sZW5ndGggPiBsZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGkgPSBmaWVsZC5maWVsZEdyb3VwLmxlbmd0aCAtIDE7IGkgPj0gbGVuZ3RoOyAtLWkpIHtcbiAgICAgICAgdW5yZWdpc3RlckNvbnRyb2woZmllbGQuZmllbGRHcm91cFtpXSwgdHJ1ZSk7XG4gICAgICAgIGZpZWxkLmZpZWxkR3JvdXAuc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBmaWVsZC5maWVsZEdyb3VwLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBmID0geyAuLi5jbG9uZSh0eXBlb2YgZmllbGQuZmllbGRBcnJheSA9PT0gJ2Z1bmN0aW9uJyA/IGZpZWxkLmZpZWxkQXJyYXkoZmllbGQpIDogZmllbGQuZmllbGRBcnJheSkgfTtcbiAgICAgIGlmIChmLmtleSAhPT0gbnVsbCkge1xuICAgICAgICBmLmtleSA9IGAke2l9YDtcbiAgICAgIH1cblxuICAgICAgZmllbGQuZmllbGRHcm91cC5wdXNoKGYpO1xuICAgIH1cbiAgfVxuXG4gIGFkZChpPzogbnVtYmVyLCBpbml0aWFsTW9kZWw/OiBhbnksIHsgbWFya0FzRGlydHkgfSA9IHsgbWFya0FzRGlydHk6IHRydWUgfSkge1xuICAgIG1hcmtBc0RpcnR5ICYmIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICBpID0gaSA9PSBudWxsID8gdGhpcy5maWVsZC5maWVsZEdyb3VwLmxlbmd0aCA6IGk7XG4gICAgaWYgKCF0aGlzLm1vZGVsKSB7XG4gICAgICBhc3NpZ25GaWVsZFZhbHVlKHRoaXMuZmllbGQsIFtdKTtcbiAgICB9XG5cbiAgICB0aGlzLm1vZGVsLnNwbGljZShpLCAwLCBpbml0aWFsTW9kZWwgPyBjbG9uZShpbml0aWFsTW9kZWwpIDogdW5kZWZpbmVkKTtcbiAgICB0aGlzLm1hcmtGaWVsZEZvckNoZWNrKHRoaXMuZmllbGQuZmllbGRHcm91cFtpXSk7XG4gICAgdGhpcy5fYnVpbGQoKTtcbiAgfVxuXG4gIHJlbW92ZShpOiBudW1iZXIsIHsgbWFya0FzRGlydHkgfSA9IHsgbWFya0FzRGlydHk6IHRydWUgfSkge1xuICAgIG1hcmtBc0RpcnR5ICYmIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICB0aGlzLm1vZGVsLnNwbGljZShpLCAxKTtcblxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZC5maWVsZEdyb3VwW2ldO1xuICAgIHRoaXMuZmllbGQuZmllbGRHcm91cC5zcGxpY2UoaSwgMSk7XG4gICAgdGhpcy5maWVsZC5maWVsZEdyb3VwLmZvckVhY2goKGYsIGtleSkgPT4gdGhpcy51cGRhdGVBcnJheUVsZW1lbnRLZXkoZiwgYCR7a2V5fWApKTtcbiAgICB1bnJlZ2lzdGVyQ29udHJvbChmaWVsZCwgdHJ1ZSk7XG4gICAgdGhpcy5fYnVpbGQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2J1aWxkKCkge1xuICAgIGNvbnN0IGZpZWxkcyA9ICh0aGlzLmZpZWxkIGFzIEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUpLmZvcm1Db250cm9sLl9maWVsZHMgPz8gW3RoaXMuZmllbGRdO1xuICAgIGZpZWxkcy5mb3JFYWNoKChmKSA9PiAodGhpcy5vcHRpb25zIGFzIGFueSkuYnVpbGQoZikpO1xuICAgIHRoaXMub3B0aW9ucy5maWVsZENoYW5nZXMubmV4dCh7XG4gICAgICBmaWVsZDogdGhpcy5maWVsZCxcbiAgICAgIHZhbHVlOiBnZXRGaWVsZFZhbHVlKHRoaXMuZmllbGQpLFxuICAgICAgdHlwZTogJ3ZhbHVlQ2hhbmdlcycsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUFycmF5RWxlbWVudEtleShmOiBGb3JtbHlGaWVsZENvbmZpZywgbmV3S2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoaGFzS2V5KGYpKSB7XG4gICAgICBmLmtleSA9IG5ld0tleTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWYuZmllbGRHcm91cD8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmLmZpZWxkR3JvdXAubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMudXBkYXRlQXJyYXlFbGVtZW50S2V5KGYuZmllbGRHcm91cFtpXSwgbmV3S2V5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcmtGaWVsZEZvckNoZWNrKGY6IEZvcm1seUZpZWxkQ29uZmlnKSB7XG4gICAgaWYgKCFmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZi5maWVsZEdyb3VwPy5mb3JFYWNoKChjOiBhbnkpID0+IHRoaXMubWFya0ZpZWxkRm9yQ2hlY2soYykpO1xuICAgIGlmIChmLmhpZGUgPT09IGZhbHNlKSB7XG4gICAgICAodGhpcy5vcHRpb25zIGFzIEZvcm1seUZpZWxkQ29uZmlnQ2FjaGVbJ29wdGlvbnMnXSkuX2hpZGRlbkZpZWxkc0ZvckNoZWNrLnB1c2goeyBmaWVsZDogZiB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,34 +0,0 @@
1
- import { Component, ChangeDetectionStrategy } from '@angular/core';
2
- import { FieldType } from './field.type';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/platform-browser";
5
- /** @ignore */
6
- export class FormlyTemplateType extends FieldType {
7
- get template() {
8
- if (this.field && this.field.template !== this.innerHtml.template) {
9
- this.innerHtml = {
10
- template: this.field.template,
11
- content: this.props.safeHtml
12
- ? this.sanitizer.bypassSecurityTrustHtml(this.field.template)
13
- : this.field.template,
14
- };
15
- }
16
- return this.innerHtml.content;
17
- }
18
- constructor(sanitizer) {
19
- super();
20
- this.sanitizer = sanitizer;
21
- this.innerHtml = {};
22
- }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormlyTemplateType, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormlyTemplateType, selector: "formly-template", usesInheritance: true, ngImport: i0, template: `<div [innerHtml]="template"></div>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
- }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormlyTemplateType, decorators: [{
27
- type: Component,
28
- args: [{
29
- selector: 'formly-template',
30
- template: `<div [innerHtml]="template"></div>`,
31
- changeDetection: ChangeDetectionStrategy.OnPush,
32
- }]
33
- }], ctorParameters: () => [{ type: i1.DomSanitizer }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdGVtcGxhdGUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL3NyYy9saWIvdGVtcGxhdGVzL2ZpZWxkLXRlbXBsYXRlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFFekMsY0FBYztBQU1kLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxTQUFTO0lBQy9DLElBQUksUUFBUTtRQUNWLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxTQUFTLEdBQUc7Z0JBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtnQkFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtvQkFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7b0JBQzdELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7YUFDeEIsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ2hDLENBQUM7SUFHRCxZQUFvQixTQUF1QjtRQUN6QyxLQUFLLEVBQUUsQ0FBQztRQURVLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFEbkMsY0FBUyxHQUE4QyxFQUFFLENBQUM7SUFHbEUsQ0FBQzsrR0FqQlUsa0JBQWtCO21HQUFsQixrQkFBa0IsOEVBSG5CLG9DQUFvQzs7NEZBR25DLGtCQUFrQjtrQkFMOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUUsb0NBQW9DO29CQUM5QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICcuL2ZpZWxkLnR5cGUnO1xuXG4vKiogQGlnbm9yZSAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybWx5LXRlbXBsYXRlJyxcbiAgdGVtcGxhdGU6IGA8ZGl2IFtpbm5lckh0bWxdPVwidGVtcGxhdGVcIj48L2Rpdj5gLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5VGVtcGxhdGVUeXBlIGV4dGVuZHMgRmllbGRUeXBlIHtcbiAgZ2V0IHRlbXBsYXRlKCkge1xuICAgIGlmICh0aGlzLmZpZWxkICYmIHRoaXMuZmllbGQudGVtcGxhdGUgIT09IHRoaXMuaW5uZXJIdG1sLnRlbXBsYXRlKSB7XG4gICAgICB0aGlzLmlubmVySHRtbCA9IHtcbiAgICAgICAgdGVtcGxhdGU6IHRoaXMuZmllbGQudGVtcGxhdGUsXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMucHJvcHMuc2FmZUh0bWxcbiAgICAgICAgICA/IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHRoaXMuZmllbGQudGVtcGxhdGUpXG4gICAgICAgICAgOiB0aGlzLmZpZWxkLnRlbXBsYXRlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pbm5lckh0bWwuY29udGVudDtcbiAgfVxuXG4gIHByaXZhdGUgaW5uZXJIdG1sOiB7IGNvbnRlbnQ/OiBTYWZlSHRtbDsgdGVtcGxhdGU/OiBzdHJpbmcgfSA9IHt9O1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxufVxuIl19
@@ -1,57 +0,0 @@
1
- import { Input, Directive, ViewChildren } from '@angular/core';
2
- import { NgControl } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- export class FieldType {
5
- constructor() {
6
- this.field = {};
7
- }
8
- set _formlyControls(controls) {
9
- const f = this.field;
10
- f._localFields = controls
11
- .map((c) => c.control._fields || [])
12
- .flat()
13
- .filter((f) => f.formControl !== this.field.formControl);
14
- }
15
- get model() {
16
- return this.field.model;
17
- }
18
- get form() {
19
- return this.field.form;
20
- }
21
- get options() {
22
- return this.field.options;
23
- }
24
- get key() {
25
- return this.field.key;
26
- }
27
- get formControl() {
28
- return this.field.formControl;
29
- }
30
- get props() {
31
- return (this.field.props || {});
32
- }
33
- /** @deprecated Use `props` instead. */
34
- get to() {
35
- return this.props;
36
- }
37
- get showError() {
38
- return this.options.showError(this);
39
- }
40
- get id() {
41
- return this.field.id;
42
- }
43
- get formState() {
44
- return this.options?.formState || {};
45
- }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FieldType, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
47
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FieldType, inputs: { field: "field" }, viewQueries: [{ propertyName: "_formlyControls", predicate: NgControl, descendants: true }], ngImport: i0 }); }
48
- }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FieldType, decorators: [{
50
- type: Directive
51
- }], propDecorators: { _formlyControls: [{
52
- type: ViewChildren,
53
- args: [NgControl]
54
- }], field: [{
55
- type: Input
56
- }] } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL3NyYy9saWIvdGVtcGxhdGVzL2ZpZWxkLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWEsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBc0IsU0FBUyxFQUFvQixNQUFNLGdCQUFnQixDQUFDOztBQWNqRixNQUFNLE9BQWdCLFNBQVM7SUFEL0I7UUFVVyxVQUFLLEdBQU0sRUFBTyxDQUFDO0tBMkM3QjtJQW5EQyxJQUE2QixlQUFlLENBQUMsUUFBOEI7UUFDekUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQStCLENBQUM7UUFDL0MsQ0FBQyxDQUFDLFlBQVksR0FBRyxRQUFRO2FBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUUsQ0FBQyxDQUFDLE9BQWlELENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQzthQUM5RSxJQUFJLEVBQUU7YUFDTixNQUFNLENBQUMsQ0FBQyxDQUFvQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUtELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUE0QyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUE0QixDQUFDO0lBQzdELENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQztJQUN2QyxDQUFDOytHQW5EbUIsU0FBUzttR0FBVCxTQUFTLDBGQUNmLFNBQVM7OzRGQURILFNBQVM7a0JBRDlCLFNBQVM7OEJBRXFCLGVBQWU7c0JBQTNDLFlBQVk7dUJBQUMsU0FBUztnQkFRZCxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dCwgRGlyZWN0aXZlLCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sLCBOZ0NvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5RmllbGRDb25maWdDYWNoZSB9IGZyb20gJy4uL21vZGVscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRUeXBlQ29uZmlnPFQgPSBGb3JtbHlGaWVsZENvbmZpZ1sncHJvcHMnXT4gZXh0ZW5kcyBGb3JtbHlGaWVsZENvbmZpZzxUPiB7XG4gIGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIHByb3BzOiBOb25OdWxsYWJsZTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZEdyb3VwVHlwZUNvbmZpZzxUID0gRm9ybWx5RmllbGRDb25maWdbJ3Byb3BzJ10+IGV4dGVuZHMgRm9ybWx5RmllbGRDb25maWc8VD4ge1xuICBmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Hcm91cDtcbiAgcHJvcHM6IE5vbk51bGxhYmxlPFQ+O1xufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWVsZFR5cGU8RiBleHRlbmRzIEZvcm1seUZpZWxkQ29uZmlnID0gRm9ybWx5RmllbGRDb25maWc+IHtcbiAgQFZpZXdDaGlsZHJlbihOZ0NvbnRyb2wpIHNldCBfZm9ybWx5Q29udHJvbHMoY29udHJvbHM6IFF1ZXJ5TGlzdDxOZ0NvbnRyb2w+KSB7XG4gICAgY29uc3QgZiA9IHRoaXMuZmllbGQgYXMgRm9ybWx5RmllbGRDb25maWdDYWNoZTtcbiAgICBmLl9sb2NhbEZpZWxkcyA9IGNvbnRyb2xzXG4gICAgICAubWFwKChjKSA9PiAoYy5jb250cm9sIGFzIEZvcm1seUZpZWxkQ29uZmlnQ2FjaGVbJ2Zvcm1Db250cm9sJ10pLl9maWVsZHMgfHwgW10pXG4gICAgICAuZmxhdCgpXG4gICAgICAuZmlsdGVyKChmOiBGb3JtbHlGaWVsZENvbmZpZykgPT4gZi5mb3JtQ29udHJvbCAhPT0gdGhpcy5maWVsZC5mb3JtQ29udHJvbCk7XG4gIH1cblxuICBASW5wdXQoKSBmaWVsZDogRiA9IHt9IGFzIEY7XG4gIGRlZmF1bHRPcHRpb25zPzogUGFydGlhbDxGPjtcblxuICBnZXQgbW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQubW9kZWw7XG4gIH1cblxuICBnZXQgZm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5mb3JtO1xuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQub3B0aW9ucztcbiAgfVxuXG4gIGdldCBrZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQua2V5O1xuICB9XG5cbiAgZ2V0IGZvcm1Db250cm9sKCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLmZvcm1Db250cm9sIGFzIE5vbk51bGxhYmxlPEZbJ2Zvcm1Db250cm9sJ10+O1xuICB9XG5cbiAgZ2V0IHByb3BzKCkge1xuICAgIHJldHVybiAodGhpcy5maWVsZC5wcm9wcyB8fCB7fSkgYXMgTm9uTnVsbGFibGU8RlsncHJvcHMnXT47XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgVXNlIGBwcm9wc2AgaW5zdGVhZC4gKi9cbiAgZ2V0IHRvKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzO1xuICB9XG5cbiAgZ2V0IHNob3dFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNob3dFcnJvcih0aGlzKTtcbiAgfVxuXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLmlkO1xuICB9XG5cbiAgZ2V0IGZvcm1TdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zPy5mb3JtU3RhdGUgfHwge307XG4gIH1cbn1cbiJdfQ==
@@ -1,21 +0,0 @@
1
- import { ViewContainerRef, ViewChild, Directive } from '@angular/core';
2
- import { FieldType } from './field.type';
3
- import * as i0 from "@angular/core";
4
- export class FieldWrapper extends FieldType {
5
- set _formlyControls(_) { }
6
- set _staticContent(content) {
7
- this.fieldComponent = content;
8
- }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FieldWrapper, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FieldWrapper, viewQueries: [{ propertyName: "fieldComponent", first: true, predicate: ["fieldComponent"], descendants: true, read: ViewContainerRef }, { propertyName: "_staticContent", first: true, predicate: ["fieldComponent"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0 }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FieldWrapper, decorators: [{
13
- type: Directive
14
- }], propDecorators: { fieldComponent: [{
15
- type: ViewChild,
16
- args: ['fieldComponent', { read: ViewContainerRef }]
17
- }], _staticContent: [{
18
- type: ViewChild,
19
- args: ['fieldComponent', { read: ViewContainerRef, static: true }]
20
- }] } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQud3JhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL3NyYy9saWIvdGVtcGxhdGVzL2ZpZWxkLndyYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFLekMsTUFBTSxPQUFnQixZQUE4RCxTQUFRLFNBQVk7SUFDdEcsSUFBYSxlQUFlLENBQUMsQ0FBdUIsSUFBRyxDQUFDO0lBRXhELElBQTJFLGNBQWMsQ0FBQyxPQUF5QjtRQUNqSCxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztJQUNoQyxDQUFDOytHQUxtQixZQUFZO21HQUFaLFlBQVksdUhBRUssZ0JBQWdCLDJHQUNoQixnQkFBZ0I7OzRGQUhqQyxZQUFZO2tCQURqQyxTQUFTOzhCQUdpRCxjQUFjO3NCQUF0RSxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUNvQixjQUFjO3NCQUF4RixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWaWV3Q29udGFpbmVyUmVmLCBWaWV3Q2hpbGQsIERpcmVjdGl2ZSwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICcuL2ZpZWxkLnR5cGUnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWVsZFdyYXBwZXI8RiBleHRlbmRzIEZvcm1seUZpZWxkQ29uZmlnID0gRm9ybWx5RmllbGRDb25maWc+IGV4dGVuZHMgRmllbGRUeXBlPEY+IHtcbiAgb3ZlcnJpZGUgc2V0IF9mb3JtbHlDb250cm9scyhfOiBRdWVyeUxpc3Q8TmdDb250cm9sPikge31cbiAgQFZpZXdDaGlsZCgnZmllbGRDb21wb25lbnQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgZmllbGRDb21wb25lbnQhOiBWaWV3Q29udGFpbmVyUmVmO1xuICBAVmlld0NoaWxkKCdmaWVsZENvbXBvbmVudCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHNldCBfc3RhdGljQ29udGVudChjb250ZW50OiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgdGhpcy5maWVsZENvbXBvbmVudCA9IGNvbnRlbnQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,201 +0,0 @@
1
- import { Directive, Input, Inject, } from '@angular/core';
2
- import { defineHiddenProp, FORMLY_VALIDATORS, observe } from '../utils';
3
- import { DOCUMENT } from '@angular/common';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Allow to link the `field` HTML attributes (`id`, `name` ...) and Event attributes (`focus`, `blur` ...) to an element in the DOM.
7
- */
8
- export class FormlyAttributes {
9
- get props() {
10
- return this.field.props || {};
11
- }
12
- get fieldAttrElements() {
13
- return this.field?.['_elementRefs'] || [];
14
- }
15
- constructor(renderer, elementRef, _document) {
16
- this.renderer = renderer;
17
- this.elementRef = elementRef;
18
- this.uiAttributesCache = {};
19
- /**
20
- * HostBinding doesn't register listeners conditionally which may produce some perf issues.
21
- *
22
- * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1991
23
- */
24
- this.uiEvents = {
25
- listeners: [],
26
- events: ['click', 'keyup', 'keydown', 'keypress', 'focus', 'blur', 'change', 'wheel'],
27
- callback: (eventName, $event) => {
28
- switch (eventName) {
29
- case 'focus':
30
- return this.onFocus($event);
31
- case 'blur':
32
- return this.onBlur($event);
33
- case 'change':
34
- return this.onChange($event);
35
- default:
36
- return this.props[eventName](this.field, $event);
37
- }
38
- },
39
- };
40
- this.document = _document;
41
- }
42
- ngOnChanges(changes) {
43
- if (changes.field) {
44
- this.field.name && this.setAttribute('name', this.field.name);
45
- this.uiEvents.listeners.forEach((listener) => listener());
46
- this.uiEvents.events.forEach((eventName) => {
47
- if (this.props?.[eventName] || ['focus', 'blur', 'change'].indexOf(eventName) !== -1) {
48
- this.uiEvents.listeners.push(this.renderer.listen(this.elementRef.nativeElement, eventName, (e) => this.uiEvents.callback(eventName, e)));
49
- }
50
- });
51
- if (this.props?.attributes) {
52
- observe(this.field, ['props', 'attributes'], ({ currentValue, previousValue }) => {
53
- if (previousValue) {
54
- Object.keys(previousValue).forEach((attr) => this.removeAttribute(attr));
55
- }
56
- if (currentValue) {
57
- Object.keys(currentValue).forEach((attr) => {
58
- if (currentValue[attr] != null) {
59
- this.setAttribute(attr, currentValue[attr]);
60
- }
61
- });
62
- }
63
- });
64
- }
65
- this.detachElementRef(changes.field.previousValue);
66
- this.attachElementRef(changes.field.currentValue);
67
- if (this.fieldAttrElements.length === 1) {
68
- !this.id && this.field.id && this.setAttribute('id', this.field.id);
69
- this.focusObserver = observe(this.field, ['focus'], ({ currentValue }) => {
70
- this.toggleFocus(currentValue);
71
- });
72
- }
73
- }
74
- if (changes.id) {
75
- this.setAttribute('id', this.id);
76
- }
77
- }
78
- /**
79
- * We need to re-evaluate all the attributes on every change detection cycle, because
80
- * by using a HostBinding we run into certain edge cases. This means that whatever logic
81
- * is in here has to be super lean or we risk seriously damaging or destroying the performance.
82
- *
83
- * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1317
84
- * Material issue: https://github.com/angular/components/issues/14024
85
- */
86
- ngDoCheck() {
87
- if (!this.uiAttributes) {
88
- const element = this.elementRef.nativeElement;
89
- this.uiAttributes = [...FORMLY_VALIDATORS, 'tabindex', 'placeholder', 'readonly', 'disabled', 'step'].filter((attr) => !element.hasAttribute || !element.hasAttribute(attr));
90
- }
91
- for (let i = 0; i < this.uiAttributes.length; i++) {
92
- const attr = this.uiAttributes[i];
93
- const value = this.props[attr];
94
- if (this.uiAttributesCache[attr] !== value &&
95
- (!this.props.attributes || !this.props.attributes.hasOwnProperty(attr.toLowerCase()))) {
96
- this.uiAttributesCache[attr] = value;
97
- if (value || value === 0) {
98
- this.setAttribute(attr, value === true ? attr : `${value}`);
99
- }
100
- else {
101
- this.removeAttribute(attr);
102
- }
103
- }
104
- }
105
- }
106
- ngOnDestroy() {
107
- this.uiEvents.listeners.forEach((listener) => listener());
108
- this.detachElementRef(this.field);
109
- this.focusObserver?.unsubscribe();
110
- }
111
- toggleFocus(value) {
112
- const element = this.fieldAttrElements ? this.fieldAttrElements[0] : null;
113
- if (!element || !element.nativeElement.focus) {
114
- return;
115
- }
116
- const isFocused = !!this.document.activeElement &&
117
- this.fieldAttrElements.some(({ nativeElement }) => this.document.activeElement === nativeElement || nativeElement.contains(this.document.activeElement));
118
- if (value && !isFocused) {
119
- Promise.resolve().then(() => element.nativeElement.focus());
120
- }
121
- else if (!value && isFocused) {
122
- Promise.resolve().then(() => element.nativeElement.blur());
123
- }
124
- }
125
- onFocus($event) {
126
- this.focusObserver?.setValue(true);
127
- this.props.focus?.(this.field, $event);
128
- }
129
- onBlur($event) {
130
- this.focusObserver?.setValue(false);
131
- this.props.blur?.(this.field, $event);
132
- }
133
- // handle custom `change` event, for regular ones rely on DOM listener
134
- onHostChange($event) {
135
- if ($event instanceof Event) {
136
- return;
137
- }
138
- this.onChange($event);
139
- }
140
- onChange($event) {
141
- this.props.change?.(this.field, $event);
142
- this.field.formControl?.markAsDirty();
143
- }
144
- attachElementRef(f) {
145
- if (!f) {
146
- return;
147
- }
148
- if (f['_elementRefs']?.indexOf(this.elementRef) === -1) {
149
- f['_elementRefs'].push(this.elementRef);
150
- }
151
- else {
152
- defineHiddenProp(f, '_elementRefs', [this.elementRef]);
153
- }
154
- }
155
- detachElementRef(f) {
156
- const index = f?.['_elementRefs'] ? this.fieldAttrElements.indexOf(this.elementRef) : -1;
157
- if (index !== -1) {
158
- f['_elementRefs'].splice(index, 1);
159
- }
160
- }
161
- setAttribute(attr, value) {
162
- this.renderer.setAttribute(this.elementRef.nativeElement, attr, value);
163
- }
164
- removeAttribute(attr) {
165
- this.renderer.removeAttribute(this.elementRef.nativeElement, attr);
166
- }
167
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormlyAttributes, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
168
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FormlyAttributes, isStandalone: true, selector: "[formlyAttributes]", inputs: { field: ["formlyAttributes", "field"], id: "id" }, host: { listeners: { "change": "onHostChange($event)" } }, usesOnChanges: true, ngImport: i0 }); }
169
- }
170
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormlyAttributes, decorators: [{
171
- type: Directive,
172
- args: [{
173
- selector: '[formlyAttributes]',
174
- standalone: true,
175
- host: {
176
- '(change)': 'onHostChange($event)',
177
- },
178
- }]
179
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: undefined, decorators: [{
180
- type: Inject,
181
- args: [DOCUMENT]
182
- }] }], propDecorators: { field: [{
183
- type: Input,
184
- args: ['formlyAttributes']
185
- }], id: [{
186
- type: Input
187
- }] } });
188
- export class LegacyFormlyAttributes extends FormlyAttributes {
189
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LegacyFormlyAttributes, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
190
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: LegacyFormlyAttributes, selector: "[formlyAttributes]", host: { listeners: { "change": "onHostChange($event)" } }, usesInheritance: true, ngImport: i0 }); }
191
- }
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LegacyFormlyAttributes, decorators: [{
193
- type: Directive,
194
- args: [{
195
- selector: '[formlyAttributes]',
196
- host: {
197
- '(change)': 'onHostChange($event)',
198
- },
199
- }]
200
- }] });
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LmF0dHJpYnV0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29yZS9zcmMvbGliL3RlbXBsYXRlcy9mb3JtbHkuYXR0cmlidXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFLTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBYSxNQUFNLFVBQVUsQ0FBQztBQUNuRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRTNDOztHQUVHO0FBUUgsTUFBTSxPQUFPLGdCQUFnQjtJQWdDM0IsSUFBWSxLQUFLO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSyxFQUFzQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFZLGlCQUFpQjtRQUMzQixPQUFRLElBQUksQ0FBQyxLQUFnQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hFLENBQUM7SUFFRCxZQUNVLFFBQW1CLEVBQ25CLFVBQXNCLEVBQ1osU0FBYztRQUZ4QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFwQ3hCLHNCQUFpQixHQUFRLEVBQUUsQ0FBQztRQUlwQzs7OztXQUlHO1FBQ0ssYUFBUSxHQUFHO1lBQ2pCLFNBQVMsRUFBRSxFQUFvQjtZQUMvQixNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO1lBQ3JGLFFBQVEsRUFBRSxDQUFDLFNBQWlCLEVBQUUsTUFBVyxFQUFFLEVBQUU7Z0JBQzNDLFFBQVEsU0FBUyxFQUFFLENBQUM7b0JBQ2xCLEtBQUssT0FBTzt3QkFD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Q0FBQyxFQUFFLENBQUM7WUFDakIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBWTtRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRSxDQUFDOytHQXZNVSxnQkFBZ0IscUVBMkNqQixRQUFRO21HQTNDUCxnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBUDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDSixVQUFVLEVBQUUsc0JBQXNCO3FCQUNuQztpQkFDRjs7MEJBNENJLE1BQU07MkJBQUMsUUFBUTt5Q0F6Q1MsS0FBSztzQkFBL0IsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBQ2hCLEVBQUU7c0JBQVYsS0FBSzs7QUE2TVIsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGdCQUFnQjsrR0FBL0Msc0JBQXNCO21HQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBTmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsSUFBSSxFQUFFO3dCQUNKLFVBQVUsRUFBRSxzQkFBc0I7cUJBQ25DO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBSZW5kZXJlcjIsXG4gIERvQ2hlY2ssXG4gIEluamVjdCxcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IGRlZmluZUhpZGRlblByb3AsIEZPUk1MWV9WQUxJREFUT1JTLCBvYnNlcnZlLCBJT2JzZXJ2ZXIgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQWxsb3cgdG8gbGluayB0aGUgYGZpZWxkYCBIVE1MIGF0dHJpYnV0ZXMgKGBpZGAsIGBuYW1lYCAuLi4pIGFuZCBFdmVudCBhdHRyaWJ1dGVzIChgZm9jdXNgLCBgYmx1cmAgLi4uKSB0byBhbiBlbGVtZW50IGluIHRoZSBET00uXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmb3JtbHlBdHRyaWJ1dGVzXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICAnKGNoYW5nZSknOiAnb25Ib3N0Q2hhbmdlKCRldmVudCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlBdHRyaWJ1dGVzIGltcGxlbWVudHMgT25DaGFuZ2VzLCBEb0NoZWNrLCBPbkRlc3Ryb3kge1xuICAvKiogVGhlIGZpZWxkIGNvbmZpZy4gKi9cbiAgQElucHV0KCdmb3JtbHlBdHRyaWJ1dGVzJykgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnO1xuICBASW5wdXQoKSBpZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50O1xuICBwcml2YXRlIHVpQXR0cmlidXRlc0NhY2hlOiBhbnkgPSB7fTtcbiAgcHJpdmF0ZSB1aUF0dHJpYnV0ZXM6IHN0cmluZ1tdO1xuICBwcml2YXRlIGZvY3VzT2JzZXJ2ZXI6IElPYnNlcnZlcjxib29sZWFuPjtcblxuICAvKipcbiAgICogSG9zdEJpbmRpbmcgZG9lc24ndCByZWdpc3RlciBsaXN0ZW5lcnMgY29uZGl0aW9uYWxseSB3aGljaCBtYXkgcHJvZHVjZSBzb21lIHBlcmYgaXNzdWVzLlxuICAgKlxuICAgKiBGb3JtbHkgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZ3gtZm9ybWx5L25neC1mb3JtbHkvaXNzdWVzLzE5OTFcbiAgICovXG4gIHByaXZhdGUgdWlFdmVudHMgPSB7XG4gICAgbGlzdGVuZXJzOiBbXSBhcyAoKCkgPT4gdm9pZClbXSxcbiAgICBldmVudHM6IFsnY2xpY2snLCAna2V5dXAnLCAna2V5ZG93bicsICdrZXlwcmVzcycsICdmb2N1cycsICdibHVyJywgJ2NoYW5nZScsICd3aGVlbCddLFxuICAgIGNhbGxiYWNrOiAoZXZlbnROYW1lOiBzdHJpbmcsICRldmVudDogYW55KSA9PiB7XG4gICAgICBzd2l0Y2ggKGV2ZW50TmFtZSkge1xuICAgICAgICBjYXNlICdmb2N1cyc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMub25Gb2N1cygkZXZlbnQpO1xuICAgICAgICBjYXNlICdibHVyJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5vbkJsdXIoJGV2ZW50KTtcbiAgICAgICAgY2FzZSAnY2hhbmdlJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5vbkNoYW5nZSgkZXZlbnQpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzW2V2ZW50TmFtZV0odGhpcy5maWVsZCwgJGV2ZW50KTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xuXG4gIHByaXZhdGUgZ2V0IHByb3BzKCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLnByb3BzIHx8ICh7fSBhcyBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlWydwcm9wcyddKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGZpZWxkQXR0ckVsZW1lbnRzKCk6IEVsZW1lbnRSZWZbXSB7XG4gICAgcmV0dXJuICh0aGlzLmZpZWxkIGFzIEZvcm1seUZpZWxkQ29uZmlnQ2FjaGUpPy5bJ19lbGVtZW50UmVmcyddIHx8IFtdO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBfZG9jdW1lbnQ6IGFueSxcbiAgKSB7XG4gICAgdGhpcy5kb2N1bWVudCA9IF9kb2N1bWVudDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5maWVsZCkge1xuICAgICAgdGhpcy5maWVsZC5uYW1lICYmIHRoaXMuc2V0QXR0cmlidXRlKCduYW1lJywgdGhpcy5maWVsZC5uYW1lKTtcbiAgICAgIHRoaXMudWlFdmVudHMubGlzdGVuZXJzLmZvckVhY2goKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcigpKTtcbiAgICAgIHRoaXMudWlFdmVudHMuZXZlbnRzLmZvckVhY2goKGV2ZW50TmFtZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5wcm9wcz8uW2V2ZW50TmFtZV0gfHwgWydmb2N1cycsICdibHVyJywgJ2NoYW5nZSddLmluZGV4T2YoZXZlbnROYW1lKSAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLnVpRXZlbnRzLmxpc3RlbmVycy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGV2ZW50TmFtZSwgKGUpID0+IHRoaXMudWlFdmVudHMuY2FsbGJhY2soZXZlbnROYW1lLCBlKSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLnByb3BzPy5hdHRyaWJ1dGVzKSB7XG4gICAgICAgIG9ic2VydmUodGhpcy5maWVsZCwgWydwcm9wcycsICdhdHRyaWJ1dGVzJ10sICh7IGN1cnJlbnRWYWx1ZSwgcHJldmlvdXNWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgaWYgKHByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHByZXZpb3VzVmFsdWUpLmZvckVhY2goKGF0dHIpID0+IHRoaXMucmVtb3ZlQXR0cmlidXRlKGF0dHIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjdXJyZW50VmFsdWUpLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZVthdHRyXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoYXR0ciwgY3VycmVudFZhbHVlW2F0dHJdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kZXRhY2hFbGVtZW50UmVmKGNoYW5nZXMuZmllbGQucHJldmlvdXNWYWx1ZSk7XG4gICAgICB0aGlzLmF0dGFjaEVsZW1lbnRSZWYoY2hhbmdlcy5maWVsZC5jdXJyZW50VmFsdWUpO1xuICAgICAgaWYgKHRoaXMuZmllbGRBdHRyRWxlbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICF0aGlzLmlkICYmIHRoaXMuZmllbGQuaWQgJiYgdGhpcy5zZXRBdHRyaWJ1dGUoJ2lkJywgdGhpcy5maWVsZC5pZCk7XG4gICAgICAgIHRoaXMuZm9jdXNPYnNlcnZlciA9IG9ic2VydmU8Ym9vbGVhbj4odGhpcy5maWVsZCwgWydmb2N1cyddLCAoeyBjdXJyZW50VmFsdWUgfSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9nZ2xlRm9jdXMoY3VycmVudFZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuaWQpIHtcbiAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdpZCcsIHRoaXMuaWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXZSBuZWVkIHRvIHJlLWV2YWx1YXRlIGFsbCB0aGUgYXR0cmlidXRlcyBvbiBldmVyeSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLCBiZWNhdXNlXG4gICAqIGJ5IHVzaW5nIGEgSG9zdEJpbmRpbmcgd2UgcnVuIGludG8gY2VydGFpbiBlZGdlIGNhc2VzLiBUaGlzIG1lYW5zIHRoYXQgd2hhdGV2ZXIgbG9naWNcbiAgICogaXMgaW4gaGVyZSBoYXMgdG8gYmUgc3VwZXIgbGVhbiBvciB3ZSByaXNrIHNlcmlvdXNseSBkYW1hZ2luZyBvciBkZXN0cm95aW5nIHRoZSBwZXJmb3JtYW5jZS5cbiAgICpcbiAgICogRm9ybWx5IGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vbmd4LWZvcm1seS9uZ3gtZm9ybWx5L2lzc3Vlcy8xMzE3XG4gICAqIE1hdGVyaWFsIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy8xNDAyNFxuICAgKi9cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmICghdGhpcy51aUF0dHJpYnV0ZXMpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIHRoaXMudWlBdHRyaWJ1dGVzID0gWy4uLkZPUk1MWV9WQUxJREFUT1JTLCAndGFiaW5kZXgnLCAncGxhY2Vob2xkZXInLCAncmVhZG9ubHknLCAnZGlzYWJsZWQnLCAnc3RlcCddLmZpbHRlcihcbiAgICAgICAgKGF0dHIpID0+ICFlbGVtZW50Lmhhc0F0dHJpYnV0ZSB8fCAhZWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0ciksXG4gICAgICApO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy51aUF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGF0dHIgPSB0aGlzLnVpQXR0cmlidXRlc1tpXTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wcm9wc1thdHRyXTtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy51aUF0dHJpYnV0ZXNDYWNoZVthdHRyXSAhPT0gdmFsdWUgJiZcbiAgICAgICAgKCF0aGlzLnByb3BzLmF0dHJpYnV0ZXMgfHwgIXRoaXMucHJvcHMuYXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShhdHRyLnRvTG93ZXJDYXNlKCkpKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMudWlBdHRyaWJ1dGVzQ2FjaGVbYXR0cl0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlIHx8IHZhbHVlID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoYXR0ciwgdmFsdWUgPT09IHRydWUgPyBhdHRyIDogYCR7dmFsdWV9YCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoYXR0cik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVpRXZlbnRzLmxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoKSk7XG4gICAgdGhpcy5kZXRhY2hFbGVtZW50UmVmKHRoaXMuZmllbGQpO1xuICAgIHRoaXMuZm9jdXNPYnNlcnZlcj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHRvZ2dsZUZvY3VzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZmllbGRBdHRyRWxlbWVudHMgPyB0aGlzLmZpZWxkQXR0ckVsZW1lbnRzWzBdIDogbnVsbDtcbiAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRm9jdXNlZCA9XG4gICAgICAhIXRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJlxuICAgICAgdGhpcy5maWVsZEF0dHJFbGVtZW50cy5zb21lKFxuICAgICAgICAoeyBuYXRpdmVFbGVtZW50IH0pID0+XG4gICAgICAgICAgdGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBuYXRpdmVFbGVtZW50IHx8IG5hdGl2ZUVsZW1lbnQuY29udGFpbnModGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50KSxcbiAgICAgICk7XG5cbiAgICBpZiAodmFsdWUgJiYgIWlzRm9jdXNlZCkge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSk7XG4gICAgfSBlbHNlIGlmICghdmFsdWUgJiYgaXNGb2N1c2VkKSB7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IGVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCkpO1xuICAgIH1cbiAgfVxuXG4gIG9uRm9jdXMoJGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZvY3VzT2JzZXJ2ZXI/LnNldFZhbHVlKHRydWUpO1xuICAgIHRoaXMucHJvcHMuZm9jdXM/Lih0aGlzLmZpZWxkLCAkZXZlbnQpO1xuICB9XG5cbiAgb25CbHVyKCRldmVudDogYW55KSB7XG4gICAgdGhpcy5mb2N1c09ic2VydmVyPy5zZXRWYWx1ZShmYWxzZSk7XG4gICAgdGhpcy5wcm9wcy5ibHVyPy4odGhpcy5maWVsZCwgJGV2ZW50KTtcbiAgfVxuXG4gIC8vIGhhbmRsZSBjdXN0b20gYGNoYW5nZWAgZXZlbnQsIGZvciByZWd1bGFyIG9uZXMgcmVseSBvbiBET00gbGlzdGVuZXJcbiAgb25Ib3N0Q2hhbmdlKCRldmVudDogYW55KSB7XG4gICAgaWYgKCRldmVudCBpbnN0YW5jZW9mIEV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vbkNoYW5nZSgkZXZlbnQpO1xuICB9XG5cbiAgb25DaGFuZ2UoJGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnByb3BzLmNoYW5nZT8uKHRoaXMuZmllbGQsICRldmVudCk7XG4gICAgdGhpcy5maWVsZC5mb3JtQ29udHJvbD8ubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoRWxlbWVudFJlZihmOiBGb3JtbHlGaWVsZENvbmZpZ0NhY2hlKSB7XG4gICAgaWYgKCFmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGZbJ19lbGVtZW50UmVmcyddPy5pbmRleE9mKHRoaXMuZWxlbWVudFJlZikgPT09IC0xKSB7XG4gICAgICBmWydfZWxlbWVudFJlZnMnXS5wdXNoKHRoaXMuZWxlbWVudFJlZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlZmluZUhpZGRlblByb3AoZiwgJ19lbGVtZW50UmVmcycsIFt0aGlzLmVsZW1lbnRSZWZdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRldGFjaEVsZW1lbnRSZWYoZjogRm9ybWx5RmllbGRDb25maWdDYWNoZSkge1xuICAgIGNvbnN0IGluZGV4ID0gZj8uWydfZWxlbWVudFJlZnMnXSA/IHRoaXMuZmllbGRBdHRyRWxlbWVudHMuaW5kZXhPZih0aGlzLmVsZW1lbnRSZWYpIDogLTE7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgZlsnX2VsZW1lbnRSZWZzJ10uc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEF0dHJpYnV0ZShhdHRyOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgYXR0ciwgdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVBdHRyaWJ1dGUoYXR0cjogc3RyaW5nKSB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGF0dHIpO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmb3JtbHlBdHRyaWJ1dGVzXScsXG4gIGhvc3Q6IHtcbiAgICAnKGNoYW5nZSknOiAnb25Ib3N0Q2hhbmdlKCRldmVudCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBMZWdhY3lGb3JtbHlBdHRyaWJ1dGVzIGV4dGVuZHMgRm9ybWx5QXR0cmlidXRlcyB7fVxuIl19
@@ -1,31 +0,0 @@
1
- import { Component, ChangeDetectionStrategy } from '@angular/core';
2
- import { FieldType } from './field.type';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../components/formly.field";
5
- /** @ignore */
6
- export class FormlyGroup extends FieldType {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormlyGroup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
8
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FormlyGroup, selector: "formly-group", host: { properties: { "class": "field.fieldGroupClassName || \"\"" } }, usesInheritance: true, ngImport: i0, template: `
9
- @for (f of field.fieldGroup; track $index) {
10
- <formly-field [field]="f"></formly-field>
11
- }
12
- <ng-content></ng-content>
13
- `, isInline: true, dependencies: [{ kind: "component", type: i1.LegacyFormlyField, selector: "formly-field" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14
- }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormlyGroup, decorators: [{
16
- type: Component,
17
- args: [{
18
- selector: 'formly-group',
19
- template: `
20
- @for (f of field.fieldGroup; track $index) {
21
- <formly-field [field]="f"></formly-field>
22
- }
23
- <ng-content></ng-content>
24
- `,
25
- host: {
26
- '[class]': 'field.fieldGroupClassName || ""',
27
- },
28
- changeDetection: ChangeDetectionStrategy.OnPush,
29
- }]
30
- }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5Lmdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvcmUvc3JjL2xpYi90ZW1wbGF0ZXMvZm9ybWx5Lmdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBd0IsTUFBTSxjQUFjLENBQUM7OztBQUUvRCxjQUFjO0FBY2QsTUFBTSxPQUFPLFdBQVksU0FBUSxTQUErQjsrR0FBbkQsV0FBVzttR0FBWCxXQUFXLG1KQVhaOzs7OztHQUtUOzs0RkFNVSxXQUFXO2tCQWJ2QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixRQUFRLEVBQUU7Ozs7O0dBS1Q7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLFNBQVMsRUFBRSxpQ0FBaUM7cUJBQzdDO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZSwgRmllbGRHcm91cFR5cGVDb25maWcgfSBmcm9tICcuL2ZpZWxkLnR5cGUnO1xuXG4vKiogQGlnbm9yZSAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybWx5LWdyb3VwJyxcbiAgdGVtcGxhdGU6IGBcbiAgICBAZm9yIChmIG9mIGZpZWxkLmZpZWxkR3JvdXA7IHRyYWNrICRpbmRleCkge1xuICAgICAgPGZvcm1seS1maWVsZCBbZmllbGRdPVwiZlwiPjwvZm9ybWx5LWZpZWxkPlxuICAgIH1cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzXSc6ICdmaWVsZC5maWVsZEdyb3VwQ2xhc3NOYW1lIHx8IFwiXCInLFxuICB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5R3JvdXAgZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRHcm91cFR5cGVDb25maWc+IHt9XG4iXX0=
@@ -1,84 +0,0 @@
1
- import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
2
- import { FORMLY_VALIDATORS, isObject } from '../utils';
3
- import { isObservable, of } from 'rxjs';
4
- import { merge } from 'rxjs';
5
- import { startWith, switchMap, filter } from 'rxjs/operators';
6
- import { AsyncPipe } from '@angular/common';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../services/formly.config";
9
- import * as i2 from "@angular/common";
10
- /**
11
- * The `<formly-validation-message>` component renders the error message of a given `field`.
12
- */
13
- export class FormlyValidationMessage {
14
- constructor(config) {
15
- this.config = config;
16
- }
17
- ngOnChanges() {
18
- const EXPR_VALIDATORS = FORMLY_VALIDATORS.map((v) => `templateOptions.${v}`);
19
- this.errorMessage$ = merge(this.field.formControl.statusChanges, !this.field.options
20
- ? of(null)
21
- : this.field.options.fieldChanges.pipe(filter(({ field, type, property }) => {
22
- return (field === this.field &&
23
- type === 'expressionChanges' &&
24
- (property.indexOf('validation') !== -1 || EXPR_VALIDATORS.indexOf(property) !== -1));
25
- }))).pipe(startWith(null), switchMap(() => (isObservable(this.errorMessage) ? this.errorMessage : of(this.errorMessage))));
26
- }
27
- get errorMessage() {
28
- const fieldForm = this.field.formControl;
29
- for (const error in fieldForm.errors) {
30
- if (fieldForm.errors.hasOwnProperty(error)) {
31
- let message = this.config.getValidatorMessage(error);
32
- if (isObject(fieldForm.errors[error])) {
33
- if (fieldForm.errors[error].errorPath) {
34
- return undefined;
35
- }
36
- if (fieldForm.errors[error].message) {
37
- message = fieldForm.errors[error].message;
38
- }
39
- }
40
- if (this.field.validation?.messages?.[error]) {
41
- message = this.field.validation.messages[error];
42
- }
43
- if (this.field.validators?.[error]?.message) {
44
- message = this.field.validators[error].message;
45
- }
46
- if (this.field.asyncValidators?.[error]?.message) {
47
- message = this.field.asyncValidators[error].message;
48
- }
49
- if (typeof message === 'function') {
50
- return message(fieldForm.errors[error], this.field);
51
- }
52
- return message;
53
- }
54
- }
55
- return undefined;
56
- }
57
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormlyValidationMessage, deps: [{ token: i1.FormlyConfig }], target: i0.ɵɵFactoryTarget.Component }); }
58
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormlyValidationMessage, isStandalone: true, selector: "formly-validation-message", inputs: { field: "field" }, usesOnChanges: true, ngImport: i0, template: '{{ errorMessage$ | async }}', isInline: true, dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
59
- }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormlyValidationMessage, decorators: [{
61
- type: Component,
62
- args: [{
63
- selector: 'formly-validation-message',
64
- template: '{{ errorMessage$ | async }}',
65
- changeDetection: ChangeDetectionStrategy.OnPush,
66
- standalone: true,
67
- imports: [AsyncPipe],
68
- }]
69
- }], ctorParameters: () => [{ type: i1.FormlyConfig }], propDecorators: { field: [{
70
- type: Input
71
- }] } });
72
- export class LegacyFormlyValidationMessage extends FormlyValidationMessage {
73
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LegacyFormlyValidationMessage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
74
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LegacyFormlyValidationMessage, selector: "formly-validation-message", usesInheritance: true, ngImport: i0, template: '{{ errorMessage$ | async }}', isInline: true, dependencies: [{ kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
75
- }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LegacyFormlyValidationMessage, decorators: [{
77
- type: Component,
78
- args: [{
79
- selector: 'formly-validation-message',
80
- template: '{{ errorMessage$ | async }}',
81
- changeDetection: ChangeDetectionStrategy.OnPush,
82
- }]
83
- }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LnZhbGlkYXRpb24tbWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL3NyYy9saWIvdGVtcGxhdGVzL2Zvcm1seS52YWxpZGF0aW9uLW1lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHckYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2RCxPQUFPLEVBQWMsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQUU1Qzs7R0FFRztBQVFILE1BQU0sT0FBTyx1QkFBdUI7SUFLbEMsWUFBb0IsTUFBb0I7UUFBcEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztJQUFHLENBQUM7SUFFNUMsV0FBVztRQUNULE1BQU0sZUFBZSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDcEMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87WUFDakIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDVixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDbEMsTUFB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bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7aUJBQ3JCO2lGQUdVLEtBQUs7c0JBQWIsS0FBSzs7QUF1RVIsTUFBTSxPQUFPLDZCQUE4QixTQUFRLHVCQUF1QjsrR0FBN0QsNkJBQTZCO21HQUE3Qiw2QkFBNkIsd0ZBSDlCLDZCQUE2Qjs7NEZBRzVCLDZCQUE2QjtrQkFMekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtbHlDb25maWcgfSBmcm9tICcuLi9zZXJ2aWNlcy9mb3JtbHkuY29uZmlnJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IEZPUk1MWV9WQUxJREFUT1JTLCBpc09iamVjdCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGlzT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIHN3aXRjaE1hcCwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLyoqXG4gKiBUaGUgYDxmb3JtbHktdmFsaWRhdGlvbi1tZXNzYWdlPmAgY29tcG9uZW50IHJlbmRlcnMgdGhlIGVycm9yIG1lc3NhZ2Ugb2YgYSBnaXZlbiBgZmllbGRgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtbHktdmFsaWRhdGlvbi1tZXNzYWdlJyxcbiAgdGVtcGxhdGU6ICd7eyBlcnJvck1lc3NhZ2UkIHwgYXN5bmMgfX0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0FzeW5jUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1seVZhbGlkYXRpb25NZXNzYWdlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqIFRoZSBmaWVsZCBjb25maWcuICovXG4gIEBJbnB1dCgpIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZztcbiAgZXJyb3JNZXNzYWdlJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBGb3JtbHlDb25maWcpIHt9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgY29uc3QgRVhQUl9WQUxJREFUT1JTID0gRk9STUxZX1ZBTElEQVRPUlMubWFwKCh2KSA9PiBgdGVtcGxhdGVPcHRpb25zLiR7dn1gKTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZSQgPSBtZXJnZShcbiAgICAgIHRoaXMuZmllbGQuZm9ybUNvbnRyb2wuc3RhdHVzQ2hhbmdlcyxcbiAgICAgICF0aGlzLmZpZWxkLm9wdGlvbnNcbiAgICAgICAgPyBvZihudWxsKVxuICAgICAgICA6IHRoaXMuZmllbGQub3B0aW9ucy5maWVsZENoYW5nZXMucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoeyBmaWVsZCwgdHlwZSwgcHJvcGVydHkgfSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIGZpZWxkID09PSB0aGlzLmZpZWxkICYmXG4gICAgICAgICAgICAgICAgdHlwZSA9PT0gJ2V4cHJlc3Npb25DaGFuZ2VzJyAmJlxuICAgICAgICAgICAgICAgIChwcm9wZXJ0eS5pbmRleE9mKCd2YWxpZGF0aW9uJykgIT09IC0xIHx8IEVYUFJfVkFMSURBVE9SUy5pbmRleE9mKHByb3BlcnR5KSAhPT0gLTEpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApLFxuICAgICkucGlwZShcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiAoaXNPYnNlcnZhYmxlKHRoaXMuZXJyb3JNZXNzYWdlKSA/IHRoaXMuZXJyb3JNZXNzYWdlIDogb2YodGhpcy5lcnJvck1lc3NhZ2UpKSksXG4gICAgKTtcbiAgfVxuXG4gIGdldCBlcnJvck1lc3NhZ2UoKSB7XG4gICAgY29uc3QgZmllbGRGb3JtID0gdGhpcy5maWVsZC5mb3JtQ29udHJvbDtcbiAgICBmb3IgKGNvbnN0IGVycm9yIGluIGZpZWxkRm9ybS5lcnJvcnMpIHtcbiAgICAgIGlmIChmaWVsZEZvcm0uZXJyb3JzLmhhc093blByb3BlcnR5KGVycm9yKSkge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMuY29uZmlnLmdldFZhbGlkYXRvck1lc3NhZ2UoZXJyb3IpO1xuXG4gICAgICAgIGlmIChpc09iamVjdChmaWVsZEZvcm0uZXJyb3JzW2Vycm9yXSkpIHtcbiAgICAgICAgICBpZiAoZmllbGRGb3JtLmVycm9yc1tlcnJvcl0uZXJyb3JQYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaWVsZEZvcm0uZXJyb3JzW2Vycm9yXS5tZXNzYWdlKSB7XG4gICAgICAgICAgICBtZXNzYWdlID0gZmllbGRGb3JtLmVycm9yc1tlcnJvcl0ubWVzc2FnZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5maWVsZC52YWxpZGF0aW9uPy5tZXNzYWdlcz8uW2Vycm9yXSkge1xuICAgICAgICAgIG1lc3NhZ2UgPSB0aGlzLmZpZWxkLnZhbGlkYXRpb24ubWVzc2FnZXNbZXJyb3JdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZmllbGQudmFsaWRhdG9ycz8uW2Vycm9yXT8ubWVzc2FnZSkge1xuICAgICAgICAgIG1lc3NhZ2UgPSB0aGlzLmZpZWxkLnZhbGlkYXRvcnNbZXJyb3JdLm1lc3NhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5maWVsZC5hc3luY1ZhbGlkYXRvcnM/LltlcnJvcl0/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICBtZXNzYWdlID0gdGhpcy5maWVsZC5hc3luY1ZhbGlkYXRvcnNbZXJyb3JdLm1lc3NhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gbWVzc2FnZShmaWVsZEZvcm0uZXJyb3JzW2Vycm9yXSwgdGhpcy5maWVsZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm1seS12YWxpZGF0aW9uLW1lc3NhZ2UnLFxuICB0ZW1wbGF0ZTogJ3t7IGVycm9yTWVzc2FnZSQgfCBhc3luYyB9fScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMZWdhY3lGb3JtbHlWYWxpZGF0aW9uTWVzc2FnZSBleHRlbmRzIEZvcm1seVZhbGlkYXRpb25NZXNzYWdlIHt9XG4iXX0=