@praxisui/dynamic-form 8.0.0-beta.7 → 8.0.0-beta.9
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 +1 -0
- package/fesm2022/praxisui-dynamic-form.mjs +21 -0
- package/index.d.ts +1 -0
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -720,6 +720,7 @@ Apache-2.0 – see the `LICENSE` packaged with this library or the repository ro
|
|
|
720
720
|
- Fluxo de Schema (ETag/304, schemaId, reconciliação): `projects/praxis-core/docs/schema-flow.md` (canônico) e `docs/schemas/fluxo-schema.md` (resumo operacional)
|
|
721
721
|
- Guia de implementação e metadados da cascata: `docs/CASCADE-NATIVA.md`
|
|
722
722
|
- Padrões de endpoints (Options vs Filter) para selects: `projects/praxis-dynamic-fields/docs/generic-crud-service.md` (canônico) e `docs/DEVS-GENERIC-CRUD-SERVICE.md` (resumo operacional)
|
|
723
|
+
- Recipe oficial de Entity Lookup corporativo com `RESOURCE_ENTITY`, `dependsOn`, `dependencyFilterMap`, reidratação por `by-ids` e política de seleção: `examples/ai-recipes/praxis-dynamic-form.entity-lookup-procurement.json`
|
|
723
724
|
|
|
724
725
|
## Verificação de Schema (ETag/If-None-Match)
|
|
725
726
|
|
|
@@ -9082,6 +9082,7 @@ class PraxisDynamicForm {
|
|
|
9082
9082
|
materialDesign: fieldMeta.materialDesign,
|
|
9083
9083
|
clearButton: fieldMeta.clearButton,
|
|
9084
9084
|
extra: fieldMeta.extra,
|
|
9085
|
+
optionSource: fieldMeta.optionSource,
|
|
9085
9086
|
controlType,
|
|
9086
9087
|
};
|
|
9087
9088
|
// Seed especÃficos para NUMBER (numericTextBox)
|
|
@@ -9843,6 +9844,22 @@ class PraxisDynamicForm {
|
|
|
9843
9844
|
});
|
|
9844
9845
|
return out;
|
|
9845
9846
|
}
|
|
9847
|
+
mergeMetadataObjectPatch(current, patch) {
|
|
9848
|
+
if (!patch || typeof patch !== 'object' || Array.isArray(patch)) {
|
|
9849
|
+
return patch;
|
|
9850
|
+
}
|
|
9851
|
+
const base = current && typeof current === 'object' && !Array.isArray(current)
|
|
9852
|
+
? { ...current }
|
|
9853
|
+
: {};
|
|
9854
|
+
Object.entries(patch).forEach(([key, value]) => {
|
|
9855
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
9856
|
+
base[key] = this.mergeMetadataObjectPatch(base[key], value);
|
|
9857
|
+
return;
|
|
9858
|
+
}
|
|
9859
|
+
base[key] = value;
|
|
9860
|
+
});
|
|
9861
|
+
return base;
|
|
9862
|
+
}
|
|
9846
9863
|
deleteMetadataPath(target, path) {
|
|
9847
9864
|
if (!target || typeof path !== 'string' || !path.trim())
|
|
9848
9865
|
return;
|
|
@@ -10034,6 +10051,9 @@ class PraxisDynamicForm {
|
|
|
10034
10051
|
fm.dataAttributes = patch.dataAttributes;
|
|
10035
10052
|
}
|
|
10036
10053
|
}
|
|
10054
|
+
if (patch.optionSource !== undefined) {
|
|
10055
|
+
fm.optionSource = this.mergeMetadataObjectPatch(fm.optionSource, patch.optionSource);
|
|
10056
|
+
}
|
|
10037
10057
|
// Generic extras passthrough: merge into fm.extra to allow component-specific appearance/behavior
|
|
10038
10058
|
if (patch.extra !== undefined) {
|
|
10039
10059
|
const currExtra = (fm.extra && typeof fm.extra === 'object') ? fm.extra : {};
|
|
@@ -19432,6 +19452,7 @@ class PraxisDynamicFormConfigEditor {
|
|
|
19432
19452
|
file: FieldType.STRING,
|
|
19433
19453
|
url: FieldType.URL,
|
|
19434
19454
|
boolean: FieldType.BOOLEAN,
|
|
19455
|
+
array: FieldType.JSON,
|
|
19435
19456
|
json: FieldType.JSON,
|
|
19436
19457
|
};
|
|
19437
19458
|
return mapping[dataType ?? 'text'];
|
package/index.d.ts
CHANGED
|
@@ -978,6 +978,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
978
978
|
private getControlTypeName;
|
|
979
979
|
private applyNullDeletionPatch;
|
|
980
980
|
private stripNullMarkersFromPatch;
|
|
981
|
+
private mergeMetadataObjectPatch;
|
|
981
982
|
private deleteMetadataPath;
|
|
982
983
|
private getMetadataPath;
|
|
983
984
|
/**
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/dynamic-form",
|
|
3
|
-
"version": "8.0.0-beta.
|
|
3
|
+
"version": "8.0.0-beta.9",
|
|
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": "^20.0.0",
|
|
7
7
|
"@angular/core": "^20.0.0",
|
|
8
8
|
"@angular/cdk": "^20.0.0",
|
|
9
|
-
"@praxisui/rich-content": "^8.0.0-beta.
|
|
10
|
-
"@praxisui/settings-panel": "^8.0.0-beta.
|
|
11
|
-
"@praxisui/visual-builder": "^8.0.0-beta.
|
|
12
|
-
"@praxisui/core": "^8.0.0-beta.
|
|
13
|
-
"@praxisui/cron-builder": "^8.0.0-beta.
|
|
9
|
+
"@praxisui/rich-content": "^8.0.0-beta.9",
|
|
10
|
+
"@praxisui/settings-panel": "^8.0.0-beta.9",
|
|
11
|
+
"@praxisui/visual-builder": "^8.0.0-beta.9",
|
|
12
|
+
"@praxisui/core": "^8.0.0-beta.9",
|
|
13
|
+
"@praxisui/cron-builder": "^8.0.0-beta.9"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"tslib": "^2.3.0",
|