@praxisui/dynamic-form 8.0.0-beta.25 → 8.0.0-beta.27

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.
package/index.d.ts CHANGED
@@ -478,8 +478,19 @@ declare class FormAiAdapter extends BaseAiAdapter<FormConfig> {
478
478
  private applyConfig;
479
479
  private smartMergeFormConfig;
480
480
  private extractIncomingRules;
481
+ private extractComponentEditOperationPatch;
482
+ private applyComponentEditOperation;
483
+ private applyLocalFieldAdd;
484
+ private applyFieldMetadataPatch;
485
+ private appendFieldToLayout;
486
+ private resolveFieldName;
487
+ private matchesText;
488
+ private normalizeSearchText;
489
+ private toBoolean;
490
+ private toSubmitPolicy;
481
491
  private extractVisualBlockGuidanceOperationRule;
482
492
  private coerceSingleOperationResponse;
493
+ private coerceOperationResponses;
483
494
  private operationInputRecord;
484
495
  private normalizeVisualBlockGuidanceOperationInput;
485
496
  private visualBlockGuidanceParamsToRule;
@@ -588,6 +599,11 @@ interface DynamicFormApplyPlan {
588
599
  diagnostics: EditorDiagnostic[];
589
600
  }
590
601
 
602
+ interface DynamicFormConfigPatchChangeEvent {
603
+ inputPatch: {
604
+ config: FormConfig;
605
+ };
606
+ }
591
607
  interface PraxisDynamicFormDomainRulesOptions {
592
608
  enabled?: boolean;
593
609
  targetArtifactKey?: string | null;
@@ -732,6 +748,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
732
748
  /** Identifier for persisting layouts */
733
749
  formId?: string;
734
750
  componentInstanceId?: string;
751
+ configPersistenceStrategy: 'local-first' | 'input-first';
735
752
  /** Optional layout to use instead of generated one */
736
753
  layout?: FormLayout;
737
754
  /** Optional navigation back config (from CRUD host) */
@@ -771,6 +788,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
771
788
  formCancel: EventEmitter<void>;
772
789
  formReset: EventEmitter<void>;
773
790
  configChange: EventEmitter<FormConfig>;
791
+ configPatchChange: EventEmitter<DynamicFormConfigPatchChangeEvent>;
774
792
  formReady: EventEmitter<FormReadyEvent>;
775
793
  valueChange: EventEmitter<FormValueChangeEvent>;
776
794
  syncCompleted: EventEmitter<SyncResult>;
@@ -942,6 +960,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
942
960
  private hasSchemaBackedRuntime;
943
961
  private hasRenderableConfig;
944
962
  private initializeStandaloneConfig;
963
+ private initializeDisconnectedEmptyState;
945
964
  private reloadForModeChange;
946
965
  ngOnInit(): void;
947
966
  ngOnChanges(changes: SimpleChanges): void;
@@ -955,6 +974,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
955
974
  private createDefaultConfig;
956
975
  private createConfigFromHostConfig;
957
976
  private reconcileLoadedConfigWithServerSchema;
977
+ private hostConfigHasAuthoredLocalFieldsNotInLocalConfig;
958
978
  private syncWithServer;
959
979
  private loadEntity;
960
980
  private buildFormFromConfig;
@@ -1279,6 +1299,8 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1279
1299
  private captureCurrentSchemaPrefsSnapshot;
1280
1300
  private executeDynamicFormEditorApplyPlan;
1281
1301
  private attachRuntimeMetadataToDynamicFormConfig;
1302
+ private emitConfigPatchChange;
1303
+ private cloneFormConfigForPatch;
1282
1304
  private parsePresentationCssNumber;
1283
1305
  private clearDynamicFormEditorPersistence;
1284
1306
  private clearStoredPresentationSnapshots;
@@ -1298,7 +1320,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1298
1320
  private applyPresentationVars;
1299
1321
  private applyPresentationConfig;
1300
1322
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisDynamicForm, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
1301
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisDynamicForm, "praxis-dynamic-form", never, { "resourcePath": { "alias": "resourcePath"; "required": false; }; "resourceId": { "alias": "resourceId"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "editorialContext": { "alias": "editorialContext"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "config": { "alias": "config"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "schemaSource": { "alias": "schemaSource"; "required": false; }; "schemaUrl": { "alias": "schemaUrl"; "required": false; }; "submitUrl": { "alias": "submitUrl"; "required": false; }; "submitMethod": { "alias": "submitMethod"; "required": false; }; "responseSchemaUrl": { "alias": "responseSchemaUrl"; "required": false; }; "apiEndpointKey": { "alias": "apiEndpointKey"; "required": false; }; "apiUrlEntry": { "alias": "apiUrlEntry"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "backConfig": { "alias": "backConfig"; "required": false; }; "hooks": { "alias": "hooks"; "required": false; }; "removeEmptyContainersOnSave": { "alias": "removeEmptyContainersOnSave"; "required": false; }; "reactiveValidation": { "alias": "reactiveValidation"; "required": false; }; "reactiveValidationDebounceMs": { "alias": "reactiveValidationDebounceMs"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "readonlyModeGlobal": { "alias": "readonlyModeGlobal"; "required": false; }; "disabledModeGlobal": { "alias": "disabledModeGlobal"; "required": false; }; "presentationModeGlobal": { "alias": "presentationModeGlobal"; "required": false; }; "visibleGlobal": { "alias": "visibleGlobal"; "required": false; }; "domainRules": { "alias": "domainRules"; "required": false; }; "customEndpoints": { "alias": "customEndpoints"; "required": false; }; }, { "formSubmit": "formSubmit"; "formCancel": "formCancel"; "formReset": "formReset"; "configChange": "configChange"; "formReady": "formReady"; "valueChange": "valueChange"; "syncCompleted": "syncCompleted"; "initializationError": "initializationError"; "loadingStateChange": "loadingStateChange"; "enableCustomizationChange": "enableCustomizationChange"; "customAction": "customAction"; "actionConfirmation": "actionConfirmation"; "schemaStatusChange": "schemaStatusChange"; "fieldRenderError": "fieldRenderError"; "ruleDiagnosticsChange": "ruleDiagnosticsChange"; }, never, never, true, never>;
1323
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisDynamicForm, "praxis-dynamic-form", never, { "resourcePath": { "alias": "resourcePath"; "required": false; }; "resourceId": { "alias": "resourceId"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "editorialContext": { "alias": "editorialContext"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "config": { "alias": "config"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "schemaSource": { "alias": "schemaSource"; "required": false; }; "schemaUrl": { "alias": "schemaUrl"; "required": false; }; "submitUrl": { "alias": "submitUrl"; "required": false; }; "submitMethod": { "alias": "submitMethod"; "required": false; }; "responseSchemaUrl": { "alias": "responseSchemaUrl"; "required": false; }; "apiEndpointKey": { "alias": "apiEndpointKey"; "required": false; }; "apiUrlEntry": { "alias": "apiUrlEntry"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "backConfig": { "alias": "backConfig"; "required": false; }; "hooks": { "alias": "hooks"; "required": false; }; "removeEmptyContainersOnSave": { "alias": "removeEmptyContainersOnSave"; "required": false; }; "reactiveValidation": { "alias": "reactiveValidation"; "required": false; }; "reactiveValidationDebounceMs": { "alias": "reactiveValidationDebounceMs"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "readonlyModeGlobal": { "alias": "readonlyModeGlobal"; "required": false; }; "disabledModeGlobal": { "alias": "disabledModeGlobal"; "required": false; }; "presentationModeGlobal": { "alias": "presentationModeGlobal"; "required": false; }; "visibleGlobal": { "alias": "visibleGlobal"; "required": false; }; "domainRules": { "alias": "domainRules"; "required": false; }; "customEndpoints": { "alias": "customEndpoints"; "required": false; }; }, { "formSubmit": "formSubmit"; "formCancel": "formCancel"; "formReset": "formReset"; "configChange": "configChange"; "configPatchChange": "configPatchChange"; "formReady": "formReady"; "valueChange": "valueChange"; "syncCompleted": "syncCompleted"; "initializationError": "initializationError"; "loadingStateChange": "loadingStateChange"; "enableCustomizationChange": "enableCustomizationChange"; "customAction": "customAction"; "actionConfirmation": "actionConfirmation"; "schemaStatusChange": "schemaStatusChange"; "fieldRenderError": "fieldRenderError"; "ruleDiagnosticsChange": "ruleDiagnosticsChange"; }, never, never, true, never>;
1302
1324
  }
1303
1325
 
1304
1326
  declare class FormConfigService {
@@ -2595,4 +2617,4 @@ declare function buildDynamicFormRuleAuthoringContext(config: Pick<FormConfig, '
2595
2617
  declare const PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST: ComponentAuthoringManifest;
2596
2618
 
2597
2619
  export { ActionsEditorComponent, CanvasStateService, CanvasToolbarComponent, ColumnEditorComponent, DomainRuleFormRulesService, DynamicFormLayoutService, FORM_AI_CAPABILITIES, FORM_COMPONENT_AI_CAPABILITIES, FieldConfiguratorComponent, FieldEditorComponent, FormConfigService, FormContextService, FormLayoutService, FormRulesService, JsonConfigEditorComponent, LayoutColorToken, LayoutEditorComponent, LayoutPrefsService, PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST, PRAXIS_DYNAMIC_FORM_COMPONENT_METADATA, PRAXIS_FILTER_FORM_COMPONENT_METADATA, PraxisDynamicForm, PraxisDynamicFormConfigEditor, PraxisDynamicFormWidgetConfigEditor, PraxisFilterForm, PraxisFilterFormWidgetConfigEditor, PraxisFormActionsComponent, RowConfiguratorComponent, RowEditorComponent, SETTINGS_PANEL_DYNAMIC_FORM_PROVIDER, SectionEditorComponent, TASK_PRESETS, applyVisibilityRules, buildDynamicFormApplyPlan, buildDynamicFormRuleAuthoringContext, createDynamicFormAuthoringDocument, formLayoutRulesToBuilderState, getFormAiCatalog, getFormCapabilities, getFormEnum, isRuleSatisfied, normalizeDateArrays, normalizeDynamicFormAuthoringDocument, parseLegacyOrDynamicFormDocument, providePraxisDynamicFormMetadata, providePraxisFilterFormMetadata, provideSettingsPanelDynamicForm, ruleBuilderStateToFormLayoutRules, serializeDynamicFormAuthoringDocument, stripLegacyFieldMetadata, toCanonicalDynamicFormConfig, validateDynamicFormAuthoringDocument, validateDynamicFormAuthoringInput };
2598
- export type { CanvasElement, CanvasElementType, CanvasPathPart, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, DomainRuleFormRulesRequestOptions, DomainRuleMaterializedFormLayoutRule, DynamicFieldRenderErrorEvent, DynamicFormAllowedRuleProperties, DynamicFormApplyPlan, DynamicFormAuthoringDocument, DynamicFormBindings, DynamicFormContextSnapshot, DynamicFormMode, DynamicFormPresentationSnapshot, DynamicFormProjectionContext, DynamicFormResolvedRuntimeContract, DynamicFormRuleAuthoringContext, DynamicFormRuleAuthoringField, DynamicFormRuleAuthoringTarget, DynamicFormRuleAuthoringTargetDetails, DynamicFormRuleAuthoringTargets, DynamicFormRuleAuthoringVisualBlockNode, DynamicFormRuleTargetType, DynamicFormRuntimeContext, DynamicFormRuntimeValueSource, DynamicFormSchemaPrefsSnapshot, DynamicFormValidationContext, EditorDiagnostic, EditorDocument, FieldPath, FieldPathContainer, FieldPathWithIndex, Capability as FormComponentCapability, CapabilityCatalog as FormComponentCapabilityCatalog, CapabilityCategory as FormComponentCapabilityCategory, ValueKind as FormComponentValueKind, FormConfigLike, IdPath, InsertLocalFieldOptions, InsertLocalFieldResult, JsonEditorEvent, JsonValidationResult, LayoutChange, LayoutResult, LocalFieldInsertionDiagnostic, LocalFieldInsertionDiagnosticCode, Operation, Path, PathWithIndex, PraxisDynamicFormDomainRulesOptions, PraxisDynamicFormWidgetEditorInputs, PraxisDynamicFormWidgetEditorValue, PraxisFilterFormWidgetEditorInputs, PraxisFilterFormWidgetEditorValue, PraxisFormActionEvent, RemovePolicy, RuleApplicationContext, RuleApplicationDiagnostic, RuleApplicationDiagnosticCode, RuleApplicationResult, RuleApplicationTargetIndex, RuleApplicationTargetType, ValidationReport, ValueKind$1 as ValueKind };
2620
+ export type { CanvasElement, CanvasElementType, CanvasPathPart, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, DomainRuleFormRulesRequestOptions, DomainRuleMaterializedFormLayoutRule, DynamicFieldRenderErrorEvent, DynamicFormAllowedRuleProperties, DynamicFormApplyPlan, DynamicFormAuthoringDocument, DynamicFormBindings, DynamicFormConfigPatchChangeEvent, DynamicFormContextSnapshot, DynamicFormMode, DynamicFormPresentationSnapshot, DynamicFormProjectionContext, DynamicFormResolvedRuntimeContract, DynamicFormRuleAuthoringContext, DynamicFormRuleAuthoringField, DynamicFormRuleAuthoringTarget, DynamicFormRuleAuthoringTargetDetails, DynamicFormRuleAuthoringTargets, DynamicFormRuleAuthoringVisualBlockNode, DynamicFormRuleTargetType, DynamicFormRuntimeContext, DynamicFormRuntimeValueSource, DynamicFormSchemaPrefsSnapshot, DynamicFormValidationContext, EditorDiagnostic, EditorDocument, FieldPath, FieldPathContainer, FieldPathWithIndex, Capability as FormComponentCapability, CapabilityCatalog as FormComponentCapabilityCatalog, CapabilityCategory as FormComponentCapabilityCategory, ValueKind as FormComponentValueKind, FormConfigLike, IdPath, InsertLocalFieldOptions, InsertLocalFieldResult, JsonEditorEvent, JsonValidationResult, LayoutChange, LayoutResult, LocalFieldInsertionDiagnostic, LocalFieldInsertionDiagnosticCode, Operation, Path, PathWithIndex, PraxisDynamicFormDomainRulesOptions, PraxisDynamicFormWidgetEditorInputs, PraxisDynamicFormWidgetEditorValue, PraxisFilterFormWidgetEditorInputs, PraxisFilterFormWidgetEditorValue, PraxisFormActionEvent, RemovePolicy, RuleApplicationContext, RuleApplicationDiagnostic, RuleApplicationDiagnosticCode, RuleApplicationResult, RuleApplicationTargetIndex, RuleApplicationTargetType, ValidationReport, ValueKind$1 as ValueKind };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisui/dynamic-form",
3
- "version": "8.0.0-beta.25",
3
+ "version": "8.0.0-beta.27",
4
4
  "description": "Angular dynamic form engine for Praxis UI: metadata-driven forms, hooks, and services integrating @praxisui/* packages.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^20.0.0",
@@ -9,13 +9,13 @@
9
9
  "@angular/forms": "^20.0.0",
10
10
  "@angular/material": "^20.0.0",
11
11
  "@angular/router": "^20.0.0",
12
- "@praxisui/ai": "^8.0.0-beta.25",
13
- "@praxisui/dynamic-fields": "^8.0.0-beta.25",
14
- "@praxisui/metadata-editor": "^8.0.0-beta.25",
15
- "@praxisui/rich-content": "^8.0.0-beta.25",
16
- "@praxisui/settings-panel": "^8.0.0-beta.25",
17
- "@praxisui/visual-builder": "^8.0.0-beta.25",
18
- "@praxisui/core": "^8.0.0-beta.25",
12
+ "@praxisui/ai": "^8.0.0-beta.27",
13
+ "@praxisui/dynamic-fields": "^8.0.0-beta.27",
14
+ "@praxisui/metadata-editor": "^8.0.0-beta.27",
15
+ "@praxisui/rich-content": "^8.0.0-beta.27",
16
+ "@praxisui/settings-panel": "^8.0.0-beta.27",
17
+ "@praxisui/visual-builder": "^8.0.0-beta.27",
18
+ "@praxisui/core": "^8.0.0-beta.27",
19
19
  "rxjs": "^7.8.0"
20
20
  },
21
21
  "dependencies": {
@@ -379,6 +379,7 @@ Limites de segurança:
379
379
  | `formCancel` | `void` | Acao cancelar. | Partial | Preservado da documentação anterior. |
380
380
  | `formReset` | `void` | Acao reset. | Partial | Preservado da documentação anterior. |
381
381
  | `configChange` | `FormConfig` | Alteracoes de layout/config durante edicao. | Partial | Preservado da documentação anterior. |
382
+ | `configPatchChange` | `{ inputPatch: { config: FormConfig } }` | Alteracoes autoradas de configuracao que devem ser persistidas pelo host. | Partial | Contrato aditivo para hosts genericos sem alterar o payload legado de `configChange`. |
382
383
  | `formReady` | `FormReadyEvent` | Form pronto para interacao. | Partial | Preservado da documentação anterior. |
383
384
  | `valueChange` | `FormValueChangeEvent` | Alteracao de valor no form runtime. | Partial | Preservado da documentação anterior. |
384
385
  | `syncCompleted` | `SyncResult` | Sincronizacao de schema/config concluida. | Partial | Preservado da documentação anterior. |
@@ -646,6 +647,7 @@ Validado em 2026-04-23 contra `praxis-api-quickstart` publicado no Render com
646
647
  | `formCancel` | `void` | Acao cancelar. |
647
648
  | `formReset` | `void` | Acao reset. |
648
649
  | `configChange` | `FormConfig` | Alteracoes de layout/config durante edicao. |
650
+ | `configPatchChange` | `{ inputPatch: { config: FormConfig } }` | Alteracoes autoradas de configuracao que devem ser persistidas pelo host. |
649
651
  | `formReady` | `FormReadyEvent` | Form pronto para interacao. |
650
652
  | `valueChange` | `FormValueChangeEvent` | Alteracao de valor no form runtime. |
651
653
  | `syncCompleted` | `SyncResult` | Sincronizacao de schema/config concluida. |
@@ -871,6 +873,7 @@ O runtime emite `target-not-found` quando uma regra aponta para `section`, `row`
871
873
  | `formCancel` | `void` | Acao cancelar. | Partial | Preservado da documentação anterior. |
872
874
  | `formReset` | `void` | Acao reset. | Partial | Preservado da documentação anterior. |
873
875
  | `configChange` | `FormConfig` | Alteracoes de layout/config durante edicao. | Partial | Preservado da documentação anterior. |
876
+ | `configPatchChange` | `{ inputPatch: { config: FormConfig } }` | Alteracoes autoradas de configuracao que devem ser persistidas pelo host. | Partial | Contrato aditivo para hosts genericos sem alterar o payload legado de `configChange`. |
874
877
  | `formReady` | `FormReadyEvent` | Form pronto para interacao. | Partial | Preservado da documentação anterior. |
875
878
  | `valueChange` | `FormValueChangeEvent` | Alteracao de valor no form runtime. | Partial | Preservado da documentação anterior. |
876
879
  | `syncCompleted` | `SyncResult` | Sincronizacao de schema/config concluida. | Partial | Preservado da documentação anterior. |