@praxisui/dynamic-form 9.0.3 → 9.0.4-rc.10

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.3",
3
+ "version": "9.0.4-rc.10",
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.3",
13
- "@praxisui/dynamic-fields": "^9.0.3",
14
- "@praxisui/metadata-editor": "^9.0.3",
15
- "@praxisui/rich-content": "^9.0.3",
16
- "@praxisui/settings-panel": "^9.0.3",
17
- "@praxisui/visual-builder": "^9.0.3",
18
- "@praxisui/core": "^9.0.3",
12
+ "@praxisui/ai": "^9.0.4-rc.10",
13
+ "@praxisui/dynamic-fields": "^9.0.4-rc.10",
14
+ "@praxisui/metadata-editor": "^9.0.4-rc.10",
15
+ "@praxisui/rich-content": "^9.0.4-rc.10",
16
+ "@praxisui/settings-panel": "^9.0.4-rc.10",
17
+ "@praxisui/visual-builder": "^9.0.4-rc.10",
18
+ "@praxisui/core": "^9.0.4-rc.10",
19
19
  "rxjs": "^7.8.0"
20
20
  },
21
21
  "dependencies": {
@@ -246,6 +246,9 @@ the canonical remote entity loaded through `resourcePath` and `resourceId`.
246
246
  | `readUrl` | `string \| null \| undefined` | No | component-input | resolved via API origin and `{id}` placeholders | URL concreta de leitura publicada por surface `VIEW`/`READ_PROJECTION`; quando presente, substitui `crud.getById` na hidratação da entidade. |
247
247
  | `submitUrl` | `string \| null \| undefined` | Conditional | component-input | resolved via API origin | URL concreta de submit publicada por surface/action; exige `submitMethod` quando usada para envio HTTP. |
248
248
  | `submitMethod` | `'post' \| 'put' \| 'patch' \| null \| undefined` | Conditional | component-input | normalized lowercase | Método HTTP concreto de submit publicado por surface/action; exige `submitUrl` quando usado para envio HTTP. |
249
+ | `submitIdempotencyKey` | `string \| null \| undefined` | No | action execution contract | `Idempotency-Key` | Identidade estável da tentativa; deve ser reutilizada em retries da mesma execução. |
250
+ | `submitCorrelationId` | `string \| null \| undefined` | No | action execution contract | `X-Correlation-Id` | Correlação de observabilidade do comando entre host e backend. |
251
+ | `submitResourceVersion` | `string \| number \| null \| undefined` | Conditional | action execution contract | quoted `If-Match` | Versão esperada do item; obrigatória quando `execution.preconditions.resourceVersionTransport` é `IF_MATCH`. |
249
252
  | `responseSchemaUrl` | `string \| null \| undefined` | No | component-input | diagnostic only | Schema de resposta para diagnóstico e follow-up; não compõe campos editáveis nem o payload do comando. |
250
253
  | `enableCustomization` | `boolean` | No | component-input | boolean coercion | Alterna UX de edição visual/configuração. |
251
254
  | `formId` | `string \| undefined` | Yes (corporate flow) | component-input | component key scoping | Obrigatório para ciclo corporativo com persistência e sync. |
@@ -576,6 +579,9 @@ No ecossistema Praxis, ele funciona tanto como runtime final quanto como superfi
576
579
  | `domainRules` | `PraxisDynamicFormDomainRulesOptions \| boolean \| null` | `null` | Active | Opt-in para carregar materializacoes de regras compartilhadas em `/api/praxis/config/domain-rules/materializations` e combina-las com `config.formRules`. |
577
580
  | `submitUrl` | `string \| undefined` | `undefined` | Active | Executa submit canonico publicado por `surface` ou `action`, sem inferencia local de CRUD. |
578
581
  | `submitMethod` | `'post' \| 'put' \| 'patch' \| undefined` | `undefined` | Active | Metodo HTTP do submit canonico; deve acompanhar `submitUrl`. |
582
+ | `submitIdempotencyKey` | `string \| undefined` | `undefined` | Active | Envia `Idempotency-Key` e preserva a identidade entre retries da mesma tentativa. |
583
+ | `submitCorrelationId` | `string \| undefined` | `undefined` | Active | Envia `X-Correlation-Id` para rastreabilidade corporativa ponta a ponta. |
584
+ | `submitResourceVersion` | `string \| number \| undefined` | `undefined` | Active | Envia a versão esperada como `If-Match`, sem inferir concorrência a partir do formulário. |
579
585
  | `responseSchemaUrl` | `string \| undefined` | `undefined` | Active | Porta diagnóstica/read-only; não deve ser usada para mesclar propriedades do schema de resposta no formulário de comando. |
580
586
  | `enableCustomization` | `boolean` | `false` | Active | Habilita UX de customizacao do layout. |
581
587
  | `formId` | `string \| undefined` | `undefined` | Active | Chave de persistencia e identidade logica. |
@@ -735,6 +735,12 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
735
735
  submitUrl?: string | null;
736
736
  /** Canonical submit method published by the backend surface catalog. */
737
737
  submitMethod?: string | null;
738
+ /** Stable key reused by retries of the same materialized business command. */
739
+ submitIdempotencyKey?: string | null;
740
+ /** Correlation identifier propagated to the backend command boundary. */
741
+ submitCorrelationId?: string | null;
742
+ /** Current persisted resource version sent through If-Match when governed by the action. */
743
+ submitResourceVersion?: string | number | null;
738
744
  /** Canonical response schema URL exposed for runtime diagnostics/follow-up. */
739
745
  responseSchemaUrl?: string | null;
740
746
  /** API endpoint entry used to resolve relative canonical URLs in detached hosts. */
@@ -973,6 +979,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
973
979
  private resolveSubmitOperation;
974
980
  private buildSubmitRequest;
975
981
  private normalizeSubmitMethod;
982
+ private formatResourceVersion;
976
983
  private resolveSubmitHref;
977
984
  private resolveReadHref;
978
985
  private resolveEntityAwareHref;
@@ -1386,7 +1393,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
1386
1393
  private applyPresentationVars;
1387
1394
  private applyPresentationConfig;
1388
1395
  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; }, { optional: true; }]>;
1389
- 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; }; "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; }; "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"; "syncCompleted": "syncCompleted"; "initializationError": "initializationError"; "loadingStateChange": "loadingStateChange"; "enableCustomizationChange": "enableCustomizationChange"; "customAction": "customAction"; "actionConfirmation": "actionConfirmation"; "schemaStatusChange": "schemaStatusChange"; "fieldRenderError": "fieldRenderError"; "ruleDiagnosticsChange": "ruleDiagnosticsChange"; }, never, never, true, never>;
1396
+ 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; }; "submitIdempotencyKey": { "alias": "submitIdempotencyKey"; "required": false; }; "submitCorrelationId": { "alias": "submitCorrelationId"; "required": false; }; "submitResourceVersion": { "alias": "submitResourceVersion"; "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; }; "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"; "syncCompleted": "syncCompleted"; "initializationError": "initializationError"; "loadingStateChange": "loadingStateChange"; "enableCustomizationChange": "enableCustomizationChange"; "customAction": "customAction"; "actionConfirmation": "actionConfirmation"; "schemaStatusChange": "schemaStatusChange"; "fieldRenderError": "fieldRenderError"; "ruleDiagnosticsChange": "ruleDiagnosticsChange"; }, never, never, true, never>;
1390
1397
  }
1391
1398
 
1392
1399
  declare class FormConfigService {
@@ -1755,6 +1762,8 @@ declare class PraxisFilterForm implements OnChanges, OnDestroy {
1755
1762
  form: FormGroup<Record<string, any>>;
1756
1763
  private valueChangesSub?;
1757
1764
  private statusChangesSub?;
1765
+ private columnFieldsCache;
1766
+ private singleFieldCache;
1758
1767
  constructor(dynamicForm: DynamicFormService);
1759
1768
  ngOnChanges(changes: SimpleChanges): void;
1760
1769
  ngOnDestroy(): void;
@@ -1763,6 +1772,7 @@ declare class PraxisFilterForm implements OnChanges, OnDestroy {
1763
1772
  private hasExplicitDefaultValue;
1764
1773
  onFormSubmit(): void;
1765
1774
  getColumnFields(column: FormColumn): FieldMetadata[];
1775
+ getSingleField(field: FieldMetadata): FieldMetadata[];
1766
1776
  getColumnClasses(column: FormColumn): string | null;
1767
1777
  get fieldMetadata(): FieldMetadata[];
1768
1778
  get hasLayout(): boolean;