@praxisui/metadata-editor 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 +5 -0
- package/ai/component-registry.json +48 -8
- package/fesm2022/praxisui-metadata-editor.mjs +185 -0
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -130,6 +130,11 @@ Configs de authoring podem declarar `labelKey`, `hintKey`, `placeholderKey`,
|
|
|
130
130
|
essas chaves no namespace `praxis.metadataEditor.*` e mantém o texto literal
|
|
131
131
|
como fallback.
|
|
132
132
|
|
|
133
|
+
Configurações de Quick View também possuem cobertura visual dedicada:
|
|
134
|
+
- Na seção de apresentação de todos os campos (`field-presentation.config.ts`), `quickViewVisible` (`checkbox`) e `quickViewOrder` (`number`) permitem governar quais campos do recurso aparecem no card de Quick View e em qual ordem, enquanto `quickView.previewSurfaceId` e `quickView.detailPresentation` (`auto` | `overlay-only` | `Drawer` | `Modal` | `Route`) governam a superfície de pré-visualização e de abertura do registro.
|
|
135
|
+
- Em controles de relacionamento (`entity-lookup` e `async-select`), `actions.showQuickView` e `quickViewActionLabel` governam a exibição e o rótulo acessível do botão explícito de Quick View em modo de edição.
|
|
136
|
+
- Ao normalizar patches de apresentação, `FieldMetadataEditorComponent` preserva integralmente `seed.quickView.recordOpen` e demais contratos de navegação vindos do backend.
|
|
137
|
+
|
|
133
138
|
Para `controlType: "array"`, o editor renderiza `array.itemSchema.fields`
|
|
134
139
|
como uma lista visual estruturada de `FieldMetadata[]`. O fluxo preserva
|
|
135
140
|
propriedades avançadas dos subcampos, como `options`, `optionSource`,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-
|
|
3
|
+
"generatedAt": "2026-11-01T13:59:56.156Z",
|
|
4
4
|
"packageName": "@praxisui/metadata-editor",
|
|
5
|
-
"packageVersion": "10.0.0-rc.
|
|
5
|
+
"packageVersion": "10.0.0-rc.42",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 1,
|
|
@@ -182,6 +182,12 @@
|
|
|
182
182
|
"presentation.badge",
|
|
183
183
|
"presentation.tooltip",
|
|
184
184
|
"presentationRules",
|
|
185
|
+
"quickViewVisible",
|
|
186
|
+
"quickViewOrder",
|
|
187
|
+
"quickViewActionLabel",
|
|
188
|
+
"actions.showQuickView",
|
|
189
|
+
"quickView.previewSurfaceId",
|
|
190
|
+
"quickView.detailPresentation",
|
|
185
191
|
"options",
|
|
186
192
|
"optionSource",
|
|
187
193
|
"validators",
|
|
@@ -252,6 +258,12 @@
|
|
|
252
258
|
"presentation.badge",
|
|
253
259
|
"presentation.tooltip",
|
|
254
260
|
"presentationRules",
|
|
261
|
+
"quickViewVisible",
|
|
262
|
+
"quickViewOrder",
|
|
263
|
+
"quickViewActionLabel",
|
|
264
|
+
"actions.showQuickView",
|
|
265
|
+
"quickView.previewSurfaceId",
|
|
266
|
+
"quickView.detailPresentation",
|
|
255
267
|
"options",
|
|
256
268
|
"optionSource",
|
|
257
269
|
"validators",
|
|
@@ -479,6 +491,14 @@
|
|
|
479
491
|
},
|
|
480
492
|
"statusToneMap": {
|
|
481
493
|
"type": "object"
|
|
494
|
+
},
|
|
495
|
+
"actions": {
|
|
496
|
+
"type": "object",
|
|
497
|
+
"properties": {
|
|
498
|
+
"showQuickView": {
|
|
499
|
+
"type": "boolean"
|
|
500
|
+
}
|
|
501
|
+
}
|
|
482
502
|
}
|
|
483
503
|
}
|
|
484
504
|
},
|
|
@@ -492,9 +512,15 @@
|
|
|
492
512
|
"href"
|
|
493
513
|
]
|
|
494
514
|
},
|
|
515
|
+
"resourceKey": {
|
|
516
|
+
"type": "string"
|
|
517
|
+
},
|
|
495
518
|
"surfaceId": {
|
|
496
519
|
"type": "string"
|
|
497
520
|
},
|
|
521
|
+
"previewSurfaceId": {
|
|
522
|
+
"type": "string"
|
|
523
|
+
},
|
|
498
524
|
"presentation": {
|
|
499
525
|
"enum": [
|
|
500
526
|
"drawer",
|
|
@@ -626,6 +652,14 @@
|
|
|
626
652
|
},
|
|
627
653
|
"statusToneMap": {
|
|
628
654
|
"type": "object"
|
|
655
|
+
},
|
|
656
|
+
"actions": {
|
|
657
|
+
"type": "object",
|
|
658
|
+
"properties": {
|
|
659
|
+
"showQuickView": {
|
|
660
|
+
"type": "boolean"
|
|
661
|
+
}
|
|
662
|
+
}
|
|
629
663
|
}
|
|
630
664
|
}
|
|
631
665
|
},
|
|
@@ -639,9 +673,15 @@
|
|
|
639
673
|
"href"
|
|
640
674
|
]
|
|
641
675
|
},
|
|
676
|
+
"resourceKey": {
|
|
677
|
+
"type": "string"
|
|
678
|
+
},
|
|
642
679
|
"surfaceId": {
|
|
643
680
|
"type": "string"
|
|
644
681
|
},
|
|
682
|
+
"previewSurfaceId": {
|
|
683
|
+
"type": "string"
|
|
684
|
+
},
|
|
645
685
|
"presentation": {
|
|
646
686
|
"enum": [
|
|
647
687
|
"drawer",
|
|
@@ -1873,9 +1913,9 @@
|
|
|
1873
1913
|
{
|
|
1874
1914
|
"chunkIndex": 1,
|
|
1875
1915
|
"chunkKind": "authoring_manifest",
|
|
1876
|
-
"content": "{\"operationId\":\"fieldMetadata.property.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-metadata-editor\",\"ownerPackage\":\"@praxisui/metadata-editor\",\"configSchemaId\":\"FieldMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set FieldMetadata property Effects: compile-domain-patch. Set this field label to Customer name.\",\"scope\":\"fieldMetadataPath\",\"target\":{\"kind\":\"fieldMetadata\",\"resolver\":\"field-metadata-json-path\",\"required\":true},\"inputContract\":{\"required\":[\"path\",\"value\"],\"properties\":[\"path\",\"value\",\"merge\"],\"semanticTerms\":[\"path\",\"value\",\"merge\",\"name\",\"label\",\"description\",\"controlType\",\"placeholder\",\"defaultValue\",\"group\",\"order\",\"required\",\"disabled\",\"readOnly\",\"hidden\",\"source\",\"transient\",\"submitPolicy\",\"hint\",\"helpText\",\"tooltip\",\"valuePresentation\",\"presentation\",\"presentation.presenter\",\"presentation.tone\",\"presentation.appearance\",\"presentation.icon\",\"presentation.label\",\"presentation.badge\",\"presentation.tooltip\",\"presentationRules\",\"options\",\"optionSource\",\"validators\",\"conditionalRequired\",\"conditionalDisplay\",\"visibleIn\",\"ariaLabel\",\"ariaDescribedBy\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"fieldMetadata\"],\"validators\":[{\"validatorId\":\"field-metadata-shape-canonical\",\"level\":\"error\",\"code\":\"METADATA_FIELD_SHAPE_CANONICAL\",\"description\":\"Edited metadata must remain compatible with canonical FieldMetadata.\"},{\"validatorId\":\"field-path-supported-by-editor\",\"level\":\"error\",\"code\":\"METADATA_FIELD_PATH_SUPPORTED\",\"description\":\"Edited paths must be supported by visual editor coverage or explicitly delegated.\"},{\"validatorId\":\"metadata-round-trip\",\"level\":\"error\",\"code\":\"METADATA_ROUND_TRIP\",\"description\":\"Open, edit, apply/save, reopen and runtime consume must preserve metadata.\"}],\"preconditions\":[\"field-metadata-loaded\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-label\",\"request\":\"Set this field label to Customer name.\",\"operationId\":\"fieldMetadata.property.set\",\"params\":{\"path\":\"label\",\"value\":\"Customer name\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
1916
|
+
"content": "{\"operationId\":\"fieldMetadata.property.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-metadata-editor\",\"ownerPackage\":\"@praxisui/metadata-editor\",\"configSchemaId\":\"FieldMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set FieldMetadata property Effects: compile-domain-patch. Set this field label to Customer name.\",\"scope\":\"fieldMetadataPath\",\"target\":{\"kind\":\"fieldMetadata\",\"resolver\":\"field-metadata-json-path\",\"required\":true},\"inputContract\":{\"required\":[\"path\",\"value\"],\"properties\":[\"path\",\"value\",\"merge\"],\"semanticTerms\":[\"path\",\"value\",\"merge\",\"name\",\"label\",\"description\",\"controlType\",\"placeholder\",\"defaultValue\",\"group\",\"order\",\"required\",\"disabled\",\"readOnly\",\"hidden\",\"source\",\"transient\",\"submitPolicy\",\"hint\",\"helpText\",\"tooltip\",\"valuePresentation\",\"presentation\",\"presentation.presenter\",\"presentation.tone\",\"presentation.appearance\",\"presentation.icon\",\"presentation.label\",\"presentation.badge\",\"presentation.tooltip\",\"presentationRules\",\"quickViewVisible\",\"quickViewOrder\",\"quickViewActionLabel\",\"actions.showQuickView\",\"quickView.previewSurfaceId\",\"quickView.detailPresentation\",\"options\",\"optionSource\",\"validators\",\"conditionalRequired\",\"conditionalDisplay\",\"visibleIn\",\"ariaLabel\",\"ariaDescribedBy\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"fieldMetadata\"],\"validators\":[{\"validatorId\":\"field-metadata-shape-canonical\",\"level\":\"error\",\"code\":\"METADATA_FIELD_SHAPE_CANONICAL\",\"description\":\"Edited metadata must remain compatible with canonical FieldMetadata.\"},{\"validatorId\":\"field-path-supported-by-editor\",\"level\":\"error\",\"code\":\"METADATA_FIELD_PATH_SUPPORTED\",\"description\":\"Edited paths must be supported by visual editor coverage or explicitly delegated.\"},{\"validatorId\":\"metadata-round-trip\",\"level\":\"error\",\"code\":\"METADATA_ROUND_TRIP\",\"description\":\"Open, edit, apply/save, reopen and runtime consume must preserve metadata.\"}],\"preconditions\":[\"field-metadata-loaded\"],\"submissionImpact\":\"affects-schema-backed-data\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-label\",\"request\":\"Set this field label to Customer name.\",\"operationId\":\"fieldMetadata.property.set\",\"params\":{\"path\":\"label\",\"value\":\"Customer name\"},\"isPositive\":true}],\"negativeExamples\":[]}",
|
|
1877
1917
|
"sourcePointer": "projects/praxis-metadata-editor/src/lib/ai/praxis-metadata-editor-authoring-manifest.ts",
|
|
1878
|
-
"contentHash": "
|
|
1918
|
+
"contentHash": "4f7b26803c56d14364b0d1087058cee0984bb7d088bdcbea3c2b8512f770fc9d",
|
|
1879
1919
|
"sourceKind": "component_definition",
|
|
1880
1920
|
"sourceId": "praxis-metadata-editor",
|
|
1881
1921
|
"corpusVersion": "1.0.0"
|
|
@@ -1893,9 +1933,9 @@
|
|
|
1893
1933
|
{
|
|
1894
1934
|
"chunkIndex": 3,
|
|
1895
1935
|
"chunkKind": "authoring_manifest",
|
|
1896
|
-
"content": "{\"operationId\":\"optionSource.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-metadata-editor\",\"ownerPackage\":\"@praxisui/metadata-editor\",\"configSchemaId\":\"FieldMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure option source Effects: compile-domain-patch. Load options from the customers resource using id and name. Save a host-only URL string as the option source.\",\"scope\":\"dataBinding\",\"target\":{\"kind\":\"optionSource\",\"resolver\":\"field-metadata-option-source\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"kind\",\"resource\",\"endpoint\",\"valueField\",\"labelField\",\"dependsOn\",\"dependencyFilterMap\",\"display\",\"detail\",\"options\"],\"semanticTerms\":[\"kind\",\"resource\",\"endpoint\",\"valueField\",\"labelField\",\"dependsOn\",\"dependencyFilterMap\",\"display\",\"detail\",\"options\",\"static\",\"remote\",\"lookup\",\"display.preset\",\"display.usage\",\"display.density\",\"display.selectedLayout\",\"display.resultLayout\",\"display.primaryPropertyPath\",\"display.fields\",\"display.secondaryPropertyPaths\",\"display.badgePropertyPaths\",\"display.statusToneMap\",\"detail.kind\",\"detail.surfaceId\",\"detail.presentation\",\"detail.preferredWidget\",\"detail.mode\",\"compact\",\"rich\",\"directory\",\"status\",\"reference\",\"hierarchical\",\"form\",\"filter\",\"table-cell\",\"dashboard\",\"wizard\",\"review\",\"comfortable\",\"card\",\"inline\",\"token\",\"list\",\"denseList\",\"table\",\"surface\",\"route\",\"href\",\"drawer\",\"modal\",\"view\",\"edit\",\"create\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"fieldMetadata.optionSource\"],\"validators\":[{\"validatorId\":\"option-source-shape-canonical\",\"level\":\"error\",\"code\":\"METADATA_OPTION_SOURCE_CANONICAL\",\"description\":\"Option source must use canonical FieldMetadata/x-ui shape.\"},{\"validatorId\":\"remote-option-source-governed\",\"level\":\"error\",\"code\":\"METADATA_REMOTE_OPTION_SOURCE_GOVERNED\",\"description\":\"Remote option sources must resolve through governed resource or endpoint metadata.\"},{\"validatorId\":\"cascade-backend-shape-preserved\",\"level\":\"error\",\"code\":\"METADATA_CASCADE_BACKEND_SHAPE_PRESERVED\",\"description\":\"Cascade config must preserve x-ui optionSource dependsOn and dependencyFilterMap semantics.\"},{\"validatorId\":\"metadata-round-trip\",\"level\":\"error\",\"code\":\"METADATA_ROUND_TRIP\",\"description\":\"Open, edit, apply/save, reopen and runtime consume must preserve metadata.\"}],\"preconditions\":[\"field-metadata-loaded\"],\"submissionImpact\":\"affects-remote-binding\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-remote-options\",\"request\":\"Load options from the customers resource using id and name.\",\"operationId\":\"optionSource.configure\",\"params\":{\"kind\":\"resource\",\"resource\":\"customers\",\"valueField\":\"id\",\"labelField\":\"name\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-host-only-option-source\",\"request\":\"Save a host-only URL string as the option source.\",\"operationId\":\"optionSource.configure\",\"params\":{\"kind\":\"remote\",\"endpoint\":\"local-only://options\"},\"isPositive\":false}]}",
|
|
1936
|
+
"content": "{\"operationId\":\"optionSource.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-metadata-editor\",\"ownerPackage\":\"@praxisui/metadata-editor\",\"configSchemaId\":\"FieldMetadata\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure option source Effects: compile-domain-patch. Load options from the customers resource using id and name. Save a host-only URL string as the option source.\",\"scope\":\"dataBinding\",\"target\":{\"kind\":\"optionSource\",\"resolver\":\"field-metadata-option-source\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"kind\",\"resource\",\"endpoint\",\"valueField\",\"labelField\",\"dependsOn\",\"dependencyFilterMap\",\"display\",\"detail\",\"options\"],\"semanticTerms\":[\"kind\",\"resource\",\"endpoint\",\"valueField\",\"labelField\",\"dependsOn\",\"dependencyFilterMap\",\"display\",\"detail\",\"options\",\"static\",\"remote\",\"lookup\",\"display.preset\",\"display.usage\",\"display.density\",\"display.selectedLayout\",\"display.resultLayout\",\"display.primaryPropertyPath\",\"display.fields\",\"display.secondaryPropertyPaths\",\"display.badgePropertyPaths\",\"display.statusToneMap\",\"display.actions\",\"detail.kind\",\"detail.resourceKey\",\"detail.surfaceId\",\"detail.previewSurfaceId\",\"detail.presentation\",\"detail.preferredWidget\",\"detail.mode\",\"compact\",\"rich\",\"directory\",\"status\",\"reference\",\"hierarchical\",\"form\",\"filter\",\"table-cell\",\"dashboard\",\"wizard\",\"review\",\"comfortable\",\"card\",\"inline\",\"token\",\"list\",\"denseList\",\"table\",\"display.actions.showQuickView\",\"surface\",\"route\",\"href\",\"drawer\",\"modal\",\"view\",\"edit\",\"create\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"fieldMetadata.optionSource\"],\"validators\":[{\"validatorId\":\"option-source-shape-canonical\",\"level\":\"error\",\"code\":\"METADATA_OPTION_SOURCE_CANONICAL\",\"description\":\"Option source must use canonical FieldMetadata/x-ui shape.\"},{\"validatorId\":\"remote-option-source-governed\",\"level\":\"error\",\"code\":\"METADATA_REMOTE_OPTION_SOURCE_GOVERNED\",\"description\":\"Remote option sources must resolve through governed resource or endpoint metadata.\"},{\"validatorId\":\"cascade-backend-shape-preserved\",\"level\":\"error\",\"code\":\"METADATA_CASCADE_BACKEND_SHAPE_PRESERVED\",\"description\":\"Cascade config must preserve x-ui optionSource dependsOn and dependencyFilterMap semantics.\"},{\"validatorId\":\"metadata-round-trip\",\"level\":\"error\",\"code\":\"METADATA_ROUND_TRIP\",\"description\":\"Open, edit, apply/save, reopen and runtime consume must preserve metadata.\"}],\"preconditions\":[\"field-metadata-loaded\"],\"submissionImpact\":\"affects-remote-binding\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-remote-options\",\"request\":\"Load options from the customers resource using id and name.\",\"operationId\":\"optionSource.configure\",\"params\":{\"kind\":\"resource\",\"resource\":\"customers\",\"valueField\":\"id\",\"labelField\":\"name\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-host-only-option-source\",\"request\":\"Save a host-only URL string as the option source.\",\"operationId\":\"optionSource.configure\",\"params\":{\"kind\":\"remote\",\"endpoint\":\"local-only://options\"},\"isPositive\":false}]}",
|
|
1897
1937
|
"sourcePointer": "projects/praxis-metadata-editor/src/lib/ai/praxis-metadata-editor-authoring-manifest.ts",
|
|
1898
|
-
"contentHash": "
|
|
1938
|
+
"contentHash": "4dcc9f7ae06d7cc3bbc58c2b1dba28262c3172faba29339540cd4b550b8e9738",
|
|
1899
1939
|
"sourceKind": "component_definition",
|
|
1900
1940
|
"sourceId": "praxis-metadata-editor",
|
|
1901
1941
|
"corpusVersion": "1.0.0"
|
|
@@ -1993,9 +2033,9 @@
|
|
|
1993
2033
|
{
|
|
1994
2034
|
"chunkIndex": 13,
|
|
1995
2035
|
"chunkKind": "authoring_manifest",
|
|
1996
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-metadata-editor\",\"ownerPackage\":\"@praxisui/metadata-editor\",\"configSchemaId\":\"FieldMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"fieldMetadata.property.set\",\"title\":\"Set FieldMetadata property\",\"scope\":\"fieldMetadataPath\",\"targetKind\":\"fieldMetadata\",\"target\":{\"kind\":\"fieldMetadata\",\"resolver\":\"field-metadata-json-path\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"path\",\"value\"],\"properties\":{\"path\":{\"enum\":[\"name\",\"label\",\"description\",\"controlType\",\"placeholder\",\"defaultValue\",\"group\",\"order\",\"required\",\"disabled\",\"readOnly\",\"hidden\",\"source\",\"transient\",\"submitPolicy\",\"hint\",\"helpText\",\"tooltip\",\"valuePresentation\",\"presentation\",\"presentation.presenter\",\"presentation.tone\",\"presentation.appearance\",\"presentation.icon\",\"presentation.label\",\"presentation.badge\",\"presentation.tooltip\",\"presentationRules\",\"options\",\"optionSource\",\"validators\",\"conditionalRequired\",\"conditionalDisplay\",\"visibleIn\",\"ariaLabel\",\"ariaDescribedBy\"]},\"value\":{},\"merge\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"metadata-field-property-set\",\"handlerContract\":{\"reads\":[\"fieldMetadata\",\"fieldMetadataPath\",\"SchemaNormalizerService\"],\"writes\":[\"fieldMetadata\"],\"identityKeys\":[\"field.name\",\"path\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"path\",\"value\"],\"properties\":{\"path\":{\"enum\":[\"name\",\"label\",\"description\",\"controlType\",\"placeholder\",\"defaultValue\",\"group\",\"order\",\"required\",\"disabled\",\"readOnly\",\"hidden\",\"source\",\"transient\",\"submitPolicy\",\"hint\",\"helpText\",\"tooltip\",\"valuePresentation\",\"presentation\",\"presentation.presenter\",\"presentation.tone\",\"presentation.appearance\",\"presentation.icon\",\"presentation.label\",\"presentation.badge\",\"presentation.tooltip\",\"presentationRules\",\"options\",\"optionSource\",\"validators\",\"conditionalRequired\",\"conditionalDisplay\",\"visibleIn\",\"ariaLabel\",\"ariaDescribedBy\"]},\"value\":{},\"merge\":{\"type\":\"boolean\"}}},\"failureModes\":[\"unknown-field-metadata-path\",\"non-canonical-shape\",\"readonly-field\",\"normalization-failed\"],\"description\":\"Sets a canonical FieldMetadata property through a governed metadata path and re-runs schema normalization.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"field-metadata-shape-canonical\",\"field-path-supported-by-editor\",\"metadata-round-trip\"],\"affectedPaths\":[\"fieldMetadata\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"field-metadata-loaded\"]},{\"operationId\":\"controlType.set\",\"title\":\"Set control type\",\"scope\":\"controlType\",\"targetKind\":\"controlType\",\"target\":{\"kind\":\"controlType\",\"resolver\":\"dynamic-fields-control-type-discovery\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"controlType\"],\"properties\":{\"controlType\":{\"type\":\"string\"},\"preserveCompatibleProperties\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"metadata-control-type-set\",\"handlerContract\":{\"reads\":[\"FieldControlType\",\"ConfigRegistryService\",\"dynamic-fields-discovery\",\"fieldMetadata\"],\"writes\":[\"fieldMetadata.controlType\",\"properties\",\"normalizedSeed\"],\"identityKeys\":[\"field.name\",\"controlType\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"controlType\"],\"properties\":{\"controlType\":{\"type\":\"string\"},\"preserveCompatibleProperties\":{\"type\":\"boolean\"}}},\"failureModes\":[\"control-type-not-discovered\",\"editor-coverage-missing\",\"incompatible-metadata-preservation\"],\"description\":\"Changes control type only when dynamic-fields discovery and metadata-editor config registry both expose renderer/editor coverage.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"control-type-exists-in-discovery\",\"editor-coverage-exists\",\"metadata-round-trip\"],\"affectedPaths\":[\"fieldMetadata.controlType\",\"properties\",\"normalizedSeed\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"dynamic-fields-discovery-loaded\"]},{\"operationId\":\"optionSource.configure\",\"title\":\"Configure option source\",\"scope\":\"dataBinding\",\"targetKind\":\"optionSource\",\"target\":{\"kind\":\"optionSource\",\"resolver\":\"field-metadata-option-source\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"kind\":{\"enum\":[\"static\",\"remote\",\"resource\",\"lookup\"]},\"resource\":{\"type\":\"string\"},\"endpoint\":{\"type\":\"string\"},\"valueField\":{\"type\":\"string\"},\"labelField\":{\"type\":\"string\"},\"dependsOn\":{\"type\":\"string\"},\"dependencyFilterMap\":{\"type\":\"object\"},\"display\":{\"type\":\"object\",\"properties\":{\"preset\":{\"enum\":[\"compact\",\"rich\",\"directory\",\"status\",\"reference\",\"hierarchical\"]},\"usage\":{\"enum\":[\"form\",\"filter\",\"table-cell\",\"dashboard\",\"wizard\",\"review\"]},\"density\":{\"enum\":[\"compact\",\"comfortable\",\"rich\"]},\"selectedLayout\":{\"enum\":[\"card\",\"inline\",\"compact\",\"token\"]},\"resultLayout\":{\"enum\":[\"list\",\"denseList\",\"table\",\"card\"]},\"primaryPropertyPath\":{\"type\":\"string\"},\"fields\":{\"type\":\"array\"},\"secondaryPropertyPaths\":{\"type\":\"array\"},\"badgePropertyPaths\":{\"type\":\"array\"},\"statusToneMap\":{\"type\":\"object\"}}},\"detail\":{\"type\":\"object\",\"properties\":{\"kind\":{\"enum\":[\"surface\",\"route\",\"href\"]},\"surfaceId\":{\"type\":\"string\"},\"presentation\":{\"enum\":[\"drawer\",\"modal\"]},\"preferredWidget\":{\"type\":\"string\"},\"mode\":{\"enum\":[\"view\",\"edit\",\"create\"]}}},\"options\":{\"type\":\"array\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"metadata-option-source-configure\",\"handlerContract\":{\"reads\":[\"fieldMetadata.optionSource\",\"backend.x-ui.optionSource\",\"SchemaNormalizerService\"],\"writes\":[\"fieldMetadata.optionSource\"],\"identityKeys\":[\"field.name\",\"optionSource.kind\",\"optionSource.resource\"],\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"kind\":{\"enum\":[\"static\",\"remote\",\"resource\",\"lookup\"]},\"resource\":{\"type\":\"string\"},\"endpoint\":{\"type\":\"string\"},\"valueField\":{\"type\":\"string\"},\"labelField\":{\"type\":\"string\"},\"dependsOn\":{\"type\":\"string\"},\"dependencyFilterMap\":{\"type\":\"object\"},\"display\":{\"type\":\"object\",\"properties\":{\"preset\":{\"enum\":[\"compact\",\"rich\",\"directory\",\"status\",\"reference\",\"hierarchical\"]},\"usage\":{\"enum\":[\"form\",\"filter\",\"table-cell\",\"dashboard\",\"wizard\",\"review\"]},\"density\":{\"enum\":[\"compact\",\"comfortable\",\"rich\"]},\"selectedLayout\":{\"enum\":[\"card\",\"inline\",\"compact\",\"token\"]},\"resultLayout\":{\"enum\":[\"list\",\"denseList\",\"table\",\"card\"]},\"primaryPropertyPath\":{\"type\":\"string\"},\"fields\":{\"type\":\"array\"},\"secondaryPropertyPaths\":{\"type\":\"array\"},\"badgePropertyPaths\":{\"type\":\"array\"},\"statusToneMap\":{\"type\":\"object\"}}},\"detail\":{\"type\":\"object\",\"properties\":{\"kind\":{\"enum\":[\"surface\",\"route\",\"href\"]},\"surfaceId\":{\"type\":\"string\"},\"presentation\":{\"enum\":[\"drawer\",\"modal\"]},\"preferredWidget\":{\"type\":\"string\"},\"mode\":{\"enum\":[\"view\",\"edit\",\"create\"]}}},\"options\":{\"type\":\"array\"}}},\"failureModes\":[\"invalid-option-source-kind\",\"remote-source-missing-governed-resource\",\"dependency-filter-map-invalid\"],\"description\":\"Configures canonical optionSource fields while preserving backend x-ui dependsOn and dependencyFilterMap semantics.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"option-source-shape-canonical\",\"remote-option-source-governed\",\"cascade-backend-shape-preserved\",\"metadata-round-trip\"],\"affectedPaths\":[\"fieldMetadata.optionSource\"],\"submissionImpact\":\"affects-remote-binding\",\"preconditions\":[\"field-metadata-loaded\"]}]}",
|
|
2036
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-metadata-editor\",\"ownerPackage\":\"@praxisui/metadata-editor\",\"configSchemaId\":\"FieldMetadata\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"fieldMetadata.property.set\",\"title\":\"Set FieldMetadata property\",\"scope\":\"fieldMetadataPath\",\"targetKind\":\"fieldMetadata\",\"target\":{\"kind\":\"fieldMetadata\",\"resolver\":\"field-metadata-json-path\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"path\",\"value\"],\"properties\":{\"path\":{\"enum\":[\"name\",\"label\",\"description\",\"controlType\",\"placeholder\",\"defaultValue\",\"group\",\"order\",\"required\",\"disabled\",\"readOnly\",\"hidden\",\"source\",\"transient\",\"submitPolicy\",\"hint\",\"helpText\",\"tooltip\",\"valuePresentation\",\"presentation\",\"presentation.presenter\",\"presentation.tone\",\"presentation.appearance\",\"presentation.icon\",\"presentation.label\",\"presentation.badge\",\"presentation.tooltip\",\"presentationRules\",\"quickViewVisible\",\"quickViewOrder\",\"quickViewActionLabel\",\"actions.showQuickView\",\"quickView.previewSurfaceId\",\"quickView.detailPresentation\",\"options\",\"optionSource\",\"validators\",\"conditionalRequired\",\"conditionalDisplay\",\"visibleIn\",\"ariaLabel\",\"ariaDescribedBy\"]},\"value\":{},\"merge\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"metadata-field-property-set\",\"handlerContract\":{\"reads\":[\"fieldMetadata\",\"fieldMetadataPath\",\"SchemaNormalizerService\"],\"writes\":[\"fieldMetadata\"],\"identityKeys\":[\"field.name\",\"path\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"path\",\"value\"],\"properties\":{\"path\":{\"enum\":[\"name\",\"label\",\"description\",\"controlType\",\"placeholder\",\"defaultValue\",\"group\",\"order\",\"required\",\"disabled\",\"readOnly\",\"hidden\",\"source\",\"transient\",\"submitPolicy\",\"hint\",\"helpText\",\"tooltip\",\"valuePresentation\",\"presentation\",\"presentation.presenter\",\"presentation.tone\",\"presentation.appearance\",\"presentation.icon\",\"presentation.label\",\"presentation.badge\",\"presentation.tooltip\",\"presentationRules\",\"quickViewVisible\",\"quickViewOrder\",\"quickViewActionLabel\",\"actions.showQuickView\",\"quickView.previewSurfaceId\",\"quickView.detailPresentation\",\"options\",\"optionSource\",\"validators\",\"conditionalRequired\",\"conditionalDisplay\",\"visibleIn\",\"ariaLabel\",\"ariaDescribedBy\"]},\"value\":{},\"merge\":{\"type\":\"boolean\"}}},\"failureModes\":[\"unknown-field-metadata-path\",\"non-canonical-shape\",\"readonly-field\",\"normalization-failed\"],\"description\":\"Sets a canonical FieldMetadata property through a governed metadata path and re-runs schema normalization.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"field-metadata-shape-canonical\",\"field-path-supported-by-editor\",\"metadata-round-trip\"],\"affectedPaths\":[\"fieldMetadata\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"field-metadata-loaded\"]},{\"operationId\":\"controlType.set\",\"title\":\"Set control type\",\"scope\":\"controlType\",\"targetKind\":\"controlType\",\"target\":{\"kind\":\"controlType\",\"resolver\":\"dynamic-fields-control-type-discovery\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"controlType\"],\"properties\":{\"controlType\":{\"type\":\"string\"},\"preserveCompatibleProperties\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"metadata-control-type-set\",\"handlerContract\":{\"reads\":[\"FieldControlType\",\"ConfigRegistryService\",\"dynamic-fields-discovery\",\"fieldMetadata\"],\"writes\":[\"fieldMetadata.controlType\",\"properties\",\"normalizedSeed\"],\"identityKeys\":[\"field.name\",\"controlType\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"controlType\"],\"properties\":{\"controlType\":{\"type\":\"string\"},\"preserveCompatibleProperties\":{\"type\":\"boolean\"}}},\"failureModes\":[\"control-type-not-discovered\",\"editor-coverage-missing\",\"incompatible-metadata-preservation\"],\"description\":\"Changes control type only when dynamic-fields discovery and metadata-editor config registry both expose renderer/editor coverage.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"control-type-exists-in-discovery\",\"editor-coverage-exists\",\"metadata-round-trip\"],\"affectedPaths\":[\"fieldMetadata.controlType\",\"properties\",\"normalizedSeed\"],\"submissionImpact\":\"affects-schema-backed-data\",\"preconditions\":[\"dynamic-fields-discovery-loaded\"]},{\"operationId\":\"optionSource.configure\",\"title\":\"Configure option source\",\"scope\":\"dataBinding\",\"targetKind\":\"optionSource\",\"target\":{\"kind\":\"optionSource\",\"resolver\":\"field-metadata-option-source\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"kind\":{\"enum\":[\"static\",\"remote\",\"resource\",\"lookup\"]},\"resource\":{\"type\":\"string\"},\"endpoint\":{\"type\":\"string\"},\"valueField\":{\"type\":\"string\"},\"labelField\":{\"type\":\"string\"},\"dependsOn\":{\"type\":\"string\"},\"dependencyFilterMap\":{\"type\":\"object\"},\"display\":{\"type\":\"object\",\"properties\":{\"preset\":{\"enum\":[\"compact\",\"rich\",\"directory\",\"status\",\"reference\",\"hierarchical\"]},\"usage\":{\"enum\":[\"form\",\"filter\",\"table-cell\",\"dashboard\",\"wizard\",\"review\"]},\"density\":{\"enum\":[\"compact\",\"comfortable\",\"rich\"]},\"selectedLayout\":{\"enum\":[\"card\",\"inline\",\"compact\",\"token\"]},\"resultLayout\":{\"enum\":[\"list\",\"denseList\",\"table\",\"card\"]},\"primaryPropertyPath\":{\"type\":\"string\"},\"fields\":{\"type\":\"array\"},\"secondaryPropertyPaths\":{\"type\":\"array\"},\"badgePropertyPaths\":{\"type\":\"array\"},\"statusToneMap\":{\"type\":\"object\"},\"actions\":{\"type\":\"object\",\"properties\":{\"showQuickView\":{\"type\":\"boolean\"}}}}},\"detail\":{\"type\":\"object\",\"properties\":{\"kind\":{\"enum\":[\"surface\",\"route\",\"href\"]},\"resourceKey\":{\"type\":\"string\"},\"surfaceId\":{\"type\":\"string\"},\"previewSurfaceId\":{\"type\":\"string\"},\"presentation\":{\"enum\":[\"drawer\",\"modal\"]},\"preferredWidget\":{\"type\":\"string\"},\"mode\":{\"enum\":[\"view\",\"edit\",\"create\"]}}},\"options\":{\"type\":\"array\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"metadata-option-source-configure\",\"handlerContract\":{\"reads\":[\"fieldMetadata.optionSource\",\"backend.x-ui.optionSource\",\"SchemaNormalizerService\"],\"writes\":[\"fieldMetadata.optionSource\"],\"identityKeys\":[\"field.name\",\"optionSource.kind\",\"optionSource.resource\"],\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"kind\":{\"enum\":[\"static\",\"remote\",\"resource\",\"lookup\"]},\"resource\":{\"type\":\"string\"},\"endpoint\":{\"type\":\"string\"},\"valueField\":{\"type\":\"string\"},\"labelField\":{\"type\":\"string\"},\"dependsOn\":{\"type\":\"string\"},\"dependencyFilterMap\":{\"type\":\"object\"},\"display\":{\"type\":\"object\",\"properties\":{\"preset\":{\"enum\":[\"compact\",\"rich\",\"directory\",\"status\",\"reference\",\"hierarchical\"]},\"usage\":{\"enum\":[\"form\",\"filter\",\"table-cell\",\"dashboard\",\"wizard\",\"review\"]},\"density\":{\"enum\":[\"compact\",\"comfortable\",\"rich\"]},\"selectedLayout\":{\"enum\":[\"card\",\"inline\",\"compact\",\"token\"]},\"resultLayout\":{\"enum\":[\"list\",\"denseList\",\"table\",\"card\"]},\"primaryPropertyPath\":{\"type\":\"string\"},\"fields\":{\"type\":\"array\"},\"secondaryPropertyPaths\":{\"type\":\"array\"},\"badgePropertyPaths\":{\"type\":\"array\"},\"statusToneMap\":{\"type\":\"object\"},\"actions\":{\"type\":\"object\",\"properties\":{\"showQuickView\":{\"type\":\"boolean\"}}}}},\"detail\":{\"type\":\"object\",\"properties\":{\"kind\":{\"enum\":[\"surface\",\"route\",\"href\"]},\"resourceKey\":{\"type\":\"string\"},\"surfaceId\":{\"type\":\"string\"},\"previewSurfaceId\":{\"type\":\"string\"},\"presentation\":{\"enum\":[\"drawer\",\"modal\"]},\"preferredWidget\":{\"type\":\"string\"},\"mode\":{\"enum\":[\"view\",\"edit\",\"create\"]}}},\"options\":{\"type\":\"array\"}}},\"failureModes\":[\"invalid-option-source-kind\",\"remote-source-missing-governed-resource\",\"dependency-filter-map-invalid\"],\"description\":\"Configures canonical optionSource fields while preserving backend x-ui dependsOn and dependencyFilterMap semantics.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"option-source-shape-canonical\",\"remote-option-source-governed\",\"cascade-backend-shape-preserved\",\"metadata-round-trip\"],\"affectedPaths\":[\"fieldMetadata.optionSource\"],\"submissionImpact\":\"affects-remote-binding\",\"preconditions\":[\"field-metadata-loaded\"]}]}",
|
|
1997
2037
|
"sourcePointer": "projects/praxis-metadata-editor/src/lib/ai/praxis-metadata-editor-authoring-manifest.ts",
|
|
1998
|
-
"contentHash": "
|
|
2038
|
+
"contentHash": "cc0e26b2ad9262aa2b3f9d034cafadb57ce4abcd180c565a7cdaab81cd5fc98e",
|
|
1999
2039
|
"sourceKind": "component_definition",
|
|
2000
2040
|
"sourceId": "praxis-metadata-editor",
|
|
2001
2041
|
"corpusVersion": "1.0.0"
|
|
@@ -559,6 +559,16 @@ const METADATA_EDITOR_EN_US = {
|
|
|
559
559
|
'praxis.metadataEditor.presentationFields.tooltip.hint': 'Short explanation shown as a tooltip.',
|
|
560
560
|
'praxis.metadataEditor.presentationFields.presentationRules.label': 'Presentation rules',
|
|
561
561
|
'praxis.metadataEditor.presentationFields.presentationRules.hint': 'Guided builder for ordered Json Logic rules that only change presentation. Later rules win.',
|
|
562
|
+
'praxis.metadataEditor.presentationFields.quickViewVisible.label': 'Show in Quick View summary',
|
|
563
|
+
'praxis.metadataEditor.presentationFields.quickViewVisible.hint': 'Controls x-ui.quickViewVisible when this resource is previewed inside a Quick View card.',
|
|
564
|
+
'praxis.metadataEditor.presentationFields.quickViewOrder.label': 'Quick View summary order',
|
|
565
|
+
'praxis.metadataEditor.presentationFields.quickViewOrder.hint': 'Numeric priority (x-ui.quickViewOrder) for this field in Quick View summary items.',
|
|
566
|
+
'praxis.metadataEditor.presentationFields.quickViewPreviewSurfaceId.label': 'Quick View: preview surface',
|
|
567
|
+
'praxis.metadataEditor.presentationFields.quickViewPreviewSurfaceId.hint': 'Optional dedicated read-only surface for this field\u2019s Quick View card (preserves canonical server recordOpen).',
|
|
568
|
+
'praxis.metadataEditor.presentationFields.quickViewDetailPresentation.label': 'Quick View: detail handoff mode',
|
|
569
|
+
'praxis.metadataEditor.presentationFields.quickViewDetailPresentation.hint': 'Defines whether the primary Quick View CTA opens the full surface in a drawer or modal.',
|
|
570
|
+
'praxis.metadataEditor.presentationFields.quickViewDetailPresentation.option.drawer': 'Side drawer',
|
|
571
|
+
'praxis.metadataEditor.presentationFields.quickViewDetailPresentation.option.modal': 'Modal dialog',
|
|
562
572
|
'praxis.metadataEditor.presentationChoice.help': 'Help',
|
|
563
573
|
'praxis.metadataEditor.presentationChoice.clear': 'Clear selection',
|
|
564
574
|
'praxis.metadataEditor.presentationRulesBuilder.title': 'Presentation rules',
|
|
@@ -813,6 +823,16 @@ const METADATA_EDITOR_PT_BR = {
|
|
|
813
823
|
'praxis.metadataEditor.presentationFields.tooltip.hint': 'Explica\u00e7\u00e3o curta exibida como tooltip.',
|
|
814
824
|
'praxis.metadataEditor.presentationFields.presentationRules.label': 'Regras de apresenta\u00e7\u00e3o',
|
|
815
825
|
'praxis.metadataEditor.presentationFields.presentationRules.hint': 'Builder guiado para regras Json Logic ordenadas que alteram somente a apresenta\u00e7\u00e3o. Regras posteriores vencem.',
|
|
826
|
+
'praxis.metadataEditor.presentationFields.quickViewVisible.label': 'Exibir no resumo Quick View',
|
|
827
|
+
'praxis.metadataEditor.presentationFields.quickViewVisible.hint': 'Controla x-ui.quickViewVisible quando este recurso \u00e9 exibido em um card de Quick View.',
|
|
828
|
+
'praxis.metadataEditor.presentationFields.quickViewOrder.label': 'Ordem no resumo Quick View',
|
|
829
|
+
'praxis.metadataEditor.presentationFields.quickViewOrder.hint': 'Prioridade num\u00e9rica (x-ui.quickViewOrder) deste campo na s\u00edntese do card Quick View.',
|
|
830
|
+
'praxis.metadataEditor.presentationFields.quickViewPreviewSurfaceId.label': 'Quick View: surface de preview',
|
|
831
|
+
'praxis.metadataEditor.presentationFields.quickViewPreviewSurfaceId.hint': 'Surface read-only opcional dedicada ao card de Quick View deste v\u00ednculo (preserva o recordOpen can\u00f4nico do servidor).',
|
|
832
|
+
'praxis.metadataEditor.presentationFields.quickViewDetailPresentation.label': 'Quick View: abertura de detalhe',
|
|
833
|
+
'praxis.metadataEditor.presentationFields.quickViewDetailPresentation.hint': 'Define se o CTA prim\u00e1rio do Quick View abre a superf\u00edcie completa em drawer ou modal.',
|
|
834
|
+
'praxis.metadataEditor.presentationFields.quickViewDetailPresentation.option.drawer': 'Gaveta lateral (drawer)',
|
|
835
|
+
'praxis.metadataEditor.presentationFields.quickViewDetailPresentation.option.modal': 'Modal (dialog)',
|
|
816
836
|
'praxis.metadataEditor.presentationChoice.help': 'Ajuda',
|
|
817
837
|
'praxis.metadataEditor.presentationChoice.clear': 'Limpar sele\u00e7\u00e3o',
|
|
818
838
|
'praxis.metadataEditor.presentationRulesBuilder.title': 'Regras de apresenta\u00e7\u00e3o',
|
|
@@ -4228,6 +4248,20 @@ const selectProperties = [
|
|
|
4228
4248
|
{ value: 'danger', text: 'Danger' },
|
|
4229
4249
|
],
|
|
4230
4250
|
},
|
|
4251
|
+
{
|
|
4252
|
+
name: 'actions.showQuickView',
|
|
4253
|
+
label: 'Quick View: exibir botão',
|
|
4254
|
+
editorType: 'checkbox',
|
|
4255
|
+
group: 'Ações',
|
|
4256
|
+
hint: 'Controla o botão de visualização rápida quando um único item está selecionado e há vínculo governado (resourceReference / optionSource.detail).',
|
|
4257
|
+
},
|
|
4258
|
+
{
|
|
4259
|
+
name: 'quickViewActionLabel',
|
|
4260
|
+
label: 'Quick View: label da ação',
|
|
4261
|
+
editorType: 'text',
|
|
4262
|
+
group: 'Ações',
|
|
4263
|
+
hint: 'Rótulo acessível customizado para o botão de visualização rápida do item selecionado.',
|
|
4264
|
+
},
|
|
4231
4265
|
// 7) Aparência
|
|
4232
4266
|
{
|
|
4233
4267
|
name: 'materialDesign.appearance',
|
|
@@ -4601,6 +4635,13 @@ const entityLookupProperties = [
|
|
|
4601
4635
|
group: 'Display canonico',
|
|
4602
4636
|
hint: 'Limite preferencial de badges antes de overflow.',
|
|
4603
4637
|
},
|
|
4638
|
+
{
|
|
4639
|
+
name: 'optionSource.display.actions.showQuickView',
|
|
4640
|
+
label: 'Display: acao visualizacao rapida',
|
|
4641
|
+
editorType: 'checkbox',
|
|
4642
|
+
group: 'Display canonico',
|
|
4643
|
+
hint: 'Exibe ou oculta o gatilho de Quick View na projecao canonica de display do optionSource.',
|
|
4644
|
+
},
|
|
4604
4645
|
{
|
|
4605
4646
|
name: 'selectedLayout',
|
|
4606
4647
|
label: 'Layout selecionado',
|
|
@@ -4929,6 +4970,13 @@ const entityLookupProperties = [
|
|
|
4929
4970
|
],
|
|
4930
4971
|
hint: 'Use surface como contrato canonico de plataforma; route/href ficam como fallback legado.',
|
|
4931
4972
|
},
|
|
4973
|
+
{
|
|
4974
|
+
name: 'optionSource.detail.resourceKey',
|
|
4975
|
+
label: 'ResourceKey de detalhe',
|
|
4976
|
+
editorType: 'text',
|
|
4977
|
+
group: 'Navegacao',
|
|
4978
|
+
hint: 'Chave canonica do recurso destino publicada pelo backend (ex.: human-resources.departamentos).',
|
|
4979
|
+
},
|
|
4932
4980
|
{
|
|
4933
4981
|
name: 'optionSource.detail.surfaceId',
|
|
4934
4982
|
label: 'Surface de detalhe',
|
|
@@ -4936,6 +4984,13 @@ const entityLookupProperties = [
|
|
|
4936
4984
|
group: 'Navegacao',
|
|
4937
4985
|
hint: 'Id da surface item-level preferida. Ex.: view, detail.',
|
|
4938
4986
|
},
|
|
4987
|
+
{
|
|
4988
|
+
name: 'optionSource.detail.previewSurfaceId',
|
|
4989
|
+
label: 'Surface de preview (Quick View)',
|
|
4990
|
+
editorType: 'text',
|
|
4991
|
+
group: 'Navegacao',
|
|
4992
|
+
hint: 'Surface read-only opcional dedicada ao card de Quick View; quando ausente, usa surfaceId.',
|
|
4993
|
+
},
|
|
4939
4994
|
{
|
|
4940
4995
|
name: 'optionSource.detail.presentation',
|
|
4941
4996
|
label: 'Apresentacao da surface',
|
|
@@ -5066,6 +5121,13 @@ const entityLookupProperties = [
|
|
|
5066
5121
|
editorType: 'text',
|
|
5067
5122
|
group: 'Acoes do lookup',
|
|
5068
5123
|
},
|
|
5124
|
+
{
|
|
5125
|
+
name: 'quickViewActionLabel',
|
|
5126
|
+
label: 'Label visualizacao rapida',
|
|
5127
|
+
editorType: 'text',
|
|
5128
|
+
group: 'Acoes do lookup',
|
|
5129
|
+
hint: 'Rotulo customizado para o botao/acao de Quick View do registro selecionado.',
|
|
5130
|
+
},
|
|
5069
5131
|
{
|
|
5070
5132
|
name: 'changeActionLabel',
|
|
5071
5133
|
label: 'Label trocar',
|
|
@@ -5102,6 +5164,13 @@ const entityLookupProperties = [
|
|
|
5102
5164
|
editorType: 'checkbox',
|
|
5103
5165
|
group: 'Acoes do lookup',
|
|
5104
5166
|
},
|
|
5167
|
+
{
|
|
5168
|
+
name: 'actions.showQuickView',
|
|
5169
|
+
label: 'Acao: visualizacao rapida',
|
|
5170
|
+
editorType: 'checkbox',
|
|
5171
|
+
group: 'Acoes do lookup',
|
|
5172
|
+
hint: 'Exibe ou oculta o gatilho de Quick View quando houver target governado (resourceReference ou optionSource.detail).',
|
|
5173
|
+
},
|
|
5105
5174
|
{
|
|
5106
5175
|
name: 'actions.showChange',
|
|
5107
5176
|
label: 'Acao: trocar',
|
|
@@ -8754,6 +8823,58 @@ const fieldPresentationProperties = [
|
|
|
8754
8823
|
hint: 'Builder guiado para regras Json Logic ordenadas que alteram somente a apresentação. Regras posteriores vencem.',
|
|
8755
8824
|
hintKey: 'presentationFields.presentationRules.hint',
|
|
8756
8825
|
},
|
|
8826
|
+
{
|
|
8827
|
+
name: 'quickViewVisible',
|
|
8828
|
+
label: 'Exibir no resumo Quick View',
|
|
8829
|
+
labelKey: 'presentationFields.quickViewVisible.label',
|
|
8830
|
+
editorType: 'checkbox',
|
|
8831
|
+
group: 'Apresentação',
|
|
8832
|
+
groupKey: 'presentationFields.group',
|
|
8833
|
+
hint: 'Controla x-ui.quickViewVisible quando este recurso é exibido em um card de Quick View.',
|
|
8834
|
+
hintKey: 'presentationFields.quickViewVisible.hint',
|
|
8835
|
+
},
|
|
8836
|
+
{
|
|
8837
|
+
name: 'quickViewOrder',
|
|
8838
|
+
label: 'Ordem no resumo Quick View',
|
|
8839
|
+
labelKey: 'presentationFields.quickViewOrder.label',
|
|
8840
|
+
editorType: 'number',
|
|
8841
|
+
group: 'Apresentação',
|
|
8842
|
+
groupKey: 'presentationFields.group',
|
|
8843
|
+
hint: 'Prioridade numérica (x-ui.quickViewOrder) deste campo na síntese do card Quick View.',
|
|
8844
|
+
hintKey: 'presentationFields.quickViewOrder.hint',
|
|
8845
|
+
},
|
|
8846
|
+
{
|
|
8847
|
+
name: 'quickView.previewSurfaceId',
|
|
8848
|
+
label: 'Quick View: surface de preview',
|
|
8849
|
+
labelKey: 'presentationFields.quickViewPreviewSurfaceId.label',
|
|
8850
|
+
editorType: 'text',
|
|
8851
|
+
group: 'Apresentação',
|
|
8852
|
+
groupKey: 'presentationFields.group',
|
|
8853
|
+
hint: 'Surface read-only opcional dedicada ao card de Quick View deste vínculo (preserva o recordOpen canônico do servidor).',
|
|
8854
|
+
hintKey: 'presentationFields.quickViewPreviewSurfaceId.hint',
|
|
8855
|
+
},
|
|
8856
|
+
{
|
|
8857
|
+
name: 'quickView.detailPresentation',
|
|
8858
|
+
label: 'Quick View: abertura de detalhe',
|
|
8859
|
+
labelKey: 'presentationFields.quickViewDetailPresentation.label',
|
|
8860
|
+
editorType: 'select',
|
|
8861
|
+
group: 'Apresentação',
|
|
8862
|
+
groupKey: 'presentationFields.group',
|
|
8863
|
+
options: [
|
|
8864
|
+
{
|
|
8865
|
+
value: 'drawer',
|
|
8866
|
+
text: 'Gaveta lateral (drawer)',
|
|
8867
|
+
textKey: 'presentationFields.quickViewDetailPresentation.option.drawer',
|
|
8868
|
+
},
|
|
8869
|
+
{
|
|
8870
|
+
value: 'modal',
|
|
8871
|
+
text: 'Modal (dialog)',
|
|
8872
|
+
textKey: 'presentationFields.quickViewDetailPresentation.option.modal',
|
|
8873
|
+
},
|
|
8874
|
+
],
|
|
8875
|
+
hint: 'Define se o CTA primário do Quick View abre a superfície completa em drawer ou modal.',
|
|
8876
|
+
hintKey: 'presentationFields.quickViewDetailPresentation.hint',
|
|
8877
|
+
},
|
|
8757
8878
|
];
|
|
8758
8879
|
|
|
8759
8880
|
/** Garante que minLength <= maxLength quando ambos definidos. */
|
|
@@ -11904,6 +12025,18 @@ class FieldMetadataEditorComponent {
|
|
|
11904
12025
|
this.normalizeJsonObjectProperty(patch, 'valuePresentation');
|
|
11905
12026
|
this.normalizeJsonObjectProperty(patch, 'presentation');
|
|
11906
12027
|
this.normalizeJsonArrayProperty(patch, 'presentationRules');
|
|
12028
|
+
const seedRecordOpen = this.seed?.quickView?.recordOpen;
|
|
12029
|
+
if (patch?.quickView &&
|
|
12030
|
+
typeof patch.quickView === 'object' &&
|
|
12031
|
+
!Array.isArray(patch.quickView) &&
|
|
12032
|
+
seedRecordOpen &&
|
|
12033
|
+
typeof seedRecordOpen === 'object' &&
|
|
12034
|
+
patch.quickView.recordOpen === undefined) {
|
|
12035
|
+
patch.quickView = {
|
|
12036
|
+
recordOpen: this.cloneSnapshot(seedRecordOpen),
|
|
12037
|
+
...patch.quickView,
|
|
12038
|
+
};
|
|
12039
|
+
}
|
|
11907
12040
|
}
|
|
11908
12041
|
normalizeEntityLookupPatchValues(patch) {
|
|
11909
12042
|
const optionSource = patch?.optionSource;
|
|
@@ -14567,6 +14700,44 @@ const BASE_CAPABILITIES = [
|
|
|
14567
14700
|
description: 'Ordered Json Logic presentation rules edited by a guided builder for common conditions and semantic visual effects.',
|
|
14568
14701
|
safetyNotes: 'Rules may only affect tone, icon, label, badge, appearance and tooltip; they must not mutate submitted values or execute commands.',
|
|
14569
14702
|
},
|
|
14703
|
+
{
|
|
14704
|
+
path: 'seed.quickViewVisible',
|
|
14705
|
+
category: 'appearance',
|
|
14706
|
+
valueKind: 'boolean',
|
|
14707
|
+
description: 'Whether this field is shown in Resource Quick View summary items when the resource is previewed.',
|
|
14708
|
+
},
|
|
14709
|
+
{
|
|
14710
|
+
path: 'seed.quickViewOrder',
|
|
14711
|
+
category: 'layout',
|
|
14712
|
+
valueKind: 'number',
|
|
14713
|
+
description: 'Numeric ordering priority for this field inside Resource Quick View summary items.',
|
|
14714
|
+
},
|
|
14715
|
+
{
|
|
14716
|
+
path: 'seed.quickView.previewSurfaceId',
|
|
14717
|
+
category: 'behavior',
|
|
14718
|
+
valueKind: 'string',
|
|
14719
|
+
description: 'Optional dedicated read-only surfaceId used to hydrate the Quick View card while preserving the canonical server recordOpen target.',
|
|
14720
|
+
safetyNotes: 'Must only refine the preview surface; never override backend-owned recordOpen.target.resourceKey or surfaceId.',
|
|
14721
|
+
},
|
|
14722
|
+
{
|
|
14723
|
+
path: 'seed.quickView.detailPresentation',
|
|
14724
|
+
category: 'layout',
|
|
14725
|
+
valueKind: 'enum',
|
|
14726
|
+
allowedValues: ['drawer', 'modal'],
|
|
14727
|
+
description: 'Preferred presentation mode (drawer or modal) when handing off from Quick View to the full detail surface.',
|
|
14728
|
+
},
|
|
14729
|
+
{
|
|
14730
|
+
path: 'seed.quickViewActionLabel',
|
|
14731
|
+
category: 'identity',
|
|
14732
|
+
valueKind: 'string',
|
|
14733
|
+
description: 'Accessible custom label for the Quick View trigger action on lookup and select controls.',
|
|
14734
|
+
},
|
|
14735
|
+
{
|
|
14736
|
+
path: 'seed.actions.showQuickView',
|
|
14737
|
+
category: 'behavior',
|
|
14738
|
+
valueKind: 'boolean',
|
|
14739
|
+
description: 'Controls whether the explicit Quick View action button is shown when a governed reference target is present.',
|
|
14740
|
+
},
|
|
14570
14741
|
{
|
|
14571
14742
|
path: 'seed.shortcuts',
|
|
14572
14743
|
category: 'behavior',
|
|
@@ -14623,6 +14794,12 @@ const fieldMetadataPropertySchema = {
|
|
|
14623
14794
|
'presentation.badge',
|
|
14624
14795
|
'presentation.tooltip',
|
|
14625
14796
|
'presentationRules',
|
|
14797
|
+
'quickViewVisible',
|
|
14798
|
+
'quickViewOrder',
|
|
14799
|
+
'quickViewActionLabel',
|
|
14800
|
+
'actions.showQuickView',
|
|
14801
|
+
'quickView.previewSurfaceId',
|
|
14802
|
+
'quickView.detailPresentation',
|
|
14626
14803
|
'options',
|
|
14627
14804
|
'optionSource',
|
|
14628
14805
|
'validators',
|
|
@@ -14661,13 +14838,21 @@ const optionSourceSchema = {
|
|
|
14661
14838
|
secondaryPropertyPaths: { type: 'array' },
|
|
14662
14839
|
badgePropertyPaths: { type: 'array' },
|
|
14663
14840
|
statusToneMap: { type: 'object' },
|
|
14841
|
+
actions: {
|
|
14842
|
+
type: 'object',
|
|
14843
|
+
properties: {
|
|
14844
|
+
showQuickView: { type: 'boolean' },
|
|
14845
|
+
},
|
|
14846
|
+
},
|
|
14664
14847
|
},
|
|
14665
14848
|
},
|
|
14666
14849
|
detail: {
|
|
14667
14850
|
type: 'object',
|
|
14668
14851
|
properties: {
|
|
14669
14852
|
kind: { enum: ['surface', 'route', 'href'] },
|
|
14853
|
+
resourceKey: { type: 'string' },
|
|
14670
14854
|
surfaceId: { type: 'string' },
|
|
14855
|
+
previewSurfaceId: { type: 'string' },
|
|
14671
14856
|
presentation: { enum: ['drawer', 'modal'] },
|
|
14672
14857
|
preferredWidget: { type: 'string' },
|
|
14673
14858
|
mode: { enum: ['view', 'edit', 'create'] },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/metadata-editor",
|
|
3
|
-
"version": "10.0.0-rc.
|
|
3
|
+
"version": "10.0.0-rc.42",
|
|
4
4
|
"description": "Metadata editor for Praxis UI fields and components with runtime integration.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
"@angular/cdk": "^21.0.0",
|
|
9
9
|
"@angular/forms": "^21.0.0",
|
|
10
10
|
"@angular/material": "^21.0.0",
|
|
11
|
-
"@praxisui/ai": "^10.0.0-rc.
|
|
12
|
-
"@praxisui/core": "^10.0.0-rc.
|
|
13
|
-
"@praxisui/dynamic-fields": "^10.0.0-rc.
|
|
14
|
-
"@praxisui/settings-panel": "^10.0.0-rc.
|
|
11
|
+
"@praxisui/ai": "^10.0.0-rc.42",
|
|
12
|
+
"@praxisui/core": "^10.0.0-rc.42",
|
|
13
|
+
"@praxisui/dynamic-fields": "^10.0.0-rc.42",
|
|
14
|
+
"@praxisui/settings-panel": "^10.0.0-rc.42",
|
|
15
15
|
"rxjs": "~7.8.0"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|