@ngx-formly/core 8.0.0 → 9.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 (53) hide show
  1. package/README.md +26 -19
  2. package/fesm2022/ngx-formly-core-json-schema.mjs +3 -3
  3. package/fesm2022/ngx-formly-core-preset.mjs +4 -4
  4. package/fesm2022/ngx-formly-core-select.mjs +10 -10
  5. package/fesm2022/ngx-formly-core-testing.mjs +3 -3
  6. package/fesm2022/ngx-formly-core.mjs +111 -75
  7. package/fesm2022/ngx-formly-core.mjs.map +1 -1
  8. package/index.d.ts +738 -3
  9. package/json-schema/index.d.ts +39 -5
  10. package/package.json +2 -2
  11. package/preset/index.d.ts +13 -5
  12. package/select/index.d.ts +44 -5
  13. package/testing/index.d.ts +37 -5
  14. package/json-schema/formly-json-schema.service.d.ts +0 -36
  15. package/json-schema/public_api.d.ts +0 -1
  16. package/lib/components/formly.field.d.ts +0 -47
  17. package/lib/components/formly.form.d.ts +0 -50
  18. package/lib/components/formly.template.d.ts +0 -19
  19. package/lib/core.config.d.ts +0 -11
  20. package/lib/core.d.ts +0 -20
  21. package/lib/core.module.d.ts +0 -25
  22. package/lib/extensions/core/core.d.ts +0 -14
  23. package/lib/extensions/field-expression/field-expression.d.ts +0 -4
  24. package/lib/extensions/field-expression/utils.d.ts +0 -4
  25. package/lib/extensions/field-expression-legacy/field-expression.d.ts +0 -16
  26. package/lib/extensions/field-expression-legacy/utils.d.ts +0 -5
  27. package/lib/extensions/field-form/field-form.d.ts +0 -11
  28. package/lib/extensions/field-form/utils.d.ts +0 -7
  29. package/lib/extensions/field-validation/field-validation.d.ts +0 -11
  30. package/lib/models/config.d.ts +0 -90
  31. package/lib/models/fieldconfig.cache.d.ts +0 -50
  32. package/lib/models/fieldconfig.d.ts +0 -243
  33. package/lib/models/index.d.ts +0 -3
  34. package/lib/services/formly.builder.d.ts +0 -18
  35. package/lib/services/formly.config.d.ts +0 -56
  36. package/lib/templates/field-array.type.d.ts +0 -22
  37. package/lib/templates/field-template.type.d.ts +0 -12
  38. package/lib/templates/field.type.d.ts +0 -30
  39. package/lib/templates/field.wrapper.d.ts +0 -12
  40. package/lib/templates/formly.attributes.d.ts +0 -55
  41. package/lib/templates/formly.group.d.ts +0 -7
  42. package/lib/templates/formly.validation-message.d.ts +0 -23
  43. package/lib/utils.d.ts +0 -47
  44. package/preset/preset-substitution.extension.d.ts +0 -13
  45. package/preset/preset.config.d.ts +0 -2
  46. package/preset/preset.module.d.ts +0 -7
  47. package/preset/public_api.d.ts +0 -2
  48. package/public_api.d.ts +0 -1
  49. package/select/public_api.d.ts +0 -2
  50. package/select/select-options.pipe.d.ts +0 -34
  51. package/select/select.module.d.ts +0 -7
  52. package/testing/component-factory.d.ts +0 -35
  53. package/testing/public_api.d.ts +0 -1
package/README.md CHANGED
@@ -55,25 +55,32 @@ Formly is a dynamic (JSON powered) form library for Angular that brings unmatche
55
55
 
56
56
  #### **Which Version to use?**
57
57
 
58
- | Angular version | Formly version |
59
- | --------------- | ---------------------- |
60
- | Angular >= 19 | `@ngx-formly/core@8.x` |
61
- | Angular >= 18 | `@ngx-formly/core@7.x` |
62
- | Angular >= 13 | `@ngx-formly/core@6.x` |
63
- | Angular >= 7 | `@ngx-formly/core@5.x` |
64
- | Angular >= 6 | `@ngx-formly/core@4.x` |
65
- | Angular >= 5 | `@ngx-formly/core@3.x` |
66
- | Angular >= 4 | `@ngx-formly/core@2.x` |
67
- | Angular >= 2 | `ng-formly@1.x` |
68
-
69
- #### Upgrading to v8
70
-
71
- Formly v8 requires Angular 19 or newer. Upgrade Angular first, then update all
72
- `@ngx-formly/*` packages used by your application together to v8.
73
- The Material, PrimeNG, and NG-ZORRO integrations require version 19 or newer of
74
- their respective UI libraries. Applications staying on Angular 18 should use Formly v7.
75
-
76
- See the [changelog](CHANGELOG.md) for the full list of changes.
58
+ | Angular version | Formly version | Migration |
59
+ | --------------- | -------------------- | ---------------------------------- |
60
+ | Angular >= 20 | `@ngx-formly/core@9.x` | [Upgrade to v9](UPGRADE-9.0.md) |
61
+ | Angular >= 19 | `@ngx-formly/core@8.x` | [Upgrade to v8](UPGRADE-8.0.md) |
62
+ | Angular >= 18 | `@ngx-formly/core@7.x` | [Upgrade to v7](UPGRADE-7.0.md) |
63
+ | Angular >= 13 | `@ngx-formly/core@6.x` | [Upgrade to v6](UPGRADE-6.0.md) |
64
+ | Angular >= 7 | `@ngx-formly/core@5.x` | [Upgrade to v5](UPGRADE-5.0.md) |
65
+ | Angular >= 6 | `@ngx-formly/core@4.x` | |
66
+ | Angular >= 5 | `@ngx-formly/core@3.x` | |
67
+ | Angular >= 4 | `@ngx-formly/core@2.x` | [Upgrade to v2](UPGRADE-2.0.md) |
68
+ | Angular >= 2 | `ng-formly@1.x` | |
69
+
70
+ #### Upgrading to v9
71
+
72
+ Formly v9 requires Angular 20 or newer. Upgrade Angular first, then update all
73
+ `@ngx-formly/*` packages used by your application together to v9.
74
+ The Material, PrimeNG, and NG-ZORRO integrations require version 20 or newer of
75
+ their respective UI libraries. Kendo requires version 19.1 or newer, and NativeScript
76
+ requires `@nativescript/angular` 20 or newer. Applications staying on Angular 19 should
77
+ use Formly v8; applications staying on Angular 18 should use Formly v7.
78
+
79
+ PrimeNG datepicker fields no longer accept `monthNavigator`, `yearNavigator`, or
80
+ `yearRange`, which PrimeNG 20 removed. Replace `@primeng/themes` imports with
81
+ `@primeuix/themes` when configuring a PrimeNG theme.
82
+
83
+ See the [v9 upgrade guide](UPGRADE-9.0.md) for migration steps and the [changelog](CHANGELOG.md) for the full list of changes.
77
84
 
78
85
  ## Core Team
79
86
 
@@ -839,10 +839,10 @@ class FormlyJsonschema {
839
839
  }
840
840
  return f1;
841
841
  }
842
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyJsonschema, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
843
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyJsonschema, providedIn: 'root' }); }
842
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyJsonschema, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
843
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyJsonschema, providedIn: 'root' }); }
844
844
  }
845
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyJsonschema, decorators: [{
845
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyJsonschema, decorators: [{
846
846
  type: Injectable,
847
847
  args: [{ providedIn: 'root' }]
848
848
  }] });
@@ -42,11 +42,11 @@ function provideFormlyPreset() {
42
42
  }
43
43
 
44
44
  class FormlyPresetModule {
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyPresetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
46
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.25", ngImport: i0, type: FormlyPresetModule, imports: [i1.FormlyModule] }); }
47
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyPresetModule, providers: [provideFormlyPreset()], imports: [FormlyModule.forChild({})] }); }
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyPresetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
46
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.33", ngImport: i0, type: FormlyPresetModule, imports: [i1.FormlyModule] }); }
47
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyPresetModule, providers: [provideFormlyPreset()], imports: [FormlyModule.forChild({})] }); }
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyPresetModule, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyPresetModule, decorators: [{
50
50
  type: NgModule,
51
51
  args: [{
52
52
  imports: [FormlyModule.forChild({})],
@@ -98,28 +98,28 @@ class FormlySelectOptionsPipe {
98
98
  this._options = new BehaviorSubject(options);
99
99
  return this._options.asObservable();
100
100
  }
101
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlySelectOptionsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
102
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.25", ngImport: i0, type: FormlySelectOptionsPipe, isStandalone: true, name: "formlySelectOptions" }); }
101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlySelectOptionsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
102
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.33", ngImport: i0, type: FormlySelectOptionsPipe, isStandalone: true, name: "formlySelectOptions" }); }
103
103
  }
104
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlySelectOptionsPipe, decorators: [{
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlySelectOptionsPipe, decorators: [{
105
105
  type: Pipe,
106
106
  args: [{ name: 'formlySelectOptions', standalone: true }]
107
107
  }] });
108
108
  class LegacyFormlySelectOptionsPipe extends FormlySelectOptionsPipe {
109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LegacyFormlySelectOptionsPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
110
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.25", ngImport: i0, type: LegacyFormlySelectOptionsPipe, isStandalone: false, name: "formlySelectOptions" }); }
109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: LegacyFormlySelectOptionsPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
110
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.33", ngImport: i0, type: LegacyFormlySelectOptionsPipe, isStandalone: false, name: "formlySelectOptions" }); }
111
111
  }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LegacyFormlySelectOptionsPipe, decorators: [{
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: LegacyFormlySelectOptionsPipe, decorators: [{
113
113
  type: Pipe,
114
114
  args: [{ name: 'formlySelectOptions', standalone: false }]
115
115
  }] });
116
116
 
117
117
  class FormlySelectModule {
118
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlySelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
119
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.25", ngImport: i0, type: FormlySelectModule, declarations: [LegacyFormlySelectOptionsPipe], exports: [LegacyFormlySelectOptionsPipe] }); }
120
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlySelectModule }); }
118
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlySelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
119
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.33", ngImport: i0, type: FormlySelectModule, declarations: [LegacyFormlySelectOptionsPipe], exports: [LegacyFormlySelectOptionsPipe] }); }
120
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlySelectModule }); }
121
121
  }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlySelectModule, decorators: [{
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlySelectModule, decorators: [{
123
123
  type: NgModule,
124
124
  args: [{
125
125
  declarations: [LegacyFormlySelectOptionsPipe],
@@ -72,10 +72,10 @@ class TestComponent {
72
72
  constructor(builder) {
73
73
  this.builder = builder;
74
74
  }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TestComponent, deps: [{ token: i1.FormlyFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: TestComponent, isStandalone: false, selector: "formly-test-component", providers: [FormlyFormBuilder], ngImport: i0, template: '', isInline: true }); }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: TestComponent, deps: [{ token: i1.FormlyFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
76
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.33", type: TestComponent, isStandalone: false, selector: "formly-test-component", providers: [FormlyFormBuilder], ngImport: i0, template: '', isInline: true }); }
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TestComponent, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: TestComponent, decorators: [{
79
79
  type: Component,
80
80
  args: [{
81
81
  selector: 'formly-test-component',
@@ -1,18 +1,22 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Type, TemplateRef, ComponentRef, ChangeDetectorRef, ɵNoopNgZone as _NoopNgZone, VERSION, Input, ViewChildren, Directive, ChangeDetectionStrategy, Component, Injectable, Injector, ViewContainerRef, ViewChild, Optional, InjectionToken, inject, Inject, EventEmitter, ContentChildren, Output, NgModule } from '@angular/core';
2
+ import { Type, TemplateRef, ComponentRef, ChangeDetectorRef, ɵNoopNgZone as _NoopNgZone, VERSION, Input, ViewChildren, Directive, ChangeDetectionStrategy, Component, Injectable, Injector, ViewContainerRef, ViewChild, Optional, InjectionToken, inject, Inject, EventEmitter, ContentChildren, Output, DOCUMENT, NgModule } from '@angular/core';
3
3
  import { isObservable, Observable, Subject, of, merge } from 'rxjs';
4
4
  import * as i2 from '@angular/forms';
5
5
  import { AbstractControl, UntypedFormArray, UntypedFormGroup, FormControl, UntypedFormControl, Validators, NgControl } from '@angular/forms';
6
6
  import { tap, map, startWith, distinctUntilChanged, skip, debounceTime, filter, switchMap, take } from 'rxjs/operators';
7
7
  import * as i1 from '@angular/platform-browser';
8
8
  import * as i2$1 from '@angular/common';
9
- import { DOCUMENT, AsyncPipe, CommonModule } from '@angular/common';
9
+ import { AsyncPipe, CommonModule } from '@angular/common';
10
10
 
11
11
  function disableTreeValidityCall(form, callback) {
12
12
  const _updateTreeValidity = form._updateTreeValidity.bind(form);
13
13
  form._updateTreeValidity = () => { };
14
- callback();
15
- form._updateTreeValidity = _updateTreeValidity;
14
+ try {
15
+ callback();
16
+ }
17
+ finally {
18
+ form._updateTreeValidity = _updateTreeValidity;
19
+ }
16
20
  }
17
21
  function getFieldId(formId, field, index) {
18
22
  if (field.id) {
@@ -490,16 +494,31 @@ let FieldExpressionExtension$1 = class FieldExpressionExtension {
490
494
  return;
491
495
  }
492
496
  checkLocked = true;
493
- const fieldChanged = this.checkExpressions(f, ignoreCache);
494
- const options = field.options;
495
- options._hiddenFieldsForCheck
496
- .sort((f) => (f.field.hide ? -1 : 1))
497
- .forEach((f) => this.changeHideState(f.field, f.field.hide ?? f.default, !ignoreCache));
498
- options._hiddenFieldsForCheck = [];
499
- if (fieldChanged) {
500
- this.checkExpressions(field);
497
+ try {
498
+ // ponytail: initial-tree budget; add an override if valid dynamic forms need more passes.
499
+ const maxPasses = Math.max(100, 2 * this.countFields(field));
500
+ const options = field.options;
501
+ // Rebuilds preserve supplied values, but defaults may need clearing after visibility changes.
502
+ const restoredDefaults = ignoreCache ? new Set() : undefined;
503
+ const fieldChanged = this.checkExpressions(f, ignoreCache) || options._hiddenFieldsForCheck.length > 0;
504
+ let passes = 0;
505
+ do {
506
+ if (passes++ === maxPasses) {
507
+ console.warn('[Formly] The form may be inconsistent. Check for circular hide expressions');
508
+ throw new Error(`[Formly Error] Expressions did not settle after ${maxPasses} passes.`);
509
+ }
510
+ options._hiddenFieldsForCheck
511
+ .sort((f) => (f.field.hide ? -1 : 1))
512
+ .forEach((f) => this.changeHideState(f.field, f.field.hide ?? f.default, !ignoreCache, f.emitEvent, restoredDefaults));
513
+ options._hiddenFieldsForCheck = [];
514
+ if (fieldChanged) {
515
+ this.checkExpressions(field);
516
+ }
517
+ } while (options._hiddenFieldsForCheck.length > 0);
518
+ }
519
+ finally {
520
+ checkLocked = false;
501
521
  }
502
- checkLocked = false;
503
522
  };
504
523
  }
505
524
  }
@@ -547,15 +566,29 @@ let FieldExpressionExtension$1 = class FieldExpressionExtension {
547
566
  _evalStringExpression(expression, argNames) {
548
567
  return evalStringExpressionLegacy(expression, argNames);
549
568
  }
569
+ countFields(field) {
570
+ return field ? 1 + (field.fieldGroup?.reduce((count, f) => count + this.countFields(f), 0) ?? 0) : 0;
571
+ }
550
572
  checkExpressions(field, ignoreCache = false) {
551
573
  if (!field) {
552
574
  return false;
553
575
  }
554
576
  let fieldChanged = false;
555
577
  if (field._expressions) {
578
+ const hide = field.hide;
556
579
  for (const key of Object.keys(field._expressions)) {
557
580
  field._expressions[key].callback?.(ignoreCache) && (fieldChanged = true);
558
581
  }
582
+ if (ignoreCache && field._expressions.hide && hide === false && field.hide === false) {
583
+ let parent = field.parent;
584
+ while (parent && !parent.hide) {
585
+ parent = parent.parent;
586
+ }
587
+ if (!parent) {
588
+ // Restore defaults after rebuilding without reporting a visibility change.
589
+ field.options._hiddenFieldsForCheck.push({ field, emitEvent: false });
590
+ }
591
+ }
559
592
  }
560
593
  field.fieldGroup?.forEach((f) => this.checkExpressions(f, ignoreCache) && (fieldChanged = true));
561
594
  return fieldChanged;
@@ -570,11 +603,12 @@ let FieldExpressionExtension$1 = class FieldExpressionExtension {
570
603
  field.props.disabled = value;
571
604
  }
572
605
  }
573
- changeHideState(field, hide, resetOnHide) {
606
+ changeHideState(field, hide, resetOnHide, emitEvent = true, restoredDefaults) {
607
+ hide = field.hide || hide;
574
608
  if (field.fieldGroup) {
575
609
  field.fieldGroup
576
610
  .filter((f) => f && !f._expressions.hide)
577
- .forEach((f) => this.changeHideState(f, hide, resetOnHide));
611
+ .forEach((f) => this.changeHideState(f, hide, resetOnHide, emitEvent, restoredDefaults));
578
612
  }
579
613
  if (field.formControl && hasKey(field)) {
580
614
  defineHiddenProp(field, '_hide', !!(hide || field.hide));
@@ -584,8 +618,9 @@ let FieldExpressionExtension$1 = class FieldExpressionExtension {
584
618
  }
585
619
  if (hide === true && (!c._fields || c._fields.every((f) => !!f._hide))) {
586
620
  unregisterControl(field, true);
587
- if (resetOnHide && field.resetOnHide) {
621
+ if ((resetOnHide || restoredDefaults?.has(c)) && field.resetOnHide) {
588
622
  assignFieldValue(field, undefined);
623
+ restoredDefaults?.delete(c);
589
624
  field.formControl.reset({ value: undefined, disabled: field.formControl.disabled });
590
625
  field.options.fieldChanges.next({ value: undefined, field, type: 'valueChanges' });
591
626
  if (field.fieldGroup && field.formControl instanceof UntypedFormArray) {
@@ -596,6 +631,7 @@ let FieldExpressionExtension$1 = class FieldExpressionExtension {
596
631
  else if (hide === false) {
597
632
  if (field.resetOnHide && !isUndefined(field.defaultValue) && isUndefined(getFieldValue(field))) {
598
633
  assignFieldValue(field, field.defaultValue);
634
+ restoredDefaults?.add(c);
599
635
  }
600
636
  registerControl(field, undefined, true);
601
637
  if (field.resetOnHide && field.fieldArray && field.fieldGroup?.length !== field.model?.length) {
@@ -603,7 +639,7 @@ let FieldExpressionExtension$1 = class FieldExpressionExtension {
603
639
  }
604
640
  }
605
641
  }
606
- if (field.options.fieldChanges) {
642
+ if (emitEvent && field.options.fieldChanges) {
607
643
  field.options.fieldChanges.next({ field, type: 'hidden', value: hide });
608
644
  }
609
645
  }
@@ -1594,10 +1630,10 @@ class FieldType {
1594
1630
  get formState() {
1595
1631
  return this.options?.formState || {};
1596
1632
  }
1597
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FieldType, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1598
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: FieldType, isStandalone: true, inputs: { field: "field" }, viewQueries: [{ propertyName: "_formlyControls", predicate: NgControl, descendants: true }], ngImport: i0 }); }
1633
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FieldType, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1634
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.33", type: FieldType, isStandalone: true, inputs: { field: "field" }, viewQueries: [{ propertyName: "_formlyControls", predicate: NgControl, descendants: true }], ngImport: i0 }); }
1599
1635
  }
1600
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FieldType, decorators: [{
1636
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FieldType, decorators: [{
1601
1637
  type: Directive
1602
1638
  }], propDecorators: { _formlyControls: [{
1603
1639
  type: ViewChildren,
@@ -1624,10 +1660,10 @@ class FormlyTemplateType extends FieldType {
1624
1660
  this.sanitizer = sanitizer;
1625
1661
  this.innerHtml = {};
1626
1662
  }
1627
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyTemplateType, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
1628
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: FormlyTemplateType, isStandalone: false, selector: "formly-template", usesInheritance: true, ngImport: i0, template: `<div [innerHtml]="template"></div>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1663
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyTemplateType, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
1664
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.33", type: FormlyTemplateType, isStandalone: false, selector: "formly-template", usesInheritance: true, ngImport: i0, template: `<div [innerHtml]="template"></div>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1629
1665
  }
1630
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyTemplateType, decorators: [{
1666
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyTemplateType, decorators: [{
1631
1667
  type: Component,
1632
1668
  args: [{
1633
1669
  selector: 'formly-template',
@@ -1862,10 +1898,10 @@ class FormlyConfig {
1862
1898
  this.types[name].wrappers = extendedType.wrappers;
1863
1899
  }
1864
1900
  }
1865
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1866
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyConfig, providedIn: 'root' }); }
1901
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1902
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyConfig, providedIn: 'root' }); }
1867
1903
  }
1868
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyConfig, decorators: [{
1904
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyConfig, decorators: [{
1869
1905
  type: Injectable,
1870
1906
  args: [{ providedIn: 'root' }]
1871
1907
  }] });
@@ -1877,10 +1913,10 @@ class FormlyTemplate {
1877
1913
  ngOnChanges() {
1878
1914
  this.name = this.name || 'formly-group';
1879
1915
  }
1880
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyTemplate, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1881
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: FormlyTemplate, isStandalone: true, selector: "[formlyTemplate]", inputs: { name: ["formlyTemplate", "name"] }, usesOnChanges: true, ngImport: i0 }); }
1916
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyTemplate, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1917
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.33", type: FormlyTemplate, isStandalone: true, selector: "[formlyTemplate]", inputs: { name: ["formlyTemplate", "name"] }, usesOnChanges: true, ngImport: i0 }); }
1882
1918
  }
1883
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyTemplate, decorators: [{
1919
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyTemplate, decorators: [{
1884
1920
  type: Directive,
1885
1921
  args: [{ selector: '[formlyTemplate]', standalone: true }]
1886
1922
  }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { name: [{
@@ -1888,19 +1924,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
1888
1924
  args: ['formlyTemplate']
1889
1925
  }] } });
1890
1926
  class LegacyFormlyTemplate extends FormlyTemplate {
1891
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LegacyFormlyTemplate, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
1892
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: LegacyFormlyTemplate, isStandalone: false, selector: "[formlyTemplate]", usesInheritance: true, ngImport: i0 }); }
1927
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: LegacyFormlyTemplate, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
1928
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.33", type: LegacyFormlyTemplate, isStandalone: false, selector: "[formlyTemplate]", usesInheritance: true, ngImport: i0 }); }
1893
1929
  }
1894
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LegacyFormlyTemplate, decorators: [{
1930
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: LegacyFormlyTemplate, decorators: [{
1895
1931
  type: Directive,
1896
1932
  args: [{ selector: '[formlyTemplate]', standalone: false }]
1897
1933
  }] });
1898
1934
  // workarround for https://github.com/angular/angular/issues/43227#issuecomment-904173738
1899
1935
  class FormlyFieldTemplates {
1900
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyFieldTemplates, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1901
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyFieldTemplates }); }
1936
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyFieldTemplates, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1937
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyFieldTemplates }); }
1902
1938
  }
1903
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyFieldTemplates, decorators: [{
1939
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyFieldTemplates, decorators: [{
1904
1940
  type: Injectable
1905
1941
  }] });
1906
1942
 
@@ -2188,10 +2224,10 @@ class FormlyField {
2188
2224
  templateFieldsSubs.forEach((unsubscribe) => unsubscribe());
2189
2225
  };
2190
2226
  }
2191
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyField, deps: [{ token: FormlyConfig }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: FormlyFieldTemplates, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
2192
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: FormlyField, isStandalone: true, selector: "formly-field", inputs: { field: "field" }, viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: '<ng-template #container></ng-template>', isInline: true, styles: [":host:empty{display:none}\n"] }); }
2227
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyField, deps: [{ token: FormlyConfig }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: FormlyFieldTemplates, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
2228
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.33", type: FormlyField, isStandalone: true, selector: "formly-field", inputs: { field: "field" }, viewQueries: [{ propertyName: "viewContainerRef", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: '<ng-template #container></ng-template>', isInline: true, styles: [":host:empty{display:none}\n"] }); }
2193
2229
  }
2194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyField, decorators: [{
2230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyField, decorators: [{
2195
2231
  type: Component,
2196
2232
  args: [{ selector: 'formly-field', template: '<ng-template #container></ng-template>', standalone: true, styles: [":host:empty{display:none}\n"] }]
2197
2233
  }], ctorParameters: () => [{ type: FormlyConfig }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.Injector }, { type: FormlyFieldTemplates, decorators: [{
@@ -2203,25 +2239,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
2203
2239
  args: ['container', { read: ViewContainerRef, static: true }]
2204
2240
  }] } });
2205
2241
  class LegacyFormlyField extends FormlyField {
2206
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LegacyFormlyField, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2207
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: LegacyFormlyField, isStandalone: false, selector: "formly-field", usesInheritance: true, ngImport: i0, template: '<ng-template #container></ng-template>', isInline: true, styles: [":host:empty{display:none}\n"] }); }
2242
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: LegacyFormlyField, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2243
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.33", type: LegacyFormlyField, isStandalone: false, selector: "formly-field", usesInheritance: true, ngImport: i0, template: '<ng-template #container></ng-template>', isInline: true, styles: [":host:empty{display:none}\n"] }); }
2208
2244
  }
2209
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LegacyFormlyField, decorators: [{
2245
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: LegacyFormlyField, decorators: [{
2210
2246
  type: Component,
2211
2247
  args: [{ selector: 'formly-field', template: '<ng-template #container></ng-template>', standalone: false, styles: [":host:empty{display:none}\n"] }]
2212
2248
  }] });
2213
2249
 
2214
2250
  /** @ignore */
2215
2251
  class FormlyGroup extends FieldType {
2216
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyGroup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2217
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: FormlyGroup, isStandalone: false, selector: "formly-group", host: { properties: { "class": "field.fieldGroupClassName || \"\"" } }, usesInheritance: true, ngImport: i0, template: `
2252
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyGroup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2253
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: FormlyGroup, isStandalone: false, selector: "formly-group", host: { properties: { "class": "field.fieldGroupClassName || \"\"" } }, usesInheritance: true, ngImport: i0, template: `
2218
2254
  @for (f of field.fieldGroup; track $index) {
2219
2255
  <formly-field [field]="f"></formly-field>
2220
2256
  }
2221
2257
  <ng-content></ng-content>
2222
2258
  `, isInline: true, dependencies: [{ kind: "component", type: LegacyFormlyField, selector: "formly-field" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2223
2259
  }
2224
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyGroup, decorators: [{
2260
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyGroup, decorators: [{
2225
2261
  type: Component,
2226
2262
  args: [{
2227
2263
  selector: 'formly-group',
@@ -2372,10 +2408,10 @@ class FormlyFormBuilder {
2372
2408
  }
2373
2409
  }
2374
2410
  }
2375
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyFormBuilder, deps: [{ token: FormlyConfig }, { token: i0.Injector }, { token: i0.ViewContainerRef, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: FORMLY_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
2376
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyFormBuilder, providedIn: 'root' }); }
2411
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyFormBuilder, deps: [{ token: FormlyConfig }, { token: i0.Injector }, { token: i0.ViewContainerRef, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: FORMLY_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
2412
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyFormBuilder, providedIn: 'root' }); }
2377
2413
  }
2378
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyFormBuilder, decorators: [{
2414
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyFormBuilder, decorators: [{
2379
2415
  type: Injectable,
2380
2416
  args: [{ providedIn: 'root' }]
2381
2417
  }], ctorParameters: () => [{ type: FormlyConfig }, { type: i0.Injector }, { type: i0.ViewContainerRef, decorators: [{
@@ -2499,10 +2535,10 @@ class FormlyForm {
2499
2535
  Object.keys(field).forEach((p) => (this.field[p] = field[p]));
2500
2536
  }
2501
2537
  }
2502
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyForm, deps: [{ token: FormlyFormBuilder }, { token: FormlyConfig }, { token: i0.NgZone }, { token: FormlyFieldTemplates }], target: i0.ɵɵFactoryTarget.Component }); }
2503
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: FormlyForm, isStandalone: true, selector: "formly-form", inputs: { form: "form", model: "model", fields: "fields", options: "options" }, outputs: { modelChange: "modelChange" }, providers: [FormlyFormBuilder, FormlyFieldTemplates], queries: [{ propertyName: "templates", predicate: FormlyTemplate }], usesOnChanges: true, ngImport: i0, template: '<formly-field [field]="field"></formly-field>', isInline: true, dependencies: [{ kind: "component", type: FormlyField, selector: "formly-field", inputs: ["field"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2538
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyForm, deps: [{ token: FormlyFormBuilder }, { token: FormlyConfig }, { token: i0.NgZone }, { token: FormlyFieldTemplates }], target: i0.ɵɵFactoryTarget.Component }); }
2539
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.33", type: FormlyForm, isStandalone: true, selector: "formly-form", inputs: { form: "form", model: "model", fields: "fields", options: "options" }, outputs: { modelChange: "modelChange" }, providers: [FormlyFormBuilder, FormlyFieldTemplates], queries: [{ propertyName: "templates", predicate: FormlyTemplate }], usesOnChanges: true, ngImport: i0, template: '<formly-field [field]="field"></formly-field>', isInline: true, dependencies: [{ kind: "component", type: FormlyField, selector: "formly-field", inputs: ["field"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2504
2540
  }
2505
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyForm, decorators: [{
2541
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyForm, decorators: [{
2506
2542
  type: Component,
2507
2543
  args: [{
2508
2544
  selector: 'formly-form',
@@ -2530,10 +2566,10 @@ class LegacyFormlyForm extends FormlyForm {
2530
2566
  set templates(templates) {
2531
2567
  this.fieldTemplates.templates = templates;
2532
2568
  }
2533
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LegacyFormlyForm, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2534
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: LegacyFormlyForm, isStandalone: false, selector: "formly-form", providers: [FormlyFormBuilder, FormlyFieldTemplates], queries: [{ propertyName: "templates", predicate: LegacyFormlyTemplate }], usesInheritance: true, ngImport: i0, template: '<formly-field [field]="field"></formly-field>', isInline: true, dependencies: [{ kind: "component", type: LegacyFormlyField, selector: "formly-field" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2569
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: LegacyFormlyForm, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2570
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.33", type: LegacyFormlyForm, isStandalone: false, selector: "formly-form", providers: [FormlyFormBuilder, FormlyFieldTemplates], queries: [{ propertyName: "templates", predicate: LegacyFormlyTemplate }], usesInheritance: true, ngImport: i0, template: '<formly-field [field]="field"></formly-field>', isInline: true, dependencies: [{ kind: "component", type: LegacyFormlyField, selector: "formly-field" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2535
2571
  }
2536
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LegacyFormlyForm, decorators: [{
2572
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: LegacyFormlyForm, decorators: [{
2537
2573
  type: Component,
2538
2574
  args: [{
2539
2575
  selector: 'formly-form',
@@ -2727,10 +2763,10 @@ class FormlyAttributes {
2727
2763
  removeAttribute(attr) {
2728
2764
  this.renderer.removeAttribute(this.elementRef.nativeElement, attr);
2729
2765
  }
2730
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyAttributes, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DOCUMENT }, { token: FormlyField, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
2731
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: FormlyAttributes, isStandalone: true, selector: "[formlyAttributes]", inputs: { field: ["formlyAttributes", "field"], id: "id" }, host: { listeners: { "change": "onHostChange($event)" } }, usesOnChanges: true, ngImport: i0 }); }
2766
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyAttributes, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DOCUMENT }, { token: FormlyField, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
2767
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.33", type: FormlyAttributes, isStandalone: true, selector: "[formlyAttributes]", inputs: { field: ["formlyAttributes", "field"], id: "id" }, host: { listeners: { "change": "onHostChange($event)" } }, usesOnChanges: true, ngImport: i0 }); }
2732
2768
  }
2733
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyAttributes, decorators: [{
2769
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyAttributes, decorators: [{
2734
2770
  type: Directive,
2735
2771
  args: [{
2736
2772
  selector: '[formlyAttributes]',
@@ -2751,10 +2787,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
2751
2787
  type: Input
2752
2788
  }] } });
2753
2789
  class LegacyFormlyAttributes extends FormlyAttributes {
2754
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LegacyFormlyAttributes, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
2755
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: LegacyFormlyAttributes, isStandalone: false, selector: "[formlyAttributes]", host: { listeners: { "change": "onHostChange($event)" } }, usesInheritance: true, ngImport: i0 }); }
2790
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: LegacyFormlyAttributes, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
2791
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.33", type: LegacyFormlyAttributes, isStandalone: false, selector: "[formlyAttributes]", host: { listeners: { "change": "onHostChange($event)" } }, usesInheritance: true, ngImport: i0 }); }
2756
2792
  }
2757
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LegacyFormlyAttributes, decorators: [{
2793
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: LegacyFormlyAttributes, decorators: [{
2758
2794
  type: Directive,
2759
2795
  args: [{
2760
2796
  selector: '[formlyAttributes]',
@@ -2812,10 +2848,10 @@ class FormlyValidationMessage {
2812
2848
  }
2813
2849
  return undefined;
2814
2850
  }
2815
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyValidationMessage, deps: [{ token: FormlyConfig }], target: i0.ɵɵFactoryTarget.Component }); }
2816
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", 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 }); }
2851
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyValidationMessage, deps: [{ token: FormlyConfig }], target: i0.ɵɵFactoryTarget.Component }); }
2852
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.33", 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 }); }
2817
2853
  }
2818
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyValidationMessage, decorators: [{
2854
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyValidationMessage, decorators: [{
2819
2855
  type: Component,
2820
2856
  args: [{
2821
2857
  selector: 'formly-validation-message',
@@ -2828,10 +2864,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
2828
2864
  type: Input
2829
2865
  }] } });
2830
2866
  class LegacyFormlyValidationMessage extends FormlyValidationMessage {
2831
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LegacyFormlyValidationMessage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2832
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: LegacyFormlyValidationMessage, isStandalone: false, selector: "formly-validation-message", usesInheritance: true, ngImport: i0, template: '{{ errorMessage$ | async }}', isInline: true, dependencies: [{ kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2867
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: LegacyFormlyValidationMessage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2868
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.33", type: LegacyFormlyValidationMessage, isStandalone: false, selector: "formly-validation-message", usesInheritance: true, ngImport: i0, template: '{{ errorMessage$ | async }}', isInline: true, dependencies: [{ kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2833
2869
  }
2834
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LegacyFormlyValidationMessage, decorators: [{
2870
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: LegacyFormlyValidationMessage, decorators: [{
2835
2871
  type: Component,
2836
2872
  args: [{
2837
2873
  selector: 'formly-validation-message',
@@ -2912,10 +2948,10 @@ class FieldArrayType extends FieldType {
2912
2948
  this.options._hiddenFieldsForCheck.push({ field: f });
2913
2949
  }
2914
2950
  }
2915
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FieldArrayType, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
2916
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: FieldArrayType, isStandalone: true, usesInheritance: true, ngImport: i0 }); }
2951
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FieldArrayType, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
2952
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.33", type: FieldArrayType, isStandalone: true, usesInheritance: true, ngImport: i0 }); }
2917
2953
  }
2918
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FieldArrayType, decorators: [{
2954
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FieldArrayType, decorators: [{
2919
2955
  type: Directive
2920
2956
  }] });
2921
2957
 
@@ -2924,10 +2960,10 @@ class FieldWrapper extends FieldType {
2924
2960
  set _staticContent(content) {
2925
2961
  this.fieldComponent = content;
2926
2962
  }
2927
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FieldWrapper, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
2928
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: FieldWrapper, isStandalone: true, 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 }); }
2963
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FieldWrapper, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
2964
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.33", type: FieldWrapper, isStandalone: true, 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 }); }
2929
2965
  }
2930
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FieldWrapper, decorators: [{
2966
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FieldWrapper, decorators: [{
2931
2967
  type: Directive
2932
2968
  }], propDecorators: { fieldComponent: [{
2933
2969
  type: ViewChild,
@@ -2966,8 +3002,8 @@ class FormlyModule {
2966
3002
  ],
2967
3003
  };
2968
3004
  }
2969
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2970
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.25", ngImport: i0, type: FormlyModule, declarations: [LegacyFormlyTemplate,
3005
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3006
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.33", ngImport: i0, type: FormlyModule, declarations: [LegacyFormlyTemplate,
2971
3007
  LegacyFormlyForm,
2972
3008
  LegacyFormlyField,
2973
3009
  LegacyFormlyAttributes,
@@ -2979,9 +3015,9 @@ class FormlyModule {
2979
3015
  LegacyFormlyAttributes,
2980
3016
  LegacyFormlyValidationMessage,
2981
3017
  FormlyGroup] }); }
2982
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyModule, imports: [CommonModule] }); }
3018
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyModule, imports: [CommonModule] }); }
2983
3019
  }
2984
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: FormlyModule, decorators: [{
3020
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: FormlyModule, decorators: [{
2985
3021
  type: NgModule,
2986
3022
  args: [{
2987
3023
  declarations: [