@ng-forge/dynamic-forms 0.10.0-next.3 → 1.0.0-rc.1

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 (61) hide show
  1. package/fesm2022/{ng-forge-dynamic-forms-array-field.component-D6GEsH72.mjs → ng-forge-dynamic-forms-array-field.component-By12r5Cj.mjs} +49 -27
  2. package/fesm2022/ng-forge-dynamic-forms-array-field.component-By12r5Cj.mjs.map +1 -0
  3. package/fesm2022/ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-QJzwEYSj.mjs +2347 -0
  4. package/fesm2022/ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-QJzwEYSj.mjs.map +1 -0
  5. package/fesm2022/{ng-forge-dynamic-forms-container-field.component-BluTT44A.mjs → ng-forge-dynamic-forms-container-field.component-BGFguOa9.mjs} +23 -14
  6. package/fesm2022/ng-forge-dynamic-forms-container-field.component-BGFguOa9.mjs.map +1 -0
  7. package/fesm2022/{ng-forge-dynamic-forms-container-utils-diYAWMa_.mjs → ng-forge-dynamic-forms-container-utils-BZFz6ztF.mjs} +4 -3
  8. package/fesm2022/ng-forge-dynamic-forms-container-utils-BZFz6ztF.mjs.map +1 -0
  9. package/fesm2022/{ng-forge-dynamic-forms-css-wrapper.component-CgMQOaG7.mjs → ng-forge-dynamic-forms-css-wrapper.component-AScQAJTQ.mjs} +9 -7
  10. package/fesm2022/ng-forge-dynamic-forms-css-wrapper.component-AScQAJTQ.mjs.map +1 -0
  11. package/fesm2022/{ng-forge-dynamic-forms-emit-initialization-CB86IMsQ.mjs → ng-forge-dynamic-forms-emit-initialization-DhHwU6FJ.mjs} +2 -2
  12. package/fesm2022/ng-forge-dynamic-forms-emit-initialization-DhHwU6FJ.mjs.map +1 -0
  13. package/fesm2022/{ng-forge-dynamic-forms-group-field.component-2bWHql4u.mjs → ng-forge-dynamic-forms-group-field.component-Bz4GD8Hy.mjs} +43 -24
  14. package/fesm2022/ng-forge-dynamic-forms-group-field.component-Bz4GD8Hy.mjs.map +1 -0
  15. package/fesm2022/ng-forge-dynamic-forms-integration.mjs +130 -85
  16. package/fesm2022/ng-forge-dynamic-forms-integration.mjs.map +1 -1
  17. package/fesm2022/ng-forge-dynamic-forms-internal.mjs +3374 -0
  18. package/fesm2022/ng-forge-dynamic-forms-internal.mjs.map +1 -0
  19. package/fesm2022/ng-forge-dynamic-forms-ng-forge-dynamic-forms-DTkMZcnb.mjs +5425 -0
  20. package/fesm2022/ng-forge-dynamic-forms-ng-forge-dynamic-forms-DTkMZcnb.mjs.map +1 -0
  21. package/fesm2022/{ng-forge-dynamic-forms-page-field.component-zF-vEv5V.mjs → ng-forge-dynamic-forms-page-field.component-CjCd5Byo.mjs} +27 -16
  22. package/fesm2022/ng-forge-dynamic-forms-page-field.component-CjCd5Byo.mjs.map +1 -0
  23. package/fesm2022/{ng-forge-dynamic-forms-row-wrapper.component-CwkYn5yl.mjs → ng-forge-dynamic-forms-row-wrapper.component-BlVa801t.mjs} +6 -5
  24. package/fesm2022/ng-forge-dynamic-forms-row-wrapper.component-BlVa801t.mjs.map +1 -0
  25. package/fesm2022/{ng-forge-dynamic-forms-text-field.component-_8_vVeH0.mjs → ng-forge-dynamic-forms-text-field.component-CNCpmf5_.mjs} +19 -12
  26. package/fesm2022/ng-forge-dynamic-forms-text-field.component-CNCpmf5_.mjs.map +1 -0
  27. package/fesm2022/ng-forge-dynamic-forms.mjs +2 -1
  28. package/fesm2022/ng-forge-dynamic-forms.mjs.map +1 -1
  29. package/package.json +17 -4
  30. package/schematics/collection.json +10 -0
  31. package/schematics/generators.json +12 -0
  32. package/schematics/ng-add/index.js +87 -0
  33. package/schematics/ng-add/index.js.map +1 -0
  34. package/schematics/ng-add/nx-wrapper.js +5 -0
  35. package/schematics/ng-add/nx-wrapper.js.map +1 -0
  36. package/schematics/ng-add/recipes.js +60 -0
  37. package/schematics/ng-add/recipes.js.map +1 -0
  38. package/schematics/ng-add/rules/add-packages.js +73 -0
  39. package/schematics/ng-add/rules/add-packages.js.map +1 -0
  40. package/schematics/ng-add/rules/add-providers.js +132 -0
  41. package/schematics/ng-add/rules/add-providers.js.map +1 -0
  42. package/schematics/ng-add/rules/add-styles.js +123 -0
  43. package/schematics/ng-add/rules/add-styles.js.map +1 -0
  44. package/schematics/ng-add/schema.json +48 -0
  45. package/schematics/package.json +1 -0
  46. package/schematics/versions.js +33 -0
  47. package/schematics/versions.js.map +1 -0
  48. package/types/ng-forge-dynamic-forms-integration.d.ts +4 -2
  49. package/types/ng-forge-dynamic-forms-internal.d.ts +3508 -0
  50. package/types/ng-forge-dynamic-forms.d.ts +16 -2734
  51. package/fesm2022/ng-forge-dynamic-forms-array-field.component-D6GEsH72.mjs.map +0 -1
  52. package/fesm2022/ng-forge-dynamic-forms-container-field.component-BluTT44A.mjs.map +0 -1
  53. package/fesm2022/ng-forge-dynamic-forms-container-utils-diYAWMa_.mjs.map +0 -1
  54. package/fesm2022/ng-forge-dynamic-forms-css-wrapper.component-CgMQOaG7.mjs.map +0 -1
  55. package/fesm2022/ng-forge-dynamic-forms-emit-initialization-CB86IMsQ.mjs.map +0 -1
  56. package/fesm2022/ng-forge-dynamic-forms-group-field.component-2bWHql4u.mjs.map +0 -1
  57. package/fesm2022/ng-forge-dynamic-forms-ng-forge-dynamic-forms-CPkVjU_N.mjs +0 -10876
  58. package/fesm2022/ng-forge-dynamic-forms-ng-forge-dynamic-forms-CPkVjU_N.mjs.map +0 -1
  59. package/fesm2022/ng-forge-dynamic-forms-page-field.component-zF-vEv5V.mjs.map +0 -1
  60. package/fesm2022/ng-forge-dynamic-forms-row-wrapper.component-CwkYn5yl.mjs.map +0 -1
  61. package/fesm2022/ng-forge-dynamic-forms-text-field.component-_8_vVeH0.mjs.map +0 -1
@@ -1,9 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, DestroyRef, Injector, EnvironmentInjector, input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { ao as injectFieldRegistry, E as EventBus, s as DynamicFormLogger, b2 as validatePageNesting, aa as derivedFromDeferred, a4 as createFieldResolutionPipe, o as DfFieldOutlet } from './ng-forge-dynamic-forms-ng-forge-dynamic-forms-CPkVjU_N.mjs';
3
+ import { i as injectFieldRegistry, c as createFieldResolutionPipe, D as DfFieldOutlet } from './ng-forge-dynamic-forms-ng-forge-dynamic-forms-DTkMZcnb.mjs';
4
4
  import { outputFromObservable } from '@angular/core/rxjs-interop';
5
5
  import { explicitEffect } from 'ngxtension/explicit-effect';
6
- import { c as computeContainerHostClasses, s as setupContainerInitEffect } from './ng-forge-dynamic-forms-container-utils-diYAWMa_.mjs';
6
+ import { EventBus, DynamicFormLogger, validatePageNesting, derivedFromDeferred } from '@ng-forge/dynamic-forms/internal';
7
+ import { c as computeContainerHostClasses, s as setupContainerInitEffect } from './ng-forge-dynamic-forms-container-utils-BZFz6ztF.mjs';
7
8
 
8
9
  class PageFieldComponent {
9
10
  destroyRef = inject(DestroyRef);
@@ -12,15 +13,24 @@ class PageFieldComponent {
12
13
  environmentInjector = inject(EnvironmentInjector);
13
14
  eventBus = inject(EventBus);
14
15
  logger = inject(DynamicFormLogger);
15
- field = input.required(...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
16
- key = input.required(...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
17
- className = input(...(ngDevMode ? [undefined, { debugName: "className" }] : /* istanbul ignore next */ []));
18
- pageIndex = input.required(...(ngDevMode ? [{ debugName: "pageIndex" }] : /* istanbul ignore next */ []));
19
- isVisible = input.required(...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
20
- hostClasses = computed(() => computeContainerHostClasses('page-field', this.className()), ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
21
- disabled = computed(() => this.field().disabled || false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
22
- isValid = computed(() => validatePageNesting(this.field()), ...(ngDevMode ? [{ debugName: "isValid" }] : /* istanbul ignore next */ []));
23
- rawFieldRegistry = computed(() => this.fieldRegistry.raw, ...(ngDevMode ? [{ debugName: "rawFieldRegistry" }] : /* istanbul ignore next */ []));
16
+ field = input.required(/* @ts-ignore */
17
+ ...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
18
+ key = input.required(/* @ts-ignore */
19
+ ...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
20
+ className = input(/* @ts-ignore */
21
+ ...(ngDevMode ? [undefined, { debugName: "className" }] : /* istanbul ignore next */ []));
22
+ pageIndex = input.required(/* @ts-ignore */
23
+ ...(ngDevMode ? [{ debugName: "pageIndex" }] : /* istanbul ignore next */ []));
24
+ isVisible = input.required(/* @ts-ignore */
25
+ ...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
26
+ hostClasses = computed(() => computeContainerHostClasses('page-field', this.className()), /* @ts-ignore */
27
+ ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
28
+ disabled = computed(() => this.field().disabled || false, /* @ts-ignore */
29
+ ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
30
+ isValid = computed(() => validatePageNesting(this.field()), /* @ts-ignore */
31
+ ...(ngDevMode ? [{ debugName: "isValid" }] : /* istanbul ignore next */ []));
32
+ rawFieldRegistry = computed(() => this.fieldRegistry.raw, /* @ts-ignore */
33
+ ...(ngDevMode ? [{ debugName: "rawFieldRegistry" }] : /* istanbul ignore next */ []));
24
34
  nextPage = outputFromObservable(this.eventBus.on('next-page'));
25
35
  previousPage = outputFromObservable(this.eventBus.on('previous-page'));
26
36
  pageChange = outputFromObservable(this.eventBus.on('page-change'));
@@ -29,7 +39,8 @@ class PageFieldComponent {
29
39
  return [];
30
40
  }
31
41
  return this.field().fields || [];
32
- }, ...(ngDevMode ? [{ debugName: "fieldsSource" }] : /* istanbul ignore next */ []));
42
+ }, /* @ts-ignore */
43
+ ...(ngDevMode ? [{ debugName: "fieldsSource" }] : /* istanbul ignore next */ []));
33
44
  resolvedFields = derivedFromDeferred(this.fieldsSource, createFieldResolutionPipe(() => ({
34
45
  loadTypeComponent: (type) => this.fieldRegistry.loadTypeComponent(type),
35
46
  registry: this.rawFieldRegistry(),
@@ -53,8 +64,8 @@ class PageFieldComponent {
53
64
  }
54
65
  });
55
66
  }
56
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PageFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
57
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PageFieldComponent, isStandalone: true, selector: "section[page-field]", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: true, transformFunction: null }, isVisible: { classPropertyName: "isVisible", publicName: "isVisible", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { nextPage: "nextPage", previousPage: "previousPage", pageChange: "pageChange" }, host: { properties: { "class": "hostClasses()", "class.disabled": "disabled()", "class.df-page-visible": "isVisible()", "class.df-page-hidden": "!isVisible()", "attr.aria-hidden": "!isVisible()", "attr.data-page-index": "pageIndex()", "id": "`${key()}`", "attr.data-testid": "key()" } }, ngImport: i0, template: `
67
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: PageFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
68
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: PageFieldComponent, isStandalone: true, selector: "section[page-field]", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: true, transformFunction: null }, isVisible: { classPropertyName: "isVisible", publicName: "isVisible", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { nextPage: "nextPage", previousPage: "previousPage", pageChange: "pageChange" }, host: { properties: { "class": "hostClasses()", "class.disabled": "disabled()", "class.df-page-visible": "isVisible()", "class.df-page-hidden": "!isVisible()", "attr.aria-hidden": "!isVisible()", "attr.data-page-index": "pageIndex()", "id": "`${key()}`", "attr.data-testid": "key()" } }, ngImport: i0, template: `
58
69
  @for (field of resolvedFields(); track field.key) {
59
70
  @if (!field.hidden()) {
60
71
  <ng-container *dfFieldOutlet="field; environmentInjector: environmentInjector" />
@@ -62,7 +73,7 @@ class PageFieldComponent {
62
73
  }
63
74
  `, isInline: true, styles: [".df-form{display:grid;grid-template-columns:1fr;gap:var(--df-grid-row-gap, .5rem);width:100%}.df-form>*{grid-column:1/-1}.df-row{display:grid;grid-template-columns:repeat(var(--df-grid-columns, 12),1fr);gap:var(--df-grid-gap, .5rem);align-items:start;width:100%}.df-row>*:not([class*=df-col-]){grid-column:1/-1}.df-col-1{grid-column:span 1}.df-col-2{grid-column:span 2}.df-col-3{grid-column:span 3}.df-col-4{grid-column:span 4}.df-col-5{grid-column:span 5}.df-col-6{grid-column:span 6}.df-col-7{grid-column:span 7}.df-col-8{grid-column:span 8}.df-col-9{grid-column:span 9}.df-col-10{grid-column:span 10}.df-col-11{grid-column:span 11}.df-col-12{grid-column:span 12}.df-col-auto{grid-column:span auto;width:auto}.df-col-full{grid-column:1/-1}.df-col-start-1{grid-column-start:1}.df-col-start-2{grid-column-start:2}.df-col-start-3{grid-column-start:3}.df-col-start-4{grid-column-start:4}.df-col-start-5{grid-column-start:5}.df-col-start-6{grid-column-start:6}.df-col-start-7{grid-column-start:7}.df-col-start-8{grid-column-start:8}.df-col-start-9{grid-column-start:9}.df-col-start-10{grid-column-start:10}.df-col-start-11{grid-column-start:11}.df-col-start-12{grid-column-start:12}.df-col-end-1{grid-column-end:1}.df-col-end-2{grid-column-end:2}.df-col-end-3{grid-column-end:3}.df-col-end-4{grid-column-end:4}.df-col-end-5{grid-column-end:5}.df-col-end-6{grid-column-end:6}.df-col-end-7{grid-column-end:7}.df-col-end-8{grid-column-end:8}.df-col-end-9{grid-column-end:9}.df-col-end-10{grid-column-end:10}.df-col-end-11{grid-column-end:11}.df-col-end-12{grid-column-end:12}.df-col-end-13{grid-column-end:13}@media(max-width:576px){.df-form{--df-grid-gap: var(--df-grid-gap-sm, .5rem);--df-grid-row-gap: var(--df-grid-row-gap-sm, .5rem)}.df-row{grid-template-columns:1fr}.df-row>*{grid-column:1/-1!important}.df-row.df-row-mobile-keep-cols{grid-template-columns:repeat(var(--df-grid-columns, 12),1fr)}.df-row.df-row-mobile-keep-cols>*{grid-column:revert!important}}@media(min-width:577px)and (max-width:768px){.df-form{--df-grid-gap: var(--df-grid-gap-md, .5rem);--df-grid-row-gap: var(--df-grid-row-gap-md, .5rem)}.df-row{--df-grid-columns: 6}.df-col-sm-1{grid-column:span 1}.df-col-sm-2{grid-column:span 2}.df-col-sm-3{grid-column:span 3}.df-col-sm-4{grid-column:span 4}.df-col-sm-5{grid-column:span 5}.df-col-sm-6{grid-column:span 6}.df-col-sm-full{grid-column:1/-1}}@media(min-width:769px)and (max-width:992px){.df-form{--df-grid-gap: var(--df-grid-gap-lg, .5rem);--df-grid-row-gap: var(--df-grid-row-gap-lg, .5rem)}.df-col-md-1{grid-column:span 1}.df-col-md-2{grid-column:span 2}.df-col-md-3{grid-column:span 3}.df-col-md-4{grid-column:span 4}.df-col-md-5{grid-column:span 5}.df-col-md-6{grid-column:span 6}.df-col-md-7{grid-column:span 7}.df-col-md-8{grid-column:span 8}.df-col-md-9{grid-column:span 9}.df-col-md-10{grid-column:span 10}.df-col-md-11{grid-column:span 11}.df-col-md-12{grid-column:span 12}.df-col-md-full{grid-column:1/-1}}@media(min-width:993px){.df-form{--df-grid-gap: var(--df-grid-gap-xl, .5rem);--df-grid-row-gap: var(--df-grid-row-gap-xl, .5rem)}.df-col-lg-1{grid-column:span 1}.df-col-lg-2{grid-column:span 2}.df-col-lg-3{grid-column:span 3}.df-col-lg-4{grid-column:span 4}.df-col-lg-5{grid-column:span 5}.df-col-lg-6{grid-column:span 6}.df-col-lg-7{grid-column:span 7}.df-col-lg-8{grid-column:span 8}.df-col-lg-9{grid-column:span 9}.df-col-lg-10{grid-column:span 10}.df-col-lg-11{grid-column:span 11}.df-col-lg-12{grid-column:span 12}.df-col-lg-full{grid-column:1/-1}}.df-gap-none{--df-grid-gap: 0}.df-gap-xs{--df-grid-gap: .25rem}.df-gap-sm{--df-grid-gap: .5rem}.df-gap-md{--df-grid-gap: 1rem}.df-gap-lg{--df-grid-gap: 1.5rem}.df-gap-xl{--df-grid-gap: 2rem}.df-row-gap-none{--df-grid-row-gap: 0}.df-row-gap-xs{--df-grid-row-gap: .25rem}.df-row-gap-sm{--df-grid-row-gap: .5rem}.df-row-gap-md{--df-grid-row-gap: 1rem}.df-row-gap-lg{--df-grid-row-gap: 1.5rem}.df-row-gap-xl{--df-grid-row-gap: 2rem}.df-field{display:block;width:100%;min-width:0;overflow:hidden;margin:0}.df-group,.df-page{display:block;width:100%}.df-form.disabled,.df-row.disabled,.df-field.disabled{opacity:.6;pointer-events:none}.df-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.df-sr-only-focusable:focus,.df-sr-only-focusable:active{position:static;width:auto;height:auto;padding:inherit;margin:inherit;overflow:visible;clip:auto;white-space:normal}.df-live-region{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.df-form :focus-visible{outline:2px solid var(--df-focus-color, #005fcc);outline-offset:2px}.df-group:focus-within{outline:1px dashed var(--df-focus-color, #005fcc);outline-offset:4px}:host{display:grid;grid-template-columns:1fr;width:100%;gap:var(--df-grid-row-gap, .5rem);transition:opacity .2s ease-in-out}:host.df-page-spacing-custom{--df-grid-row-gap: var(--df-page-custom-spacing, 1.5rem)}:host.df-page-visible{opacity:1}:host.df-page-hidden{display:none;opacity:0;pointer-events:none}:host[aria-hidden=true]{pointer-events:none;visibility:hidden}@media(prefers-reduced-motion:no-preference){:host{transition:opacity var(--df-page-transition-duration, .3s) var(--df-page-transition-timing, ease-in-out),transform var(--df-page-transition-duration, .3s) var(--df-page-transition-timing, ease-in-out)}:host.df-page-visible{transform:translate(0)}:host.df-page-hidden{transform:translate(var(--df-page-slide-offset, -10px))}}@media(prefers-reduced-motion:reduce){:host{transition:none}}\n"], dependencies: [{ kind: "directive", type: DfFieldOutlet, selector: "[dfFieldOutlet]", inputs: ["dfFieldOutlet", "dfFieldOutletEnvironmentInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
64
75
  }
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PageFieldComponent, decorators: [{
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: PageFieldComponent, decorators: [{
66
77
  type: Component,
67
78
  args: [{ selector: 'section[page-field]', imports: [DfFieldOutlet], template: `
68
79
  @for (field of resolvedFields(); track field.key) {
@@ -83,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
83
94
  }], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], pageIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageIndex", required: true }] }], isVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "isVisible", required: true }] }], nextPage: [{ type: i0.Output, args: ["nextPage"] }], previousPage: [{ type: i0.Output, args: ["previousPage"] }], pageChange: [{ type: i0.Output, args: ["pageChange"] }] } });
84
95
 
85
96
  export { PageFieldComponent as default };
86
- //# sourceMappingURL=ng-forge-dynamic-forms-page-field.component-zF-vEv5V.mjs.map
97
+ //# sourceMappingURL=ng-forge-dynamic-forms-page-field.component-CjCd5Byo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-forge-dynamic-forms-page-field.component-CjCd5Byo.mjs","mappings":";;;;;;;;AAsCc;YAKK;;AAEA;AACE;AACF;AACA;;;;;AAQjB;;;;;;YAQS;;AAEA;;AAEA;;;;YAQA;AACA;AACA;YAMQ;AACf;AACE;;;;;AAKe;AAGf;AACA;;;AAGA;AACE;;;;AAOH;YAQH;;;;;AAWE;;;;;AAQA;;;AA/FiB;;;;;;AAdlB;;;;AARS;;;;;;;AAWR;AACA;AACA;AACA;AACA;AACA;AACA;AACA","names":[],"ignoreList":[],"sources":["../../../../packages/dynamic-forms/src/lib/fields/page/page-field.component.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, DestroyRef, EnvironmentInjector, inject, Injector, input } from '@angular/core';\nimport { DfFieldOutlet } from '../../directives/df-field-outlet/df-field-outlet.directive';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\nimport { explicitEffect } from 'ngxtension/explicit-effect';\nimport { derivedFromDeferred } from '@ng-forge/dynamic-forms/internal';\nimport { createFieldResolutionPipe, ResolvedField } from '../../utils/resolve-field/resolve-field';\nimport { computeContainerHostClasses, setupContainerInitEffect } from '../../utils/container-utils/container-utils';\nimport { PageField, validatePageNesting } from '@ng-forge/dynamic-forms/internal';\nimport { injectFieldRegistry } from '../../utils/inject-field-registry/inject-field-registry';\nimport { EventBus } from '@ng-forge/dynamic-forms/internal';\nimport { NextPageEvent, PageChangeEvent, PreviousPageEvent } from '../../events/constants';\nimport { FieldDef } from '@ng-forge/dynamic-forms/internal';\nimport { DynamicFormLogger } from '@ng-forge/dynamic-forms/internal';\n\n/** Renders a single page in multi-page (wizard) forms. */\n@Component({\n selector: 'section[page-field]',\n imports: [DfFieldOutlet],\n template: `\n @for (field of resolvedFields(); track field.key) {\n @if (!field.hidden()) {\n <ng-container *dfFieldOutlet=\"field; environmentInjector: environmentInjector\" />\n }\n }\n `,\n styleUrl: './page-field.component.scss',\n host: {\n '[class]': 'hostClasses()',\n '[class.disabled]': 'disabled()',\n '[class.df-page-visible]': 'isVisible()',\n '[class.df-page-hidden]': '!isVisible()',\n '[attr.aria-hidden]': '!isVisible()',\n '[attr.data-page-index]': 'pageIndex()',\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class PageFieldComponent {\n // ─────────────────────────────────────────────────────────────────────────────\n // Dependencies\n // ─────────────────────────────────────────────────────────────────────────────\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly fieldRegistry = injectFieldRegistry();\n private readonly injector = inject(Injector);\n protected readonly environmentInjector = inject(EnvironmentInjector);\n private readonly eventBus = inject(EventBus);\n private readonly logger = inject(DynamicFormLogger);\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Inputs\n // ─────────────────────────────────────────────────────────────────────────────\n\n field = input.required<PageField>();\n key = input.required<string>();\n className = input<string>();\n pageIndex = input.required<number>();\n isVisible = input.required<boolean>();\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Computed Signals\n // ─────────────────────────────────────────────────────────────────────────────\n\n readonly hostClasses = computed(() => computeContainerHostClasses('page-field', this.className()));\n\n readonly disabled = computed(() => this.field().disabled || false);\n\n readonly isValid = computed(() => validatePageNesting(this.field()));\n\n private readonly rawFieldRegistry = computed(() => this.fieldRegistry.raw);\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Outputs\n // ─────────────────────────────────────────────────────────────────────────────\n\n readonly nextPage = outputFromObservable(this.eventBus.on<NextPageEvent>('next-page'));\n readonly previousPage = outputFromObservable(this.eventBus.on<PreviousPageEvent>('previous-page'));\n readonly pageChange = outputFromObservable(this.eventBus.on<PageChangeEvent>('page-change'));\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Field Resolution\n // ─────────────────────────────────────────────────────────────────────────────\n\n private readonly fieldsSource = computed(() => {\n if (!this.isValid()) {\n return [];\n }\n return this.field().fields || [];\n });\n\n protected readonly resolvedFields = derivedFromDeferred(\n this.fieldsSource,\n createFieldResolutionPipe(() => ({\n loadTypeComponent: (type: string) => this.fieldRegistry.loadTypeComponent(type),\n registry: this.rawFieldRegistry(),\n injector: this.injector,\n destroyRef: this.destroyRef,\n onError: (fieldDef: FieldDef<unknown>, error: unknown) => {\n const fieldKey = fieldDef.key || '<no key>';\n this.logger.error(\n `Failed to load component for field type '${fieldDef.type}' (key: ${fieldKey}) ` +\n `within page '${this.field().key}'. Ensure the field type is registered in your field registry.`,\n error,\n );\n },\n })),\n { initialValue: [] as ResolvedField[], injector: this.injector },\n );\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Constructor\n // ─────────────────────────────────────────────────────────────────────────────\n\n constructor() {\n this.setupEffects();\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Private Methods\n // ─────────────────────────────────────────────────────────────────────────────\n\n private setupEffects(): void {\n setupContainerInitEffect(this.resolvedFields, this.eventBus, 'page', () => this.field().key, this.injector);\n\n explicitEffect([this.isValid, this.field], ([valid, pageField]) => {\n if (!valid) {\n this.logger.error(\n `Invalid configuration: Page '${pageField.key}' contains nested page fields. ` +\n `Pages cannot contain other pages. Consider using groups or rows for nested structure.`,\n pageField,\n );\n }\n });\n }\n}\n"]}
@@ -3,11 +3,12 @@ import { viewChild, ViewContainerRef, input, ChangeDetectionStrategy, Component
3
3
 
4
4
  class RowWrapperComponent {
5
5
  fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });
6
- fieldInputs = input(...(ngDevMode ? [undefined, { debugName: "fieldInputs" }] : /* istanbul ignore next */ []));
7
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RowWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.14", type: RowWrapperComponent, isStandalone: true, selector: "df-row-wrapper", inputs: { fieldInputs: { classPropertyName: "fieldInputs", publicName: "fieldInputs", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "df-field df-row" }, viewQueries: [{ propertyName: "fieldComponent", first: true, predicate: ["fieldComponent"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `<ng-container #fieldComponent></ng-container>`, isInline: true, styles: [".df-form{display:grid;grid-template-columns:1fr;gap:var(--df-grid-row-gap, .5rem);width:100%}.df-form>*{grid-column:1/-1}.df-row{display:grid;grid-template-columns:repeat(var(--df-grid-columns, 12),1fr);gap:var(--df-grid-gap, .5rem);align-items:start;width:100%}.df-row>*:not([class*=df-col-]){grid-column:1/-1}.df-col-1{grid-column:span 1}.df-col-2{grid-column:span 2}.df-col-3{grid-column:span 3}.df-col-4{grid-column:span 4}.df-col-5{grid-column:span 5}.df-col-6{grid-column:span 6}.df-col-7{grid-column:span 7}.df-col-8{grid-column:span 8}.df-col-9{grid-column:span 9}.df-col-10{grid-column:span 10}.df-col-11{grid-column:span 11}.df-col-12{grid-column:span 12}.df-col-auto{grid-column:span auto;width:auto}.df-col-full{grid-column:1/-1}.df-col-start-1{grid-column-start:1}.df-col-start-2{grid-column-start:2}.df-col-start-3{grid-column-start:3}.df-col-start-4{grid-column-start:4}.df-col-start-5{grid-column-start:5}.df-col-start-6{grid-column-start:6}.df-col-start-7{grid-column-start:7}.df-col-start-8{grid-column-start:8}.df-col-start-9{grid-column-start:9}.df-col-start-10{grid-column-start:10}.df-col-start-11{grid-column-start:11}.df-col-start-12{grid-column-start:12}.df-col-end-1{grid-column-end:1}.df-col-end-2{grid-column-end:2}.df-col-end-3{grid-column-end:3}.df-col-end-4{grid-column-end:4}.df-col-end-5{grid-column-end:5}.df-col-end-6{grid-column-end:6}.df-col-end-7{grid-column-end:7}.df-col-end-8{grid-column-end:8}.df-col-end-9{grid-column-end:9}.df-col-end-10{grid-column-end:10}.df-col-end-11{grid-column-end:11}.df-col-end-12{grid-column-end:12}.df-col-end-13{grid-column-end:13}@media(max-width:576px){.df-form{--df-grid-gap: var(--df-grid-gap-sm, .5rem);--df-grid-row-gap: var(--df-grid-row-gap-sm, .5rem)}.df-row{grid-template-columns:1fr}.df-row>*{grid-column:1/-1!important}.df-row.df-row-mobile-keep-cols{grid-template-columns:repeat(var(--df-grid-columns, 12),1fr)}.df-row.df-row-mobile-keep-cols>*{grid-column:revert!important}}@media(min-width:577px)and (max-width:768px){.df-form{--df-grid-gap: var(--df-grid-gap-md, .5rem);--df-grid-row-gap: var(--df-grid-row-gap-md, .5rem)}.df-row{--df-grid-columns: 6}.df-col-sm-1{grid-column:span 1}.df-col-sm-2{grid-column:span 2}.df-col-sm-3{grid-column:span 3}.df-col-sm-4{grid-column:span 4}.df-col-sm-5{grid-column:span 5}.df-col-sm-6{grid-column:span 6}.df-col-sm-full{grid-column:1/-1}}@media(min-width:769px)and (max-width:992px){.df-form{--df-grid-gap: var(--df-grid-gap-lg, .5rem);--df-grid-row-gap: var(--df-grid-row-gap-lg, .5rem)}.df-col-md-1{grid-column:span 1}.df-col-md-2{grid-column:span 2}.df-col-md-3{grid-column:span 3}.df-col-md-4{grid-column:span 4}.df-col-md-5{grid-column:span 5}.df-col-md-6{grid-column:span 6}.df-col-md-7{grid-column:span 7}.df-col-md-8{grid-column:span 8}.df-col-md-9{grid-column:span 9}.df-col-md-10{grid-column:span 10}.df-col-md-11{grid-column:span 11}.df-col-md-12{grid-column:span 12}.df-col-md-full{grid-column:1/-1}}@media(min-width:993px){.df-form{--df-grid-gap: var(--df-grid-gap-xl, .5rem);--df-grid-row-gap: var(--df-grid-row-gap-xl, .5rem)}.df-col-lg-1{grid-column:span 1}.df-col-lg-2{grid-column:span 2}.df-col-lg-3{grid-column:span 3}.df-col-lg-4{grid-column:span 4}.df-col-lg-5{grid-column:span 5}.df-col-lg-6{grid-column:span 6}.df-col-lg-7{grid-column:span 7}.df-col-lg-8{grid-column:span 8}.df-col-lg-9{grid-column:span 9}.df-col-lg-10{grid-column:span 10}.df-col-lg-11{grid-column:span 11}.df-col-lg-12{grid-column:span 12}.df-col-lg-full{grid-column:1/-1}}.df-gap-none{--df-grid-gap: 0}.df-gap-xs{--df-grid-gap: .25rem}.df-gap-sm{--df-grid-gap: .5rem}.df-gap-md{--df-grid-gap: 1rem}.df-gap-lg{--df-grid-gap: 1.5rem}.df-gap-xl{--df-grid-gap: 2rem}.df-row-gap-none{--df-grid-row-gap: 0}.df-row-gap-xs{--df-grid-row-gap: .25rem}.df-row-gap-sm{--df-grid-row-gap: .5rem}.df-row-gap-md{--df-grid-row-gap: 1rem}.df-row-gap-lg{--df-grid-row-gap: 1.5rem}.df-row-gap-xl{--df-grid-row-gap: 2rem}.df-field{display:block;width:100%;min-width:0;overflow:hidden;margin:0}.df-group,.df-page{display:block;width:100%}.df-form.disabled,.df-row.disabled,.df-field.disabled{opacity:.6;pointer-events:none}.df-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.df-sr-only-focusable:focus,.df-sr-only-focusable:active{position:static;width:auto;height:auto;padding:inherit;margin:inherit;overflow:visible;clip:auto;white-space:normal}.df-live-region{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.df-form :focus-visible{outline:2px solid var(--df-focus-color, #005fcc);outline-offset:2px}.df-group:focus-within{outline:1px dashed var(--df-focus-color, #005fcc);outline-offset:4px}:host{display:flex;flex-wrap:wrap;gap:var(--df-grid-gap, .5rem);align-items:flex-start;width:100%}:host ::ng-deep>*:not([class*=df-col-]){flex:0 0 auto}:host ::ng-deep>.df-col-1{flex:0 0 calc(8.3333333333% - var(--df-grid-gap, .5rem) * .9166666667);max-width:calc(8.3333333333% - var(--df-grid-gap, .5rem) * .9166666667)}:host ::ng-deep>.df-col-2{flex:0 0 calc(16.6666666667% - var(--df-grid-gap, .5rem) * .8333333333);max-width:calc(16.6666666667% - var(--df-grid-gap, .5rem) * .8333333333)}:host ::ng-deep>.df-col-3{flex:0 0 calc(25% - var(--df-grid-gap, .5rem) * .75);max-width:calc(25% - var(--df-grid-gap, .5rem) * .75)}:host ::ng-deep>.df-col-4{flex:0 0 calc(33.3333333333% - var(--df-grid-gap, .5rem) * .6666666667);max-width:calc(33.3333333333% - var(--df-grid-gap, .5rem) * .6666666667)}:host ::ng-deep>.df-col-5{flex:0 0 calc(41.6666666667% - var(--df-grid-gap, .5rem) * .5833333333);max-width:calc(41.6666666667% - var(--df-grid-gap, .5rem) * .5833333333)}:host ::ng-deep>.df-col-6{flex:0 0 calc(50% - var(--df-grid-gap, .5rem) * .5);max-width:calc(50% - var(--df-grid-gap, .5rem) * .5)}:host ::ng-deep>.df-col-7{flex:0 0 calc(58.3333333333% - var(--df-grid-gap, .5rem) * .4166666667);max-width:calc(58.3333333333% - var(--df-grid-gap, .5rem) * .4166666667)}:host ::ng-deep>.df-col-8{flex:0 0 calc(66.6666666667% - var(--df-grid-gap, .5rem) * .3333333333);max-width:calc(66.6666666667% - var(--df-grid-gap, .5rem) * .3333333333)}:host ::ng-deep>.df-col-9{flex:0 0 calc(75% - var(--df-grid-gap, .5rem) * .25);max-width:calc(75% - var(--df-grid-gap, .5rem) * .25)}:host ::ng-deep>.df-col-10{flex:0 0 calc(83.3333333333% - var(--df-grid-gap, .5rem) * .1666666667);max-width:calc(83.3333333333% - var(--df-grid-gap, .5rem) * .1666666667)}:host ::ng-deep>.df-col-11{flex:0 0 calc(91.6666666667% - var(--df-grid-gap, .5rem) * .0833333333);max-width:calc(91.6666666667% - var(--df-grid-gap, .5rem) * .0833333333)}:host ::ng-deep>.df-col-12{flex:0 0 calc(100% - var(--df-grid-gap, .5rem) * 0);max-width:calc(100% - var(--df-grid-gap, .5rem) * 0)}:host-context(.df-gap-custom){--df-grid-gap: var(--df-row-custom-gap, 1rem)}@media(max-width:576px){:host-context(.df-row-mobile-stack) ::ng-deep>*{flex:0 0 100%!important;max-width:100%!important}}@media(min-width:577px)and (max-width:768px){:host-context(.df-row-tablet-2col) ::ng-deep>*{flex:0 0 calc(50% - var(--df-grid-gap, .5rem) / 2);max-width:calc(50% - var(--df-grid-gap, .5rem) / 2)}}@media(max-width:576px){:host ::ng-deep>*{flex:0 0 100%!important;max-width:100%!important}:host-context(.df-row-mobile-keep-cols){flex-direction:row}:host-context(.df-row-mobile-keep-cols) ::ng-deep>*:not([class*=df-col-]){flex:0 0 auto!important;max-width:none!important}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6
+ fieldInputs = input(/* @ts-ignore */
7
+ ...(ngDevMode ? [undefined, { debugName: "fieldInputs" }] : /* istanbul ignore next */ []));
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: RowWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.0", type: RowWrapperComponent, isStandalone: true, selector: "df-row-wrapper", inputs: { fieldInputs: { classPropertyName: "fieldInputs", publicName: "fieldInputs", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "df-field df-row" }, viewQueries: [{ propertyName: "fieldComponent", first: true, predicate: ["fieldComponent"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `<ng-container #fieldComponent></ng-container>`, isInline: true, styles: [".df-form{display:grid;grid-template-columns:1fr;gap:var(--df-grid-row-gap, .5rem);width:100%}.df-form>*{grid-column:1/-1}.df-row{display:grid;grid-template-columns:repeat(var(--df-grid-columns, 12),1fr);gap:var(--df-grid-gap, .5rem);align-items:start;width:100%}.df-row>*:not([class*=df-col-]){grid-column:1/-1}.df-col-1{grid-column:span 1}.df-col-2{grid-column:span 2}.df-col-3{grid-column:span 3}.df-col-4{grid-column:span 4}.df-col-5{grid-column:span 5}.df-col-6{grid-column:span 6}.df-col-7{grid-column:span 7}.df-col-8{grid-column:span 8}.df-col-9{grid-column:span 9}.df-col-10{grid-column:span 10}.df-col-11{grid-column:span 11}.df-col-12{grid-column:span 12}.df-col-auto{grid-column:span auto;width:auto}.df-col-full{grid-column:1/-1}.df-col-start-1{grid-column-start:1}.df-col-start-2{grid-column-start:2}.df-col-start-3{grid-column-start:3}.df-col-start-4{grid-column-start:4}.df-col-start-5{grid-column-start:5}.df-col-start-6{grid-column-start:6}.df-col-start-7{grid-column-start:7}.df-col-start-8{grid-column-start:8}.df-col-start-9{grid-column-start:9}.df-col-start-10{grid-column-start:10}.df-col-start-11{grid-column-start:11}.df-col-start-12{grid-column-start:12}.df-col-end-1{grid-column-end:1}.df-col-end-2{grid-column-end:2}.df-col-end-3{grid-column-end:3}.df-col-end-4{grid-column-end:4}.df-col-end-5{grid-column-end:5}.df-col-end-6{grid-column-end:6}.df-col-end-7{grid-column-end:7}.df-col-end-8{grid-column-end:8}.df-col-end-9{grid-column-end:9}.df-col-end-10{grid-column-end:10}.df-col-end-11{grid-column-end:11}.df-col-end-12{grid-column-end:12}.df-col-end-13{grid-column-end:13}@media(max-width:576px){.df-form{--df-grid-gap: var(--df-grid-gap-sm, .5rem);--df-grid-row-gap: var(--df-grid-row-gap-sm, .5rem)}.df-row{grid-template-columns:1fr}.df-row>*{grid-column:1/-1!important}.df-row.df-row-mobile-keep-cols{grid-template-columns:repeat(var(--df-grid-columns, 12),1fr)}.df-row.df-row-mobile-keep-cols>*{grid-column:revert!important}}@media(min-width:577px)and (max-width:768px){.df-form{--df-grid-gap: var(--df-grid-gap-md, .5rem);--df-grid-row-gap: var(--df-grid-row-gap-md, .5rem)}.df-row{--df-grid-columns: 6}.df-col-sm-1{grid-column:span 1}.df-col-sm-2{grid-column:span 2}.df-col-sm-3{grid-column:span 3}.df-col-sm-4{grid-column:span 4}.df-col-sm-5{grid-column:span 5}.df-col-sm-6{grid-column:span 6}.df-col-sm-full{grid-column:1/-1}}@media(min-width:769px)and (max-width:992px){.df-form{--df-grid-gap: var(--df-grid-gap-lg, .5rem);--df-grid-row-gap: var(--df-grid-row-gap-lg, .5rem)}.df-col-md-1{grid-column:span 1}.df-col-md-2{grid-column:span 2}.df-col-md-3{grid-column:span 3}.df-col-md-4{grid-column:span 4}.df-col-md-5{grid-column:span 5}.df-col-md-6{grid-column:span 6}.df-col-md-7{grid-column:span 7}.df-col-md-8{grid-column:span 8}.df-col-md-9{grid-column:span 9}.df-col-md-10{grid-column:span 10}.df-col-md-11{grid-column:span 11}.df-col-md-12{grid-column:span 12}.df-col-md-full{grid-column:1/-1}}@media(min-width:993px){.df-form{--df-grid-gap: var(--df-grid-gap-xl, .5rem);--df-grid-row-gap: var(--df-grid-row-gap-xl, .5rem)}.df-col-lg-1{grid-column:span 1}.df-col-lg-2{grid-column:span 2}.df-col-lg-3{grid-column:span 3}.df-col-lg-4{grid-column:span 4}.df-col-lg-5{grid-column:span 5}.df-col-lg-6{grid-column:span 6}.df-col-lg-7{grid-column:span 7}.df-col-lg-8{grid-column:span 8}.df-col-lg-9{grid-column:span 9}.df-col-lg-10{grid-column:span 10}.df-col-lg-11{grid-column:span 11}.df-col-lg-12{grid-column:span 12}.df-col-lg-full{grid-column:1/-1}}.df-gap-none{--df-grid-gap: 0}.df-gap-xs{--df-grid-gap: .25rem}.df-gap-sm{--df-grid-gap: .5rem}.df-gap-md{--df-grid-gap: 1rem}.df-gap-lg{--df-grid-gap: 1.5rem}.df-gap-xl{--df-grid-gap: 2rem}.df-row-gap-none{--df-grid-row-gap: 0}.df-row-gap-xs{--df-grid-row-gap: .25rem}.df-row-gap-sm{--df-grid-row-gap: .5rem}.df-row-gap-md{--df-grid-row-gap: 1rem}.df-row-gap-lg{--df-grid-row-gap: 1.5rem}.df-row-gap-xl{--df-grid-row-gap: 2rem}.df-field{display:block;width:100%;min-width:0;overflow:hidden;margin:0}.df-group,.df-page{display:block;width:100%}.df-form.disabled,.df-row.disabled,.df-field.disabled{opacity:.6;pointer-events:none}.df-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.df-sr-only-focusable:focus,.df-sr-only-focusable:active{position:static;width:auto;height:auto;padding:inherit;margin:inherit;overflow:visible;clip:auto;white-space:normal}.df-live-region{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.df-form :focus-visible{outline:2px solid var(--df-focus-color, #005fcc);outline-offset:2px}.df-group:focus-within{outline:1px dashed var(--df-focus-color, #005fcc);outline-offset:4px}:host{display:flex;flex-wrap:wrap;gap:var(--df-grid-gap, .5rem);align-items:flex-start;width:100%}:host ::ng-deep>*:not([class*=df-col-]){flex:0 0 auto}:host ::ng-deep>.df-col-1{flex:0 0 calc(8.3333333333% - var(--df-grid-gap, .5rem) * .9166666667);max-width:calc(8.3333333333% - var(--df-grid-gap, .5rem) * .9166666667)}:host ::ng-deep>.df-col-2{flex:0 0 calc(16.6666666667% - var(--df-grid-gap, .5rem) * .8333333333);max-width:calc(16.6666666667% - var(--df-grid-gap, .5rem) * .8333333333)}:host ::ng-deep>.df-col-3{flex:0 0 calc(25% - var(--df-grid-gap, .5rem) * .75);max-width:calc(25% - var(--df-grid-gap, .5rem) * .75)}:host ::ng-deep>.df-col-4{flex:0 0 calc(33.3333333333% - var(--df-grid-gap, .5rem) * .6666666667);max-width:calc(33.3333333333% - var(--df-grid-gap, .5rem) * .6666666667)}:host ::ng-deep>.df-col-5{flex:0 0 calc(41.6666666667% - var(--df-grid-gap, .5rem) * .5833333333);max-width:calc(41.6666666667% - var(--df-grid-gap, .5rem) * .5833333333)}:host ::ng-deep>.df-col-6{flex:0 0 calc(50% - var(--df-grid-gap, .5rem) * .5);max-width:calc(50% - var(--df-grid-gap, .5rem) * .5)}:host ::ng-deep>.df-col-7{flex:0 0 calc(58.3333333333% - var(--df-grid-gap, .5rem) * .4166666667);max-width:calc(58.3333333333% - var(--df-grid-gap, .5rem) * .4166666667)}:host ::ng-deep>.df-col-8{flex:0 0 calc(66.6666666667% - var(--df-grid-gap, .5rem) * .3333333333);max-width:calc(66.6666666667% - var(--df-grid-gap, .5rem) * .3333333333)}:host ::ng-deep>.df-col-9{flex:0 0 calc(75% - var(--df-grid-gap, .5rem) * .25);max-width:calc(75% - var(--df-grid-gap, .5rem) * .25)}:host ::ng-deep>.df-col-10{flex:0 0 calc(83.3333333333% - var(--df-grid-gap, .5rem) * .1666666667);max-width:calc(83.3333333333% - var(--df-grid-gap, .5rem) * .1666666667)}:host ::ng-deep>.df-col-11{flex:0 0 calc(91.6666666667% - var(--df-grid-gap, .5rem) * .0833333333);max-width:calc(91.6666666667% - var(--df-grid-gap, .5rem) * .0833333333)}:host ::ng-deep>.df-col-12{flex:0 0 calc(100% - var(--df-grid-gap, .5rem) * 0);max-width:calc(100% - var(--df-grid-gap, .5rem) * 0)}:host-context(.df-gap-custom){--df-grid-gap: var(--df-row-custom-gap, 1rem)}@media(max-width:576px){:host-context(.df-row-mobile-stack) ::ng-deep>*{flex:0 0 100%!important;max-width:100%!important}}@media(min-width:577px)and (max-width:768px){:host-context(.df-row-tablet-2col) ::ng-deep>*{flex:0 0 calc(50% - var(--df-grid-gap, .5rem) / 2);max-width:calc(50% - var(--df-grid-gap, .5rem) / 2)}}@media(max-width:576px){:host ::ng-deep>*{flex:0 0 100%!important;max-width:100%!important}:host-context(.df-row-mobile-keep-cols){flex-direction:row}:host-context(.df-row-mobile-keep-cols) ::ng-deep>*:not([class*=df-col-]){flex:0 0 auto!important;max-width:none!important}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9
10
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RowWrapperComponent, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: RowWrapperComponent, decorators: [{
11
12
  type: Component,
12
13
  args: [{ selector: 'df-row-wrapper', template: `<ng-container #fieldComponent></ng-container>`, host: {
13
14
  class: 'df-field df-row',
@@ -15,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
15
16
  }], propDecorators: { fieldComponent: [{ type: i0.ViewChild, args: ['fieldComponent', { ...{ read: ViewContainerRef }, isSignal: true }] }], fieldInputs: [{ type: i0.Input, args: [{ isSignal: true, alias: "fieldInputs", required: false }] }] } });
16
17
 
17
18
  export { RowWrapperComponent, RowWrapperComponent as default };
18
- //# sourceMappingURL=ng-forge-dynamic-forms-row-wrapper.component-CwkYn5yl.mjs.map
19
+ //# sourceMappingURL=ng-forge-dynamic-forms-row-wrapper.component-BlVa801t.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-forge-dynamic-forms-row-wrapper.component-BlVa801t.mjs","mappings":";;;AAcc;AACH;AAET,IAKS;;;;;;;;AAZP;;AAK2C","names":[],"ignoreList":[],"sources":["../../../../packages/dynamic-forms/src/lib/wrappers/row/row-wrapper.component.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, ViewContainerRef, viewChild } from '@angular/core';\nimport { FieldWrapper } from '@ng-forge/dynamic-forms/internal';\nimport { WrapperFieldInputs } from '@ng-forge/dynamic-forms/internal';\n\n/** Built-in row wrapper component. */\n@Component({\n selector: 'df-row-wrapper',\n template: `<ng-container #fieldComponent></ng-container>`,\n styleUrl: './row-wrapper.component.scss',\n host: {\n class: 'df-field df-row',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport default class RowWrapperComponent implements FieldWrapper {\n readonly fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });\n\n /**\n * Mapper outputs for the wrapped field.\n * The row wrapper itself does not consume these — the input is accepted\n * for contract consistency so the outlet can set it on any wrapper.\n */\n readonly fieldInputs = input<WrapperFieldInputs>();\n}\n\nexport { RowWrapperComponent };\n"]}
@@ -1,18 +1,25 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import { AsyncPipe } from '@angular/common';
4
- import { t as DynamicTextPipe } from './ng-forge-dynamic-forms-ng-forge-dynamic-forms-CPkVjU_N.mjs';
4
+ import { DynamicTextPipe } from '@ng-forge/dynamic-forms/internal';
5
5
 
6
6
  class TextFieldComponent {
7
- key = input.required(...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
8
- label = input.required(...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
9
- className = input(...(ngDevMode ? [undefined, { debugName: "className" }] : /* istanbul ignore next */ []));
10
- tabIndex = input(...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
11
- hidden = input(...(ngDevMode ? [undefined, { debugName: "hidden" }] : /* istanbul ignore next */ []));
12
- props = input(...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
13
- elementType = computed(() => this.props()?.elementType || 'p', ...(ngDevMode ? [{ debugName: "elementType" }] : /* istanbul ignore next */ []));
14
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TextFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: TextFieldComponent, isStandalone: true, selector: "df-text", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "`${key()}`", "attr.data-testid": "key()", "attr.hidden": "hidden() || null" } }, ngImport: i0, template: `
7
+ key = input.required(/* @ts-ignore */
8
+ ...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
9
+ label = input.required(/* @ts-ignore */
10
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
11
+ className = input(/* @ts-ignore */
12
+ ...(ngDevMode ? [undefined, { debugName: "className" }] : /* istanbul ignore next */ []));
13
+ tabIndex = input(/* @ts-ignore */
14
+ ...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
15
+ hidden = input(/* @ts-ignore */
16
+ ...(ngDevMode ? [undefined, { debugName: "hidden" }] : /* istanbul ignore next */ []));
17
+ props = input(/* @ts-ignore */
18
+ ...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
19
+ elementType = computed(() => this.props()?.elementType || 'p', /* @ts-ignore */
20
+ ...(ngDevMode ? [{ debugName: "elementType" }] : /* istanbul ignore next */ []));
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: TextFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: TextFieldComponent, isStandalone: true, selector: "df-text", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "`${key()}`", "attr.data-testid": "key()", "attr.hidden": "hidden() || null" } }, ngImport: i0, template: `
16
23
  @switch (elementType()) {
17
24
  @case ('p') {
18
25
  <p class="df-text df-text-p" [class]="className() || ''">
@@ -60,7 +67,7 @@ class TextFieldComponent {
60
67
  }
61
68
  `, isInline: true, styles: [":host([hidden]){display:none!important}.df-text{font-size:var(--df-text-font-size, 1rem);font-family:var(--df-text-font-family, inherit);font-weight:var(--df-text-font-weight, normal);color:var(--df-text-color, inherit);line-height:var(--df-text-line-height, 1.5);text-align:var(--df-text-text-align, inherit);letter-spacing:var(--df-text-letter-spacing, normal);text-decoration:var(--df-text-text-decoration, none);text-transform:var(--df-text-text-transform, none);margin:var(--df-text-margin, 0);padding:var(--df-text-padding, 0)}.df-text-h1{font-size:var(--df-text-h1-font-size, 2rem);font-weight:var(--df-text-h1-font-weight, bold);margin:var(--df-text-h1-margin, 0)}.df-text-h2{font-size:var(--df-text-h2-font-size, 1.75rem);font-weight:var(--df-text-h2-font-weight, bold);margin:var(--df-text-h2-margin, 0)}.df-text-h3{font-size:var(--df-text-h3-font-size, 1.5rem);font-weight:var(--df-text-h3-font-weight, bold);margin:var(--df-text-h3-margin, 0)}.df-text-h4{font-size:var(--df-text-h4-font-size, 1.25rem);font-weight:var(--df-text-h4-font-weight, bold);margin:var(--df-text-h4-margin, 0)}.df-text-h5{font-size:var(--df-text-h5-font-size, 1.125rem);font-weight:var(--df-text-h5-font-weight, bold);margin:var(--df-text-h5-margin, 0)}.df-text-h6{font-size:var(--df-text-h6-font-size, 1rem);font-weight:var(--df-text-h6-font-weight, bold);margin:var(--df-text-h6-margin, 0)}.df-text-p{font-size:var(--df-text-p-font-size, 1rem);margin:var(--df-text-p-margin, 0)}.df-text-span{display:var(--df-text-span-display, inline)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
62
69
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TextFieldComponent, decorators: [{
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: TextFieldComponent, decorators: [{
64
71
  type: Component,
65
72
  args: [{ selector: 'df-text', template: `
66
73
  @switch (elementType()) {
@@ -116,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
116
123
  }], propDecorators: { key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], hidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "hidden", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }] } });
117
124
 
118
125
  export { TextFieldComponent as default };
119
- //# sourceMappingURL=ng-forge-dynamic-forms-text-field.component-_8_vVeH0.mjs.map
126
+ //# sourceMappingURL=ng-forge-dynamic-forms-text-field.component-CNCpmf5_.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-forge-dynamic-forms-text-field.component-CNCpmf5_.mjs","sources":["../../../../packages/dynamic-forms/src/lib/fields/text/text-field.component.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { DynamicTextPipe } from '@ng-forge/dynamic-forms/internal';\nimport { TextProps } from '@ng-forge/dynamic-forms/internal';\nimport { DynamicText } from '@ng-forge/dynamic-forms/internal';\n\n@Component({\n selector: 'df-text',\n template: `\n @switch (elementType()) {\n @case ('p') {\n <p class=\"df-text df-text-p\" [class]=\"className() || ''\">\n {{ label() | dynamicText | async }}\n </p>\n }\n @case ('h1') {\n <h1 class=\"df-text df-text-h1\" [class]=\"className() || ''\">\n {{ label() | dynamicText | async }}\n </h1>\n }\n @case ('h2') {\n <h2 class=\"df-text df-text-h2\" [class]=\"className() || ''\">\n {{ label() | dynamicText | async }}\n </h2>\n }\n @case ('h3') {\n <h3 class=\"df-text df-text-h3\" [class]=\"className() || ''\">\n {{ label() | dynamicText | async }}\n </h3>\n }\n @case ('h4') {\n <h4 class=\"df-text df-text-h4\" [class]=\"className() || ''\">\n {{ label() | dynamicText | async }}\n </h4>\n }\n @case ('h5') {\n <h5 class=\"df-text df-text-h5\" [class]=\"className() || ''\">\n {{ label() | dynamicText | async }}\n </h5>\n }\n @case ('h6') {\n <h6 class=\"df-text df-text-h6\" [class]=\"className() || ''\">\n {{ label() | dynamicText | async }}\n </h6>\n }\n @case ('span') {\n <span class=\"df-text df-text-span\" [class]=\"className() || ''\">\n {{ label() | dynamicText | async }}\n </span>\n }\n @default {\n never;\n }\n }\n `,\n styleUrl: './text-field.component.scss',\n imports: [AsyncPipe, DynamicTextPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[id]': '`${key()}`',\n '[attr.data-testid]': 'key()',\n '[attr.hidden]': 'hidden() || null',\n },\n})\nexport default class TextFieldComponent {\n readonly key = input.required<string>();\n readonly label = input.required<DynamicText>();\n readonly className = input<string>();\n readonly tabIndex = input<number>();\n readonly hidden = input<boolean>();\n readonly props = input<TextProps>();\n\n readonly elementType = computed(() => this.props()?.elementType || 'p');\n}\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- export { A as ADDON_ACTION_HANDLERS, a as ADDON_ACTION_REGISTRY, b as ADDON_KIND_COMPONENT_CACHE, c as ADDON_KIND_DEFINITIONS, d as ADDON_KIND_REGISTRY, e as ARRAY_CONTEXT, f as AppendArrayItemEvent, B as BUILT_IN_FIELDS, h as ComponentAddonComponent, j as ConsoleLogger, D as DEFAULT_PROPS, k as DEFAULT_VALIDATION_MESSAGES, l as DEFAULT_WRAPPERS, m as DF_FIELD_TEMPLATES, n as DfAddonSlot, p as DfTemplate, q as DynamicForm, r as DynamicFormError, s as DynamicFormLogger, t as DynamicTextPipe, E as EventBus, u as EventDispatcher, F as FIELD_REGISTRY, v as FIELD_SIGNAL_CONTEXT, w as FORM_OPTIONS, x as FormClearEvent, y as FormResetEvent, G as GROUP_CONTEXT, I as INITIALIZATION_TIMEOUT_MS, z as InsertArrayItemEvent, M as MoveArrayItemEvent, N as NextPageEvent, H as NoopLogger, P as PageChangeEvent, J as PopArrayItemEvent, K as PrependArrayItemEvent, L as PreviousPageEvent, R as RemoveAtIndexEvent, O as RootFormRegistryService, S as ShiftArrayItemEvent, Q as SubmitEvent, T as TemplateAddonComponent, U as TextAddonComponent, V as WRAPPER_REGISTRY, X as applyMetaToElement, Y as applyValidator, Z as applyValidators, _ as arrayEvent, $ as arrayFieldMapper, a0 as baseFieldMapper, a1 as buildBaseInputs, a2 as containerFieldMapper, a3 as createField, a9 as createWrappers, ab as dynamicTextToObservable, ac as evaluateNonFieldDisabled, ad as evaluateNonFieldHidden, ae as field, af as formConfig, ag as formatAddonWarning, ah as getArrayLength, al as groupFieldMapper, am as hasFormValue, an as injectAddonKindRegistry, ap as injectFieldSignalContext, aq as injectFieldsSupportingAddons, ar as interpolateParams, as as isArrayField, at as isCheckedField, au as isContainerField, av as isContainerTypedField, aw as isDisplayOnlyField, ax as isEqual, ay as isFieldBoundContext, az as isFormStateCondition, aA as isGroupField, aB as isLeafField, aC as isPageField, aD as isRowField, aF as isSimplifiedArrayField, aG as isValueBearingField, aH as isValueField, aI as isWrapperTypeDefinition, aJ as isWrappersBundle, aK as logAddonWarnings, aM as omit, aN as pageFieldMapper, aO as provideAddonActions, aP as provideDynamicForm, aQ as resolveDynamicValue, aR as resolveNextButtonDisabled, aS as resolveNonFieldDisabled, aT as resolveNonFieldHidden, aU as resolveSubmitButtonDisabled, aV as resolveTokens, aX as rowFieldMapper, aY as runPresetAction, aZ as sanitizeFormConfig, a_ as sanitizeFormConfigPure, a$ as textFieldMapper, b0 as toReadonlyFieldTree, b1 as validateFieldAddons, b3 as walkAndValidateAddons, b4 as withCustomAddon, b5 as withEventFormValue, b6 as withLegacyStatusClasses, b7 as withLoggerConfig, b8 as withPreviousValue, b9 as withValidationExecutionDefaults, ba as withValueExclusionDefaults, bb as wrapperProps, bc as writeToFieldValue } from './ng-forge-dynamic-forms-ng-forge-dynamic-forms-CPkVjU_N.mjs';
1
+ export { o as ADDON_ACTION_HANDLERS, p as ADDON_ACTION_REGISTRY, q as ADDON_KIND_COMPONENT_CACHE, s as ADDON_KIND_DEFINITIONS, u as AppendArrayItemEvent, B as BUILT_IN_FIELDS, v as ComponentAddonComponent, w as ConsoleLogger, x as DfAddonSlot, y as DfTemplate, z as DynamicForm, E as EventDispatcher, G as FormClearEvent, H as FormResetEvent, I as InsertArrayItemEvent, M as MoveArrayItemEvent, N as NextPageEvent, J as PageChangeEvent, K as PopArrayItemEvent, L as PrependArrayItemEvent, O as PreviousPageEvent, R as RemoveAtIndexEvent, S as ShiftArrayItemEvent, Q as SubmitEvent, T as TemplateAddonComponent, U as TextAddonComponent, V as arrayEvent, W as createField, X as createWrappers, Y as field, Z as formConfig, _ as formatAddonWarning, $ as injectAddonKindRegistry, a0 as injectFieldsSupportingAddons, a1 as isWrappersBundle, a2 as logAddonWarnings, a3 as provideAddonActions, a4 as provideDynamicForm, a5 as runPresetAction, a6 as sanitizeFormConfig, a7 as sanitizeFormConfigPure, a8 as validateFieldAddons, a9 as walkAndValidateAddons, aa as withCustomAddon, ab as withEventFormValue, ac as withLegacyStatusClasses, ad as withLoggerConfig, ae as withValidationExecutionDefaults, af as withValueExclusionDefaults, ag as wrapperProps } from './ng-forge-dynamic-forms-ng-forge-dynamic-forms-DTkMZcnb.mjs';
2
+ export { ADDON_KIND_REGISTRY, DF_FIELD_TEMPLATES, DynamicFormError, DynamicFormLogger, NoopLogger, WRAPPER_REGISTRY, evaluateNonFieldDisabled, evaluateNonFieldHidden, hasFormValue, isArrayField, isCheckedField, isContainerField, isContainerTypedField, isDisplayOnlyField, isFieldBoundContext, isFormStateCondition, isGroupField, isLeafField, isPageField, isRowField, isSimplifiedArrayField, isValueBearingField, isValueField, isWrapperTypeDefinition, resolveDynamicValue, resolveNextButtonDisabled, resolveNonFieldDisabled, resolveNonFieldHidden, resolveSubmitButtonDisabled } from '@ng-forge/dynamic-forms/internal';
2
3
  //# sourceMappingURL=ng-forge-dynamic-forms.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-forge-dynamic-forms.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"ng-forge-dynamic-forms.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-forge/dynamic-forms",
3
- "version": "0.10.0-next.3",
3
+ "version": "1.0.0-rc.1",
4
4
  "description": "Type-safe, signal-powered dynamic forms for Angular. Build complex forms from configuration with full TypeScript inference.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -30,13 +30,15 @@
30
30
  "config-driven"
31
31
  ],
32
32
  "sideEffects": false,
33
+ "schematics": "./schematics/collection.json",
34
+ "generators": "./schematics/generators.json",
33
35
  "engines": {
34
36
  "node": ">=20"
35
37
  },
36
38
  "peerDependencies": {
37
- "@angular/common": "~21.2.0",
38
- "@angular/core": "~21.2.0",
39
- "@angular/forms": "~21.2.0",
39
+ "@angular/common": "~22.0.0",
40
+ "@angular/core": "~22.0.0",
41
+ "@angular/forms": "~22.0.0",
40
42
  "@standard-schema/spec": "^1.0.0",
41
43
  "rxjs": ">=7.0.0"
42
44
  },
@@ -58,9 +60,20 @@
58
60
  "types": "./types/ng-forge-dynamic-forms-integration.d.ts",
59
61
  "default": "./fesm2022/ng-forge-dynamic-forms-integration.mjs"
60
62
  },
63
+ "./internal": {
64
+ "types": "./types/ng-forge-dynamic-forms-internal.d.ts",
65
+ "default": "./fesm2022/ng-forge-dynamic-forms-internal.mjs"
66
+ },
61
67
  "./schema": {
62
68
  "types": "./types/ng-forge-dynamic-forms-schema.d.ts",
63
69
  "default": "./fesm2022/ng-forge-dynamic-forms-schema.mjs"
64
70
  }
71
+ },
72
+ "ngForgeSchematicDeps": {
73
+ "bootstrap": "^5.3.8",
74
+ "primeng": "^21.1.8",
75
+ "@primeuix/themes": "^2.0.3",
76
+ "primeicons": "^7.0.0",
77
+ "@ionic/angular": "^8.8.8"
65
78
  }
66
79
  }
@@ -0,0 +1,10 @@
1
+ {
2
+ "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3
+ "schematics": {
4
+ "ng-add": {
5
+ "description": "Set up @ng-forge/dynamic-forms with a UI adapter (Material, Bootstrap, PrimeNG, Ionic, or none).",
6
+ "factory": "./ng-add/index#default",
7
+ "schema": "./ng-add/schema.json"
8
+ }
9
+ }
10
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "../../../node_modules/nx/schemas/generators-schema.json",
3
+ "name": "@ng-forge/dynamic-forms",
4
+ "version": "0.0.1",
5
+ "generators": {
6
+ "add": {
7
+ "factory": "./ng-add/nx-wrapper#default",
8
+ "schema": "./ng-add/schema.json",
9
+ "description": "Set up @ng-forge/dynamic-forms with a UI adapter (Material, Bootstrap, PrimeNG, Ionic, or none)."
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = ngAdd;
4
+ const schematics_1 = require("@angular-devkit/schematics");
5
+ const workspace_1 = require("@schematics/angular/utility/workspace");
6
+ const recipes_1 = require("./recipes");
7
+ const add_packages_1 = require("./rules/add-packages");
8
+ const add_styles_1 = require("./rules/add-styles");
9
+ const add_providers_1 = require("./rules/add-providers");
10
+ function ngAdd(options) {
11
+ return async (tree, ctx) => {
12
+ if (!options.adapter) {
13
+ throw new schematics_1.SchematicsException('No adapter selected. Pass --adapter=<material|bootstrap|primeng|ionic|none>.');
14
+ }
15
+ if (!(options.adapter in recipes_1.RECIPES)) {
16
+ throw new schematics_1.SchematicsException(`Unknown adapter "${options.adapter}".`);
17
+ }
18
+ const recipe = recipes_1.RECIPES[options.adapter];
19
+ const projectName = await resolveProjectName(tree, options.project);
20
+ const legacyStatusClasses = options.legacyStatusClasses !== false;
21
+ // Shared across rules: addPackages records how many deps it queued so the
22
+ // final summary can show the install hint only when an install was actually
23
+ // scheduled (e.g. not on an idempotent re-run).
24
+ const installState = { added: 0 };
25
+ ctx.logger.info(`Setting up @ng-forge/dynamic-forms with ${recipe.label}${projectName ? ` (project: ${projectName})` : ''}.`);
26
+ return (0, schematics_1.chain)([
27
+ (0, add_packages_1.addPackages)(recipe, !options.skipProviders, installState),
28
+ options.skipStyles ? noopRule() : (0, add_styles_1.addStyles)(recipe, projectName),
29
+ options.skipProviders ? noopRule() : (0, add_providers_1.addProviders)(recipe, legacyStatusClasses, projectName),
30
+ summarize(recipe, options, projectName, installState),
31
+ ]);
32
+ };
33
+ }
34
+ function noopRule() {
35
+ return (tree) => tree;
36
+ }
37
+ async function resolveProjectName(tree, requested) {
38
+ if (requested) {
39
+ return requested;
40
+ }
41
+ let workspace;
42
+ try {
43
+ workspace = await (0, workspace_1.getWorkspace)(tree);
44
+ }
45
+ catch {
46
+ return undefined;
47
+ }
48
+ const explicitDefault = workspace.extensions['defaultProject'];
49
+ if (typeof explicitDefault === 'string' && workspace.projects.has(explicitDefault)) {
50
+ return explicitDefault;
51
+ }
52
+ const apps = [];
53
+ for (const [name, project] of workspace.projects) {
54
+ if (project.extensions['projectType'] === 'application') {
55
+ apps.push(name);
56
+ }
57
+ }
58
+ if (apps.length === 0) {
59
+ return undefined;
60
+ }
61
+ if (apps.length === 1) {
62
+ return apps[0];
63
+ }
64
+ // Multiple apps and no --project: silently picking one would wire
65
+ // ng-forge into a random project. Fail loudly with the list so the user
66
+ // can re-run with --project=<name>.
67
+ throw new schematics_1.SchematicsException(`Multiple application projects found (${apps.join(', ')}). Pass --project=<name> to choose which one to set up.`);
68
+ }
69
+ function summarize(recipe, options, projectName, installState) {
70
+ return (_tree, ctx) => {
71
+ const providersStatus = options.skipProviders ? 'skipped' : projectName ? 'wired' : 'skipped (no application project found)';
72
+ const lines = [];
73
+ lines.push('@ng-forge/dynamic-forms setup complete.');
74
+ lines.push(` adapter: ${recipe.label}`);
75
+ if (projectName) {
76
+ lines.push(` project: ${projectName}`);
77
+ }
78
+ lines.push(` styles: ${options.skipStyles ? 'skipped' : recipe.styles.length === 0 ? 'n/a' : 'imported'}`);
79
+ lines.push(` providers: ${providersStatus}`);
80
+ if (installState.added > 0) {
81
+ lines.push(" Run `npm install` if it didn't run automatically.");
82
+ }
83
+ lines.push(' Docs: https://ng-forge.com/dynamic-forms/getting-started');
84
+ ctx.logger.info(lines.join('\n'));
85
+ };
86
+ }
87
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/dynamic-forms/schematics/ng-add/index.ts"],"names":[],"mappings":";;AASA,wBA2BC;AApCD,2DAAsG;AACtG,qEAAqE;AAGrE,uCAAmD;AACnD,uDAAiE;AACjE,mDAA+C;AAC/C,yDAAqD;AAErD,SAAwB,KAAK,CAAC,OAAqB;IACjD,OAAO,KAAK,EAAE,IAAU,EAAE,GAAqB,EAAE,EAAE;QACjD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,gCAAmB,CAAC,8EAA8E,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,iBAAO,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,gCAAmB,CAAC,oBAAoB,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,MAAM,GAAG,iBAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,KAAK,KAAK,CAAC;QAElE,0EAA0E;QAC1E,4EAA4E;QAC5E,gDAAgD;QAChD,MAAM,YAAY,GAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAEhD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAE9H,OAAO,IAAA,kBAAK,EAAC;YACX,IAAA,0BAAW,EAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC;YACzD,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAA,sBAAS,EAAC,MAAM,EAAE,WAAW,CAAC;YAChE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAA,4BAAY,EAAC,MAAM,EAAE,mBAAmB,EAAE,WAAW,CAAC;YAC3F,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC;SACtD,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAU,EAAE,SAA6B;IACzE,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,SAAmD,CAAC;IACxD,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC/D,IAAI,OAAO,eAAe,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QACnF,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACjD,IAAI,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,aAAa,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,kEAAkE;IAClE,wEAAwE;IACxE,oCAAoC;IACpC,MAAM,IAAI,gCAAmB,CAC3B,wCAAwC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,yDAAyD,CACjH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,MAAqB,EAAE,OAAqB,EAAE,WAA+B,EAAE,YAA0B;IAC1H,OAAO,CAAC,KAAW,EAAE,GAAqB,EAAE,EAAE;QAC5C,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,wCAAwC,CAAC;QAC7H,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,cAAc,WAAW,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/G,KAAK,CAAC,IAAI,CAAC,gBAAgB,eAAe,EAAE,CAAC,CAAC;QAC9C,IAAI,YAAY,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACpE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QACzE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ngcli_adapter_1 = require("@nx/devkit/ngcli-adapter");
4
+ exports.default = (0, ngcli_adapter_1.wrapAngularDevkitSchematic)('@ng-forge/dynamic-forms', 'ng-add');
5
+ //# sourceMappingURL=nx-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nx-wrapper.js","sourceRoot":"","sources":["../../../../../packages/dynamic-forms/schematics/ng-add/nx-wrapper.ts"],"names":[],"mappings":";;AAAA,4DAAsE;AAEtE,kBAAe,IAAA,0CAA0B,EAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RECIPES = void 0;
4
+ const versions_1 = require("../versions");
5
+ const v = (name) => ({ name, version: versions_1.VERSIONS[name] });
6
+ exports.RECIPES = {
7
+ material: {
8
+ label: 'Angular Material',
9
+ packages: [v('@ng-forge/dynamic-forms-material'), v('@angular/material'), v('@angular/cdk')],
10
+ styles: ['@angular/material/prebuilt-themes/azure-blue.css'],
11
+ adapterProviders: [],
12
+ withFields: { from: '@ng-forge/dynamic-forms-material', symbol: 'withMaterialFields' },
13
+ },
14
+ bootstrap: {
15
+ label: 'Bootstrap',
16
+ packages: [v('@ng-forge/dynamic-forms-bootstrap'), v('bootstrap')],
17
+ styles: ['bootstrap/dist/css/bootstrap.min.css'],
18
+ adapterProviders: [],
19
+ withFields: { from: '@ng-forge/dynamic-forms-bootstrap', symbol: 'withBootstrapFields' },
20
+ },
21
+ primeng: {
22
+ label: 'PrimeNG',
23
+ packages: [v('@ng-forge/dynamic-forms-primeng'), v('primeng'), v('@primeuix/themes'), v('primeicons')],
24
+ styles: ['primeicons/primeicons.css'],
25
+ adapterProviders: [
26
+ {
27
+ marker: 'providePrimeNG',
28
+ defaultImports: [{ symbol: 'Aura', from: '@primeuix/themes/aura' }],
29
+ builder: ({ code, external }) => code `${external('providePrimeNG', 'primeng/config')}({ theme: { preset: Aura } })`,
30
+ },
31
+ ],
32
+ withFields: { from: '@ng-forge/dynamic-forms-primeng', symbol: 'withPrimeNGFields' },
33
+ },
34
+ ionic: {
35
+ label: 'Ionic',
36
+ packages: [v('@ng-forge/dynamic-forms-ionic'), v('@ionic/angular')],
37
+ styles: [
38
+ '@ionic/angular/css/core.css',
39
+ '@ionic/angular/css/normalize.css',
40
+ '@ionic/angular/css/structure.css',
41
+ '@ionic/angular/css/typography.css',
42
+ ],
43
+ adapterProviders: [
44
+ {
45
+ marker: 'provideIonicAngular',
46
+ defaultImports: [],
47
+ builder: ({ code, external }) => code `${external('provideIonicAngular', '@ionic/angular/standalone')}({ mode: 'md' })`,
48
+ },
49
+ ],
50
+ withFields: { from: '@ng-forge/dynamic-forms-ionic', symbol: 'withIonicFields' },
51
+ },
52
+ none: {
53
+ label: 'Core only',
54
+ packages: [],
55
+ styles: [],
56
+ adapterProviders: [],
57
+ withFields: null,
58
+ },
59
+ };
60
+ //# sourceMappingURL=recipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../../../../packages/dynamic-forms/schematics/ng-add/recipes.ts"],"names":[],"mappings":";;;AAGA,0CAAqD;AA0BrD,MAAM,CAAC,GAAG,CAAC,IAAkB,EAAe,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEtE,QAAA,OAAO,GAAmC;IACrD,QAAQ,EAAE;QACR,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,CAAC,CAAC,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;QAC5F,MAAM,EAAE,CAAC,kDAAkD,CAAC;QAC5D,gBAAgB,EAAE,EAAE;QACpB,UAAU,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,MAAM,EAAE,oBAAoB,EAAE;KACvF;IACD,SAAS,EAAE;QACT,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,CAAC,CAAC,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QAClE,MAAM,EAAE,CAAC,sCAAsC,CAAC;QAChD,gBAAgB,EAAE,EAAE;QACpB,UAAU,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,MAAM,EAAE,qBAAqB,EAAE;KACzF;IACD,OAAO,EAAE;QACP,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;QACtG,MAAM,EAAE,CAAC,2BAA2B,CAAC;QACrC,gBAAgB,EAAE;YAChB;gBACE,MAAM,EAAE,gBAAgB;gBACxB,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC;gBACnE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,IAAI,CAAA,GAAG,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,+BAA+B;aACpH;SACF;QACD,UAAU,EAAE,EAAE,IAAI,EAAE,iCAAiC,EAAE,MAAM,EAAE,mBAAmB,EAAE;KACrF;IACD,KAAK,EAAE;QACL,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACnE,MAAM,EAAE;YACN,6BAA6B;YAC7B,kCAAkC;YAClC,kCAAkC;YAClC,mCAAmC;SACpC;QACD,gBAAgB,EAAE;YAChB;gBACE,MAAM,EAAE,qBAAqB;gBAC7B,cAAc,EAAE,EAAE;gBAClB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,IAAI,CAAA,GAAG,QAAQ,CAAC,qBAAqB,EAAE,2BAA2B,CAAC,kBAAkB;aACvH;SACF;QACD,UAAU,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,MAAM,EAAE,iBAAiB,EAAE;KACjF;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,gBAAgB,EAAE,EAAE;QACpB,UAAU,EAAE,IAAI;KACjB;CACF,CAAC"}