@praxisui/dynamic-form 10.0.0-rc.4 → 10.0.0-rc.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisui/dynamic-form",
3
- "version": "10.0.0-rc.4",
3
+ "version": "10.0.0-rc.6",
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": "^21.0.0",
@@ -9,13 +9,13 @@
9
9
  "@angular/forms": "^21.0.0",
10
10
  "@angular/material": "^21.0.0",
11
11
  "@angular/router": "^21.0.0",
12
- "@praxisui/ai": "^10.0.0-rc.4",
13
- "@praxisui/dynamic-fields": "^10.0.0-rc.4",
14
- "@praxisui/metadata-editor": "^10.0.0-rc.4",
15
- "@praxisui/rich-content": "^10.0.0-rc.4",
16
- "@praxisui/settings-panel": "^10.0.0-rc.4",
17
- "@praxisui/visual-builder": "^10.0.0-rc.4",
18
- "@praxisui/core": "^10.0.0-rc.4",
12
+ "@praxisui/ai": "^10.0.0-rc.6",
13
+ "@praxisui/dynamic-fields": "^10.0.0-rc.6",
14
+ "@praxisui/metadata-editor": "^10.0.0-rc.6",
15
+ "@praxisui/rich-content": "^10.0.0-rc.6",
16
+ "@praxisui/settings-panel": "^10.0.0-rc.6",
17
+ "@praxisui/visual-builder": "^10.0.0-rc.6",
18
+ "@praxisui/core": "^10.0.0-rc.6",
19
19
  "rxjs": "^7.8.0"
20
20
  },
21
21
  "dependencies": {
@@ -73,6 +73,16 @@ Este documento e a referencia canonica da API JSON de praxis-dynamic-form.
73
73
  - Em replace-all, omitir a preferência remove o override anterior; `false` deve ser preservado. Não existe um quarto valor em `bindings.mode`.
74
74
  - O Page Builder projeta a preferência nos inputs do widget, preservando ausência de `config` em formulários schema-driven. No editor do runtime, Apply/Save também publicam `mode` e `presentationModeGlobal` em `configPatchChange.inputPatch`.
75
75
  - `contextSnapshot.presentation` continua reservado aos estilos (tipografia, densidade e alinhamento), editáveis nos dois caminhos pela aba Estilo da apresentação; não é o seletor de ativação. O Filter Form não oferece o seletor de exibição porque seu runtime não suporta apresentação.
76
+ - `presentationPreset` (`'corporate-dossier' | 'editorial-card' | 'compact-presentation' | 'default'`) define o preset visual nativo em modo apresentação (`view`). Pode ser configurado via `@Input() presentationPreset`, em `FormPresentationConfig.preset` / `FormPresentationConfig.presentationPreset`, em `FormConfigMetadata.presentationPreset`, ou por seção via `FormSection.presentationPreset` para sobrescrever o estilo de uma seção específica sem recorrer a regras CSS ad hoc com `::ng-deep`.
77
+ - `layout` (`FormLayoutOptions`) governa a organização e navegação estrutural das seções do formulário:
78
+ - `mode`: `'vertical' | 'tabs' | 'accordion'` (padrão `'vertical'`).
79
+ - `defaultTabId`: identificador da aba selecionada inicialmente em modo abas.
80
+ - `tabsAppearance`: estilo visual dos botões de abas (`'pills' | 'underline' | 'buttons'`, padrão `'pills'`).
81
+ - `tabs`: lista declarativa de abas (`FormLayoutTabItem` com `id`, `label`, `icon`, `sectionIds`, `badge`, `disabled`, `tooltip`). Quando omitido, o runtime auto-deriva deterministicamente 1 aba por seção visível.
82
+ - `accordionMulti`: quando `mode === 'accordion'`, permite manter múltiplos painéis expandidos simultaneamente (padrão `false`, fechando os outros ao abrir um).
83
+ - `hideSectionHeaderInTabs`: suprime cabeçalho redundante de seção dentro do painel da aba ativa (padrão `false`).
84
+ - Entradas `@Input() layoutMode` e `@Input() formLayout` expostas diretamente em `PraxisDynamicForm`.
85
+ - Saídas `@Output() tabChange` (emite ID) e `@Output() tabSelected` (emite objeto completo) emitidas na alternância de abas.
76
86
 
77
87
 
78
88
  - `DynamicFormAuthoringDocument` e o snapshot canonico completo de autoria de `praxis-dynamic-form`.
@@ -7,7 +7,8 @@ import { MatDialog } from '@angular/material/dialog';
7
7
  import { MatSnackBar } from '@angular/material/snack-bar';
8
8
  import { CdkDragStart, CdkDragMove, CdkDragEnd, CdkDragDrop } from '@angular/cdk/drag-drop';
9
9
  import * as _praxisui_core from '@praxisui/core';
10
- import { AsyncConfigStorage, FormLayout, FieldMetadata, FormLayoutRule, FormRuleTargetType as FormRuleTargetType$1, PraxisJsonLogicService, FormSection, FormRow, FormColumn, FormConfig, FormConfigWithSections, FormLayoutItem, ReactiveDeterminationDefinition, ReactiveDeterminationExecutionEvent, FormActionButton, AiCapability, BackConfig, FormPresentationConfig, EmptyStateTone, EmptyStateVariant, EmptyStateAlignment, EmptyStateDensity, EmptyStateIconContainer, RichBlockHostCapabilities, ApiEndpoint, ApiUrlEntry, DynamicFormLayoutPolicy, FormHooksLayout, EndpointConfig, FormSubmitEvent, FormReadyEvent, FormValueChangeEvent, FormPayloadPreviewEvent, SyncResult, FormInitializationError, LoadingState, FormCustomActionEvent, FormActionConfirmationEvent, RichContentDocument, JsonLogicRecord, GenericCrudService, ConnectionStorage, DynamicFormService, ErrorMessageService, SchemaNormalizerService, ComponentMetadataRegistry, GlobalConfigService, ComponentKeyService, LoadingOrchestrator, ApiUrlConfig, PraxisLoadingRenderer, FormHooksRegistry, FormHookPreset, LoggerService, EnterpriseRuntimeContextService, FormSectionHeaderAction, FormSectionHeaderConfig, FormConfigState, JsonLogicExpression, FormHelpPresentationConfig, GlobalActionCatalogEntry, PraxisRuntimeConditionalEffectRule, PraxisRuntimeGlobalActionEffect, SurfaceOpenPayload, GlobalActionField, PraxisEffectPolicy, FieldDefinition, ComponentDocMeta, Breakpoint, DomainRuleRequestOptions, DomainRuleService, DomainRuleMaterialization, TableConfig, SurfaceOpenActionEditorComponent, IconPickerService, GlobalActionRef, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest } from '@praxisui/core';
10
+ import { AsyncConfigStorage, FormLayout, FieldMetadata, FormLayoutRule, FormRuleTargetType as FormRuleTargetType$1, PraxisJsonLogicService, FormSection, FormRow, FormColumn, FormConfig, FormConfigWithSections, FormLayoutItem, ReactiveDeterminationDefinition, ReactiveDeterminationExecutionEvent, FormActionButton, DynamicFormMode, AiCapability, BackConfig, FormPresentationConfig, EmptyStateTone, EmptyStateVariant, EmptyStateAlignment, EmptyStateDensity, EmptyStateIconContainer, FormPresentationPreset, RichBlockHostCapabilities, ApiEndpoint, ApiUrlEntry, FormLayoutMode, FormLayoutOptions, DynamicFormLayoutPolicy, FormHooksLayout, EndpointConfig, FormSubmitEvent, FormReadyEvent, FormValueChangeEvent, FormPayloadPreviewEvent, SyncResult, FormInitializationError, LoadingState, FormCustomActionEvent, FormActionConfirmationEvent, FormLayoutTabItem, RichContentDocument, JsonLogicRecord, GenericCrudService, ConnectionStorage, DynamicFormService, ErrorMessageService, SchemaNormalizerService, ComponentMetadataRegistry, GlobalConfigService, ComponentKeyService, LoadingOrchestrator, ApiUrlConfig, PraxisLoadingRenderer, FormHooksRegistry, FormHookPreset, LoggerService, EnterpriseRuntimeContextService, FormLayoutTabsAppearance, FormSectionHeaderAction, FormSectionHeaderConfig, FormConfigState, JsonLogicExpression, FormHelpPresentationConfig, GlobalActionCatalogEntry, PraxisRuntimeConditionalEffectRule, PraxisRuntimeGlobalActionEffect, SurfaceOpenPayload, GlobalActionField, PraxisEffectPolicy, FieldDefinition, ComponentDocMeta, Breakpoint, DomainRuleRequestOptions, DomainRuleService, DomainRuleMaterialization, SchemaIdParams, CompiledDynamicFormSchema, TableConfig, SurfaceOpenActionEditorComponent, IconPickerService, GlobalActionRef, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest } from '@praxisui/core';
11
+ export { CompiledDynamicFormSchema, DynamicFormMode } from '@praxisui/core';
11
12
  import * as rxjs from 'rxjs';
12
13
  import { Observable, Subscription, BehaviorSubject } from 'rxjs';
13
14
  import { SettingsPanelService, SettingsValueProvider } from '@praxisui/settings-panel';
@@ -508,7 +509,7 @@ declare class PraxisFormActionsComponent implements OnChanges, OnDestroy {
508
509
  interface FormAiHost {
509
510
  config: FormConfig;
510
511
  form: FormGroup;
511
- mode?: 'create' | 'edit' | 'view';
512
+ mode?: DynamicFormMode;
512
513
  enableCustomization?: boolean;
513
514
  readonlyModeGlobal?: boolean | null;
514
515
  effectiveReadonly?: boolean;
@@ -572,7 +573,7 @@ interface EditorDiagnostic {
572
573
  message: string;
573
574
  path?: string;
574
575
  }
575
- type DynamicFormMode = 'create' | 'edit' | 'view';
576
+
576
577
  interface DynamicFormBindings {
577
578
  mode?: DynamicFormMode;
578
579
  /** Opt-in view placeholder; null explicitly disables it. */
@@ -661,6 +662,7 @@ interface DynamicFormConfigPatchChangeEvent {
661
662
  mode?: DynamicFormMode;
662
663
  presentationModeGlobal?: boolean | null;
663
664
  presentation?: DynamicFormPresentationSnapshot | null;
665
+ presentationPreset?: FormPresentationPreset;
664
666
  emptyState?: PraxisDynamicFormEmptyState | null;
665
667
  };
666
668
  }
@@ -769,6 +771,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
769
771
  private readonly resourceDiscovery;
770
772
  private readonly aiAssistantSessionEffect;
771
773
  private readonly globalActions;
774
+ private readonly optionRegistry;
772
775
  private readonly DEBUG;
773
776
  private effectiveActionsCache?;
774
777
  private effectiveActionsCacheBase?;
@@ -790,7 +793,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
790
793
  * merged context snapshot used to avoid re-binding on every change detection pass.
791
794
  */
792
795
  editorialContext: Record<string, unknown> | null;
793
- mode: 'create' | 'edit' | 'view';
796
+ mode: DynamicFormMode;
794
797
  config: FormConfig;
795
798
  private hostConfigInputProvided;
796
799
  /** Optional host-level overrides for the rendered form action bar. */
@@ -851,6 +854,16 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
851
854
  configPersistenceStrategy: 'local-first' | 'input-first';
852
855
  /** Optional layout to use instead of generated one */
853
856
  layout?: FormLayout;
857
+ /**
858
+ * Layout mode for organizing form sections: 'vertical' (default), 'tabs' or 'accordion'.
859
+ * Overrides config.layout.mode when specified.
860
+ */
861
+ layoutMode?: FormLayoutMode;
862
+ /**
863
+ * Layout configuration options for form sections (mode, tabs, defaultTabId, tabsAppearance, accordionMulti, etc.).
864
+ * Merged with and takes precedence over config.layout.
865
+ */
866
+ formLayout?: FormLayoutOptions;
854
867
  /** Metadata-driven layout preset used only when creating an initial config from schema. */
855
868
  generatedLayoutPreset: DynamicFormGeneratedLayoutPreset;
856
869
  /** Opt-in policy for schema-driven transient layout materialization. */
@@ -876,11 +889,38 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
876
889
  presentationModeGlobal: boolean | null;
877
890
  /** Projection of contextSnapshot.presentation; null clears authored style overrides. */
878
891
  presentation?: DynamicFormPresentationSnapshot | null;
892
+ /**
893
+ * Optional presentation preset applied when the form is rendered in presentation mode.
894
+ * Resolves styles for standard patterns: 'corporate-dossier', 'editorial-card', 'compact-presentation' or 'default'.
895
+ */
896
+ presentationPreset?: FormPresentationPreset;
897
+ /**
898
+ * Default visual appearance preset for sections when not explicitly configured at section level.
899
+ * Values: 'card' (default), 'plain' (borderless with divider support), 'step' (stepper badge layout).
900
+ */
901
+ sectionDefaultAppearance?: 'card' | 'plain' | 'step';
902
+ /**
903
+ * Global flag to control divider lines between plain/dossier sections.
904
+ * When true, renders a subtle separator line below each section (except the last).
905
+ */
906
+ sectionDivider?: boolean;
879
907
  visibleGlobal: boolean | null;
880
908
  fieldIconPolicy: 'all' | 'presentation-only' | 'none';
881
909
  /** Opt-in loader for shared domain rule materializations persisted outside FormConfig. */
882
910
  domainRules: PraxisDynamicFormDomainRulesOptions | boolean | null;
883
911
  get effectivePresentation(): boolean;
912
+ /** Normalizes presentation preset aliases and casing to canonical values. */
913
+ normalizePresentationPreset(preset?: string | null): FormPresentationPreset;
914
+ /** Resolved presentation preset for the form container. */
915
+ get effectivePresentationPreset(): FormPresentationPreset;
916
+ /** Resolved presentation preset for a specific section, allowing section-level override. */
917
+ getSectionPresentationPreset(section?: FormSection | null): FormPresentationPreset;
918
+ isCorporateDossierPreset(): boolean;
919
+ isEditorialCardPreset(): boolean;
920
+ isCompactPresentationPreset(): boolean;
921
+ isSectionCorporateDossier(section?: FormSection | null): boolean;
922
+ isSectionEditorialCard(section?: FormSection | null): boolean;
923
+ isSectionCompactPresentation(section?: FormSection | null): boolean;
884
924
  shouldShowContextEmptyState(): boolean;
885
925
  private hasResourceContext;
886
926
  private hasLocalRecordContext;
@@ -932,6 +972,12 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
932
972
  reactiveDeterminationExecuted: EventEmitter<ReactiveDeterminationExecutionEvent>;
933
973
  /** Emits only aggregate runtime state; no request or response payload is exposed. */
934
974
  reactiveDeterminationPendingChange: EventEmitter<boolean>;
975
+ /** Emitted when active tab changes in 'tabs' layout mode. */
976
+ tabChange: EventEmitter<string>;
977
+ /** Emitted when a tab is selected in 'tabs' layout mode. */
978
+ tabSelected: EventEmitter<FormLayoutTabItem>;
979
+ /** Active tab ID when effectiveLayoutMode === 'tabs'. */
980
+ activeTabId: string | null;
935
981
  private reactiveDeterminationPending;
936
982
  isLoading: boolean;
937
983
  submitting: boolean;
@@ -1219,6 +1265,18 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1219
1265
  private areRuleValuesEqual;
1220
1266
  private buildRuleApplicationTargetIndex;
1221
1267
  private setRuleApplicationDiagnostics;
1268
+ get effectiveLayoutMode(): FormLayoutMode;
1269
+ get effectiveTabsAppearance(): FormLayoutTabsAppearance;
1270
+ get effectiveAccordionMulti(): boolean;
1271
+ get effectiveHideSectionHeaderInTabs(): boolean;
1272
+ get effectiveTabs(): FormLayoutTabItem[];
1273
+ ensureActiveTabValid(): void;
1274
+ selectTab(tabId: string): void;
1275
+ isSectionInActiveTab(section?: FormSection): boolean;
1276
+ getTabErrorCount(tab: FormLayoutTabItem): number;
1277
+ getTabAriaControls(tab: FormLayoutTabItem): string;
1278
+ getTabIdForSection(section?: FormSection): string | null;
1279
+ shouldHideSectionHeader(section?: FormSection): boolean;
1222
1280
  isSectionCollapsed(section?: FormSection): boolean;
1223
1281
  isSectionCollapsible(section?: FormSection): boolean;
1224
1282
  private getSectionRuleProps;
@@ -1230,6 +1288,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1230
1288
  getSectionTitle(section: FormSection): string | undefined;
1231
1289
  getSectionDescription(section: FormSection): string | undefined;
1232
1290
  getSectionAppearance(section: FormSection): 'card' | 'plain' | 'step' | undefined;
1291
+ isSectionDividerEnabled(section: FormSection): boolean;
1233
1292
  getSectionStepLabel(section: FormSection): string | undefined;
1234
1293
  getSectionTitleColor(section: FormSection): string | undefined;
1235
1294
  getSectionDescriptionColor(section: FormSection): string | undefined;
@@ -1527,6 +1586,11 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1527
1586
  private tryBuildExplicitSchemaContext;
1528
1587
  private buildSchemaContext;
1529
1588
  private getSchemaWithCache;
1589
+ /**
1590
+ * Invalida o cache de schema compilado para a instância atual e força
1591
+ * novo carregamento na próxima requisição.
1592
+ */
1593
+ invalidateSchemaCache(): void;
1530
1594
  private isReactiveValidationEnabled;
1531
1595
  private getReactiveValidationDebounceMs;
1532
1596
  private waitForGlobalConfigReadyForSchema;
@@ -1535,7 +1599,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1535
1599
  private applyPresentationVars;
1536
1600
  private applyPresentationConfig;
1537
1601
  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, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
1538
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisDynamicForm, "praxis-dynamic-form", never, { "resourcePath": { "alias": "resourcePath"; "required": false; }; "resourceId": { "alias": "resourceId"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "emptyState": { "alias": "emptyState"; "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; }; "readUrl": { "alias": "readUrl"; "required": false; }; "submitUrl": { "alias": "submitUrl"; "required": false; }; "submitMethod": { "alias": "submitMethod"; "required": false; }; "submitIdempotencyKey": { "alias": "submitIdempotencyKey"; "required": false; }; "submitCorrelationId": { "alias": "submitCorrelationId"; "required": false; }; "submitResourceVersion": { "alias": "submitResourceVersion"; "required": false; }; "submitResourceVersionTargetResourceKey": { "alias": "submitResourceVersionTargetResourceKey"; "required": false; }; "submitResourceVersionTargetIdField": { "alias": "submitResourceVersionTargetIdField"; "required": false; }; "responseSchemaUrl": { "alias": "responseSchemaUrl"; "required": false; }; "apiEndpointKey": { "alias": "apiEndpointKey"; "required": false; }; "apiUrlEntry": { "alias": "apiUrlEntry"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "showAiAssistant": { "alias": "showAiAssistant"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "generatedLayoutPreset": { "alias": "generatedLayoutPreset"; "required": false; }; "layoutPolicy": { "alias": "layoutPolicy"; "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; }; "presentation": { "alias": "presentation"; "required": false; }; "visibleGlobal": { "alias": "visibleGlobal"; "required": false; }; "fieldIconPolicy": { "alias": "fieldIconPolicy"; "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"; "payloadPreviewChange": "payloadPreviewChange"; "syncCompleted": "syncCompleted"; "initializationError": "initializationError"; "loadingStateChange": "loadingStateChange"; "enableCustomizationChange": "enableCustomizationChange"; "customAction": "customAction"; "actionConfirmation": "actionConfirmation"; "schemaStatusChange": "schemaStatusChange"; "fieldRenderError": "fieldRenderError"; "ruleDiagnosticsChange": "ruleDiagnosticsChange"; "reactiveDeterminationExecuted": "reactiveDeterminationExecuted"; "reactiveDeterminationPendingChange": "reactiveDeterminationPendingChange"; }, never, never, true, never>;
1602
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisDynamicForm, "praxis-dynamic-form", never, { "resourcePath": { "alias": "resourcePath"; "required": false; }; "resourceId": { "alias": "resourceId"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "emptyState": { "alias": "emptyState"; "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; }; "readUrl": { "alias": "readUrl"; "required": false; }; "submitUrl": { "alias": "submitUrl"; "required": false; }; "submitMethod": { "alias": "submitMethod"; "required": false; }; "submitIdempotencyKey": { "alias": "submitIdempotencyKey"; "required": false; }; "submitCorrelationId": { "alias": "submitCorrelationId"; "required": false; }; "submitResourceVersion": { "alias": "submitResourceVersion"; "required": false; }; "submitResourceVersionTargetResourceKey": { "alias": "submitResourceVersionTargetResourceKey"; "required": false; }; "submitResourceVersionTargetIdField": { "alias": "submitResourceVersionTargetIdField"; "required": false; }; "responseSchemaUrl": { "alias": "responseSchemaUrl"; "required": false; }; "apiEndpointKey": { "alias": "apiEndpointKey"; "required": false; }; "apiUrlEntry": { "alias": "apiUrlEntry"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "showAiAssistant": { "alias": "showAiAssistant"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "layoutMode": { "alias": "layoutMode"; "required": false; }; "formLayout": { "alias": "formLayout"; "required": false; }; "generatedLayoutPreset": { "alias": "generatedLayoutPreset"; "required": false; }; "layoutPolicy": { "alias": "layoutPolicy"; "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; }; "presentation": { "alias": "presentation"; "required": false; }; "presentationPreset": { "alias": "presentationPreset"; "required": false; }; "sectionDefaultAppearance": { "alias": "sectionDefaultAppearance"; "required": false; }; "sectionDivider": { "alias": "sectionDivider"; "required": false; }; "visibleGlobal": { "alias": "visibleGlobal"; "required": false; }; "fieldIconPolicy": { "alias": "fieldIconPolicy"; "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"; "payloadPreviewChange": "payloadPreviewChange"; "syncCompleted": "syncCompleted"; "initializationError": "initializationError"; "loadingStateChange": "loadingStateChange"; "enableCustomizationChange": "enableCustomizationChange"; "customAction": "customAction"; "actionConfirmation": "actionConfirmation"; "schemaStatusChange": "schemaStatusChange"; "fieldRenderError": "fieldRenderError"; "ruleDiagnosticsChange": "ruleDiagnosticsChange"; "reactiveDeterminationExecuted": "reactiveDeterminationExecuted"; "reactiveDeterminationPendingChange": "reactiveDeterminationPendingChange"; "tabChange": "tabChange"; "tabSelected": "tabSelected"; }, never, never, true, never>;
1539
1603
  }
1540
1604
 
1541
1605
  declare class FormConfigService {
@@ -1718,7 +1782,7 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1718
1782
  private includeBackConfigBlock;
1719
1783
  formId?: string;
1720
1784
  componentKeyId?: string;
1721
- inputMode: 'create' | 'edit' | 'view';
1785
+ inputMode: DynamicFormMode;
1722
1786
  private includeBindingsBlock;
1723
1787
  private readonly editorMode;
1724
1788
  get isPresentationMode(): boolean;
@@ -2409,6 +2473,30 @@ declare class DomainRuleFormRulesService {
2409
2473
  static ɵprov: i0.ɵɵInjectableDeclaration<DomainRuleFormRulesService>;
2410
2474
  }
2411
2475
 
2476
+ /**
2477
+ * DynamicFormSchemaCacheService
2478
+ * ------------------------------
2479
+ * Serviço canônico de conveniência em `@praxisui/dynamic-form` para orquestração
2480
+ * de cache de primeiro nível (L1) de esquemas OpenAPI compilados (Issue #2).
2481
+ *
2482
+ * Delega o ciclo de vida do cache em memória ao DynamicFormService (@praxisui/core),
2483
+ * garantindo consistência referencial entre módulos e transições de abas em 0ms.
2484
+ */
2485
+ declare class DynamicFormSchemaCacheService {
2486
+ private readonly dynamicFormService;
2487
+ buildCacheKey(params: SchemaIdParams & {
2488
+ baseUrl?: string;
2489
+ }): string;
2490
+ get(cacheKey: string): CompiledDynamicFormSchema | undefined;
2491
+ set(cacheKey: string, compiled: CompiledDynamicFormSchema, customTtlMs?: number): void;
2492
+ has(cacheKey: string): boolean;
2493
+ invalidate(cacheKey?: string): void;
2494
+ clear(): void;
2495
+ size(): number;
2496
+ static ɵfac: i0.ɵɵFactoryDeclaration<DynamicFormSchemaCacheService, never>;
2497
+ static ɵprov: i0.ɵɵInjectableDeclaration<DynamicFormSchemaCacheService>;
2498
+ }
2499
+
2412
2500
  declare class Ergadm00034CompactPresentationExampleComponent {
2413
2501
  private readonly dynamicLayout;
2414
2502
  readonly legacyFrequencyExample: _praxisui_dynamic_form.Ergadm00034CompactPresentationExample;
@@ -3046,5 +3134,5 @@ declare const PRAXIS_FILTER_FORM_AUTHORING_PROJECTION: {
3046
3134
  };
3047
3135
  declare const PRAXIS_FILTER_FORM_AUTHORING_MANIFEST: _praxisui_core.ComponentAuthoringManifest;
3048
3136
 
3049
- export { ActionsEditorComponent, CORPORATE_PRESENTATION_FORMAT_GALLERY, CanvasStateService, CanvasToolbarComponent, ColumnEditorComponent, DomainRuleFormRulesService, DynamicFormLayoutService, ERGADM00034_COMPACT_PRESENTATION_EXAMPLE, Ergadm00034CompactPresentationExampleComponent, 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_AUTHORING_MANIFEST, PRAXIS_FILTER_FORM_AUTHORING_PROJECTION, PRAXIS_FILTER_FORM_COMPONENT_METADATA, PraxisDynamicForm, PraxisDynamicFormConfigEditor, PraxisDynamicFormWidgetConfigEditor, PraxisFilterForm, PraxisFilterFormWidgetConfigEditor, PraxisFormActionsComponent, RowConfiguratorComponent, RowEditorComponent, SETTINGS_PANEL_DYNAMIC_FORM_PROVIDER, SectionEditorComponent, TASK_PRESETS, applyVisibilityRules, buildCorporatePresentationFormatGalleryConfig, buildDynamicFormApplyPlan, buildDynamicFormRuleAuthoringContext, buildErgadm00034CompactPresentationConfig, createDynamicFormAuthoringDocument, formLayoutRulesToBuilderState, getFormAiCatalog, getFormCapabilities, getFormEnum, isRuleSatisfied, normalizeDateArrays, normalizeDynamicFormAuthoringDocument, parseLegacyOrDynamicFormDocument, providePraxisDynamicFormMetadata, providePraxisFilterFormMetadata, provideSettingsPanelDynamicForm, ruleBuilderStateToFormLayoutRules, serializeDynamicFormAuthoringDocument, stripLegacyFieldMetadata, toCanonicalDynamicFormConfig, validateDynamicFormAuthoringDocument, validateDynamicFormAuthoringInput };
3050
- export type { CanvasElement, CanvasElementType, CanvasPathPart, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, CorporatePresentationExample, DomainRuleFormRulesRequestOptions, DomainRuleMaterializedFormLayoutRule, DynamicFieldRenderErrorEvent, DynamicFormAllowedRuleProperties, DynamicFormApplyPlan, DynamicFormAuthoringDocument, DynamicFormBindings, DynamicFormConfigPatchChangeEvent, DynamicFormContextSnapshot, DynamicFormGeneratedLayoutPreset, DynamicFormMode, DynamicFormPresentationSnapshot, DynamicFormProjectionContext, DynamicFormResolvedRuntimeContract, DynamicFormRuleAuthoringContext, DynamicFormRuleAuthoringField, DynamicFormRuleAuthoringTarget, DynamicFormRuleAuthoringTargetDetails, DynamicFormRuleAuthoringTargets, DynamicFormRuleAuthoringVisualBlockNode, DynamicFormRuleTargetType, DynamicFormRuntimeContext, DynamicFormRuntimeValueSource, DynamicFormSchemaPrefsSnapshot, DynamicFormValidationContext, EditorDiagnostic, EditorDocument, Ergadm00034CompactPresentationExample, Ergadm00034LegacyFrequencyRow, FieldPath, FieldPathContainer, FieldPathWithIndex, Capability as FormComponentCapability, CapabilityCatalog as FormComponentCapabilityCatalog, CapabilityCategory as FormComponentCapabilityCategory, ValueKind as FormComponentValueKind, FormConfigLike, GenerateFormConfigFromMetadataOptions, IdPath, InsertLocalFieldOptions, InsertLocalFieldResult, JsonEditorEvent, JsonValidationResult, LayoutChange, LayoutResult, LocalFieldInsertionDiagnostic, LocalFieldInsertionDiagnosticCode, Operation, Path, PathWithIndex, PraxisDynamicFormDomainRulesOptions, PraxisDynamicFormEmptyState, PraxisDynamicFormWidgetEditorInputs, PraxisDynamicFormWidgetEditorValue, PraxisFilterFormWidgetEditorInputs, PraxisFilterFormWidgetEditorValue, PraxisFormActionEvent, RemovePolicy, RuleApplicationContext, RuleApplicationDiagnostic, RuleApplicationDiagnosticCode, RuleApplicationResult, RuleApplicationTargetIndex, RuleApplicationTargetType, ValidationReport, ValueKind$1 as ValueKind };
3137
+ export { ActionsEditorComponent, CORPORATE_PRESENTATION_FORMAT_GALLERY, CanvasStateService, CanvasToolbarComponent, ColumnEditorComponent, DomainRuleFormRulesService, DynamicFormLayoutService, DynamicFormSchemaCacheService, ERGADM00034_COMPACT_PRESENTATION_EXAMPLE, Ergadm00034CompactPresentationExampleComponent, 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_AUTHORING_MANIFEST, PRAXIS_FILTER_FORM_AUTHORING_PROJECTION, PRAXIS_FILTER_FORM_COMPONENT_METADATA, PraxisDynamicForm, PraxisDynamicFormConfigEditor, PraxisDynamicFormWidgetConfigEditor, PraxisFilterForm, PraxisFilterFormWidgetConfigEditor, PraxisFormActionsComponent, RowConfiguratorComponent, RowEditorComponent, SETTINGS_PANEL_DYNAMIC_FORM_PROVIDER, SectionEditorComponent, TASK_PRESETS, applyVisibilityRules, buildCorporatePresentationFormatGalleryConfig, buildDynamicFormApplyPlan, buildDynamicFormRuleAuthoringContext, buildErgadm00034CompactPresentationConfig, createDynamicFormAuthoringDocument, formLayoutRulesToBuilderState, getFormAiCatalog, getFormCapabilities, getFormEnum, isRuleSatisfied, normalizeDateArrays, normalizeDynamicFormAuthoringDocument, parseLegacyOrDynamicFormDocument, providePraxisDynamicFormMetadata, providePraxisFilterFormMetadata, provideSettingsPanelDynamicForm, ruleBuilderStateToFormLayoutRules, serializeDynamicFormAuthoringDocument, stripLegacyFieldMetadata, toCanonicalDynamicFormConfig, validateDynamicFormAuthoringDocument, validateDynamicFormAuthoringInput };
3138
+ export type { CanvasElement, CanvasElementType, CanvasPathPart, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, CorporatePresentationExample, DomainRuleFormRulesRequestOptions, DomainRuleMaterializedFormLayoutRule, DynamicFieldRenderErrorEvent, DynamicFormAllowedRuleProperties, DynamicFormApplyPlan, DynamicFormAuthoringDocument, DynamicFormBindings, DynamicFormConfigPatchChangeEvent, DynamicFormContextSnapshot, DynamicFormGeneratedLayoutPreset, DynamicFormPresentationSnapshot, DynamicFormProjectionContext, DynamicFormResolvedRuntimeContract, DynamicFormRuleAuthoringContext, DynamicFormRuleAuthoringField, DynamicFormRuleAuthoringTarget, DynamicFormRuleAuthoringTargetDetails, DynamicFormRuleAuthoringTargets, DynamicFormRuleAuthoringVisualBlockNode, DynamicFormRuleTargetType, DynamicFormRuntimeContext, DynamicFormRuntimeValueSource, DynamicFormSchemaPrefsSnapshot, DynamicFormValidationContext, EditorDiagnostic, EditorDocument, Ergadm00034CompactPresentationExample, Ergadm00034LegacyFrequencyRow, FieldPath, FieldPathContainer, FieldPathWithIndex, Capability as FormComponentCapability, CapabilityCatalog as FormComponentCapabilityCatalog, CapabilityCategory as FormComponentCapabilityCategory, ValueKind as FormComponentValueKind, FormConfigLike, GenerateFormConfigFromMetadataOptions, IdPath, InsertLocalFieldOptions, InsertLocalFieldResult, JsonEditorEvent, JsonValidationResult, LayoutChange, LayoutResult, LocalFieldInsertionDiagnostic, LocalFieldInsertionDiagnosticCode, Operation, Path, PathWithIndex, PraxisDynamicFormDomainRulesOptions, PraxisDynamicFormEmptyState, PraxisDynamicFormWidgetEditorInputs, PraxisDynamicFormWidgetEditorValue, PraxisFilterFormWidgetEditorInputs, PraxisFilterFormWidgetEditorValue, PraxisFormActionEvent, RemovePolicy, RuleApplicationContext, RuleApplicationDiagnostic, RuleApplicationDiagnosticCode, RuleApplicationResult, RuleApplicationTargetIndex, RuleApplicationTargetType, ValidationReport, ValueKind$1 as ValueKind };