@praxisui/dynamic-form 10.0.0-rc.37 → 10.0.0-rc.39
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 +10 -0
- package/ai/component-registry.json +22 -17
- package/docs/dynamic-form-authoring-document-semantics.md +68 -2
- package/docs/evidence/form-authoring-635-20261023/final-review.md +46 -0
- package/docs/evidence/form-authoring-635-20261023/independent-review-vb-form.md +50 -0
- package/docs/evidence/form-authoring-635-20261023/validation.md +76 -0
- package/docs/evidence/p1-authoring-20261022/validation.md +134 -0
- package/docs/governed-page-widget-adapter.md +58 -0
- package/fesm2022/praxisui-dynamic-form.mjs +1304 -574
- package/package.json +8 -8
- package/src/lib/config-editor/praxis-dynamic-form-config-editor.json-api.md +11 -3
- package/src/lib/praxis-dynamic-form.json-api.md +9 -5
- package/types/praxisui-dynamic-form.d.ts +84 -11
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Dynamic Form em páginas governadas
|
|
2
|
+
|
|
3
|
+
O adapter do owner mantém `definition.inputs.config` como a única fonte de configuração do filho.
|
|
4
|
+
A página guarda autoria; o documento nativo é reconstruído a partir desses inputs. A projeção de
|
|
5
|
+
execução é transitória e nunca deve ser gravada de volta no documento da página.
|
|
6
|
+
|
|
7
|
+
O perfil inicial vem do contrato P0 `page-publication-p0` de `praxis-config-starter` (PR #506).
|
|
8
|
+
Core valida estrutura, referências, limites e exige validators dos owners. Este adapter valida o
|
|
9
|
+
perfil nativo local; não autoriza uma fonte, registra uma seed ou substitui a admissão no servidor.
|
|
10
|
+
|
|
11
|
+
`decodeDynamicFormPageInputs` reconstrói `praxis.dynamic-form.editor` v1:
|
|
12
|
+
config, bindings presentes (`mode`, `emptyState`, `presentationModeGlobal`) e contexto presente
|
|
13
|
+
(`backConfig`, `presentation`, `schemaPrefs`). Schema prefs só existe se algum dos três inputs
|
|
14
|
+
`notifyIfOutdated`, `snoozeMs`, `autoOpenSettingsOnOutdated` estiver presente. Ausência, `false`,
|
|
15
|
+
zero, objeto vazio admitido e `null` são preservados. Null em objetos mesclados de config é negado;
|
|
16
|
+
null dentro de arrays atômicos permanece autoria. `layoutScope` não cabe neste perfil.
|
|
17
|
+
|
|
18
|
+
Os cinco modos nativos são `create`, `edit`, `view`, `presentation` e `dossier`. O editor visual
|
|
19
|
+
continua preferindo os três modos de operação com `presentationModeGlobal` separado. Abrir um
|
|
20
|
+
documento nativo dos demais modos não deve convertê-lo. Filter Form mantém somente seus três modos.
|
|
21
|
+
|
|
22
|
+
`encodeDynamicFormPageInputs` é a projeção inversa sem defaults. Campos fora do perfil,
|
|
23
|
+
blocos vazios sem representação nos inputs, identidade/storage e dados de execução recebem
|
|
24
|
+
diagnóstico. O adapter não filtra silenciosamente autoria incompatível.
|
|
25
|
+
|
|
26
|
+
`projectDynamicFormPageEditorChanges(authoredInputs, editorBaseline, editorValue)` aplica apenas
|
|
27
|
+
deltas explícitos sobre a autoria original usando o reconciliador nativo do owner. Capture o
|
|
28
|
+
baseline após a normalização/montagem do editor e preserve-o durante aquela sessão. Alterar
|
|
29
|
+
bindings ou contexto do mesmo widget retorna `seed.replacement-required`; a página precisa
|
|
30
|
+
substituir o widget com nova key e nova fonte admitida. A API de projeção altera somente o draft
|
|
31
|
+
que o chamador recebe; ela não salva preferências nem persiste a página.
|
|
32
|
+
|
|
33
|
+
`materializeDynamicFormPageRuntimeInputs(inputs, pageId, widgetKey)` usa o helper canônico Core para
|
|
34
|
+
identidades `page:<pageId>:widget:<widgetKey>`, projeta `configPersistenceStrategy: 'volatile'`
|
|
35
|
+
e desabilita customização/copiloto independentes no filho. Submit e dados continuam nos contratos
|
|
36
|
+
de domínio existentes. Não existe input runtime `authoringDocument`.
|
|
37
|
+
|
|
38
|
+
A estratégia `volatile` impede leitura, gravação e limpeza de preferências próprias e conexão
|
|
39
|
+
persistida. O Form preserva identidade operacional para montar o formulário, mas as trilhas de
|
|
40
|
+
config/bindings/contexto/schema preferences ficam sem I/O de storage.
|
|
41
|
+
Defaults visuais/materializações transitórias permanecem internos ao runtime e ao editor.
|
|
42
|
+
|
|
43
|
+
Limites: JSON lossless, 256 KiB UTF-8 e profundidade 64 pelo helper Core compartilhado; o documento
|
|
44
|
+
integral da página também tem o mesmo orçamento. Não há host publicado, endpoint de publicação,
|
|
45
|
+
fonte admitida, banco ou release novos neste incremento. A integração Page Builder/host governado
|
|
46
|
+
é trabalho posterior; os wrappers comuns continuam atendendo os fluxos não governados existentes.
|
|
47
|
+
|
|
48
|
+
`volatile` também exclui overlays pessoais de configuração global nos defaults/estado de autoria
|
|
49
|
+
que o owner consome. A instância compartilhada `GlobalConfigService` pode ler sua chave global;
|
|
50
|
+
isso não é prova de zero leitura na aplicação. Tenant, cache, locale e CSP continuam infraestrutura
|
|
51
|
+
do host. O gate comprova ausência de I/O nas chaves do filho e ausência de influência da autoria
|
|
52
|
+
pessoal sobre a configuração publicada. Em Table, `TableDefaultsProvider.getDefaults(id,
|
|
53
|
+
{ includeGlobal: false })` preserva defaults nativos sem duplicá-los; mudanças globais e reset
|
|
54
|
+
seguem a mesma política, inclusive o fallback de timezone usado em regras JSON Logic.
|
|
55
|
+
|
|
56
|
+
Respostas e filas de preferências capturam a geração, a identidade e a estratégia do filho. Trocar identidade, documento ou estratégia (inclusive A → volatile → A), ou destruir a instância, invalida a continuação antiga antes do próximo I/O ou da materialização. Uma requisição já enviada não é cancelada retroativamente. Respostas tardias de erro também passam pelo mesmo fence.
|
|
57
|
+
|
|
58
|
+
O fence segue a chave do recurso: conexão, inputs e schema preferences usam identidade do owner e geração do host; apresentação acrescenta a chave `form-pres:<id>:<mode>`. Hidratar mode/path das próprias preferências iniciais não troca o owner. Eventos de inputs do host invalidam a geração e iniciam uma resolução atual. Schema, config e escritas também capturam os bindings de runtime.
|