@praxisui/dynamic-form 8.0.0-beta.2 → 8.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.
@@ -0,0 +1,481 @@
1
+ ---
2
+ title: "praxis-dynamic-form-config-editor JSON API (Canonical)"
3
+ slug: "praxis-dynamic-form-config-editor-json-api"
4
+ doc_type: "api-reference"
5
+ component: "praxis-dynamic-form-config-editor"
6
+ document_kind: "json-api-canonical"
7
+ reference_mode: "canonical"
8
+ contract_format: "json"
9
+ contract_source: "runtime-and-code"
10
+ description: "Referencia canonica do contrato JSON do componente praxis-dynamic-form-config-editor."
11
+ category: "components"
12
+ sub_category: "config-editor"
13
+ audience:
14
+ - "frontend"
15
+ - "architect"
16
+ - "platform-team"
17
+ level: "advanced"
18
+ status: "active"
19
+ owner: "praxis-ui"
20
+ source_of_truth:
21
+ - "projects/praxis-dynamic-form/src/lib/config-editor/praxis-dynamic-form-config-editor.ts"
22
+ - "projects/praxis-dynamic-form/src/lib/config-editor/praxis-dynamic-form-config-editor.html"
23
+ - "projects/praxis-dynamic-form/src/lib/praxis-dynamic-form.ts"
24
+ - "projects/praxis-settings-panel/src/lib/settings-panel.types.ts"
25
+ - "projects/praxis-core/src/lib/models/form/form-config.model.ts"
26
+ source_of_truth_last_verified: "2026-03-15"
27
+ last_updated: "2026-03-15"
28
+ toc: true
29
+ sidebar: true
30
+ tags:
31
+ - "json-api"
32
+ - "canonical-contract"
33
+ - "praxis-dynamic-form-config-editor"
34
+ api_stability: "canonical"
35
+ schema_verified: true
36
+ runtime_verified: false
37
+ editor_coverage_verified: false
38
+ runtime_scope: "public"
39
+ legacy_paths_present: false
40
+ has_known_mismatches: true
41
+ related_components:
42
+ - "praxis-table"
43
+ ---
44
+
45
+ # praxis-dynamic-form-config-editor
46
+
47
+ Este documento e a referencia canonica da API JSON de praxis-dynamic-form-config-editor.
48
+
49
+ ## Summary
50
+
51
+ - Tipo documental: API reference canonica de contrato JSON.
52
+ - Source of truth: runtime e codigo declarados no frontmatter.
53
+ - Objetivo operacional: consulta rapida, auditavel e deterministica sob pressao.
54
+ - Resumo funcional herdado: `praxis-dynamic-form-config-editor` e o editor avancado de configuracao do `praxis-dynamic-form`. Ele nao e um form de dados final; e um componente de autoria/revisao de JSON para layout, regras, hooks, mensagens e preferencias auxiliares.
55
+
56
+ ## Canonical authoring semantics
57
+
58
+ - O editor visual e o editor JSON operam sobre `DynamicFormAuthoringDocument`.
59
+ - O editor JSON aceita apenas o envelope canônico; payloads legados pertencem aos caminhos de compatibilidade do runtime.
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.
62
+ - `config`, `bindings` e `contextSnapshot` substituem integralmente o estado autoral anterior.
63
+ - Ausencia de `bindings.mode` limpa o binding persistido e restaura o modo default efetivo do host.
64
+ - Ausencia de `contextSnapshot.backConfig`, `contextSnapshot.presentation` ou `contextSnapshot.schemaPrefs` significa remocao explicita do bloco ausente.
65
+ - Payloads legados aceitos por caminhos de compatibilidade continuam fora deste contrato e permanecem em semantica `merge-compat`.
66
+
67
+ ## Scope and positioning
68
+
69
+ - Escopo: contrato JSON publico e limites de comportamento observavel.
70
+ - Fora de escopo: tutorial de adocao e walkthrough operacional detalhado.
71
+ - Posicionamento: referencia canonicamente governada para consumidores, arquitetos e mantenedores.
72
+
73
+ ## Source of truth
74
+
75
+ | Source | Kind | Notes |
76
+ | --- | --- | --- |
77
+ | projects/praxis-dynamic-form/src/lib/config-editor/praxis-dynamic-form-config-editor.ts | runtime-code | Source de implementacao declarado no repositorio. |
78
+ | projects/praxis-dynamic-form/src/lib/config-editor/praxis-dynamic-form-config-editor.html | template-style | Source de implementacao declarado no repositorio. |
79
+ | projects/praxis-dynamic-form/src/lib/praxis-dynamic-form.ts | runtime-code | Source de implementacao declarado no repositorio. |
80
+ | projects/praxis-settings-panel/src/lib/settings-panel.types.ts | runtime-code | Source de implementacao declarado no repositorio. |
81
+ | projects/praxis-core/src/lib/models/form/form-config.model.ts | runtime-code | Source de implementacao declarado no repositorio. |
82
+
83
+ ## Support legend
84
+
85
+ - Active: suportado e observado no runtime atual.
86
+ - Partial: suporte parcial, com restricoes conhecidas.
87
+ - Declared-only: declarado em tipos/schema sem ligacao runtime confirmada.
88
+ - Schema-only: presente em schema/modelo sem confirmacao de execucao.
89
+ - Deprecated: mantido por compatibilidade legada com migracao prevista.
90
+
91
+ ## Contract classification
92
+
93
+ ### Canonical paths (public contract)
94
+
95
+ | Path | Type | Required | Default | Status | Notes |
96
+ | --- | --- | --- | --- | --- | --- |
97
+ | `sections` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
98
+ | `fieldMetadata` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
99
+ | `actions` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
100
+ | `behavior` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
101
+ | `messages` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
102
+ | `hooks` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
103
+ | `formRules` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
104
+ | `formRulesState` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
105
+ | `hints` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
106
+ | `api` | not-specified | not-specified | n/a | Partial | Preservado da documentação anterior. |
107
+ | `metadata` | not-specified | not-specified | n/a | Partial | Preservado da documentação anterior. |
108
+
109
+ ### Supported legacy paths
110
+
111
+ Nenhum path legado suportado foi identificado nesta revisão baseada em evidência textual preservada.
112
+
113
+ ### Internal-only paths
114
+
115
+ | Path | Internal consumer | Runtime presence | Public support | Notes |
116
+ | --- | --- | --- | --- | --- |
117
+ | not-yet-mapped | not-yet-verified | not-yet-verified | No | Caminhos internos nao mapeados explicitamente nesta revisao automatizada. |
118
+
119
+ ### Experimental paths
120
+
121
+ | Path | Enablement (flag/guard) | Stability | Rollout notes | Notes |
122
+ | --- | --- | --- | --- | --- |
123
+ | not-yet-mapped | not-yet-verified | Experimental | not-yet-verified | Registrar somente quando houver evidencia em runtime/codigo. |
124
+
125
+ ## Overview
126
+
127
+ Este arquivo foi adaptado para o padrao canonico atual sem remover conteudo tecnico existente. O conteudo detalhado anterior foi preservado para manter rastreabilidade historica e reduzir perda de contexto.
128
+
129
+ ## Public contract surface
130
+
131
+ ### Top-level configuration blocks
132
+
133
+ | Block | Purpose | Required | Merge strategy | Notes |
134
+ | --- | --- | --- | --- | --- |
135
+ | sections | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Active. |
136
+ | fieldMetadata | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Active. |
137
+ | actions | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Active. |
138
+ | behavior | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Active. |
139
+ | messages | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Active. |
140
+ | hooks | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Active. |
141
+ | formRules | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Active. |
142
+ | formRulesState | Configuração top-level identificada na referência preservada. | not-yet-verified | component-defined | 1 path(s) mapeado(s), status predominante Active. |
143
+
144
+ ### Nested configuration blocks
145
+
146
+ | Path | Type | Required | Default | Constraints | Notes |
147
+ | --- | --- | --- | --- | --- | --- |
148
+ | `sections` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
149
+ | `fieldMetadata` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
150
+ | `actions` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
151
+ | `behavior` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
152
+ | `messages` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
153
+ | `hooks` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
154
+ | `formRules` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
155
+ | `formRulesState` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
156
+ | `hints` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
157
+ | `api` | not-specified | not-specified | n/a | component-defined | Preservado da documentação anterior. |
158
+
159
+ ### Input bindings
160
+
161
+ | Binding/Path | Type | Required | Source | Runtime normalization | Notes |
162
+ | --- | --- | --- | --- | --- | --- |
163
+ | component-inputs | see-detailed-api | not-yet-verified | runtime-and-code | not-yet-verified | Inputs preservados na referência detalhada. |
164
+
165
+ ### Output events
166
+
167
+ | Event | Payload | Trigger | Stability | Notes |
168
+ | --- | --- | --- | --- | --- |
169
+ | component-outputs | see-detailed-api | runtime-event | Partial | Eventos preservados na referência detalhada. |
170
+
171
+ ### External side channels
172
+
173
+ | Channel | Direction | Contract | Failure mode | Notes |
174
+ | --- | --- | --- | --- | --- |
175
+ | host/services/storage | bidirectional | see-detailed-api | not-yet-verified | Side channels dependem do componente e do host consumidor. |
176
+
177
+ ### Host/runtime dependencies
178
+
179
+ | Dependency | Required | Environment | Purpose | Notes |
180
+ | --- | --- | --- | --- | --- |
181
+ | see-source-of-truth | true | browser/dev/prod/ssr | runtime linkage | Confirmar por componente quando necessario. |
182
+
183
+ ## Coverage matrix
184
+
185
+ | Surface | Verified | Coverage status | Evidence | Notes |
186
+ | --- | --- | --- | --- | --- |
187
+ | Runtime | false | Partial | source_of_truth + conteudo preservado | Revisao estrutural concluida; validacao comportamental fina pode exigir follow-up. |
188
+ | Schema/Types | true | Partial | interfaces/modelos citados | Mapeamento formal de todos os campos ainda pode requerer refinamento. |
189
+ | Editor/Tooling | false | Partial | secoes de editor quando presentes | Cobertura de editor/tooling nem sempre confirmada por evidencia direta. |
190
+
191
+ ## Runtime coverage boundaries
192
+
193
+ - Cobertura consolidada com base em documentacao existente e source of truth declarado.
194
+ - Comportamentos fora de evidencia direta foram marcados como not-yet-verified ou Partial.
195
+ - Compatibilidade legada, quando detectada, foi separada em classificacao explicita.
196
+
197
+ ## Resolution model
198
+
199
+ ### Merge order
200
+
201
+ 1. defaults do componente
202
+ 2. contrato JSON recebido
203
+ 3. overrides de host/runtime
204
+ 4. normalizacoes internas
205
+
206
+ ### Fallback order
207
+
208
+ contrato explicito -> aliases legados (quando suportados) -> defaults internos -> comportamento seguro
209
+
210
+ ### Override points
211
+
212
+ - inputs publicos do componente
213
+ - configuracao JSON de runtime
214
+ - integracoes de host (servicos/tokens/adapters)
215
+
216
+ ### Runtime normalization
217
+
218
+ Campos e aliases preservados do documento anterior devem convergir progressivamente para paths canonicos declarados.
219
+
220
+ ### Precedence rules
221
+
222
+ Quando houver conflito entre alias e path canonico, priorizar path canonico e manter alias apenas para backward compatibility.
223
+
224
+ ## Validation and error semantics
225
+
226
+ ### Validation model
227
+
228
+ | Path/Rule | Validation phase | Behavior on fail | Error code / warning | Notes |
229
+ | --- | --- | --- | --- | --- |
230
+ | see-detailed-api | runtime | warn-or-reject | not-yet-standardized | Semantica de validacao preservada do documento anterior. |
231
+
232
+ ### Error semantics
233
+
234
+ Erros devem ser classificados em warnings recuperaveis versus falhas bloqueantes. Quando a evidencia nao estiver explicita, tratar como not yet verified.
235
+
236
+ ### Fail-open / fail-closed behavior
237
+
238
+ | Condition | Mode | Runtime behavior | Consumer impact |
239
+ | --- | --- | --- | --- |
240
+ | invalid-or-unknown-field | component-defined | not-yet-verified | Variavel por componente; requer verificacao em runtime. |
241
+
242
+ ### Invalid or unknown field handling
243
+
244
+ - Campos desconhecidos: comportamento depende da estrategia do componente (ignore, warn ou reject).
245
+ - Campos invalidos: podem gerar fallback, warning ou falha conforme implementacao.
246
+ - Registrar divergencias observadas em Known limitations and mismatches.
247
+
248
+ ### Runtime warnings vs hard failures
249
+
250
+ | Condition | Severity | Observability | Consumer action |
251
+ | --- | --- | --- | --- |
252
+ | partial-or-declared-only-coverage | warning | logs/eventos do componente | confirmar ligacao runtime antes de uso critico |
253
+
254
+ ## Detailed API
255
+
256
+ ### Preserved technical reference (normalized from previous revision)
257
+
258
+ ### 1. Visao Geral e Quando Usar
259
+ `praxis-dynamic-form-config-editor` e o editor avancado de configuracao do `praxis-dynamic-form`.
260
+ Ele nao e um form de dados final; e um componente de autoria/revisao de JSON para layout, regras, hooks, mensagens e preferencias auxiliares.
261
+
262
+ No runtime atual, ele opera como `SettingsValueProvider` dentro do `SettingsPanelService`.
263
+
264
+ Use quando precisar de:
265
+ - editar `FormConfig` de forma visual + JSON;
266
+ - gerar bundle de configuracao para `applied/saved` no settings panel;
267
+ - manter round-trip de regras (`formRules` + `formRulesState`);
268
+ - ajustar preferencias de apresentacao e de verificacao de schema fora do `FormConfig` principal.
269
+
270
+ ### 2. Contrato de Entrada (Settings Panel Data)
271
+
272
+ Este componente nao expoe `@Input` publico direto no codigo.
273
+ A entrada operacional vem via `SETTINGS_PANEL_DATA` (injetado pelo settings panel).
274
+
275
+ | Chave em `SETTINGS_PANEL_DATA` | Tipo | Obrigatorio | Status | Comportamento |
276
+ | --- | --- | --- | --- | --- |
277
+ | `formConfig` | `FormConfig` | Sim (na pratica) | Active | Base de edicao; e normalizado e clonado no construtor. |
278
+ | `backConfig` | `BackConfig` | Nao | Active | Configuracao de retorno do CRUD; fallback local quando ausente. |
279
+ | `formId` | `string` | Nao | Active | Identidade para persistencia auxiliar e chave de painel. |
280
+ | `componentKeyId` | `string` | Nao | Active | Prioridade para chave de persistencia quando informado. |
281
+ | `mode` | `'create' \| 'edit' \| 'view'` | Nao | Active | Inicializa `inputMode`; invalido cai para `create`. |
282
+ | `presentationMode` | `boolean` | Nao | Active | Controla exibicao da aba "Modo Apresentacao". |
283
+ | `runtimeContext` | `DynamicFormRuntimeContext` | Nao | Active | Contexto operacional somente leitura; pode expor `resolvedContract.schemaUrl/submitUrl/submitMethod` para diagnosticos visuais, sem persistencia no documento autoral. |
284
+
285
+ ### 3. Contrato de Saida (SettingsValueProvider)
286
+
287
+ | Superficie | Tipo | Status | Notas |
288
+ | --- | --- | --- | --- |
289
+ | `isDirty$` | `Observable<boolean>` | Active | Dirty check por `stableStringify` entre `initialConfig` e `editedConfig`. |
290
+ | `isValid$` | `Observable<boolean>` | Active | Reflete validacao do editor JSON e estado interno. |
291
+ | `isBusy$` | `Observable<boolean>` | Active | Estado de processamento em `reset/onSave`. |
292
+ | `reset()` | `() => void` | Active | Restaura snapshot inicial e sincroniza aba JSON. |
293
+ | `getSettingsValue()` | `() => EditorBundle` | Active | Retorna bundle consumido pelo host no `applied/saved`. |
294
+ | `onSave()` | `() => EditorBundle` | Active | Mesmo contrato de `getSettingsValue`, com controle de busy. |
295
+
296
+ `EditorBundle` retornado:
297
+
298
+ ```ts
299
+ {
300
+ formConfig: FormConfig;
301
+ backConfig?: BackConfig;
302
+ presentation: {
303
+ labelPosition: 'above' | 'left';
304
+ labelFontSize?: number | null;
305
+ valueFontSize?: number | null;
306
+ compact?: boolean;
307
+ density?: 'comfortable' | 'cozy' | 'compact';
308
+ labelWidth?: number | null;
309
+ labelAlign?: 'start' | 'center' | 'end';
310
+ valueAlign?: 'start' | 'center' | 'end';
311
+ };
312
+ inputsPatch: { mode: 'create' | 'edit' | 'view' };
313
+ schemaPrefs: {
314
+ notifyIfOutdated: 'inline' | 'snackbar' | 'both' | 'none';
315
+ snoozeMs: number;
316
+ autoOpenSettingsOnOutdated: boolean;
317
+ };
318
+ }
319
+ ```
320
+
321
+ ### 4. Cobertura de `formConfig` no Editor
322
+
323
+ | Caminho | Status | Como e tratado |
324
+ | --- | --- | --- |
325
+ | `sections` | Active | Editado na aba Layout (`praxis-layout-editor`). |
326
+ | `fieldMetadata` | Active | Usado em layout, cascatas e rule builder. |
327
+ | `actions` | Active | Editado na aba Acoes. |
328
+ | `behavior` | Active | Editado na aba Comportamento. |
329
+ | `messages` | Active | Editado na aba Mensagens. |
330
+ | `hooks` | Active | Editado na aba Hooks e JSON. |
331
+ | `formRules` | Active | Gerado pela aba Regras (visual builder). |
332
+ | `formRulesState` | Active | Persistido para round-trip sem perda. |
333
+ | `hints` | Active | Editado na aba Dicas e Tooltips. |
334
+ | `api` | Partial | Sem aba dedicada; passa por JSON editor quando presente. |
335
+ | `metadata` | Partial | Mantido em round-trip; sem painel dedicado. |
336
+
337
+ Politicas de integridade:
338
+ - `endpoint` legado e removido de `fieldMetadata` antes de salvar (`stripLegacyFieldMetadata`).
339
+ - `formRules` vazio e `formRulesState` vazio podem ser removidos para evitar dirty falso.
340
+
341
+ ### 5. Exemplo de Integracao no Host
342
+ ```ts
343
+ const ref = settingsPanel.open({
344
+ id: `form.${formId}`,
345
+ title: 'Configuracao do Formulario',
346
+ content: {
347
+ component: PraxisDynamicFormConfigEditor,
348
+ inputs: {
349
+ formConfig,
350
+ backConfig,
351
+ formId,
352
+ componentKeyId,
353
+ mode,
354
+ presentationMode
355
+ }
356
+ }
357
+ });
358
+ ```
359
+
360
+ No `saved/applied`, o host consome o bundle e decide persistencia por chave/canal.
361
+
362
+ ### 6. Problemas Comuns e Armadilhas
363
+ 1. Tratar `praxis-dynamic-form-config-editor` como componente final de dados.
364
+ Correcao: ele e editor de configuracao, nao runtime de submissao de entidade.
365
+
366
+ 2. Assumir `SETTINGS_PANEL_DATA` sem `formConfig`.
367
+ Correcao: passe sempre `formConfig`; sem base valida o valor salvo perde previsibilidade.
368
+
369
+ 3. Ignorar `inputsPatch.mode` retornado no save.
370
+ Correcao: aplique patch de modo no host quando necessario para consistencia de UX.
371
+
372
+ 4. Persistir bundle inteiro como se fosse `FormConfig` puro.
373
+ Correcao: separe `formConfig` de `presentation/schemaPrefs/backConfig/inputsPatch`.
374
+
375
+ 5. Esperar aba de `api` dedicada.
376
+ Correcao: hoje ajustes de `api` sao via JSON editor (pass-through).
377
+
378
+ 6. Considerar `isDirty$` como diff de negocio definitivo.
379
+ Correcao: e diff estrutural para UX do painel, nao auditoria de negocio.
380
+
381
+ ### 7. Referencias Cruzadas
382
+ - Runtime consumidor: `projects/praxis-dynamic-form/src/lib/praxis-dynamic-form.ts`
383
+ - Editor JSON interno: `projects/praxis-dynamic-form/src/lib/json-config-editor/json-config-editor.component.ts`
384
+ - Contrato do painel: `projects/praxis-settings-panel/src/lib/settings-panel.types.ts`
385
+ - Modelo base: `projects/praxis-core/src/lib/models/form/form-config.model.ts`
386
+
387
+ ### 8. Premissas
388
+ - O host e responsavel pela persistencia definitiva e por aplicar patches retornados.
389
+ - O bundle retornado pode conter dados fora de `FormConfig` por design (preferencias e contexto).
390
+ - Validacoes de autorizacao e politica de alteracao devem ser tratadas no host/backend.
391
+
392
+ ### 9. Relatorio de Validacao Estrutural
393
+ - Visao geral: PASS
394
+ - Contrato de entrada por `SETTINGS_PANEL_DATA`: PASS
395
+ - Contrato de saida (`SettingsValueProvider`): PASS
396
+ - Cobertura de `FormConfig` com status: PASS
397
+ - Exemplo de integracao: PASS
398
+ - Problemas comuns (>=5): PASS
399
+ - Referencias cruzadas: PASS
400
+ - Premissas explicitas: PASS
401
+
402
+ ## JSON path index
403
+
404
+ | Path | Type | Required | Default | Status | Notes |
405
+ | --- | --- | --- | --- | --- | --- |
406
+ | `sections` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
407
+ | `fieldMetadata` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
408
+ | `actions` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
409
+ | `behavior` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
410
+ | `messages` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
411
+ | `hooks` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
412
+ | `formRules` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
413
+ | `formRulesState` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
414
+ | `hints` | not-specified | not-specified | n/a | Active | Preservado da documentação anterior. |
415
+ | `api` | not-specified | not-specified | n/a | Partial | Preservado da documentação anterior. |
416
+ | `metadata` | not-specified | not-specified | n/a | Partial | Preservado da documentação anterior. |
417
+
418
+ ## Events
419
+
420
+ | Event | Payload | Trigger | Stability | Notes |
421
+ | --- | --- | --- | --- | --- |
422
+ | component-outputs | see-detailed-api | runtime-event | Partial | Eventos preservados na referência detalhada. |
423
+
424
+ ## Styling API
425
+
426
+ | Token/Class | Scope | Purpose | Notes |
427
+ | --- | --- | --- | --- |
428
+ | see-detailed-api | component | styling/runtime | Consolidar naming canonico quando aplicavel. |
429
+
430
+ ## Editor and tooling notes
431
+
432
+ - Cobertura de editor/tooling foi separada da cobertura de runtime para evitar confusao de suporte.
433
+ - Quando nao houver evidencia direta no codigo, o status deve permanecer not yet verified.
434
+
435
+ ## Examples
436
+
437
+ ### Minimal valid
438
+
439
+ ```json
440
+ {}
441
+ ```
442
+
443
+ ### Typical/common
444
+
445
+ ```json
446
+ {}
447
+ ```
448
+
449
+ ### Advanced
450
+
451
+ ```json
452
+ {}
453
+ ```
454
+
455
+ ### Enterprise scenario
456
+
457
+ ```json
458
+ {}
459
+ ```
460
+
461
+ ## Known limitations and mismatches
462
+
463
+ | Path/Behavior | Observed behavior (runtime) | Desired behavior | Impact | Tracking issue | Target fix |
464
+ | --- | --- | --- | --- | --- | --- |
465
+ | coverage/mapping | Evidência textual preservada indica itens Partial/Declared-only. | Cobertura confirmada por evidência runtime + schema + editor. | Pode gerar uso de paths não totalmente ligados. | to-be-linked | next-doc-cycle |
466
+
467
+ ## Compatibility and migration notes
468
+
469
+ | Concern | Affected versions | Migration action | Deadline | Notes |
470
+ | --- | --- | --- | --- | --- |
471
+ | legacy aliases and mixed status vocabulary | pre-canonical docs | unificar para taxonomia canonica (Active/Partial/Declared-only/...) | next-doc-cycle | manter backward compatibility documentada |
472
+
473
+ ## Source references
474
+
475
+ | Source type | Path/URL | Why it is source of truth | Last verified (YYYY-MM-DD) | Notes |
476
+ | --- | --- | --- | --- | --- |
477
+ | local-file | projects/praxis-dynamic-form/src/lib/config-editor/praxis-dynamic-form-config-editor.ts | Evidencia de implementacao e contrato. | 2026-03-05 | referencia preservada da versao anterior |
478
+ | local-file | projects/praxis-dynamic-form/src/lib/config-editor/praxis-dynamic-form-config-editor.html | Evidencia de implementacao e contrato. | 2026-03-05 | referencia preservada da versao anterior |
479
+ | local-file | projects/praxis-dynamic-form/src/lib/praxis-dynamic-form.ts | Evidencia de implementacao e contrato. | 2026-03-05 | referencia preservada da versao anterior |
480
+ | local-file | projects/praxis-settings-panel/src/lib/settings-panel.types.ts | Evidencia de implementacao e contrato. | 2026-03-05 | referencia preservada da versao anterior |
481
+ | local-file | projects/praxis-core/src/lib/models/form/form-config.model.ts | Evidencia de implementacao e contrato. | 2026-03-05 | referencia preservada da versao anterior |