@praxisui/dynamic-form 9.0.0-beta.2 → 9.0.0-beta.21

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": "9.0.0-beta.2",
3
+ "version": "9.0.0-beta.21",
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": "^9.0.0-beta.2",
13
- "@praxisui/dynamic-fields": "^9.0.0-beta.2",
14
- "@praxisui/metadata-editor": "^9.0.0-beta.2",
15
- "@praxisui/rich-content": "^9.0.0-beta.2",
16
- "@praxisui/settings-panel": "^9.0.0-beta.2",
17
- "@praxisui/visual-builder": "^9.0.0-beta.2",
18
- "@praxisui/core": "^9.0.0-beta.2",
12
+ "@praxisui/ai": "^9.0.0-beta.21",
13
+ "@praxisui/dynamic-fields": "^9.0.0-beta.21",
14
+ "@praxisui/metadata-editor": "^9.0.0-beta.21",
15
+ "@praxisui/rich-content": "^9.0.0-beta.21",
16
+ "@praxisui/settings-panel": "^9.0.0-beta.21",
17
+ "@praxisui/visual-builder": "^9.0.0-beta.21",
18
+ "@praxisui/core": "^9.0.0-beta.21",
19
19
  "rxjs": "^7.8.0"
20
20
  },
21
21
  "dependencies": {
@@ -26,17 +26,11 @@
26
26
  "publishConfig": {
27
27
  "access": "public"
28
28
  },
29
- "repository": {
30
- "type": "git",
31
- "url": "git+https://github.com/codexrodrigues/praxis-ui-angular.git"
32
- },
33
- "homepage": "https://praxisui.dev",
34
- "bugs": {
35
- "url": "https://github.com/codexrodrigues/praxis-ui-angular/issues"
36
- },
29
+ "homepage": "https://praxisui.dev/components/dynamic-form",
37
30
  "keywords": [
38
31
  "angular",
39
32
  "praxisui",
33
+ "praxis",
40
34
  "dynamic-form",
41
35
  "metadata",
42
36
  "schema-driven",
@@ -53,7 +47,10 @@
53
47
  ".": {
54
48
  "types": "./types/praxisui-dynamic-form.d.ts",
55
49
  "default": "./fesm2022/praxisui-dynamic-form.mjs"
50
+ },
51
+ "./ai/component-registry.json": {
52
+ "default": "./ai/component-registry.json"
56
53
  }
57
54
  },
58
55
  "type": "module"
59
- }
56
+ }
@@ -58,7 +58,9 @@ Este documento e a referencia canonica da API JSON de praxis-dynamic-form-config
58
58
  - O editor visual e o editor JSON operam sobre `DynamicFormAuthoringDocument`.
59
59
  - O editor JSON aceita apenas o envelope canônico; payloads legados pertencem aos caminhos de compatibilidade do runtime.
60
60
  - `Apply` e `Save` emitem um snapshot canonico completo com semantica `replace-all`.
61
- - Em comandos condicionais, o editor visual autora `globalAction.payload` estruturado; `globalAction.payloadExpr` fica reservado ao JSON avancado e e preservado no round-trip quando nenhum payload estruturado e definido.
61
+ - Em comandos condicionais, o editor visual autora o efeito primario `effects[0].globalAction.payload` estruturado; `globalAction.payloadExpr` fica reservado ao JSON avancado e e preservado no round-trip quando nenhum payload estruturado e definido.
62
+ - Regras com multiplos `effects` continuam JSON-avancadas para autoria completa; ao editar o efeito primario pela UI, efeitos secundarios existentes sao preservados para evitar perda silenciosa.
63
+ - Em `formCommandRules[].policy`, o editor visual autora os campos comuns `distinct`, `distinctBy` e `runOnInitialEvaluation`; campos avancados vindos do JSON, como `trigger`, `debounceMs`, `errorPolicy` e `missingValuePolicy`, sao preservados no preview/apply, mas nao sao expostos como controles visuais completos.
62
64
  - `config`, `bindings` e `contextSnapshot` substituem integralmente o estado autoral anterior.
63
65
  - Ausencia de `bindings.mode` limpa o binding persistido e restaura o modo default efetivo do host.
64
66
  - Ausencia de `contextSnapshot.backConfig`, `contextSnapshot.presentation` ou `contextSnapshot.schemaPrefs` significa remocao explicita do bloco ausente.
@@ -277,7 +277,7 @@ Extensoes de runtime no editor (fora do contrato canonico):
277
277
  - A ação "Campos da API" reinsere apenas campos já existentes em `fieldMetadata[]`; ela grava `kind: 'field'` em `items[]` e atualiza `fields[]` somente como projeção derivada.
278
278
  - Estado colapsado da palette é persistido em `LayoutPrefsService`.
279
279
  - Blocos visuais:
280
- - A ação "Adicionar bloco visual" oferece presets de authoring internos para texto, aviso, separador, card informativo, `callout`, `keyValueList`, `recordSummary`, `disclosure` e `emptyState`.
280
+ - A ação "Adicionar bloco visual" oferece presets de authoring internos para texto, aviso, separador, card informativo, `callout`, `keyValueList`, prova de contrato, `recordSummary`, `disclosure` e `emptyState`.
281
281
  - Cada preset gera `RichContentDocument` válido em item `kind: 'richContent'`; presets não criam novo `kind`, não escrevem em `fieldMetadata[]` e não entram no payload de submit.
282
282
  - Presets como `emptyState` já podem semear `actionButton`, e o runtime do formulário encaminha essas ações pela mesma trilha de `customAction/globalAction` usada pelos demais CTAs do componente.
283
283
  - O guia didático completo está em `projects/praxis-dynamic-form/docs/layout-items-visual-blocks.md`.
@@ -576,6 +576,7 @@ No ecossistema Praxis, ele funciona tanto como runtime final quanto como superfi
576
576
  | `formId` | `string \| undefined` | `undefined` | Active | Chave de persistencia e identidade logica. |
577
577
  | `componentInstanceId` | `string \| undefined` | `undefined` | Active | Isola instancias com mesmo `formId`. |
578
578
  | `layout` | `FormLayout \| undefined` | `undefined` | Partial | Funciona como override estrutural em parte dos fluxos de layout/editor. |
579
+ | `generatedLayoutPreset` | `'default' \| 'compactPresentation'` | `'default'` | Active | Usado apenas ao criar a configuracao inicial a partir de schema/metadata; nao reprocessa layouts persistidos ou authorados. |
579
580
  | `backConfig` | `BackConfig \| undefined` | `undefined` | Active | Integra retorno/navegacao no painel de configuracao; `confirmOnDirty` tem precedencia sobre `behavior.confirmOnUnsavedChanges` no cancel. |
580
581
  | `hooks` | `FormHooksLayout \| undefined` | `undefined` | Active | Override direto de hooks sobre `config.hooks`. |
581
582
  | `customEndpoints` | `EndpointConfig` | `{}` | Active | Override de endpoints no CRUD service interno. |
@@ -7,13 +7,14 @@ 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, FormLayoutItem, FormActionButton, AiCapability, BackConfig, RichBlockHostCapabilities, ApiEndpoint, ApiUrlEntry, FormHooksLayout, EndpointConfig, FormSubmitEvent, FormReadyEvent, FormValueChangeEvent, SyncResult, FormInitializationError, LoadingState, FormCustomActionEvent, FormActionConfirmationEvent, RichContentDocument, JsonLogicRecord, GenericCrudService, ConnectionStorage, DynamicFormService, ErrorMessageService, SchemaNormalizerService, ComponentMetadataRegistry, GlobalConfigService, ComponentKeyService, LoadingOrchestrator, ApiUrlConfig, PraxisLoadingRenderer, FormHooksRegistry, FormHookPreset, LoggerService, FormSectionHeaderAction, FormSectionHeaderConfig, FormConfigState, JsonLogicExpression, GlobalActionCatalogEntry, PraxisRuntimeConditionalEffectRule, PraxisRuntimeGlobalActionEffect, GlobalActionField, FieldDefinition, ComponentDocMeta, Breakpoint, DomainRuleRequestOptions, DomainRuleService, DomainRuleMaterialization, IconPickerService, GlobalActionRef, SurfaceOpenPayload, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest } from '@praxisui/core';
10
+ import { AsyncConfigStorage, FormLayout, FieldMetadata, FormLayoutRule, FormRuleTargetType as FormRuleTargetType$1, PraxisJsonLogicService, FormSection, FormRow, FormColumn, FormConfig, FormLayoutItem, FormActionButton, AiCapability, BackConfig, RichBlockHostCapabilities, ApiEndpoint, ApiUrlEntry, FormHooksLayout, EndpointConfig, FormSubmitEvent, FormReadyEvent, FormValueChangeEvent, SyncResult, FormInitializationError, LoadingState, FormCustomActionEvent, FormActionConfirmationEvent, RichContentDocument, JsonLogicRecord, GenericCrudService, ConnectionStorage, DynamicFormService, ErrorMessageService, SchemaNormalizerService, ComponentMetadataRegistry, GlobalConfigService, ComponentKeyService, LoadingOrchestrator, ApiUrlConfig, PraxisLoadingRenderer, FormHooksRegistry, FormHookPreset, LoggerService, FormSectionHeaderAction, FormSectionHeaderConfig, FormConfigState, JsonLogicExpression, GlobalActionCatalogEntry, PraxisRuntimeConditionalEffectRule, PraxisRuntimeGlobalActionEffect, SurfaceOpenPayload, GlobalActionField, PraxisEffectPolicy, FieldDefinition, ComponentDocMeta, Breakpoint, DomainRuleRequestOptions, DomainRuleService, DomainRuleMaterialization, IconPickerService, GlobalActionRef, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest } from '@praxisui/core';
11
11
  import * as rxjs from 'rxjs';
12
12
  import { Observable, BehaviorSubject } from 'rxjs';
13
13
  import { SettingsPanelService, SettingsValueProvider } from '@praxisui/settings-panel';
14
14
  import { BaseAiAdapter, AiResponseCompileResult, PatchResult, PraxisAssistantShellLayout, PraxisAssistantTurnViewState, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage } from '@praxisui/ai';
15
15
  import { KeyboardShortcutService } from '@praxisui/dynamic-fields';
16
16
  import { RuleBuilderConfig, RuleBuilderState } from '@praxisui/visual-builder';
17
+ import * as _praxisui_dynamic_form from '@praxisui/dynamic-form';
17
18
 
18
19
  declare class FormLayoutService {
19
20
  private storage?;
@@ -200,16 +201,19 @@ interface InsertLocalFieldResult extends LayoutResult {
200
201
  applied: boolean;
201
202
  diagnostics: LocalFieldInsertionDiagnostic[];
202
203
  }
204
+ type DynamicFormGeneratedLayoutPreset = 'default' | 'compactPresentation';
205
+ interface GenerateFormConfigFromMetadataOptions {
206
+ fieldsPerRow?: number;
207
+ defaultSectionTitle?: string;
208
+ layoutPreset?: DynamicFormGeneratedLayoutPreset;
209
+ }
203
210
  declare class DynamicFormLayoutService {
204
211
  private readonly changesSubject;
205
212
  readonly changes$: rxjs.Observable<LayoutChange>;
206
213
  private emit;
207
214
  normalizeConfig(config: FormConfig): FormConfig;
208
215
  validateConfig(config: FormConfig): ValidationReport;
209
- generateFormConfigFromMetadata(fields: FieldMetadata[], options?: {
210
- fieldsPerRow?: number;
211
- defaultSectionTitle?: string;
212
- }): FormConfig;
216
+ generateFormConfigFromMetadata(fields: FieldMetadata[], options?: GenerateFormConfigFromMetadataOptions): FormConfig;
213
217
  getElementPath(config: FormConfig, element: HTMLElement): CanvasPathPart[];
214
218
  updateElement(config: FormConfig, path: CanvasPathPart[], updatedData: any, options?: {
215
219
  correlationId?: string;
@@ -218,6 +222,11 @@ declare class DynamicFormLayoutService {
218
222
  private resolvePath;
219
223
  resolvePathByIds(config: FormConfig, ids: IdPath): FieldPath;
220
224
  private createRowsFromFields;
225
+ private createCompactPresentationRowsFromFields;
226
+ private resolveCompactPresentationSpan;
227
+ private inferCompactPresentationSpan;
228
+ private clampGridSpan;
229
+ private resolveGroupOrder;
221
230
  private genId;
222
231
  private capitalizeFirstLetter;
223
232
  private assertIndex;
@@ -757,6 +766,8 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
757
766
  configPersistenceStrategy: 'local-first' | 'input-first';
758
767
  /** Optional layout to use instead of generated one */
759
768
  layout?: FormLayout;
769
+ /** Metadata-driven layout preset used only when creating an initial config from schema. */
770
+ generatedLayoutPreset: DynamicFormGeneratedLayoutPreset;
760
771
  /** Optional navigation back config (from CRUD host) */
761
772
  backConfig?: BackConfig;
762
773
  /** Optional direct hooks declaration for testing/demo (overrides config.hooks) */
@@ -1338,7 +1349,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1338
1349
  private applyPresentationVars;
1339
1350
  private applyPresentationConfig;
1340
1351
  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; }]>;
1341
- 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; }; "readUrl": { "alias": "readUrl"; "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; }; "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; }; "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>;
1352
+ 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; }; "readUrl": { "alias": "readUrl"; "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; }; "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; }; "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>;
1342
1353
  }
1343
1354
 
1344
1355
  declare class FormConfigService {
@@ -1393,6 +1404,7 @@ declare class JsonConfigEditorComponent implements OnInit, OnDestroy {
1393
1404
  diagnostics: EditorDiagnostic[];
1394
1405
  private destroy$;
1395
1406
  private jsonTextChanges$;
1407
+ private readonly i18n;
1396
1408
  constructor(cdr: ChangeDetectorRef, configService: FormConfigService);
1397
1409
  ngOnInit(): void;
1398
1410
  ngOnDestroy(): void;
@@ -1412,6 +1424,9 @@ declare class JsonConfigEditorComponent implements OnInit, OnDestroy {
1412
1424
  private updateValidationState;
1413
1425
  insertHooksTemplate(): void;
1414
1426
  enableReactiveValidation(): void;
1427
+ tx(key: string, fallback: string, params?: Record<string, string | number | boolean | null | undefined>): string;
1428
+ private resolveI18n;
1429
+ private interpolateFallback;
1415
1430
  static ɵfac: i0.ɵɵFactoryDeclaration<JsonConfigEditorComponent, never>;
1416
1431
  static ɵcmp: i0.ɵɵComponentDeclaration<JsonConfigEditorComponent, "form-json-config-editor", never, { "config": { "alias": "config"; "required": false; }; "document": { "alias": "document"; "required": false; }; }, { "configChange": "configChange"; "documentChange": "documentChange"; "validationChange": "validationChange"; "editorEvent": "editorEvent"; }, never, never, true, never>;
1417
1432
  }
@@ -1448,6 +1463,12 @@ interface FormRuleDiagnostics {
1448
1463
  runtimeOnlyReason?: string;
1449
1464
  }
1450
1465
 
1466
+ type ConfigEditorTabKey = 'general' | 'schema' | 'layout' | 'hooks' | 'presentation' | 'behavior' | 'hints' | 'actions' | 'rules' | 'cascades' | 'messages' | 'navigation' | 'json';
1467
+ interface ConfigEditorTabOption {
1468
+ key: ConfigEditorTabKey;
1469
+ index: number;
1470
+ label: string;
1471
+ }
1451
1472
  interface CommandRulePreviewModel {
1452
1473
  state: 'ready' | 'invalid';
1453
1474
  executionMode: 'preview-only';
@@ -1456,11 +1477,11 @@ interface CommandRulePreviewModel {
1456
1477
  payload?: unknown;
1457
1478
  payloadExpr?: string;
1458
1479
  policy: {
1459
- trigger: 'on-condition-enter';
1480
+ trigger: NonNullable<PraxisEffectPolicy['trigger']>;
1460
1481
  distinct: boolean;
1461
1482
  distinctBy?: string;
1462
1483
  runOnInitialEvaluation?: boolean;
1463
- };
1484
+ } & Omit<PraxisEffectPolicy, 'trigger' | 'distinct' | 'distinctBy' | 'runOnInitialEvaluation'>;
1464
1485
  diagnostics: string[];
1465
1486
  }
1466
1487
  declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, OnInit, OnDestroy {
@@ -1473,6 +1494,7 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1473
1494
  ruleBuilderConfig: RuleBuilderConfig;
1474
1495
  ruleBuilderState?: RuleBuilderState;
1475
1496
  currentRules: FormLayoutRule[];
1497
+ selectedConfigTabIndex: number;
1476
1498
  selectedCommandRuleId: string;
1477
1499
  commandRuleCondition: JsonLogicExpression | null;
1478
1500
  commandRuleConditionJson: string;
@@ -1482,6 +1504,8 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1482
1504
  commandRuleDistinct: boolean;
1483
1505
  commandRuleDistinctBy: string;
1484
1506
  commandRuleRunOnInitialEvaluation: boolean;
1507
+ private commandRulePolicyTrigger;
1508
+ private commandRuleAdvancedPolicy;
1485
1509
  commandRuleAuthoringError: string | null;
1486
1510
  commandRulePayloadFieldErrors: Record<string, string>;
1487
1511
  ruleDiagnostics: FormRuleDiagnostics[];
@@ -1507,10 +1531,10 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1507
1531
  private readonly editorMode;
1508
1532
  isPresentationMode: boolean;
1509
1533
  truncatePreview: boolean;
1510
- previewItems: {
1534
+ previewItems: Array<{
1511
1535
  label: string;
1512
1536
  value: string;
1513
- }[];
1537
+ }>;
1514
1538
  presentationPrefs: {
1515
1539
  labelPosition: 'above' | 'left';
1516
1540
  labelFontSize?: number | null;
@@ -1538,13 +1562,19 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1538
1562
  private hasProcessedInitialRuleState;
1539
1563
  private jsonEditorIsValid;
1540
1564
  private globalActionValidationIssues;
1565
+ private readonly i18n;
1541
1566
  readonly globalActionCatalog: GlobalActionCatalogEntry[];
1542
1567
  isDirty$: BehaviorSubject<boolean>;
1543
1568
  isValid$: BehaviorSubject<boolean>;
1544
1569
  isBusy$: BehaviorSubject<boolean>;
1545
1570
  private lastRulesSignature;
1571
+ private pendingRulePropertiesStateSignature;
1546
1572
  private readonly DEBUG;
1547
1573
  private debugLog;
1574
+ get configTabOptions(): ConfigEditorTabOption[];
1575
+ configTabLabel(key: ConfigEditorTabKey): string;
1576
+ private buildPresentationPreviewItems;
1577
+ getConfigTabIndex(key: ConfigEditorTabKey): number;
1548
1578
  constructor(storage: AsyncConfigStorage, configService: FormConfigService, settingsPanel: SettingsPanelService, cdr: ChangeDetectorRef, globalActionCatalogSource?: ReadonlyArray<GlobalActionCatalogEntry[]>, injectedData?: any);
1549
1579
  ngOnInit(): void;
1550
1580
  reset(): void;
@@ -1571,6 +1601,7 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1571
1601
  applyCommandRule(): void;
1572
1602
  deleteCommandRule(): void;
1573
1603
  get commandRuleActionSchema(): _praxisui_core.GlobalActionUiSchema | undefined;
1604
+ get commandRuleSurfaceOpenPayload(): SurfaceOpenPayload;
1574
1605
  shouldShowCommandActionField(field: GlobalActionField): boolean;
1575
1606
  isCommandActionFieldRequired(field: GlobalActionField): boolean;
1576
1607
  isCommandActionFieldMissing(field: GlobalActionField): boolean;
@@ -1579,12 +1610,15 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1579
1610
  get commandRulePreview(): CommandRulePreviewModel;
1580
1611
  getCommandActionFieldValue(field: GlobalActionField): any;
1581
1612
  onCommandActionFieldChange(field: GlobalActionField, value: any): void;
1613
+ onCommandSurfaceOpenPayloadChange(payload: SurfaceOpenPayload): void;
1582
1614
  private initializeCommandRuleEditor;
1583
1615
  private loadCommandRuleEditor;
1616
+ private buildCommandRulePolicy;
1584
1617
  private updateCommandRules;
1585
1618
  private parseCommandRuleCondition;
1586
1619
  private parseOptionalJson;
1587
1620
  private parseCommandPayloadObject;
1621
+ private getCommandRuleErrorMessage;
1588
1622
  private collectCommandActionFieldValues;
1589
1623
  private setCommandActionFieldError;
1590
1624
  private clearCommandActionFieldError;
@@ -1596,6 +1630,8 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1596
1630
  getRuleStatusTone(diagnostic: FormRuleDiagnostics): 'ok' | 'warn' | 'error';
1597
1631
  canAcceptPendingLlmRule(diagnostic: FormRuleDiagnostics): boolean;
1598
1632
  canApplyRulePropertyFix(diagnostic: FormRuleDiagnostics): boolean;
1633
+ canOpenRuleJsonReview(diagnostic: FormRuleDiagnostics): boolean;
1634
+ openRuleJsonReview(ruleId: string): void;
1599
1635
  applyRulePropertyFix(ruleId: string): void;
1600
1636
  acceptPendingLlmRule(ruleId: string): void;
1601
1637
  getRuleDiagnosticDetails(diagnostic: FormRuleDiagnostics): string[];
@@ -1641,6 +1677,9 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1641
1677
  private toPresentationSnapshot;
1642
1678
  private toSchemaPrefsSnapshot;
1643
1679
  private toBackConfigSnapshot;
1680
+ tx(key: string, fallback: string, params?: Record<string, string | number | boolean | null | undefined>): string;
1681
+ private resolveI18n;
1682
+ private interpolateFallback;
1644
1683
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisDynamicFormConfigEditor, [null, null, null, null, { optional: true; }, { optional: true; }]>;
1645
1684
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisDynamicFormConfigEditor, "praxis-dynamic-form-config-editor", never, {}, {}, never, never, true, never>;
1646
1685
  }
@@ -1748,7 +1787,7 @@ declare class LayoutPrefsService {
1748
1787
  static ɵprov: i0.ɵɵInjectableDeclaration<LayoutPrefsService>;
1749
1788
  }
1750
1789
 
1751
- type VisualBlockPresetId = 'text' | 'notice' | 'divider' | 'infoCard' | 'callout' | 'keyValueList' | 'recordSummary' | 'lookupCard' | 'disclosure' | 'emptyState';
1790
+ type VisualBlockPresetId = 'text' | 'notice' | 'divider' | 'infoCard' | 'callout' | 'keyValueList' | 'contractProof' | 'recordSummary' | 'lookupCard' | 'disclosure' | 'emptyState';
1752
1791
  interface VisualBlockPreset {
1753
1792
  id: VisualBlockPresetId;
1754
1793
  labelKey: string;
@@ -1953,6 +1992,7 @@ declare class RowConfiguratorComponent implements OnChanges {
1953
1992
  activeDropIndex: number | null;
1954
1993
  protected readonly visualBlockPresets: readonly VisualBlockPreset[];
1955
1994
  private readonly i18n;
1995
+ private readonly dialog;
1956
1996
  private hoverTimer;
1957
1997
  protected readonly breakpoints: Breakpoint[];
1958
1998
  previewBreakpoint: Breakpoint;
@@ -2105,6 +2145,49 @@ declare class DomainRuleFormRulesService {
2105
2145
  static ɵprov: i0.ɵɵInjectableDeclaration<DomainRuleFormRulesService>;
2106
2146
  }
2107
2147
 
2148
+ declare class Ergadm00034CompactPresentationExampleComponent {
2149
+ private readonly dynamicLayout;
2150
+ readonly legacyFrequencyExample: _praxisui_dynamic_form.Ergadm00034CompactPresentationExample;
2151
+ readonly legacyFrequencyPresentationConfig: _praxisui_core.FormConfig;
2152
+ readonly legacyFrequencyInitialValue: Record<string, unknown>;
2153
+ readonly legacyFrequencyRows: readonly _praxisui_dynamic_form.Ergadm00034LegacyFrequencyRow[];
2154
+ readonly corporatePresentationExample: _praxisui_dynamic_form.CorporatePresentationExample;
2155
+ readonly corporatePresentationConfig: _praxisui_core.FormConfig;
2156
+ readonly corporatePresentationInitialValue: Record<string, unknown>;
2157
+ static ɵfac: i0.ɵɵFactoryDeclaration<Ergadm00034CompactPresentationExampleComponent, never>;
2158
+ static ɵcmp: i0.ɵɵComponentDeclaration<Ergadm00034CompactPresentationExampleComponent, "praxis-ergadm00034-compact-presentation-example", never, {}, {}, never, never, true, never>;
2159
+ }
2160
+
2161
+ interface Ergadm00034LegacyFrequencyRow {
2162
+ tipo: string;
2163
+ codigo: string;
2164
+ nome: string;
2165
+ preenchimento: string;
2166
+ marcador: string;
2167
+ selected?: boolean;
2168
+ }
2169
+ interface Ergadm00034CompactPresentationExample {
2170
+ readonly id: 'ergadm00034-compact-presentation';
2171
+ readonly title: string;
2172
+ readonly resourcePath: string;
2173
+ readonly layoutPreset: 'compactPresentation';
2174
+ readonly rows: readonly Ergadm00034LegacyFrequencyRow[];
2175
+ readonly metadata: readonly FieldMetadata[];
2176
+ readonly initialValue: Record<string, unknown>;
2177
+ }
2178
+ interface CorporatePresentationExample {
2179
+ readonly id: 'corporate-presentation-format-gallery';
2180
+ readonly title: string;
2181
+ readonly resourcePath: string;
2182
+ readonly layoutPreset: 'compactPresentation';
2183
+ readonly metadata: readonly FieldMetadata[];
2184
+ readonly initialValue: Record<string, unknown>;
2185
+ }
2186
+ declare const ERGADM00034_COMPACT_PRESENTATION_EXAMPLE: Ergadm00034CompactPresentationExample;
2187
+ declare const CORPORATE_PRESENTATION_FORMAT_GALLERY: CorporatePresentationExample;
2188
+ declare function buildErgadm00034CompactPresentationConfig(layoutService: DynamicFormLayoutService): FormConfig;
2189
+ declare function buildCorporatePresentationFormatGalleryConfig(layoutService: DynamicFormLayoutService): FormConfig;
2190
+
2108
2191
  declare function isRuleSatisfied(rule: FormLayoutRule, data: unknown): boolean;
2109
2192
  /**
2110
2193
  * Applies all visibility rules to the provided data and
@@ -2171,6 +2254,7 @@ declare class CanvasToolbarComponent {
2171
2254
  /** Estado interno para animar o fechamento. */
2172
2255
  closing: boolean;
2173
2256
  private readonly closeAnimMs;
2257
+ private readonly i18n;
2174
2258
  toggleReadonly: EventEmitter<void>;
2175
2259
  toggleRequired: EventEmitter<void>;
2176
2260
  toggleHidden: EventEmitter<void>;
@@ -2188,6 +2272,7 @@ declare class CanvasToolbarComponent {
2188
2272
  onGlobalKeydown(ev: KeyboardEvent): void;
2189
2273
  /** Inicia animação de saída e emite o evento ao final. */
2190
2274
  triggerClose(): void;
2275
+ tx(key: string, fallback: string, params?: Record<string, string | number>): string;
2191
2276
  static ɵfac: i0.ɵɵFactoryDeclaration<CanvasToolbarComponent, never>;
2192
2277
  static ɵcmp: i0.ɵɵComponentDeclaration<CanvasToolbarComponent, "praxis-canvas-toolbar", never, { "selectedElement": { "alias": "selectedElement"; "required": false; }; }, { "editMetadata": "editMetadata"; "delete": "delete"; "moveUp": "moveUp"; "moveDown": "moveDown"; "selectPath": "selectPath"; "requestClose": "requestClose"; "toggleReadonly": "toggleReadonly"; "toggleRequired": "toggleRequired"; "toggleHidden": "toggleHidden"; "toggleDisabled": "toggleDisabled"; }, never, never, true, never>;
2193
2278
  }
@@ -2345,6 +2430,7 @@ declare class RowEditorComponent implements OnInit, OnDestroy, SettingsValueProv
2345
2430
  isBusy$: BehaviorSubject<boolean>;
2346
2431
  private destroy$;
2347
2432
  private initialValueSig;
2433
+ private readonly i18n;
2348
2434
  constructor(fb: FormBuilder, data: {
2349
2435
  row: EditableFormRow;
2350
2436
  });
@@ -2353,10 +2439,12 @@ declare class RowEditorComponent implements OnInit, OnDestroy, SettingsValueProv
2353
2439
  getSettingsValue(): any;
2354
2440
  displayValue(value: number | null | undefined, fallback: string): string | number;
2355
2441
  displayPxValue(value: number | null | undefined): string;
2442
+ visibilityStateLabel(bp: Breakpoint): string;
2356
2443
  private setColumns;
2357
2444
  applyPreset(preset: 'full' | 'half' | 'thirds' | 'thirdTwoThird' | 'twoThirdThird' | 'autoBalance'): void;
2358
2445
  private resolveHiddenMode;
2359
2446
  setHiddenMode(mode: 'none' | 'mobile' | 'desktop'): void;
2447
+ tx(key: string, fallback: string, params?: Record<string, string | number>): string;
2360
2448
  static ɵfac: i0.ɵɵFactoryDeclaration<RowEditorComponent, never>;
2361
2449
  static ɵcmp: i0.ɵɵComponentDeclaration<RowEditorComponent, "praxis-row-editor", never, {}, {}, never, never, true, never>;
2362
2450
  }
@@ -2373,6 +2461,7 @@ declare class ColumnEditorComponent implements OnInit, OnDestroy, SettingsValueP
2373
2461
  isBusy$: BehaviorSubject<boolean>;
2374
2462
  private destroy$;
2375
2463
  private _previewTimer;
2464
+ private readonly i18n;
2376
2465
  constructor(fb: FormBuilder, data: {
2377
2466
  column: FormColumn;
2378
2467
  });
@@ -2396,6 +2485,7 @@ declare class ColumnEditorComponent implements OnInit, OnDestroy, SettingsValueP
2396
2485
  resetResponsive(): void;
2397
2486
  applyPreset(key: 'full' | 'half' | 'third' | 'twoThird' | 'centered' | 'narrowSidebar' | 'wideContent' | 'stackMobile' | 'hideMobile' | 'desktopOnly'): void;
2398
2487
  toggleHiddenBp(bp: Breakpoint): void;
2488
+ tx(key: string, fallback: string, params?: Record<string, string | number>): string;
2399
2489
  static ɵfac: i0.ɵɵFactoryDeclaration<ColumnEditorComponent, never>;
2400
2490
  static ɵcmp: i0.ɵɵComponentDeclaration<ColumnEditorComponent, "praxis-column-editor", never, {}, {}, never, never, true, never>;
2401
2491
  }
@@ -2634,5 +2724,5 @@ declare function buildDynamicFormRuleAuthoringContext(config: Pick<FormConfig, '
2634
2724
  */
2635
2725
  declare const PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST: ComponentAuthoringManifest;
2636
2726
 
2637
- 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 };
2638
- 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 };
2727
+ 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_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 };
2728
+ 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, PraxisDynamicFormWidgetEditorInputs, PraxisDynamicFormWidgetEditorValue, PraxisFilterFormWidgetEditorInputs, PraxisFilterFormWidgetEditorValue, PraxisFormActionEvent, RemovePolicy, RuleApplicationContext, RuleApplicationDiagnostic, RuleApplicationDiagnosticCode, RuleApplicationResult, RuleApplicationTargetIndex, RuleApplicationTargetType, ValidationReport, ValueKind$1 as ValueKind };