@praxisui/dynamic-form 9.0.4-rc.15 → 9.0.4-rc.16
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.
|
@@ -6013,7 +6013,7 @@ function pruneUndefined(value) {
|
|
|
6013
6013
|
* Manifesto de authoring canônico para o componente praxis-dynamic-form.
|
|
6014
6014
|
* Este arquivo define as operações permitidas pela IA para editar formulários.
|
|
6015
6015
|
*
|
|
6016
|
-
* @version 1.5.
|
|
6016
|
+
* @version 1.5.1
|
|
6017
6017
|
* @status COMPLIANT - Alinhado com contrato v2, gate de aceitação e semântica local/schema-backed.
|
|
6018
6018
|
*/
|
|
6019
6019
|
const PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST = {
|
|
@@ -6021,13 +6021,14 @@ const PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST = {
|
|
|
6021
6021
|
componentId: 'praxis-dynamic-form',
|
|
6022
6022
|
ownerPackage: '@praxisui/dynamic-form',
|
|
6023
6023
|
configSchemaId: 'FormConfig',
|
|
6024
|
-
manifestVersion: '1.5.
|
|
6024
|
+
manifestVersion: '1.5.1',
|
|
6025
6025
|
runtimeInputs: [
|
|
6026
6026
|
{ name: 'showAiAssistant', type: 'boolean', description: 'Mostra os gatilhos do copiloto semantico Praxis' },
|
|
6027
6027
|
{ name: 'config', type: 'FormConfig', description: 'Configuração do formulário; sections é opcional em forms schema-driven e não deve ser criado como array vazio apenas para satisfazer TypeScript.' },
|
|
6028
6028
|
{ name: 'resourcePath', type: 'string', description: 'Caminho do recurso (API)' },
|
|
6029
6029
|
{ name: 'readUrl', type: 'string', description: 'Endpoint canonico de leitura para surfaces VIEW/READ_PROJECTION' },
|
|
6030
6030
|
{ name: 'mode', type: 'string', allowedValues: ['create', 'edit', 'view'], description: 'Modo de operação' },
|
|
6031
|
+
{ name: 'configPersistenceStrategy', type: 'string', allowedValues: ['local-first', 'input-first'], description: 'Precedência entre configuração persistida e contrato explícito do host. Use input-first em dialogs e surfaces transitórias governadas por schema para preservar mode e estados operacionais publicados pelo servidor.' },
|
|
6031
6032
|
{ name: 'generatedLayoutPreset', type: 'string', allowedValues: ['default', 'compactPresentation'], description: 'Preset usado apenas ao gerar a configuracao inicial a partir de metadata/schema; nao reprocessa layouts persistidos ou autorados.' },
|
|
6032
6033
|
{ name: 'layoutPolicy', type: 'DynamicFormLayoutPolicy', description: 'Politica opt-in para layout schema-driven transient. Use source=schema apenas quando o backend schema for a fonte canonica do agrupamento; use detailSummary para seleção de campos e densidade responsiva do resumo read-only compacto sem FormConfig.sections locais. Quando o resumo precisar vencer x-ui.width publicado para outras surfaces, use detailSummary.widthPrecedence=summary. Em groupedCommand, orphanFieldExpansion governa linhas com um unico campo; medium-and-wide e o default corporativo.' },
|
|
6033
6034
|
{ name: 'fieldIconPolicy', type: 'string', allowedValues: ['all', 'presentation-only', 'none'], description: 'Politica visual do host para icones prefix/suffix de campos vindos da metadata. Use presentation-only para manter icones decorativos em apresentacao e ocultar em controles tradicionais.' },
|
|
@@ -11756,7 +11757,9 @@ class PraxisDynamicForm {
|
|
|
11756
11757
|
inputsLoadTimeout = setTimeout(finishInputsLoad, FORM_INPUT_PREFS_LOAD_TIMEOUT_MS);
|
|
11757
11758
|
this.asyncConfigStorage.loadConfig(inputsKey).pipe(take(1)).subscribe({
|
|
11758
11759
|
next: (inputsPref) => {
|
|
11759
|
-
if (
|
|
11760
|
+
if (this.configPersistenceStrategy !== 'input-first' &&
|
|
11761
|
+
inputsPref &&
|
|
11762
|
+
typeof inputsPref === 'object') {
|
|
11760
11763
|
if (inputsPref.mode === 'create' || inputsPref.mode === 'edit' || inputsPref.mode === 'view') {
|
|
11761
11764
|
this.mode = inputsPref.mode;
|
|
11762
11765
|
this.debugLog('🔧 Applied persisted input mode', { mode: this.mode });
|
|
@@ -30965,7 +30968,7 @@ const PRAXIS_DYNAMIC_FORM_COMPONENT_METADATA = {
|
|
|
30965
30968
|
{ name: 'showAiAssistant', type: 'boolean', default: true, description: 'Mostra os gatilhos do copiloto semantico Praxis para esta instancia do formulario' },
|
|
30966
30969
|
{ name: 'formId', type: 'string', description: 'Chave para persistencia local da configuracao' },
|
|
30967
30970
|
{ name: 'componentInstanceId', type: 'string', description: 'Identificador estavel para instancias multiplas do formulario' },
|
|
30968
|
-
{ name: 'configPersistenceStrategy', type: "'local-first' | 'input-first'", default: 'local-first', description: 'Define se a configuracao local persistida ou
|
|
30971
|
+
{ name: 'configPersistenceStrategy', type: "'local-first' | 'input-first'", default: 'local-first', description: 'Define se a configuracao local persistida ou os inputs do host tem precedencia; input-first preserva inclusive o mode explicito contra preferencias persistidas.' },
|
|
30969
30972
|
{ name: 'layout', type: 'FormLayout', description: 'Layout opcional em vez do gerado' },
|
|
30970
30973
|
{ name: 'generatedLayoutPreset', type: "'default' | 'compactPresentation'", default: 'default', description: 'Preset usado apenas ao criar a configuracao inicial a partir de metadata/schema.' },
|
|
30971
30974
|
{ name: 'layoutPolicy', type: 'DynamicFormLayoutPolicy | null', description: 'Politica opt-in para materializar layout a partir do schema sem persistir sections geradas por padrao.' },
|
|
@@ -34994,6 +34997,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
34994
34997
|
*/
|
|
34995
34998
|
const ENUMS = {
|
|
34996
34999
|
mode: ['create', 'edit', 'view'],
|
|
35000
|
+
configPersistenceStrategy: ['local-first', 'input-first'],
|
|
34997
35001
|
schemaSource: ['resource', 'filter'],
|
|
34998
35002
|
generatedLayoutPreset: ['default', 'compactPresentation'],
|
|
34999
35003
|
layoutPolicySource: ['authored', 'schema'],
|
|
@@ -35171,6 +35175,14 @@ const FORM_COMPONENT_AI_CAPABILITIES = {
|
|
|
35171
35175
|
description: 'Preset usado somente na criacao inicial de FormConfig a partir de schema/metadata.',
|
|
35172
35176
|
safetyNotes: 'Nao reprocessa layouts ja persistidos ou authorados.',
|
|
35173
35177
|
},
|
|
35178
|
+
{
|
|
35179
|
+
path: 'inputs.configPersistenceStrategy',
|
|
35180
|
+
category: 'inputs',
|
|
35181
|
+
valueKind: 'enum',
|
|
35182
|
+
allowedValues: ENUMS.configPersistenceStrategy,
|
|
35183
|
+
description: 'Define se preferências locais persistidas ou o contrato explícito do host governam a materialização corrente.',
|
|
35184
|
+
safetyNotes: 'Use input-first em commands e surfaces transitórias; isso impede que mode e estados operacionais antigos sobrescrevam o schema atual.',
|
|
35185
|
+
},
|
|
35174
35186
|
{
|
|
35175
35187
|
path: 'inputs.layoutPolicy',
|
|
35176
35188
|
category: 'inputs',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/dynamic-form",
|
|
3
|
-
"version": "9.0.4-rc.
|
|
3
|
+
"version": "9.0.4-rc.16",
|
|
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.4-rc.
|
|
13
|
-
"@praxisui/dynamic-fields": "^9.0.4-rc.
|
|
14
|
-
"@praxisui/metadata-editor": "^9.0.4-rc.
|
|
15
|
-
"@praxisui/rich-content": "^9.0.4-rc.
|
|
16
|
-
"@praxisui/settings-panel": "^9.0.4-rc.
|
|
17
|
-
"@praxisui/visual-builder": "^9.0.4-rc.
|
|
18
|
-
"@praxisui/core": "^9.0.4-rc.
|
|
12
|
+
"@praxisui/ai": "^9.0.4-rc.16",
|
|
13
|
+
"@praxisui/dynamic-fields": "^9.0.4-rc.16",
|
|
14
|
+
"@praxisui/metadata-editor": "^9.0.4-rc.16",
|
|
15
|
+
"@praxisui/rich-content": "^9.0.4-rc.16",
|
|
16
|
+
"@praxisui/settings-panel": "^9.0.4-rc.16",
|
|
17
|
+
"@praxisui/visual-builder": "^9.0.4-rc.16",
|
|
18
|
+
"@praxisui/core": "^9.0.4-rc.16",
|
|
19
19
|
"rxjs": "^7.8.0"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
@@ -586,6 +586,7 @@ No ecossistema Praxis, ele funciona tanto como runtime final quanto como superfi
|
|
|
586
586
|
| `enableCustomization` | `boolean` | `false` | Active | Habilita UX de customizacao do layout. |
|
|
587
587
|
| `formId` | `string \| undefined` | `undefined` | Active | Chave de persistencia e identidade logica. |
|
|
588
588
|
| `componentInstanceId` | `string \| undefined` | `undefined` | Active | Isola instancias com mesmo `formId`. |
|
|
589
|
+
| `configPersistenceStrategy` | `'local-first' \| 'input-first'` | `'local-first'` | Active | Em `input-first`, os inputs fornecidos pelo host, inclusive `mode`, permanecem autoritativos sobre preferencias persistidas da mesma instancia. Combine com `layoutPolicy.persistence='transient'` em commands efemeros para nao carregar nem gravar layout local. |
|
|
589
590
|
| `layout` | `FormLayout \| undefined` | `undefined` | Partial | Funciona como override estrutural em parte dos fluxos de layout/editor. |
|
|
590
591
|
| `generatedLayoutPreset` | `'default' \| 'compactPresentation'` | `'default'` | Active | Usado apenas ao criar a configuracao inicial a partir de schema/metadata; nao reprocessa layouts persistidos ou authorados. |
|
|
591
592
|
| `layoutPolicy` | `DynamicFormLayoutPolicy \| null` | `null` | Active | Politica opt-in para materializar layout a partir do schema atual. Use `source: 'schema'` com `persistence: 'transient'` para detalhe/read-only e command forms schema-driven sem persistir `sections` geradas nem reabrir configuracao local salva; politicas de host em `config`, como `helpPresentation`, continuam sendo aplicadas ao layout materializado. Em `mode='view'`, `intent: 'detail'` ou `preset: 'compactPresentation'` ativa apresentacao quando `presentationModeGlobal` nao foi informado; use `[presentationModeGlobal]=false` para controles read-only tradicionais. No preset `compactPresentation`, `x-ui.width` explicito empacota campos em linhas de 12 colunas e tem precedencia sobre `detailSummary.columns` por default; campos sem width permanecem full-width, a menos que `detailSummary.columns`/`responsiveColumns` declare a densidade do resumo. Use `detailSummary.widthPrecedence='summary'` quando a densidade do resumo read-only deve sobrescrever `x-ui.width` apenas nessa surface compacta. No preset `groupedCommand`, `groupedCommand.orphanFieldExpansion` controla linhas com um unico campo: `medium-and-wide` (default) expande spans 6/8, `preserve` mantem o width publicado e `all` tambem expande campos compactos. Use `responsiveColumns`, por exemplo `{ lg: 3, md: 2, sm: 1 }`, para drawers, side sheets e painéis corporativos estreitos sem copiar `FormConfig.sections` locais. `schemaType` e `schemaOperation` sao validados contra `schemaUrl` quando a URL declara esses parametros. |
|
|
@@ -2776,7 +2776,7 @@ declare function buildDynamicFormRuleAuthoringContext(config: Pick<FormConfig, '
|
|
|
2776
2776
|
* Manifesto de authoring canônico para o componente praxis-dynamic-form.
|
|
2777
2777
|
* Este arquivo define as operações permitidas pela IA para editar formulários.
|
|
2778
2778
|
*
|
|
2779
|
-
* @version 1.5.
|
|
2779
|
+
* @version 1.5.1
|
|
2780
2780
|
* @status COMPLIANT - Alinhado com contrato v2, gate de aceitação e semântica local/schema-backed.
|
|
2781
2781
|
*/
|
|
2782
2782
|
declare const PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST: ComponentAuthoringManifest;
|