@ng-forge/dynamic-forms 1.1.0-next.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (18) hide show
  1. package/fesm2022/{ng-forge-dynamic-forms-array-field.component-DCHrAcfd.mjs → ng-forge-dynamic-forms-array-field.component-CvjDqYyq.mjs} +2 -2
  2. package/fesm2022/{ng-forge-dynamic-forms-array-field.component-DCHrAcfd.mjs.map → ng-forge-dynamic-forms-array-field.component-CvjDqYyq.mjs.map} +1 -1
  3. package/fesm2022/{ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-DWIWQjjZ.mjs → ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-CcoUnroD.mjs} +2 -2
  4. package/fesm2022/{ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-DWIWQjjZ.mjs.map → ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-CcoUnroD.mjs.map} +1 -1
  5. package/fesm2022/{ng-forge-dynamic-forms-container-field.component-CSYhRBe6.mjs → ng-forge-dynamic-forms-container-field.component-DZfVWjiM.mjs} +2 -2
  6. package/fesm2022/{ng-forge-dynamic-forms-container-field.component-CSYhRBe6.mjs.map → ng-forge-dynamic-forms-container-field.component-DZfVWjiM.mjs.map} +1 -1
  7. package/fesm2022/{ng-forge-dynamic-forms-group-field.component-DqhHzVsN.mjs → ng-forge-dynamic-forms-group-field.component-CPFgu3pM.mjs} +2 -2
  8. package/fesm2022/{ng-forge-dynamic-forms-group-field.component-DqhHzVsN.mjs.map → ng-forge-dynamic-forms-group-field.component-CPFgu3pM.mjs.map} +1 -1
  9. package/fesm2022/ng-forge-dynamic-forms-internal.mjs +32 -11
  10. package/fesm2022/ng-forge-dynamic-forms-internal.mjs.map +1 -1
  11. package/fesm2022/{ng-forge-dynamic-forms-ng-forge-dynamic-forms-BYyZ_cuA.mjs → ng-forge-dynamic-forms-ng-forge-dynamic-forms-Du3V5AOb.mjs} +22 -11
  12. package/fesm2022/ng-forge-dynamic-forms-ng-forge-dynamic-forms-Du3V5AOb.mjs.map +1 -0
  13. package/fesm2022/{ng-forge-dynamic-forms-page-field.component-Vvk3fYZp.mjs → ng-forge-dynamic-forms-page-field.component-amWhCdHL.mjs} +2 -2
  14. package/fesm2022/{ng-forge-dynamic-forms-page-field.component-Vvk3fYZp.mjs.map → ng-forge-dynamic-forms-page-field.component-amWhCdHL.mjs.map} +1 -1
  15. package/fesm2022/ng-forge-dynamic-forms.mjs +1 -1
  16. package/package.json +1 -1
  17. package/types/ng-forge-dynamic-forms-internal.d.ts +7 -1
  18. package/fesm2022/ng-forge-dynamic-forms-ng-forge-dynamic-forms-BYyZ_cuA.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { reflectComponentType, Injector, inject, EnvironmentInjector, DestroyRef, computed, signal, input, ViewContainerRef, Directive, linkedSignal, ChangeDetectionStrategy, Component, Injectable, InjectionToken, isSignal, runInInjectionContext, afterNextRender, untracked, PendingTasks, ElementRef, PLATFORM_ID, isDevMode, TemplateRef, model, contentChildren, makeEnvironmentProviders } from '@angular/core';
3
3
  import { explicitEffect } from 'ngxtension/explicit-effect';
4
- import { DynamicFormLogger, WRAPPER_COMPONENT_CACHE, WRAPPER_REGISTRY, toReadonlyFieldTreeCached, writeToFieldValue, WRAPPER_AUTO_ASSOCIATIONS, DEFAULT_WRAPPERS, READONLY_FIELD_TREE_CACHE, getGridClassString, EventBus, FieldContextRegistryService, FunctionRegistryService, FORM_OPTIONS, evaluateCondition, FIELD_SIGNAL_CONTEXT, isRowField, isContainerField, isArrayField, hasChildFields, isSimplifiedArrayField, DynamicFormError, isStateLogicConfig, isDerivationLogicConfig, createDebouncedLogicFunction, createLogicFunction, ExpressionParser, requiresTreeValidation, applyValidator, isPageField, isGenericContainerField, isGroupField, getFieldValueHandling, normalizeFieldsArray, getNestedValue, extractStringDependencies, isCrossFieldStateLogic, extractExpressionDependencies, isCrossFieldSchema, keyBy, mapValues, isEqual, hasTargetProperty, ARRAY_CONTEXT, GROUP_CONTEXT, FORM_ID_PREFIX, baseFieldMapper, detectFormMode, validatePageNesting, FIELD_REGISTRY, assertNever, ADDON_TYPE_REGISTRY, deepMergeDefaults, derivedFromDeferred, createWarningTracker, RootFormRegistryService, DEFAULT_PROPS, DEFAULT_VALIDATION_MESSAGES, EXTERNAL_DATA, DEPRECATION_WARNING_TRACKER, createAddonActionRegistry, ADDON_ACTION_REGISTRY, HttpConditionCache, HTTP_CONDITION_CACHE, HttpConditionFunctionCacheService, AsyncConditionFunctionCacheService, DynamicValueFunctionCacheService, LogicFunctionCacheService, setupInitializationTracking, ComponentInitializedEvent, DF_FIELD_TEMPLATES, rowFieldMapper, groupFieldMapper, arrayFieldMapper, pageFieldMapper, textFieldMapper, containerFieldMapper, isWrapperTypeDefinition, ADDON_TYPE_COMPONENT_CACHE, ADDON_TYPE_DEFINITIONS, createDefaultDerivationLogConfig, NoopLogger, EMIT_FORM_VALUE_ON_EVENTS, DynamicTextPipe, ADDON_ACTION_HANDLERS } from '@ng-forge/dynamic-forms/internal';
4
+ import { DynamicFormLogger, WRAPPER_COMPONENT_CACHE, WRAPPER_REGISTRY, toReadonlyFieldTreeCached, writeToFieldValue, WRAPPER_AUTO_ASSOCIATIONS, DEFAULT_WRAPPERS, READONLY_FIELD_TREE_CACHE, getGridClassString, EventBus, FieldContextRegistryService, FunctionRegistryService, FORM_OPTIONS, evaluateCondition, FIELD_SIGNAL_CONTEXT, isRowField, isContainerField, isArrayField, hasChildFields, isSimplifiedArrayField, DynamicFormError, isStateLogicConfig, isDerivationLogicConfig, isFormStateCondition, createFormStateLogicFunction, createDebouncedLogicFunction, createLogicFunction, ExpressionParser, requiresTreeValidation, applyValidator, isPageField, isGenericContainerField, isGroupField, getFieldValueHandling, normalizeFieldsArray, getNestedValue, extractStringDependencies, isCrossFieldStateLogic, extractExpressionDependencies, isCrossFieldSchema, keyBy, mapValues, isEqual, hasTargetProperty, ARRAY_CONTEXT, GROUP_CONTEXT, FORM_ID_PREFIX, baseFieldMapper, detectFormMode, validatePageNesting, FIELD_REGISTRY, assertNever, ADDON_TYPE_REGISTRY, deepMergeDefaults, derivedFromDeferred, createWarningTracker, RootFormRegistryService, DEFAULT_PROPS, DEFAULT_VALIDATION_MESSAGES, EXTERNAL_DATA, DEPRECATION_WARNING_TRACKER, createAddonActionRegistry, ADDON_ACTION_REGISTRY, HttpConditionCache, HTTP_CONDITION_CACHE, HttpConditionFunctionCacheService, AsyncConditionFunctionCacheService, DynamicValueFunctionCacheService, LogicFunctionCacheService, setupInitializationTracking, ComponentInitializedEvent, DF_FIELD_TEMPLATES, rowFieldMapper, groupFieldMapper, arrayFieldMapper, pageFieldMapper, textFieldMapper, containerFieldMapper, isWrapperTypeDefinition, ADDON_TYPE_COMPONENT_CACHE, ADDON_TYPE_DEFINITIONS, createDefaultDerivationLogConfig, NoopLogger, EMIT_FORM_VALUE_ON_EVENTS, DynamicTextPipe, ADDON_ACTION_HANDLERS } from '@ng-forge/dynamic-forms/internal';
5
5
  import { takeUntilDestroyed, toObservable, toSignal, outputFromObservable } from '@angular/core/rxjs-interop';
6
6
  import { of, forkJoin, from, catchError, map, switchMap, isObservable, firstValueFrom, exhaustMap, EMPTY, debounceTime, distinctUntilChanged, tap, pipe, scan, Observable, Subject, concatMap, filter, take } from 'rxjs';
7
7
  import { submit, required, disabled, readonly, hidden, applyEach, applyWhenValue, applyWhen, apply, email, minLength, maxLength, pattern, min, max, schema, validateStandardSchema, validateTree, form, provideSignalFormsConfig } from '@angular/forms/signals';
@@ -832,11 +832,11 @@ class PageOrchestratorComponent {
832
832
  }
833
833
  }
834
834
  `, isInline: true, styles: [":host{display:block;position:relative;width:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [/* @ts-ignore */
835
- import('./ng-forge-dynamic-forms-page-field.component-Vvk3fYZp.mjs').then(m => m.default)], () => [/* @ts-ignore */
836
- import('./ng-forge-dynamic-forms-page-field.component-Vvk3fYZp.mjs').then(m => m.default)]] });
835
+ import('./ng-forge-dynamic-forms-page-field.component-amWhCdHL.mjs').then(m => m.default)], () => [/* @ts-ignore */
836
+ import('./ng-forge-dynamic-forms-page-field.component-amWhCdHL.mjs').then(m => m.default)]] });
837
837
  }
838
838
  i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "22.0.1", ngImport: i0, type: PageOrchestratorComponent, resolveDeferredDeps: () => [/* @ts-ignore */
839
- import('./ng-forge-dynamic-forms-page-field.component-Vvk3fYZp.mjs').then(m => m.default)], resolveMetadata: PageFieldComponent => ({ decorators: [{
839
+ import('./ng-forge-dynamic-forms-page-field.component-amWhCdHL.mjs').then(m => m.default)], resolveMetadata: PageFieldComponent => ({ decorators: [{
840
840
  type: Component,
841
841
  args: [{ selector: 'div[page-orchestrator]', imports: [PageFieldComponent], template: `
842
842
  @for (pageField of pageFields(); track pageField.key; let i = $index) {
@@ -1171,6 +1171,17 @@ function applyLogic(config, fieldPath) {
1171
1171
  if (typeof config.condition === 'boolean') {
1172
1172
  applyLogicFn(config.type, path, () => config.condition);
1173
1173
  return;
1174
+ }
1175
+ if (isFormStateCondition(config.condition)) {
1176
+ if (config.condition === 'formInvalid' || config.condition === 'pageInvalid') {
1177
+ const reason = config.condition === 'formInvalid'
1178
+ ? `it would create a validation cycle against the form's own validity`
1179
+ : `a value field has no page context for it to resolve against`;
1180
+ throw new DynamicFormError(`The '${config.condition}' form-state condition is not supported on value-field logic because ${reason}. ` +
1181
+ `Use 'formSubmitting', or apply this condition to a button or container instead.`);
1182
+ }
1183
+ applyLogicFn(config.type, path, createFormStateLogicFunction(config.condition));
1184
+ return;
1174
1185
  }
1175
1186
  const logicFn = trigger === 'debounced'
1176
1187
  ? createDebouncedLogicFunction(config.condition, debounceMs)
@@ -4094,7 +4105,7 @@ function createDerivationRenderGate() {
4094
4105
  if (!has || engine() !== 'idle')
4095
4106
  return;
4096
4107
  engine.set('loading');
4097
- pendingTasks.run(() => import('./ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-DWIWQjjZ.mjs')
4108
+ pendingTasks.run(() => import('./ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-CcoUnroD.mjs')
4098
4109
  .then(({ bootstrapDerivationOrchestrator }) => {
4099
4110
  runInInjectionContext(injector, () => bootstrapDerivationOrchestrator());
4100
4111
  engine.set('wired');
@@ -4593,28 +4604,28 @@ const DISPLAY_FIELD_TYPES_BASE = {
4593
4604
  const BUILT_IN_FIELDS = [
4594
4605
  {
4595
4606
  name: 'row',
4596
- loadComponent: () => import('./ng-forge-dynamic-forms-container-field.component-CSYhRBe6.mjs'),
4607
+ loadComponent: () => import('./ng-forge-dynamic-forms-container-field.component-DZfVWjiM.mjs'),
4597
4608
  mapper: rowFieldMapper,
4598
4609
  valueHandling: 'flatten',
4599
4610
  ...CONTAINER_FIELD_TYPES_BASE,
4600
4611
  },
4601
4612
  {
4602
4613
  name: 'group',
4603
- loadComponent: () => import('./ng-forge-dynamic-forms-group-field.component-DqhHzVsN.mjs'),
4614
+ loadComponent: () => import('./ng-forge-dynamic-forms-group-field.component-CPFgu3pM.mjs'),
4604
4615
  mapper: groupFieldMapper,
4605
4616
  valueHandling: 'include',
4606
4617
  ...CONTAINER_FIELD_TYPES_BASE,
4607
4618
  },
4608
4619
  {
4609
4620
  name: 'array',
4610
- loadComponent: () => import('./ng-forge-dynamic-forms-array-field.component-DCHrAcfd.mjs'),
4621
+ loadComponent: () => import('./ng-forge-dynamic-forms-array-field.component-CvjDqYyq.mjs'),
4611
4622
  mapper: arrayFieldMapper,
4612
4623
  valueHandling: 'include',
4613
4624
  ...CONTAINER_FIELD_TYPES_BASE,
4614
4625
  },
4615
4626
  {
4616
4627
  name: 'page',
4617
- loadComponent: () => import('./ng-forge-dynamic-forms-page-field.component-Vvk3fYZp.mjs'),
4628
+ loadComponent: () => import('./ng-forge-dynamic-forms-page-field.component-amWhCdHL.mjs'),
4618
4629
  mapper: pageFieldMapper,
4619
4630
  valueHandling: 'flatten',
4620
4631
  ...CONTAINER_FIELD_TYPES_BASE,
@@ -4632,7 +4643,7 @@ const BUILT_IN_FIELDS = [
4632
4643
  },
4633
4644
  {
4634
4645
  name: 'container',
4635
- loadComponent: () => import('./ng-forge-dynamic-forms-container-field.component-CSYhRBe6.mjs'),
4646
+ loadComponent: () => import('./ng-forge-dynamic-forms-container-field.component-DZfVWjiM.mjs'),
4636
4647
  mapper: containerFieldMapper,
4637
4648
  valueHandling: 'flatten',
4638
4649
  ...CONTAINER_FIELD_TYPES_BASE,
@@ -5036,4 +5047,4 @@ function arrayEvent(arrayKey) {
5036
5047
 
5037
5048
 
5038
5049
  export { withValueExclusionDefaults as $, ArrayItemRegistryService as A, BUILT_IN_FIELDS as B, CONTAINER_FIELD_PROCESSORS as C, DfFieldOutlet as D, EventDispatcher as E, FormStateManager as F, PrependArrayItemEvent as G, PreviousPageEvent as H, InsertArrayItemEvent as I, TextAddonComponent as J, arrayEvent as K, createWrappers as L, MoveArrayItemEvent as M, NextPageEvent as N, isWrappersBundle as O, PROPERTY_OVERRIDE_STORE as P, provideDynamicForm as Q, RemoveAtIndexEvent as R, ShiftArrayItemEvent as S, TemplateAddonComponent as T, sanitizeFormConfig as U, withAddonActions as V, withCustomAddon as W, withEventFormValue as X, withLegacyStatusClasses as Y, withLoggerConfig as Z, withValidationExecutionDefaults as _, isSameWrapperChain as a, wrapperProps as a0, createWrapperChainController as b, createFieldResolutionPipe as c, createSchemaFromFields as d, createHiddenSignal as e, createRenderReadySignal as f, getNormalizedArrayMetadata as g, getFieldDefaultValue as h, injectFieldRegistry as i, DEV_MODE as j, DEFAULT_DEBOUNCE_MS as k, DERIVATION_WARNING_TRACKER as l, mapFieldToInputs as m, DERIVATION_LOG_CONFIG as n, AppendArrayItemEvent as o, ComponentAddonComponent as p, ConsoleLogger as q, resolveWrappers as r, DfTemplate as s, traverseFieldsWithContext as t, DynamicForm as u, FormClearEvent as v, FormResetEvent as w, FormSubmitEvent as x, PageChangeEvent as y, PopArrayItemEvent as z };
5039
- //# sourceMappingURL=ng-forge-dynamic-forms-ng-forge-dynamic-forms-BYyZ_cuA.mjs.map
5050
+ //# sourceMappingURL=ng-forge-dynamic-forms-ng-forge-dynamic-forms-Du3V5AOb.mjs.map