@praxisui/dynamic-form 10.0.0-rc.40 → 10.0.0-rc.42
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/README.md +78 -4
- package/ai/component-registry.json +17 -5
- package/docs/custom-fields-enterprise-review.md +229 -0
- package/fesm2022/praxisui-dynamic-form.mjs +2080 -249
- package/package.json +8 -8
- package/src/lib/praxis-dynamic-form.json-api.md +16 -3
- package/types/praxisui-dynamic-form.d.ts +69 -11
- package/fesm2022/praxisui-dynamic-form-dynamic-form-agentic-authoring-turn-flow-w9V0aQ9B.mjs +0 -539
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/dynamic-form",
|
|
3
|
-
"version": "10.0.0-rc.
|
|
3
|
+
"version": "10.0.0-rc.42",
|
|
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.
|
|
13
|
-
"@praxisui/dynamic-fields": "^10.0.0-rc.
|
|
14
|
-
"@praxisui/metadata-editor": "^10.0.0-rc.
|
|
15
|
-
"@praxisui/rich-content": "^10.0.0-rc.
|
|
16
|
-
"@praxisui/settings-panel": "^10.0.0-rc.
|
|
17
|
-
"@praxisui/visual-builder": "^10.0.0-rc.
|
|
18
|
-
"@praxisui/core": "^10.0.0-rc.
|
|
12
|
+
"@praxisui/ai": "^10.0.0-rc.42",
|
|
13
|
+
"@praxisui/dynamic-fields": "^10.0.0-rc.42",
|
|
14
|
+
"@praxisui/metadata-editor": "^10.0.0-rc.42",
|
|
15
|
+
"@praxisui/rich-content": "^10.0.0-rc.42",
|
|
16
|
+
"@praxisui/settings-panel": "^10.0.0-rc.42",
|
|
17
|
+
"@praxisui/visual-builder": "^10.0.0-rc.42",
|
|
18
|
+
"@praxisui/core": "^10.0.0-rc.42",
|
|
19
19
|
"rxjs": "^7.8.0"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
@@ -38,7 +38,7 @@ source_of_truth:
|
|
|
38
38
|
- "projects/praxis-core/src/lib/models/form/rule-property.schema.ts"
|
|
39
39
|
- "projects/praxis-dynamic-form/docs/layout-items-visual-blocks.md"
|
|
40
40
|
source_of_truth_last_verified: "2026-08-12"
|
|
41
|
-
last_updated: "2026-10-
|
|
41
|
+
last_updated: "2026-10-27"
|
|
42
42
|
toc: true
|
|
43
43
|
sidebar: true
|
|
44
44
|
tags:
|
|
@@ -176,16 +176,22 @@ Essa fronteira preserva a premissa de plataforma: o formulario materializa e exp
|
|
|
176
176
|
| `helpPresentation` | `FormHelpPresentationConfig` | No | `{ display: "inline" }` | Active | Politica visual para exibir `hint`/`helpText` dos campos sem alterar semantica dos DTOs; erros de validacao continuam inline. |
|
|
177
177
|
| `presentation` | `FormPresentationConfig` | No | runtime defaults | Active | Preferencias tipadas de label/value para modos read-only e presentation. Valores numericos de tamanho e largura sao materializados como comprimentos CSS em `px`; o mesmo shape alimenta o snapshot canonico do editor. |
|
|
178
178
|
| `fieldMetadata[].array` | `FieldArrayConfig` | No | n/a | Active | Contrato de Editable Collection apenas quando `fieldMetadata[].controlType === "array"` ou quando `x-ui.array` foi publicado explicitamente. |
|
|
179
|
+
| `fieldMetadata[].items` | `FieldScalarItemsSchema` | No | n/a | Active | Subconjunto escalar do JSON Schema items: type string/integer/number/boolean, format e enum opcionais. Separado de array.itemSchema.fields de objetos; constraints vêm do schema de operação e não podem ser ampliadas pela config salva. |
|
|
179
180
|
|
|
180
181
|
Nota editorial:
|
|
181
182
|
- `praxis-dynamic-form` carrega e orquestra `FieldMetadata`, mas a resolução de `valuePresentation` em display/read-only pertence ao runtime de `@praxisui/dynamic-fields`.
|
|
182
183
|
- `fieldMetadata[].source`, `fieldMetadata[].transient` e `fieldMetadata[].submitPolicy` governam campos locais do host. Campos com `source: "local"` ou `transient: true` participam de validação, regras, visibilidade e `valueChange`, mas são omitidos de `formSubmit.formData` e do payload HTTP por default.
|
|
183
184
|
- `fieldMetadata[].submitPolicy` tem prioridade sobre `source` e `transient`: `include` força envio, `omit` força omissão e `includeWhenDirty` envia apenas quando o controle estiver dirty.
|
|
185
|
+
- Campos de schema `customFields.<key>` preservam `customField`, `customFieldKey` e `customFieldScope` projetados pelo core. O nome pontuado identifica um controle aninhado; `formData`/payload HTTP continuam `{ "customFields": { "<key>": valor } }`. Hidratação de datas, serialização de datas/lookups e políticas de omissão usam esse caminho, sem adapter do host. Valores ausentes não criam containers; campos vazios dirty ou obrigatórios mantêm a semântica dos campos planos.
|
|
186
|
+
- A normalização temporal usa metadata de campo e `array.itemSchema.fields`: tuples legadas de data e strings datetime locais são convertidas apenas em campos temporais declarados. Arrays numéricos/desconhecidos como `[2026, 10, 27]` não viram datas; strings comuns/desconhecidas conservam espaços e texto semelhante a datetime. `DateInput` segue a serialização de data sem horário.
|
|
187
|
+
- Arrays escalares com `items` usam `normalizeScalarArrayValue` de Core na validação e projeção do payload. Tokens devem corresponder ao tipo declarado (números JSON finitos, inteiros seguros, booleanos exatos e formatos date/date-time suportados), e o enum é aplicado após conversão. Não há conversão parcial nem descarte de itens inválidos; item `null` é inválido, enquanto container opcional `null`/ausente e `[]` permanecem distintos. `array.itemSchema.fields` de objetos é outro contrato. Isso permite materializar operandos `IN` tipados sem inferir semântica de busca a partir de arrays ou labels.
|
|
188
|
+
- O rebuild no mesmo contexto preserva dirty/touched por caminhos aninhados de controles e itens, sem marcar irmãos não tocados. Isso não é autosave universal entre resets, retries ou troca de registro/tenant.
|
|
189
|
+
- Na migração de configuração salva, um container colidente cede aos filhos diretos do schema, mesmo com `source: "local"`; campos locais não colidentes continuam preservados. Restrições herdadas de UI não equivalem a política de omissão no submit.
|
|
184
190
|
- Dentro de `array.itemSchema.fields`, `includeWhenDirty` considera o item ou subcampo especifico dirty, como `participantes.0` ou `participantes.0.observacao`. O `FormArray` pai dirty, como `participantes`, nao torna todos os subcampos de todos os itens elegiveis para submit.
|
|
185
191
|
- O evento `formSubmit` mantém `formData` como payload persistível filtrado e expõe `rawFormData` para hosts que precisam ler os campos locais/transientes no contexto de UI.
|
|
186
|
-
- O evento `payloadPreviewChange` projeta o payload persistível atual sem executar hooks de submit nem disparar HTTP. `formData` usa o mesmo pipeline síncrono de normalização/políticas do submit, `rawFormData` preserva o estado completo e `changedFields` lista somente paths de controles dirty.
|
|
192
|
+
- O evento `payloadPreviewChange` projeta o payload persistível atual sem executar hooks de submit nem disparar HTTP. `formData` usa o mesmo pipeline síncrono de normalização/políticas do submit, `rawFormData` preserva o estado completo e `changedFields` lista somente paths de controles dirty. Uma projeção scalar inválida emite `formData: null` e `isValid: false`, preservando `rawFormData` para correção; consumidores não devem aplicá-la.
|
|
187
193
|
- Botões com `type="reset"` preservam a semântica canônica de reset mesmo quando recebem um `id` editorial próprio. O runtime impede o reset nativo do navegador, restaura o snapshot hidratado, marca o formulário como pristine/untouched e publica nova prévia com `reason: "reset"`.
|
|
188
|
-
- Configs persistidas
|
|
194
|
+
- Configs persistidas passam pela reconciliação com o schema estrutural antes da montagem, inclusive quando a leitura bem-sucedida retorna definições vazias. Falhas de leitura/normalização/reconciliação bloqueiam a inicialização em vez de declarar pronta a configuração salva. Campos locais explícitos não colidentes são preservados, mas campos server-backed recebem novamente a semântica publicada pelo backend, incluindo `endpoint`, `resourcePath`, `optionLabelKey` e `optionValueKey`.
|
|
189
195
|
- Para selects com `x-ui.endpoint` terminando em `/options/filter`, `endpoint` é a operação concreta de opções e `resourcePath` é o recurso dono. O runtime deve chamar `/options/filter`; não deve converter esse endpoint para `/filter`.
|
|
190
196
|
|
|
191
197
|
### Supported legacy paths
|
|
@@ -958,6 +964,13 @@ O runtime emite `target-not-found` quando uma regra aponta para `section`, `row`
|
|
|
958
964
|
3. Cobertura de `messages` e parcial para chaves fora do fluxo principal de submit/confirmacao.
|
|
959
965
|
4. Ainda falta bateria de stress dedicada para corrida teardown/render alem de `NG0205`.
|
|
960
966
|
5. `hints` permanece no contrato/editor sem exposicao no template principal.
|
|
967
|
+
6. A política canônica Metadata rejeita nomes reservados que colidem com controles Angular; suporte own-key no helper de payload não relaxa essa admissão. Definições persistidas antigas exigem migração backend.
|
|
968
|
+
7. Read-only/disabled não significa omissão automática. O request de comando canônico exclui custom fields read-only; o schema response continua disponível para leitura. Use o request exato da operação, sem mesclar response ou inventar um mapping local de `x-ui.submitPolicy`.
|
|
969
|
+
8. Record paths de regras calculadas não atravessam arrays intermediários. A recursão por `array.itemSchema.fields` no submit é um caminho distinto; scalar `items` também tem contrato próprio.
|
|
970
|
+
9. Um novo ciclo revalida HTTP; L1 compilado não estabelece readiness. Cache só fornece corpo após 304 correspondente, nunca como fallback de status 0/401/403. Loading/erro de schema e contexto enterprise conhecido não confirmado bloqueiam submit. Retry não promete autosave entre registros, tenants ou resets.
|
|
971
|
+
10. Schema vazio bem-sucedido é autoritativo. Reconciliação e sync manual ocultam/desabilitam e omitem órfãos server-backed; Filter também bloqueia sua validação e projeção aplicável, mantendo locais explícitos e campos hidden legítimos. Reaparecimento usa as restrições atuais do servidor. Identidade invisível ao snapshot de headers continua exigindo versão confirmada de contexto ou invalidação de todo o escopo cache/sessão no host.
|
|
972
|
+
|
|
973
|
+
Consulte a [revisão de adoção corporativa](https://github.com/codexrodrigues/praxis-ui-angular/pull/658) para fontes, cenários, gates e pendências.
|
|
961
974
|
|
|
962
975
|
### Source references
|
|
963
976
|
|
|
@@ -7,7 +7,7 @@ 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, DynamicFormMode, AiCapability, DynamicFormLayoutScope, 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, DiscoveredResourceOption, Breakpoint, DomainRuleRequestOptions, DomainRuleService, DomainRuleMaterialization, SchemaIdParams, CompiledDynamicFormSchema, TableConfig, SurfaceOpenActionEditorComponent, IconPickerService, GlobalActionRef, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest, GovernedPagePreviewWidgetAdapter, WidgetInstance } from '@praxisui/core';
|
|
10
|
+
import { AsyncConfigStorage, FormLayout, FieldMetadata, FormLayoutRule, FormRuleTargetType as FormRuleTargetType$1, PraxisJsonLogicService, FormSection, FormRow, FormColumn, FormConfig, FormConfigWithSections, FormLayoutItem, ReactiveDeterminationDefinition, ReactiveDeterminationExecutionEvent, FormActionButton, DynamicFormMode, PraxisRuntimeFormValueTargetIdentity, PraxisRuntimeFormValueEligibility, PraxisRuntimeFormValueProposal, PraxisRuntimeFormValueApplyMode, PraxisRuntimeFormValuePreviewResult, PraxisRuntimeFormValueApplyRequest, PraxisRuntimeFormValueApplyReceipt, PraxisRuntimeFormValueUndoReceipt, AiCapability, DynamicFormLayoutScope, BackConfig, FormPresentationConfig, EmptyStateTone, EmptyStateVariant, EmptyStateAlignment, EmptyStateDensity, EmptyStateIconContainer, FormPresentationPreset, PraxisRuntimeFormValueTargetPort, 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, DiscoveredResourceOption, Breakpoint, DomainRuleRequestOptions, DomainRuleService, DomainRuleMaterialization, SchemaIdParams, CompiledDynamicFormSchema, TableConfig, SurfaceOpenActionEditorComponent, IconPickerService, GlobalActionRef, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest, GovernedPagePreviewWidgetAdapter, WidgetInstance } from '@praxisui/core';
|
|
11
11
|
export { CompiledDynamicFormSchema, DynamicFormLayoutScope, DynamicFormMode } from '@praxisui/core';
|
|
12
12
|
import * as rxjs from 'rxjs';
|
|
13
13
|
import { Observable, Subscription, BehaviorSubject } from 'rxjs';
|
|
@@ -514,6 +514,14 @@ interface FormAiHost {
|
|
|
514
514
|
readonlyModeGlobal?: boolean | null;
|
|
515
515
|
effectiveReadonly?: boolean;
|
|
516
516
|
applyConfigFromAdapter(config: FormConfig): void;
|
|
517
|
+
getRuntimeValueTargetIdentity?(): PraxisRuntimeFormValueTargetIdentity;
|
|
518
|
+
getRuntimeValueEligibility?(): PraxisRuntimeFormValueEligibility;
|
|
519
|
+
previewRuntimeValues?(proposal: PraxisRuntimeFormValueProposal, options?: {
|
|
520
|
+
readonly selectedFieldPaths?: readonly string[];
|
|
521
|
+
readonly applyMode?: PraxisRuntimeFormValueApplyMode;
|
|
522
|
+
}): PraxisRuntimeFormValuePreviewResult;
|
|
523
|
+
applyRuntimeValues?(request: PraxisRuntimeFormValueApplyRequest): Promise<PraxisRuntimeFormValueApplyReceipt> | PraxisRuntimeFormValueApplyReceipt;
|
|
524
|
+
undoRuntimeValues?(receiptId?: string): Promise<PraxisRuntimeFormValueUndoReceipt> | PraxisRuntimeFormValueUndoReceipt;
|
|
517
525
|
}
|
|
518
526
|
|
|
519
527
|
declare class FormAiAdapter extends BaseAiAdapter<FormConfig> {
|
|
@@ -529,6 +537,14 @@ declare class FormAiAdapter extends BaseAiAdapter<FormConfig> {
|
|
|
529
537
|
getDataProfile(): Record<string, any>;
|
|
530
538
|
getSchemaFields(): Record<string, any>[];
|
|
531
539
|
getAuthoringContext(): Record<string, any>;
|
|
540
|
+
getRuntimeValueTargetIdentity(): PraxisRuntimeFormValueTargetIdentity | null;
|
|
541
|
+
getRuntimeValueEligibility(): PraxisRuntimeFormValueEligibility | null;
|
|
542
|
+
previewRuntimeValues(proposal: PraxisRuntimeFormValueProposal, options?: {
|
|
543
|
+
readonly selectedFieldPaths?: readonly string[];
|
|
544
|
+
readonly applyMode?: PraxisRuntimeFormValueApplyMode;
|
|
545
|
+
}): PraxisRuntimeFormValuePreviewResult | null;
|
|
546
|
+
applyRuntimeValues(request: PraxisRuntimeFormValueApplyRequest): Promise<PraxisRuntimeFormValueApplyReceipt | null>;
|
|
547
|
+
undoRuntimeValues(receiptId?: string): Promise<PraxisRuntimeFormValueUndoReceipt | null>;
|
|
532
548
|
compileAiResponse(response: Record<string, unknown>): AiResponseCompileResult | null;
|
|
533
549
|
createSnapshot(): FormConfig;
|
|
534
550
|
restoreSnapshot(snapshot: FormConfig): Promise<void>;
|
|
@@ -733,7 +749,7 @@ interface FormColumnRichContentRenderItem {
|
|
|
733
749
|
style?: Record<string, any> | null;
|
|
734
750
|
}
|
|
735
751
|
type FormColumnRenderItem = FormColumnFieldsRenderItem | FormColumnRichContentRenderItem;
|
|
736
|
-
declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
752
|
+
declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy, PraxisRuntimeFormValueTargetPort {
|
|
737
753
|
private crud;
|
|
738
754
|
private http;
|
|
739
755
|
private fb;
|
|
@@ -932,6 +948,17 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
932
948
|
isSectionEditorialCard(section?: FormSection | null): boolean;
|
|
933
949
|
isSectionCompactPresentation(section?: FormSection | null): boolean;
|
|
934
950
|
shouldShowContextEmptyState(): boolean;
|
|
951
|
+
private isItemScopedActionSubmitTarget;
|
|
952
|
+
getActionTargetRecordSummary(): {
|
|
953
|
+
id?: string;
|
|
954
|
+
title?: string;
|
|
955
|
+
subtitle?: string;
|
|
956
|
+
badges: Array<{
|
|
957
|
+
label: string;
|
|
958
|
+
value: string;
|
|
959
|
+
tone: 'neutral' | 'info' | 'success' | 'warning' | 'danger';
|
|
960
|
+
}>;
|
|
961
|
+
} | null;
|
|
935
962
|
private hasResourceContext;
|
|
936
963
|
private hasLocalRecordContext;
|
|
937
964
|
get effectiveReadonly(): boolean;
|
|
@@ -1044,6 +1071,8 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1044
1071
|
private assertSchemaInitializationCurrent;
|
|
1045
1072
|
private isSchemaTransportInterruption;
|
|
1046
1073
|
private schemaCache;
|
|
1074
|
+
private schemaValidationFailed;
|
|
1075
|
+
private initialValueContextInvalidated;
|
|
1047
1076
|
private lastSchemaMeta?;
|
|
1048
1077
|
private readonly schemaMetaPersistenceQueues;
|
|
1049
1078
|
private persistenceContextEpoch;
|
|
@@ -1060,6 +1089,14 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1060
1089
|
private readonly entityReadCancel$;
|
|
1061
1090
|
private isDestroyed;
|
|
1062
1091
|
private formValueChangesSubscription;
|
|
1092
|
+
private formStatusChangesSubscription;
|
|
1093
|
+
private readonly runtimeValueJournal;
|
|
1094
|
+
private runtimeValueRevision;
|
|
1095
|
+
private runtimeValueTrackedForm;
|
|
1096
|
+
private readonly runtimeValueTrackedControls;
|
|
1097
|
+
private suppressCommandRuleSideEffectsDepth;
|
|
1098
|
+
private pendingSuppressedCommandEvaluation;
|
|
1099
|
+
private consumingSuppressedCommandEvaluation;
|
|
1063
1100
|
private readonly submitFieldErrorSubscriptions;
|
|
1064
1101
|
private activeSubmitErrorDetails;
|
|
1065
1102
|
private reactiveDeterminationSubscription;
|
|
@@ -1199,6 +1236,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1199
1236
|
ngOnChanges(changes: SimpleChanges): void;
|
|
1200
1237
|
private blurAllInputs;
|
|
1201
1238
|
private initializeForm;
|
|
1239
|
+
private hasInitializationError;
|
|
1202
1240
|
private handleInitializationError;
|
|
1203
1241
|
private loadConfigFailOpen;
|
|
1204
1242
|
private resolveFieldLabel;
|
|
@@ -1251,6 +1289,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1251
1289
|
private emitPayloadPreview;
|
|
1252
1290
|
private resetToHydratedSnapshot;
|
|
1253
1291
|
private collectDirtyFieldNames;
|
|
1292
|
+
private collectTouchedFieldNames;
|
|
1254
1293
|
private buildCurrentFormRuntimeContext;
|
|
1255
1294
|
private buildRestoreTargetContext;
|
|
1256
1295
|
private isCompatibleRuntimeStateContext;
|
|
@@ -1319,6 +1358,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1319
1358
|
private hasVisibleSectionBody;
|
|
1320
1359
|
private shouldRenderInsideLastSectionContent;
|
|
1321
1360
|
private resolveInsideLastSectionHost;
|
|
1361
|
+
get actionTargetSelectedRecordLabel(): string;
|
|
1322
1362
|
getSectionTitle(section: FormSection): string | undefined;
|
|
1323
1363
|
getSectionDescription(section: FormSection): string | undefined;
|
|
1324
1364
|
getSectionAppearance(section: FormSection): 'card' | 'plain' | 'step' | undefined;
|
|
@@ -1442,7 +1482,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1442
1482
|
closeAiAssistant(): void;
|
|
1443
1483
|
onAiAssistantPromptChange(prompt: string): void;
|
|
1444
1484
|
onAiAssistantSubmit(prompt: string): void;
|
|
1445
|
-
onAiAssistantApply(): void;
|
|
1485
|
+
onAiAssistantApply(contextHints?: Record<string, unknown> | void): void;
|
|
1446
1486
|
onAiAssistantRetry(): void;
|
|
1447
1487
|
onAiAssistantCancel(): void;
|
|
1448
1488
|
onAiAssistantQuickReply(reply: PraxisAssistantShellQuickReply): void;
|
|
@@ -1624,6 +1664,8 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1624
1664
|
showDetailedError(): void;
|
|
1625
1665
|
private tryBuildExplicitSchemaContext;
|
|
1626
1666
|
private buildSchemaContext;
|
|
1667
|
+
private requiresConfirmedSchemaContext;
|
|
1668
|
+
private schemaRepresentationContext;
|
|
1627
1669
|
private getSchemaWithCache;
|
|
1628
1670
|
/**
|
|
1629
1671
|
* Invalida o cache de schema compilado para a instância atual e força
|
|
@@ -1637,6 +1679,21 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1637
1679
|
private logRowGapsSnapshot;
|
|
1638
1680
|
private applyPresentationVars;
|
|
1639
1681
|
private applyPresentationConfig;
|
|
1682
|
+
getRuntimeValueTargetIdentity(): PraxisRuntimeFormValueTargetIdentity;
|
|
1683
|
+
getRuntimeValueEligibility(): PraxisRuntimeFormValueEligibility;
|
|
1684
|
+
previewRuntimeValues(proposal: PraxisRuntimeFormValueProposal, options?: {
|
|
1685
|
+
readonly selectedFieldPaths?: readonly string[];
|
|
1686
|
+
readonly applyMode?: PraxisRuntimeFormValueApplyMode;
|
|
1687
|
+
}): PraxisRuntimeFormValuePreviewResult;
|
|
1688
|
+
applyRuntimeValues(request: PraxisRuntimeFormValueApplyRequest): PraxisRuntimeFormValueApplyReceipt;
|
|
1689
|
+
undoRuntimeValues(receiptId?: string): PraxisRuntimeFormValueUndoReceipt;
|
|
1690
|
+
private clearRuntimeValueControlSubscriptions;
|
|
1691
|
+
private collectLeafFormControls;
|
|
1692
|
+
private ensureRuntimeValueTracking;
|
|
1693
|
+
private withSuppressedCommandSideEffects;
|
|
1694
|
+
private createRuntimeFormHostCallbacks;
|
|
1695
|
+
private isConfiguredReactiveDeterminationOutputField;
|
|
1696
|
+
private collectRuntimeValueFieldClassification;
|
|
1640
1697
|
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; }]>;
|
|
1641
1698
|
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; }; "actionId": { "alias": "actionId"; "required": false; }; "operationId": { "alias": "operationId"; "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>;
|
|
1642
1699
|
}
|
|
@@ -2060,7 +2117,8 @@ declare class PraxisFilterForm implements OnChanges, OnDestroy {
|
|
|
2060
2117
|
private statusChangesSub?;
|
|
2061
2118
|
private schemaSub?;
|
|
2062
2119
|
private hydratedFieldMetadata;
|
|
2063
|
-
private
|
|
2120
|
+
private schemaHydrationPending;
|
|
2121
|
+
private schemaHydrationFailed;
|
|
2064
2122
|
private columnFieldsCache;
|
|
2065
2123
|
private singleFieldCache;
|
|
2066
2124
|
private readonly crudService;
|
|
@@ -2074,6 +2132,8 @@ declare class PraxisFilterForm implements OnChanges, OnDestroy {
|
|
|
2074
2132
|
private buildRestorableValues;
|
|
2075
2133
|
private hasExplicitDefaultValue;
|
|
2076
2134
|
onFormSubmit(): void;
|
|
2135
|
+
private isFilterReady;
|
|
2136
|
+
private projectFilterValues;
|
|
2077
2137
|
getColumnFields(column: FormColumn): FieldMetadata[];
|
|
2078
2138
|
getSingleField(field: FieldMetadata): FieldMetadata[];
|
|
2079
2139
|
getColumnClasses(column: FormColumn): string | null;
|
|
@@ -2695,12 +2755,10 @@ declare function ruleBuilderStateToFormLayoutRules(state: RuleBuilderState | nul
|
|
|
2695
2755
|
*/
|
|
2696
2756
|
declare function formLayoutRulesToBuilderState(rules: FormLayoutRule[] | null | undefined): RuleBuilderState;
|
|
2697
2757
|
|
|
2698
|
-
/**
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
*/
|
|
2703
|
-
declare function normalizeDateArrays(data: any): any;
|
|
2758
|
+
/** Converts legacy date tuples only where the existing field metadata declares a temporal value. */
|
|
2759
|
+
declare function normalizeDateArrays(data: any, fields: readonly FieldMetadata[]): any;
|
|
2760
|
+
/** One private draft shared by hydration and submit; only declared temporal fields are transformed. */
|
|
2761
|
+
declare function normalizeTemporalFieldValues(data: any, fields: readonly FieldMetadata[], normalizeString: (value: string) => string): any;
|
|
2704
2762
|
|
|
2705
2763
|
/**
|
|
2706
2764
|
* Helper provider to wire the PraxisDynamicForm component into the Settings Panel
|
|
@@ -3310,5 +3368,5 @@ declare function materializeDynamicFormPageRuntimeInputs(value: unknown, pageId:
|
|
|
3310
3368
|
};
|
|
3311
3369
|
declare const DYNAMIC_FORM_GOVERNED_PAGE_PREVIEW_ADAPTER: GovernedPagePreviewWidgetAdapter;
|
|
3312
3370
|
|
|
3313
|
-
export { ActionsEditorComponent, CORPORATE_PRESENTATION_FORMAT_GALLERY, CanvasStateService, CanvasToolbarComponent, ColumnEditorComponent, DYNAMIC_FORM_GOVERNED_PAGE_PREVIEW_ADAPTER, 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, decodeDynamicFormPageInputs, encodeDynamicFormPageInputs, formLayoutRulesToBuilderState, getFormAiCatalog, getFormCapabilities, getFormEnum, isRuleSatisfied, materializeDynamicFormPageRuntimeInputs, normalizeDateArrays, normalizeDynamicFormAuthoringDocument, parseLegacyOrDynamicFormDocument, projectDynamicFormPageEditorChanges, providePraxisDynamicFormMetadata, providePraxisFilterFormMetadata, provideSettingsPanelDynamicForm, ruleBuilderStateToFormLayoutRules, serializeDynamicFormAuthoringDocument, stripLegacyFieldMetadata, toCanonicalDynamicFormConfig, validateDynamicFormAuthoringDocument, validateDynamicFormAuthoringInput, validateDynamicFormPageWidget };
|
|
3371
|
+
export { ActionsEditorComponent, CORPORATE_PRESENTATION_FORMAT_GALLERY, CanvasStateService, CanvasToolbarComponent, ColumnEditorComponent, DYNAMIC_FORM_GOVERNED_PAGE_PREVIEW_ADAPTER, 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, decodeDynamicFormPageInputs, encodeDynamicFormPageInputs, formLayoutRulesToBuilderState, getFormAiCatalog, getFormCapabilities, getFormEnum, isRuleSatisfied, materializeDynamicFormPageRuntimeInputs, normalizeDateArrays, normalizeDynamicFormAuthoringDocument, normalizeTemporalFieldValues, parseLegacyOrDynamicFormDocument, projectDynamicFormPageEditorChanges, providePraxisDynamicFormMetadata, providePraxisFilterFormMetadata, provideSettingsPanelDynamicForm, ruleBuilderStateToFormLayoutRules, serializeDynamicFormAuthoringDocument, stripLegacyFieldMetadata, toCanonicalDynamicFormConfig, validateDynamicFormAuthoringDocument, validateDynamicFormAuthoringInput, validateDynamicFormPageWidget };
|
|
3314
3372
|
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 };
|