@ng-forge/dynamic-forms 0.10.0-next.2 → 0.10.0-next.3

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 (36) hide show
  1. package/fesm2022/{ng-forge-dynamic-forms-array-field.component-PPh_uVVh.mjs → ng-forge-dynamic-forms-array-field.component-D6GEsH72.mjs} +3 -3
  2. package/fesm2022/ng-forge-dynamic-forms-array-field.component-D6GEsH72.mjs.map +1 -0
  3. package/fesm2022/{ng-forge-dynamic-forms-container-field.component-3dZDF3kh.mjs → ng-forge-dynamic-forms-container-field.component-BluTT44A.mjs} +3 -3
  4. package/fesm2022/ng-forge-dynamic-forms-container-field.component-BluTT44A.mjs.map +1 -0
  5. package/fesm2022/{ng-forge-dynamic-forms-container-utils-B7kCznbc.mjs → ng-forge-dynamic-forms-container-utils-diYAWMa_.mjs} +2 -2
  6. package/fesm2022/ng-forge-dynamic-forms-container-utils-diYAWMa_.mjs.map +1 -0
  7. package/fesm2022/{ng-forge-dynamic-forms-css-wrapper.component-DtWBauY3.mjs → ng-forge-dynamic-forms-css-wrapper.component-CgMQOaG7.mjs} +2 -2
  8. package/fesm2022/ng-forge-dynamic-forms-css-wrapper.component-CgMQOaG7.mjs.map +1 -0
  9. package/fesm2022/{ng-forge-dynamic-forms-emit-initialization-CbY8WZZB.mjs → ng-forge-dynamic-forms-emit-initialization-CB86IMsQ.mjs} +2 -2
  10. package/fesm2022/ng-forge-dynamic-forms-emit-initialization-CB86IMsQ.mjs.map +1 -0
  11. package/fesm2022/{ng-forge-dynamic-forms-group-field.component-Dr8Z628-.mjs → ng-forge-dynamic-forms-group-field.component-2bWHql4u.mjs} +3 -3
  12. package/fesm2022/ng-forge-dynamic-forms-group-field.component-2bWHql4u.mjs.map +1 -0
  13. package/fesm2022/ng-forge-dynamic-forms-integration.mjs.map +1 -1
  14. package/fesm2022/{ng-forge-dynamic-forms-ng-forge-dynamic-forms-ww_BnAt_.mjs → ng-forge-dynamic-forms-ng-forge-dynamic-forms-CPkVjU_N.mjs} +127 -16
  15. package/fesm2022/ng-forge-dynamic-forms-ng-forge-dynamic-forms-CPkVjU_N.mjs.map +1 -0
  16. package/fesm2022/{ng-forge-dynamic-forms-page-field.component-DoGKs3LN.mjs → ng-forge-dynamic-forms-page-field.component-zF-vEv5V.mjs} +3 -3
  17. package/fesm2022/ng-forge-dynamic-forms-page-field.component-zF-vEv5V.mjs.map +1 -0
  18. package/fesm2022/{ng-forge-dynamic-forms-row-wrapper.component-CFtnatYj.mjs → ng-forge-dynamic-forms-row-wrapper.component-CwkYn5yl.mjs} +1 -1
  19. package/fesm2022/ng-forge-dynamic-forms-row-wrapper.component-CwkYn5yl.mjs.map +1 -0
  20. package/fesm2022/ng-forge-dynamic-forms-schema.mjs.map +1 -1
  21. package/fesm2022/{ng-forge-dynamic-forms-text-field.component-C3TPVvj_.mjs → ng-forge-dynamic-forms-text-field.component-_8_vVeH0.mjs} +2 -2
  22. package/fesm2022/{ng-forge-dynamic-forms-text-field.component-C3TPVvj_.mjs.map → ng-forge-dynamic-forms-text-field.component-_8_vVeH0.mjs.map} +1 -1
  23. package/fesm2022/ng-forge-dynamic-forms.mjs +1 -1
  24. package/package.json +1 -1
  25. package/types/ng-forge-dynamic-forms-integration.d.ts +27 -462
  26. package/types/ng-forge-dynamic-forms-schema.d.ts +2 -117
  27. package/types/ng-forge-dynamic-forms.d.ts +286 -4650
  28. package/fesm2022/ng-forge-dynamic-forms-array-field.component-PPh_uVVh.mjs.map +0 -1
  29. package/fesm2022/ng-forge-dynamic-forms-container-field.component-3dZDF3kh.mjs.map +0 -1
  30. package/fesm2022/ng-forge-dynamic-forms-container-utils-B7kCznbc.mjs.map +0 -1
  31. package/fesm2022/ng-forge-dynamic-forms-css-wrapper.component-DtWBauY3.mjs.map +0 -1
  32. package/fesm2022/ng-forge-dynamic-forms-emit-initialization-CbY8WZZB.mjs.map +0 -1
  33. package/fesm2022/ng-forge-dynamic-forms-group-field.component-Dr8Z628-.mjs.map +0 -1
  34. package/fesm2022/ng-forge-dynamic-forms-ng-forge-dynamic-forms-ww_BnAt_.mjs.map +0 -1
  35. package/fesm2022/ng-forge-dynamic-forms-page-field.component-DoGKs3LN.mjs.map +0 -1
  36. package/fesm2022/ng-forge-dynamic-forms-row-wrapper.component-CFtnatYj.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, reflectComponentType, Injector, EnvironmentInjector, DestroyRef, computed, signal, input, ViewContainerRef, Directive, Injectable, isSignal, untracked, linkedSignal, ChangeDetectionStrategy, Component, resourceFromSnapshots, runInInjectionContext, afterNextRender, isWritableSignal, TemplateRef, model, contentChildren, makeEnvironmentProviders, Pipe } from '@angular/core';
2
+ import { InjectionToken, inject, reflectComponentType, Injector, EnvironmentInjector, DestroyRef, computed, signal, input, ViewContainerRef, Directive, Injectable, isSignal, untracked, linkedSignal, ChangeDetectionStrategy, Component, resourceFromSnapshots, runInInjectionContext, afterNextRender, ElementRef, PLATFORM_ID, isDevMode, isWritableSignal, TemplateRef, model, contentChildren, makeEnvironmentProviders, Pipe } from '@angular/core';
3
3
  import { explicitEffect } from 'ngxtension/explicit-effect';
4
4
  import { takeUntilDestroyed, toObservable, toSignal, rxResource, outputFromObservable } from '@angular/core/rxjs-interop';
5
5
  import { of, forkJoin, from, catchError, map, switchMap, isObservable, firstValueFrom, exhaustMap, EMPTY, Subject, filter, TimeoutError, throwError, defer, combineLatest, pipe, debounceTime, distinctUntilChanged, tap, startWith, scan as scan$1, Observable, concatMap, take as take$1, pairwise, merge, combineLatestWith, auditTime, scheduled, queueScheduler, timer } from 'rxjs';
@@ -7,8 +7,8 @@ import { submit, email, min, max, minLength, maxLength, pattern, required, valid
7
7
  import { scan, map as map$1, filter as filter$1, take, switchMap as switchMap$1, timeout, catchError as catchError$1, shareReplay } from 'rxjs/operators';
8
8
  import { HttpClient } from '@angular/common/http';
9
9
  import { isStandardSchemaMarker } from '@ng-forge/dynamic-forms/schema';
10
+ import { isPlatformBrowser, NgComponentOutlet, AsyncPipe, NgTemplateOutlet } from '@angular/common';
10
11
  import { NG_STATUS_CLASSES } from '@angular/forms/signals/compat';
11
- import { NgComponentOutlet, AsyncPipe, NgTemplateOutlet } from '@angular/common';
12
12
 
13
13
  function isWrapperTypeDefinition(value) {
14
14
  return typeof value === 'object' && value !== null && 'wrapperName' in value;
@@ -49,6 +49,7 @@ const DEFAULT_PROPS = new InjectionToken('DEFAULT_PROPS');
49
49
  const DEFAULT_VALIDATION_MESSAGES = new InjectionToken('DEFAULT_VALIDATION_MESSAGES');
50
50
  const FORM_OPTIONS = new InjectionToken('FORM_OPTIONS');
51
51
  const EXTERNAL_DATA = new InjectionToken('EXTERNAL_DATA');
52
+ const FORM_ID_PREFIX = new InjectionToken('FORM_ID_PREFIX');
52
53
 
53
54
  const DynamicFormLogger = new InjectionToken('DynamicFormLogger');
54
55
 
@@ -2496,9 +2497,9 @@ class PageOrchestratorComponent {
2496
2497
  }
2497
2498
  }
2498
2499
  }
2499
- `, isInline: true, styles: [":host{display:block;position:relative;width:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./ng-forge-dynamic-forms-page-field.component-DoGKs3LN.mjs').then(m => m.default)], () => [import('./ng-forge-dynamic-forms-page-field.component-DoGKs3LN.mjs').then(m => m.default)]] });
2500
+ `, isInline: true, styles: [":host{display:block;position:relative;width:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./ng-forge-dynamic-forms-page-field.component-zF-vEv5V.mjs').then(m => m.default)], () => [import('./ng-forge-dynamic-forms-page-field.component-zF-vEv5V.mjs').then(m => m.default)]] });
2500
2501
  }
2501
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.14", ngImport: i0, type: PageOrchestratorComponent, resolveDeferredDeps: () => [import('./ng-forge-dynamic-forms-page-field.component-DoGKs3LN.mjs').then(m => m.default)], resolveMetadata: PageFieldComponent => ({ decorators: [{
2502
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.14", ngImport: i0, type: PageOrchestratorComponent, resolveDeferredDeps: () => [import('./ng-forge-dynamic-forms-page-field.component-zF-vEv5V.mjs').then(m => m.default)], resolveMetadata: PageFieldComponent => ({ decorators: [{
2502
2503
  type: Component,
2503
2504
  args: [{ selector: 'div[page-orchestrator]', imports: [PageFieldComponent], template: `
2504
2505
  @for (pageField of pageFields(); track pageField.key; let i = $index) {
@@ -5295,6 +5296,16 @@ function applyGroupPrefix(inputs, groupPath) {
5295
5296
  key: `${groupPath.replace(/\./g, '_')}_${key}`,
5296
5297
  };
5297
5298
  }
5299
+ function applyFormPrefix(inputs, prefix) {
5300
+ const key = inputs['key'];
5301
+ if (typeof key !== 'string' || prefix.length === 0) {
5302
+ return inputs;
5303
+ }
5304
+ return {
5305
+ ...inputs,
5306
+ key: `${prefix}_${key}`,
5307
+ };
5308
+ }
5298
5309
  function mapFieldToInputs(fieldDef, fieldRegistry) {
5299
5310
  const fieldType = fieldRegistry.get(fieldDef.type);
5300
5311
  if (fieldType && !fieldType.loadComponent && !fieldType.mapper) {
@@ -5302,6 +5313,7 @@ function mapFieldToInputs(fieldDef, fieldRegistry) {
5302
5313
  }
5303
5314
  const arrayContext = inject(ARRAY_CONTEXT, { optional: true });
5304
5315
  const groupContext = inject(GROUP_CONTEXT, { optional: true });
5316
+ const formPrefixSignal = inject(FORM_ID_PREFIX, { optional: true });
5305
5317
  const store = inject(PROPERTY_OVERRIDE_STORE);
5306
5318
  const mapperResult = fieldType?.mapper ? fieldType.mapper(fieldDef) : baseFieldMapper(fieldDef);
5307
5319
  const propsToMeta = fieldType?.propsToMeta;
@@ -5309,8 +5321,9 @@ function mapFieldToInputs(fieldDef, fieldRegistry) {
5309
5321
  const indexSignal = arrayContext?.index;
5310
5322
  const hasArrayContext = indexSignal !== undefined && isSignal(indexSignal);
5311
5323
  const hasGroupContext = groupContext != null;
5324
+ const hasFormPrefix = formPrefixSignal != null;
5312
5325
  const hasOverrides = fieldHasPropertyDerivations(fieldDef);
5313
- if (!hasPropsForwarding && !hasArrayContext && !hasGroupContext && !hasOverrides) {
5326
+ if (!hasPropsForwarding && !hasArrayContext && !hasGroupContext && !hasOverrides && !hasFormPrefix) {
5314
5327
  return mapperResult;
5315
5328
  }
5316
5329
  return computed(() => {
@@ -5324,6 +5337,9 @@ function mapFieldToInputs(fieldDef, fieldRegistry) {
5324
5337
  if (hasArrayContext) {
5325
5338
  const index = indexSignal();
5326
5339
  inputs = applyIndexSuffix(inputs, index);
5340
+ }
5341
+ if (hasFormPrefix) {
5342
+ inputs = applyFormPrefix(inputs, formPrefixSignal());
5327
5343
  }
5328
5344
  if (hasOverrides) {
5329
5345
  const groupPath = hasGroupContext ? groupContext.groupPath() : undefined;
@@ -6908,6 +6924,92 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
6908
6924
  type: Injectable
6909
6925
  }], ctorParameters: () => [] });
6910
6926
 
6927
+ const AUTO_ID_PREFIX = 'df-';
6928
+ class DynamicFormInstanceRegistry {
6929
+ slots = new Map();
6930
+ _membership = signal(0, ...(ngDevMode ? [{ debugName: "_membership" }] : /* istanbul ignore next */ []));
6931
+ multiplePresent = computed(() => {
6932
+ this._membership();
6933
+ let visible = 0;
6934
+ for (const isVisible of this.slots.values()) {
6935
+ if (isVisible()) {
6936
+ visible += 1;
6937
+ if (visible > 1)
6938
+ return true;
6939
+ }
6940
+ }
6941
+ return false;
6942
+ }, ...(ngDevMode ? [{ debugName: "multiplePresent" }] : /* istanbul ignore next */ []));
6943
+ register(visible) {
6944
+ let slot = 1;
6945
+ while (this.slots.has(slot))
6946
+ slot++;
6947
+ this.slots.set(slot, visible);
6948
+ this._membership.update((m) => m + 1);
6949
+ return `${AUTO_ID_PREFIX}${slot}`;
6950
+ }
6951
+ unregister(id) {
6952
+ this.slots.delete(Number(id.slice(AUTO_ID_PREFIX.length)));
6953
+ this._membership.update((m) => m + 1);
6954
+ }
6955
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DynamicFormInstanceRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6956
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DynamicFormInstanceRegistry, providedIn: 'root' });
6957
+ }
6958
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DynamicFormInstanceRegistry, decorators: [{
6959
+ type: Injectable,
6960
+ args: [{ providedIn: 'root' }]
6961
+ }] });
6962
+
6963
+ const INVALID_ID_CHARS = /[^\w-]+/g;
6964
+ function sanitizeIdPrefix(prefix) {
6965
+ return prefix.replace(INVALID_ID_CHARS, '_');
6966
+ }
6967
+ function isRendered(host) {
6968
+ if (!host.isConnected)
6969
+ return false;
6970
+ if (typeof host.checkVisibility === 'function')
6971
+ return host.checkVisibility();
6972
+ const rect = host.getBoundingClientRect();
6973
+ return rect.width > 0 || rect.height > 0;
6974
+ }
6975
+ class FormIdPrefixService {
6976
+ registry = inject(DynamicFormInstanceRegistry);
6977
+ options = inject(FORM_OPTIONS, { optional: true });
6978
+ logger = inject(DynamicFormLogger, { optional: true });
6979
+ host = inject((ElementRef)).nativeElement;
6980
+ visible = signal(true, ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
6981
+ autoId = this.registry.register(this.visible);
6982
+ rawPrefix = computed(() => this.options?.()?.idPrefix?.trim() || undefined, ...(ngDevMode ? [{ debugName: "rawPrefix" }] : /* istanbul ignore next */ []));
6983
+ prefix = computed(() => {
6984
+ const explicit = this.rawPrefix();
6985
+ if (explicit)
6986
+ return sanitizeIdPrefix(explicit);
6987
+ return this.registry.multiplePresent() ? this.autoId : '';
6988
+ }, ...(ngDevMode ? [{ debugName: "prefix" }] : /* istanbul ignore next */ []));
6989
+ constructor() {
6990
+ const destroyRef = inject(DestroyRef);
6991
+ destroyRef.onDestroy(() => this.registry.unregister(this.autoId));
6992
+ if (isPlatformBrowser(inject(PLATFORM_ID)) && typeof ResizeObserver !== 'undefined') {
6993
+ const ro = new ResizeObserver(() => this.visible.set(isRendered(this.host)));
6994
+ ro.observe(this.host);
6995
+ destroyRef.onDestroy(() => ro.disconnect());
6996
+ }
6997
+ if (isDevMode()) {
6998
+ explicitEffect([this.rawPrefix], ([raw]) => {
6999
+ const safe = raw ? sanitizeIdPrefix(raw) : raw;
7000
+ if (raw && safe !== raw) {
7001
+ this.logger?.warn(`idPrefix "${raw}" sanitized to "${safe}".`);
7002
+ }
7003
+ });
7004
+ }
7005
+ }
7006
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FormIdPrefixService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7007
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FormIdPrefixService });
7008
+ }
7009
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FormIdPrefixService, decorators: [{
7010
+ type: Injectable
7011
+ }], ctorParameters: () => [] });
7012
+
6911
7013
  function createWarningTracker() {
6912
7014
  return { warnedKeys: new Set() };
6913
7015
  }
@@ -9354,6 +9456,12 @@ function coreProviders() {
9354
9456
  provide: EXTERNAL_DATA,
9355
9457
  useFactory: (stateManager) => computed(() => stateManager.activeConfig()?.externalData),
9356
9458
  deps: [FormStateManager],
9459
+ },
9460
+ FormIdPrefixService,
9461
+ {
9462
+ provide: FORM_ID_PREFIX,
9463
+ useFactory: (svc) => svc.prefix,
9464
+ deps: [FormIdPrefixService],
9357
9465
  },
9358
9466
  { provide: DEPRECATION_WARNING_TRACKER, useFactory: createWarningTracker },
9359
9467
  { provide: ADDON_ACTION_REGISTRY, useFactory: createAddonActionRegistry },
@@ -9469,7 +9577,9 @@ class DynamicForm {
9469
9577
  dispatcher = inject(EventDispatcher, { optional: true });
9470
9578
  templateRegistry = inject(DfFieldTemplateRegistry);
9471
9579
  _projectedTemplates = contentChildren(DfTemplate, ...(ngDevMode ? [{ debugName: "_projectedTemplates" }] : /* istanbul ignore next */ []));
9472
- stateManager = this.connectDeps();
9580
+ stateManager = this.connectDeps();
9581
+ formIdPrefix = inject(FormIdPrefixService);
9582
+ idPrefix = this.formIdPrefix.prefix;
9473
9583
  componentId = 'dynamic-form';
9474
9584
  activeConfig = this.stateManager.activeConfig;
9475
9585
  renderPhase = this.stateManager.renderPhase;
@@ -9563,7 +9673,7 @@ class DynamicForm {
9563
9673
  });
9564
9674
  }
9565
9675
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DynamicForm, deps: [], target: i0.ɵɵFactoryTarget.Component });
9566
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: DynamicForm, isStandalone: true, selector: "form[dynamic-form]", inputs: { config: { classPropertyName: "config", publicName: "dynamic-form", isSignal: true, isRequired: true, transformFunction: null }, formOptions: { classPropertyName: "formOptions", publicName: "formOptions", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", validityChange: "validityChange", dirtyChange: "dirtyChange", submitted: "submitted", reset: "reset", cleared: "cleared", events: "events", initialized: "initialized", onPageChange: "onPageChange", onPageNavigationStateChange: "onPageNavigationStateChange" }, host: { attributes: { "novalidate": "" }, listeners: { "submit": "onNativeSubmit($event)" }, properties: { "class.disabled": "disabled()", "class.df-form-paged": "formModeDetection().mode === \"paged\"", "class.df-form-non-paged": "formModeDetection().mode === \"non-paged\"", "attr.data-form-mode": "formModeDetection().mode" }, classAttribute: "df-dynamic-form df-form" }, providers: [
9676
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: DynamicForm, isStandalone: true, selector: "form[dynamic-form]", inputs: { config: { classPropertyName: "config", publicName: "dynamic-form", isSignal: true, isRequired: true, transformFunction: null }, formOptions: { classPropertyName: "formOptions", publicName: "formOptions", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", validityChange: "validityChange", dirtyChange: "dirtyChange", submitted: "submitted", reset: "reset", cleared: "cleared", events: "events", initialized: "initialized", onPageChange: "onPageChange", onPageNavigationStateChange: "onPageNavigationStateChange" }, host: { attributes: { "novalidate": "" }, listeners: { "submit": "onNativeSubmit($event)" }, properties: { "class.disabled": "disabled()", "class.df-form-paged": "formModeDetection().mode === \"paged\"", "class.df-form-non-paged": "formModeDetection().mode === \"non-paged\"", "attr.data-form-mode": "formModeDetection().mode", "attr.id": "idPrefix() || null" }, classAttribute: "df-dynamic-form df-form" }, providers: [
9567
9677
  provideDynamicFormDI(),
9568
9678
  DfFieldTemplateRegistry,
9569
9679
  { provide: DF_FIELD_TEMPLATES, useFactory: () => inject(DfFieldTemplateRegistry).map },
@@ -9625,6 +9735,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
9625
9735
  '[class.df-form-paged]': 'formModeDetection().mode === "paged"',
9626
9736
  '[class.df-form-non-paged]': 'formModeDetection().mode === "non-paged"',
9627
9737
  '[attr.data-form-mode]': 'formModeDetection().mode',
9738
+ '[attr.id]': 'idPrefix() || null',
9628
9739
  '(submit)': 'onNativeSubmit($event)',
9629
9740
  }, changeDetection: ChangeDetectionStrategy.OnPush, 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;gap:var(--df-grid-row-gap, .5rem);width:100%}:host>*{grid-column:1/-1}:host.df-form-spacing-custom{--df-grid-row-gap: var(--df-form-custom-spacing, 1.5rem)}:host.df-form-gap-none{--df-grid-row-gap: 0}:host.df-form-gap-xs{--df-grid-row-gap: .25rem}:host.df-form-gap-sm{--df-grid-row-gap: .5rem}:host.df-form-gap-md{--df-grid-row-gap: 1rem}:host.df-form-gap-lg{--df-grid-row-gap: 1.5rem}:host.df-form-gap-xl{--df-grid-row-gap: 2rem}:host.df-form-paged{gap:0}\n"] }]
9630
9741
  }], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "dynamic-form", required: true }] }], formOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "formOptions", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], source: [{ type: i0.Input, args: [{ isSignal: true, alias: "source", required: false }] }], _projectedTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DfTemplate), { isSignal: true }] }], validityChange: [{ type: i0.Output, args: ["validityChange"] }], dirtyChange: [{ type: i0.Output, args: ["dirtyChange"] }], submitted: [{ type: i0.Output, args: ["submitted"] }], reset: [{ type: i0.Output, args: ["reset"] }], cleared: [{ type: i0.Output, args: ["cleared"] }], events: [{ type: i0.Output, args: ["events"] }], initialized: [{ type: i0.Output, args: ["initialized"] }], onPageChange: [{ type: i0.Output, args: ["onPageChange"] }], onPageNavigationStateChange: [{ type: i0.Output, args: ["onPageNavigationStateChange"] }] } });
@@ -9980,35 +10091,35 @@ const DISPLAY_FIELD_TYPES_BASE = {
9980
10091
  const BUILT_IN_FIELDS = [
9981
10092
  {
9982
10093
  name: 'row',
9983
- loadComponent: () => import('./ng-forge-dynamic-forms-container-field.component-3dZDF3kh.mjs'),
10094
+ loadComponent: () => import('./ng-forge-dynamic-forms-container-field.component-BluTT44A.mjs'),
9984
10095
  mapper: rowFieldMapper,
9985
10096
  valueHandling: 'flatten',
9986
10097
  ...CONTAINER_FIELD_TYPES_BASE,
9987
10098
  },
9988
10099
  {
9989
10100
  name: 'group',
9990
- loadComponent: () => import('./ng-forge-dynamic-forms-group-field.component-Dr8Z628-.mjs'),
10101
+ loadComponent: () => import('./ng-forge-dynamic-forms-group-field.component-2bWHql4u.mjs'),
9991
10102
  mapper: groupFieldMapper,
9992
10103
  valueHandling: 'include',
9993
10104
  ...CONTAINER_FIELD_TYPES_BASE,
9994
10105
  },
9995
10106
  {
9996
10107
  name: 'array',
9997
- loadComponent: () => import('./ng-forge-dynamic-forms-array-field.component-PPh_uVVh.mjs'),
10108
+ loadComponent: () => import('./ng-forge-dynamic-forms-array-field.component-D6GEsH72.mjs'),
9998
10109
  mapper: arrayFieldMapper,
9999
10110
  valueHandling: 'include',
10000
10111
  ...CONTAINER_FIELD_TYPES_BASE,
10001
10112
  },
10002
10113
  {
10003
10114
  name: 'page',
10004
- loadComponent: () => import('./ng-forge-dynamic-forms-page-field.component-DoGKs3LN.mjs'),
10115
+ loadComponent: () => import('./ng-forge-dynamic-forms-page-field.component-zF-vEv5V.mjs'),
10005
10116
  mapper: pageFieldMapper,
10006
10117
  valueHandling: 'flatten',
10007
10118
  ...CONTAINER_FIELD_TYPES_BASE,
10008
10119
  },
10009
10120
  {
10010
10121
  name: 'text',
10011
- loadComponent: () => import('./ng-forge-dynamic-forms-text-field.component-C3TPVvj_.mjs'),
10122
+ loadComponent: () => import('./ng-forge-dynamic-forms-text-field.component-_8_vVeH0.mjs'),
10012
10123
  mapper: textFieldMapper,
10013
10124
  valueHandling: 'exclude',
10014
10125
  ...DISPLAY_FIELD_TYPES_BASE,
@@ -10019,7 +10130,7 @@ const BUILT_IN_FIELDS = [
10019
10130
  },
10020
10131
  {
10021
10132
  name: 'container',
10022
- loadComponent: () => import('./ng-forge-dynamic-forms-container-field.component-3dZDF3kh.mjs'),
10133
+ loadComponent: () => import('./ng-forge-dynamic-forms-container-field.component-BluTT44A.mjs'),
10023
10134
  mapper: containerFieldMapper,
10024
10135
  valueHandling: 'flatten',
10025
10136
  ...CONTAINER_FIELD_TYPES_BASE,
@@ -10028,11 +10139,11 @@ const BUILT_IN_FIELDS = [
10028
10139
  const BUILT_IN_WRAPPERS = [
10029
10140
  {
10030
10141
  wrapperName: 'css',
10031
- loadComponent: () => import('./ng-forge-dynamic-forms-css-wrapper.component-DtWBauY3.mjs'),
10142
+ loadComponent: () => import('./ng-forge-dynamic-forms-css-wrapper.component-CgMQOaG7.mjs'),
10032
10143
  },
10033
10144
  {
10034
10145
  wrapperName: 'row',
10035
- loadComponent: () => import('./ng-forge-dynamic-forms-row-wrapper.component-CFtnatYj.mjs'),
10146
+ loadComponent: () => import('./ng-forge-dynamic-forms-row-wrapper.component-CwkYn5yl.mjs'),
10036
10147
  },
10037
10148
  ];
10038
10149
 
@@ -10762,4 +10873,4 @@ function extractErrorParams(error) {
10762
10873
 
10763
10874
 
10764
10875
  export { arrayFieldMapper as $, ADDON_ACTION_HANDLERS as A, BUILT_IN_FIELDS as B, CONTAINER_FIELD_PROCESSORS as C, DEFAULT_PROPS as D, EventBus as E, FIELD_REGISTRY as F, GROUP_CONTEXT as G, NoopLogger as H, INITIALIZATION_TIMEOUT_MS as I, PopArrayItemEvent as J, PrependArrayItemEvent as K, PreviousPageEvent as L, MoveArrayItemEvent as M, NextPageEvent as N, RootFormRegistryService as O, PageChangeEvent as P, SubmitEvent as Q, RemoveAtIndexEvent as R, ShiftArrayItemEvent as S, TemplateAddonComponent as T, TextAddonComponent as U, WRAPPER_REGISTRY as V, WRAPPER_AUTO_ASSOCIATIONS as W, applyMetaToElement as X, applyValidator as Y, applyValidators as Z, arrayEvent as _, ADDON_ACTION_REGISTRY as a, textFieldMapper as a$, baseFieldMapper as a0, buildBaseInputs as a1, containerFieldMapper as a2, createField as a3, createFieldResolutionPipe as a4, createHiddenSignal as a5, createRenderReadySignal as a6, createSchemaFromFields as a7, createWrapperChainController as a8, createWrappers as a9, isGroupField as aA, isLeafField as aB, isPageField as aC, isRowField as aD, isSameWrapperChain as aE, isSimplifiedArrayField as aF, isValueBearingField as aG, isValueField as aH, isWrapperTypeDefinition as aI, isWrappersBundle as aJ, logAddonWarnings as aK, mapFieldToInputs as aL, omit as aM, pageFieldMapper as aN, provideAddonActions as aO, provideDynamicForm as aP, resolveDynamicValue as aQ, resolveNextButtonDisabled as aR, resolveNonFieldDisabled as aS, resolveNonFieldHidden as aT, resolveSubmitButtonDisabled as aU, resolveTokens as aV, resolveWrappers as aW, rowFieldMapper as aX, runPresetAction as aY, sanitizeFormConfig as aZ, sanitizeFormConfigPure as a_, derivedFromDeferred as aa, dynamicTextToObservable as ab, evaluateNonFieldDisabled as ac, evaluateNonFieldHidden as ad, field as ae, formConfig as af, formatAddonWarning as ag, getArrayLength as ah, getFieldDefaultValue as ai, getFieldValueHandling as aj, getNormalizedArrayMetadata as ak, groupFieldMapper as al, hasFormValue as am, injectAddonKindRegistry as an, injectFieldRegistry as ao, injectFieldSignalContext as ap, injectFieldsSupportingAddons as aq, interpolateParams as ar, isArrayField as as, isCheckedField as at, isContainerField as au, isContainerTypedField as av, isDisplayOnlyField as aw, isEqual as ax, isFieldBoundContext as ay, isFormStateCondition as az, ADDON_KIND_COMPONENT_CACHE as b, toReadonlyFieldTree as b0, validateFieldAddons as b1, validatePageNesting as b2, walkAndValidateAddons as b3, withCustomAddon as b4, withEventFormValue as b5, withLegacyStatusClasses as b6, withLoggerConfig as b7, withPreviousValue as b8, withValidationExecutionDefaults as b9, withValueExclusionDefaults as ba, wrapperProps as bb, writeToFieldValue as bc, ADDON_KIND_DEFINITIONS as c, ADDON_KIND_REGISTRY as d, ARRAY_CONTEXT as e, AppendArrayItemEvent as f, ArrayItemRegistryService as g, ComponentAddonComponent as h, ComponentInitializedEvent as i, ConsoleLogger as j, DEFAULT_VALIDATION_MESSAGES as k, DEFAULT_WRAPPERS as l, DF_FIELD_TEMPLATES as m, DfAddonSlot as n, DfFieldOutlet as o, DfTemplate as p, DynamicForm as q, DynamicFormError as r, DynamicFormLogger as s, DynamicTextPipe as t, EventDispatcher as u, FIELD_SIGNAL_CONTEXT as v, FORM_OPTIONS as w, FormClearEvent as x, FormResetEvent as y, InsertArrayItemEvent as z };
10765
- //# sourceMappingURL=ng-forge-dynamic-forms-ng-forge-dynamic-forms-ww_BnAt_.mjs.map
10876
+ //# sourceMappingURL=ng-forge-dynamic-forms-ng-forge-dynamic-forms-CPkVjU_N.mjs.map