@praxisui/crud 9.0.5-rc.32 → 9.0.5-rc.34
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
CHANGED
|
@@ -96,6 +96,7 @@ export class EmployeesCrudComponent {
|
|
|
96
96
|
- `tableConfigPersistenceStrategy`: controls persistence precedence for the internal table. Keep `local-first` for user-owned workspaces, use `input-first` for an authoritative governed contract, and use `volatile` for previews that must neither read nor write stored preferences.
|
|
97
97
|
- `context`: host/runtime context passed into table and form flows
|
|
98
98
|
- `enableCustomization`: enables the package authoring surface
|
|
99
|
+
- `showResourceIdentityKey`: defaults to `true`; set it to `false` when an existing-record modal or drawer should preserve the readable identity title without exposing an opaque or technical public key
|
|
99
100
|
- `authoringCapability`: optionally requires the exact capability from `EnterpriseRuntimeContext.capabilities` before authoring controls, the CRUD editor, and its internal table authoring are available. This is a UX gate; governed persistence must enforce the same policy server-side.
|
|
100
101
|
|
|
101
102
|
It emits:
|
|
@@ -206,8 +207,9 @@ above the command form when the table has materialized it. An explicit valid
|
|
|
206
207
|
key-only fallback from the valid `x-ui.resource.idField`, without inferring a
|
|
207
208
|
title from property names. This is read-only context: immutable keys remain
|
|
208
209
|
outside the request schema and are never added to the update payload. Custom
|
|
209
|
-
drawer adapters receive the same `resourceIdentity` context and
|
|
210
|
-
presentation
|
|
210
|
+
drawer adapters receive the same `resourceIdentity` context and the
|
|
211
|
+
`showResourceIdentityKey` presentation preference. They must keep the identity
|
|
212
|
+
outside form inputs and retain responsibility for presenting its readable title.
|
|
211
213
|
|
|
212
214
|
Related operations also receive `contextIdentity` when the governed surface
|
|
213
215
|
publishes `context.operation.taskScope`. The default host labels it as “Related
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-08-
|
|
3
|
+
"generatedAt": "2026-08-17T16:11:34.642Z",
|
|
4
4
|
"packageName": "@praxisui/crud",
|
|
5
|
-
"packageVersion": "9.0.5-rc.
|
|
5
|
+
"packageVersion": "9.0.5-rc.34",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 2,
|
|
@@ -91,6 +91,13 @@
|
|
|
91
91
|
"description": "Habilita modo de customização do layout.",
|
|
92
92
|
"default": false
|
|
93
93
|
},
|
|
94
|
+
{
|
|
95
|
+
"name": "showResourceIdentityKey",
|
|
96
|
+
"type": "boolean",
|
|
97
|
+
"required": false,
|
|
98
|
+
"description": "Controla se modal e drawer exibem a chave da identidade canônica do registro. Use false quando a chave pública for opaca ou apenas técnica; o título legível permanece visível.",
|
|
99
|
+
"default": true
|
|
100
|
+
},
|
|
94
101
|
{
|
|
95
102
|
"name": "authoringCapability",
|
|
96
103
|
"type": "string | null",
|
|
@@ -5067,6 +5074,11 @@
|
|
|
5067
5074
|
"type": "boolean",
|
|
5068
5075
|
"description": "Explicit host opt-in for CRUD authoring surfaces."
|
|
5069
5076
|
},
|
|
5077
|
+
{
|
|
5078
|
+
"name": "showResourceIdentityKey",
|
|
5079
|
+
"type": "boolean",
|
|
5080
|
+
"description": "Presentation-only control for the canonical key in existing-record modal and drawer headers. Defaults to true; false preserves the readable title while hiding an opaque or technical key."
|
|
5081
|
+
},
|
|
5070
5082
|
{
|
|
5071
5083
|
"name": "authoringCapability",
|
|
5072
5084
|
"type": "string | null",
|
|
@@ -7253,9 +7265,9 @@
|
|
|
7253
7265
|
{
|
|
7254
7266
|
"chunkIndex": 0,
|
|
7255
7267
|
"chunkKind": "summary",
|
|
7256
|
-
"content": "Component ID: praxis-crud\nSelector: praxis-crud\nFriendly Name: Praxis CRUD\nDescription: Tabela com operações de CRUD via metadados.\nLib/Package: @praxisui/crud\nTags: widget, crud, configurable, hasWizard, stable\nInputs:\n - metadata (CrudMetadata | string)\n - crudId (string)\n - componentInstanceId (string)\n - tableConfigPersistenceStrategy ('local-first' | 'input-first' | 'volatile')\n - context (Record<string, unknown>)\n - metadata.queryContext (PraxisDataQueryContext | null)\n - metadata.resource.schemaPath (string | null)\n - metadata.resource.title (string | null)\n - metadata.resource.formTitle (string | null)\n - metadata.filterCriteria (Record<string, unknown> | null)\n - metadata.form (FormConfig)\n - metadata.actions[].form (CrudActionFormContract)\n - enableCustomization (boolean)\n - authoringCapability (string | null)\nOutputs:\n - afterOpen ({ mode: FormOpenMode; action: string })\n - afterClose (void)\n - afterSave ({ id: string | number; data: unknown })\n - afterDelete ({ id: string | number })\n - reactiveDeterminationExecuted ({ action: string; event: ReactiveDeterminationExecutionEvent })\n - reactiveDeterminationPendingChange ({ action: string; pending: boolean })\n - reactiveDeterminationStabilityChange (CrudReactiveDeterminationStabilityChange)\n - rowClick ({ row: unknown; index: number })\n - rowAction (CrudActionRuntimeEvent)\n - selectionChange (unknown)\n - resourceEvent (PraxisResourceEvent<unknown>)\n - error (unknown)\n - configureRequested (void)\n - crudAuthoringDocumentApplied (CrudAuthoringWidgetPersistenceEvent)\n - crudAuthoringDocumentSaved (CrudAuthoringWidgetPersistenceEvent)\n",
|
|
7268
|
+
"content": "Component ID: praxis-crud\nSelector: praxis-crud\nFriendly Name: Praxis CRUD\nDescription: Tabela com operações de CRUD via metadados.\nLib/Package: @praxisui/crud\nTags: widget, crud, configurable, hasWizard, stable\nInputs:\n - metadata (CrudMetadata | string)\n - crudId (string)\n - componentInstanceId (string)\n - tableConfigPersistenceStrategy ('local-first' | 'input-first' | 'volatile')\n - context (Record<string, unknown>)\n - metadata.queryContext (PraxisDataQueryContext | null)\n - metadata.resource.schemaPath (string | null)\n - metadata.resource.title (string | null)\n - metadata.resource.formTitle (string | null)\n - metadata.filterCriteria (Record<string, unknown> | null)\n - metadata.form (FormConfig)\n - metadata.actions[].form (CrudActionFormContract)\n - enableCustomization (boolean)\n - showResourceIdentityKey (boolean)\n - authoringCapability (string | null)\nOutputs:\n - afterOpen ({ mode: FormOpenMode; action: string })\n - afterClose (void)\n - afterSave ({ id: string | number; data: unknown })\n - afterDelete ({ id: string | number })\n - reactiveDeterminationExecuted ({ action: string; event: ReactiveDeterminationExecutionEvent })\n - reactiveDeterminationPendingChange ({ action: string; pending: boolean })\n - reactiveDeterminationStabilityChange (CrudReactiveDeterminationStabilityChange)\n - rowClick ({ row: unknown; index: number })\n - rowAction (CrudActionRuntimeEvent)\n - selectionChange (unknown)\n - resourceEvent (PraxisResourceEvent<unknown>)\n - error (unknown)\n - configureRequested (void)\n - crudAuthoringDocumentApplied (CrudAuthoringWidgetPersistenceEvent)\n - crudAuthoringDocumentSaved (CrudAuthoringWidgetPersistenceEvent)\n",
|
|
7257
7269
|
"sourcePointer": "projects/praxis-crud/src/lib/praxis-crud.metadata.ts",
|
|
7258
|
-
"contentHash": "
|
|
7270
|
+
"contentHash": "b23b03f710e5ccd9109b534891d97f93780d572005599050d3c9b3ade71d57e2",
|
|
7259
7271
|
"sourceKind": "component_definition",
|
|
7260
7272
|
"sourceId": "praxis-crud",
|
|
7261
7273
|
"corpusVersion": "1.0.0"
|
|
@@ -7483,9 +7495,9 @@
|
|
|
7483
7495
|
{
|
|
7484
7496
|
"chunkIndex": 23,
|
|
7485
7497
|
"chunkKind": "authoring_manifest",
|
|
7486
|
-
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"metadata\",\"type\":\"CrudMetadata | string\",\"description\":\"Canonical CRUD metadata or serialized metadata document.\"},{\"name\":\"crudId\",\"type\":\"string\",\"description\":\"Stable CRUD instance id used for table/form identity and persistence.\"},{\"name\":\"componentInstanceId\",\"type\":\"string\",\"description\":\"Optional stable host instance id for multiple CRUD widgets on the same route.\"},{\"name\":\"tableConfigPersistenceStrategy\",\"type\":\"'local-first' | 'input-first' | 'volatile'\",\"description\":\"Persistence precedence forwarded to the internal Praxis Table. Governed previews should use input-first or volatile explicitly.\"},{\"name\":\"context\",\"type\":\"Record<string, unknown>\",\"description\":\"Opaque host context used for authoring seeds and launcher inputs.\"},{\"name\":\"enableCustomization\",\"type\":\"boolean\",\"description\":\"Explicit host opt-in for CRUD authoring surfaces.\"},{\"name\":\"authoringCapability\",\"type\":\"string | null\",\"description\":\"Public runtime capability required before CRUD and delegated table authoring can open.\"},{\"name\":\"afterOpen\",\"type\":\"{ mode: FormOpenMode; action: string }\",\"description\":\"Emitted after a CRUD action opens.\"},{\"name\":\"afterSave\",\"type\":\"{ id: string | number; data: unknown }\",\"description\":\"Emitted after save; CRUD refetches the list.\"},{\"name\":\"afterDelete\",\"type\":\"{ id: string | number }\",\"description\":\"Emitted after delete; CRUD refetches the list.\"},{\"name\":\"resourceEvent\",\"type\":\"PraxisResourceEvent<unknown>\",\"description\":\"Canonical resource interaction envelope forwarded from the internal table for governed host composition.\"}]}",
|
|
7498
|
+
"content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-crud\",\"ownerPackage\":\"@praxisui/crud\",\"configSchemaId\":\"CrudMetadata\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"metadata\",\"type\":\"CrudMetadata | string\",\"description\":\"Canonical CRUD metadata or serialized metadata document.\"},{\"name\":\"crudId\",\"type\":\"string\",\"description\":\"Stable CRUD instance id used for table/form identity and persistence.\"},{\"name\":\"componentInstanceId\",\"type\":\"string\",\"description\":\"Optional stable host instance id for multiple CRUD widgets on the same route.\"},{\"name\":\"tableConfigPersistenceStrategy\",\"type\":\"'local-first' | 'input-first' | 'volatile'\",\"description\":\"Persistence precedence forwarded to the internal Praxis Table. Governed previews should use input-first or volatile explicitly.\"},{\"name\":\"context\",\"type\":\"Record<string, unknown>\",\"description\":\"Opaque host context used for authoring seeds and launcher inputs.\"},{\"name\":\"enableCustomization\",\"type\":\"boolean\",\"description\":\"Explicit host opt-in for CRUD authoring surfaces.\"},{\"name\":\"showResourceIdentityKey\",\"type\":\"boolean\",\"description\":\"Presentation-only control for the canonical key in existing-record modal and drawer headers. Defaults to true; false preserves the readable title while hiding an opaque or technical key.\"},{\"name\":\"authoringCapability\",\"type\":\"string | null\",\"description\":\"Public runtime capability required before CRUD and delegated table authoring can open.\"},{\"name\":\"afterOpen\",\"type\":\"{ mode: FormOpenMode; action: string }\",\"description\":\"Emitted after a CRUD action opens.\"},{\"name\":\"afterSave\",\"type\":\"{ id: string | number; data: unknown }\",\"description\":\"Emitted after save; CRUD refetches the list.\"},{\"name\":\"afterDelete\",\"type\":\"{ id: string | number }\",\"description\":\"Emitted after delete; CRUD refetches the list.\"},{\"name\":\"resourceEvent\",\"type\":\"PraxisResourceEvent<unknown>\",\"description\":\"Canonical resource interaction envelope forwarded from the internal table for governed host composition.\"}]}",
|
|
7487
7499
|
"sourcePointer": "projects/praxis-crud/src/lib/ai/praxis-crud-authoring-manifest.ts",
|
|
7488
|
-
"contentHash": "
|
|
7500
|
+
"contentHash": "8d9479e522f58e71d54dd7654e161b6f84db71c9828dd621458bcd5887fc7cb6",
|
|
7489
7501
|
"sourceKind": "component_definition",
|
|
7490
7502
|
"sourceId": "praxis-crud",
|
|
7491
7503
|
"corpusVersion": "1.0.0"
|
|
@@ -193,6 +193,7 @@ class CrudLauncherService {
|
|
|
193
193
|
presentation: mode === 'drawer' ? 'drawer' : 'modal',
|
|
194
194
|
resourceIdentity,
|
|
195
195
|
contextIdentity,
|
|
196
|
+
showResourceIdentityKey: runtime?.showResourceIdentityKey !== false,
|
|
196
197
|
reactiveDeterminationCallbacks: {
|
|
197
198
|
onEvent: drawerCallbacks?.onReactiveDetermination,
|
|
198
199
|
onPendingChange: drawerCallbacks?.onReactiveDeterminationPendingChange,
|
|
@@ -245,6 +246,7 @@ class CrudLauncherService {
|
|
|
245
246
|
inputs,
|
|
246
247
|
resourceIdentity,
|
|
247
248
|
contextIdentity,
|
|
249
|
+
showResourceIdentityKey: runtime?.showResourceIdentityKey !== false,
|
|
248
250
|
restoreFocus,
|
|
249
251
|
onClose: drawerCallbacks?.onClose,
|
|
250
252
|
onResult: drawerCallbacks?.onResult,
|
|
@@ -3809,6 +3811,8 @@ class PraxisCrudComponent {
|
|
|
3809
3811
|
tableConfigPersistenceStrategy = 'local-first';
|
|
3810
3812
|
context;
|
|
3811
3813
|
enableCustomization = false;
|
|
3814
|
+
/** Controls whether existing-record hosts expose the canonical identity key. */
|
|
3815
|
+
showResourceIdentityKey = true;
|
|
3812
3816
|
/** Capability publica exigida para authoring governado do CRUD e da tabela interna. */
|
|
3813
3817
|
authoringCapability = null;
|
|
3814
3818
|
configureRequested = new EventEmitter();
|
|
@@ -4089,6 +4093,7 @@ class PraxisCrudComponent {
|
|
|
4089
4093
|
links: this.resolveCrudRuntimeLinks(effectiveAction.action, contextualRow),
|
|
4090
4094
|
resourceIdentity,
|
|
4091
4095
|
contextIdentity,
|
|
4096
|
+
showResourceIdentityKey: this.showResourceIdentityKey,
|
|
4092
4097
|
focusOrigin: runtimeEvent?.focusOrigin ?? null,
|
|
4093
4098
|
surfaceRuntime: this.resolveSurfaceRuntime(),
|
|
4094
4099
|
});
|
|
@@ -4364,6 +4369,7 @@ class PraxisCrudComponent {
|
|
|
4364
4369
|
}, {
|
|
4365
4370
|
capabilities: this.collectionCapabilities,
|
|
4366
4371
|
links: this.tableCollectionLinks,
|
|
4372
|
+
showResourceIdentityKey: this.showResourceIdentityKey,
|
|
4367
4373
|
surfaceRuntime: this.resolveSurfaceRuntime(),
|
|
4368
4374
|
});
|
|
4369
4375
|
this.afterOpen.emit({ mode, action: normalizedAction });
|
|
@@ -5532,7 +5538,7 @@ class PraxisCrudComponent {
|
|
|
5532
5538
|
return Object.entries(params).reduce((current, [name, value]) => current.split(`{${name}}`).join(value), text);
|
|
5533
5539
|
}
|
|
5534
5540
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisCrudComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5535
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisCrudComponent, isStandalone: true, selector: "praxis-crud", inputs: { metadata: "metadata", crudId: "crudId", componentInstanceId: "componentInstanceId", tableConfigPersistenceStrategy: "tableConfigPersistenceStrategy", context: "context", enableCustomization: "enableCustomization", authoringCapability: "authoringCapability" }, outputs: { configureRequested: "configureRequested", afterOpen: "afterOpen", afterClose: "afterClose", afterSave: "afterSave", afterDelete: "afterDelete", reactiveDeterminationExecuted: "reactiveDeterminationExecuted", reactiveDeterminationPendingChange: "reactiveDeterminationPendingChange", reactiveDeterminationStabilityChange: "reactiveDeterminationStabilityChange", error: "error", rowClick: "rowClick", rowAction: "rowAction", selectionChange: "selectionChange", resourceEvent: "resourceEvent", tableRuntimeConfigChange: "tableRuntimeConfigChange", crudAuthoringDocumentApplied: "crudAuthoringDocumentApplied", crudAuthoringDocumentSaved: "crudAuthoringDocumentSaved" }, providers: [
|
|
5541
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisCrudComponent, isStandalone: true, selector: "praxis-crud", inputs: { metadata: "metadata", crudId: "crudId", componentInstanceId: "componentInstanceId", tableConfigPersistenceStrategy: "tableConfigPersistenceStrategy", context: "context", enableCustomization: "enableCustomization", showResourceIdentityKey: "showResourceIdentityKey", authoringCapability: "authoringCapability" }, outputs: { configureRequested: "configureRequested", afterOpen: "afterOpen", afterClose: "afterClose", afterSave: "afterSave", afterDelete: "afterDelete", reactiveDeterminationExecuted: "reactiveDeterminationExecuted", reactiveDeterminationPendingChange: "reactiveDeterminationPendingChange", reactiveDeterminationStabilityChange: "reactiveDeterminationStabilityChange", error: "error", rowClick: "rowClick", rowAction: "rowAction", selectionChange: "selectionChange", resourceEvent: "resourceEvent", tableRuntimeConfigChange: "tableRuntimeConfigChange", crudAuthoringDocumentApplied: "crudAuthoringDocumentApplied", crudAuthoringDocumentSaved: "crudAuthoringDocumentSaved" }, providers: [
|
|
5536
5542
|
providePraxisI18nConfig(RESOURCE_DISCOVERY_I18N_CONFIG),
|
|
5537
5543
|
providePraxisI18nConfig(PRAXIS_CRUD_RUNTIME_I18N_CONFIG),
|
|
5538
5544
|
], viewQueries: [{ propertyName: "table", first: true, predicate: PraxisTable, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
@@ -5641,6 +5647,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
5641
5647
|
type: Input
|
|
5642
5648
|
}], enableCustomization: [{
|
|
5643
5649
|
type: Input
|
|
5650
|
+
}], showResourceIdentityKey: [{
|
|
5651
|
+
type: Input
|
|
5644
5652
|
}], authoringCapability: [{
|
|
5645
5653
|
type: Input
|
|
5646
5654
|
}], configureRequested: [{
|
|
@@ -5726,6 +5734,7 @@ class DynamicFormDialogHostComponent {
|
|
|
5726
5734
|
initialValue;
|
|
5727
5735
|
resourceIdentity = null;
|
|
5728
5736
|
contextIdentity = null;
|
|
5737
|
+
showResourceIdentityKey = true;
|
|
5729
5738
|
schemaUrl;
|
|
5730
5739
|
submitUrl;
|
|
5731
5740
|
submitMethod;
|
|
@@ -5814,6 +5823,7 @@ class DynamicFormDialogHostComponent {
|
|
|
5814
5823
|
this.resourceIdentity = this.mode !== 'create' && this.data.resourceIdentity
|
|
5815
5824
|
? this.data.resourceIdentity
|
|
5816
5825
|
: null;
|
|
5826
|
+
this.showResourceIdentityKey = this.data.showResourceIdentityKey !== false;
|
|
5817
5827
|
this.contextIdentity = this.data.contextIdentity
|
|
5818
5828
|
? this.data.contextIdentity
|
|
5819
5829
|
: null;
|
|
@@ -6356,7 +6366,8 @@ class DynamicFormDialogHostComponent {
|
|
|
6356
6366
|
<praxis-resource-identity
|
|
6357
6367
|
[identity]="resourceIdentity"
|
|
6358
6368
|
density="compact"
|
|
6359
|
-
[
|
|
6369
|
+
[showKey]="showResourceIdentityKey"
|
|
6370
|
+
[showKeyLabel]="showResourceIdentityKey"
|
|
6360
6371
|
[ariaLabel]="resourceIdentityLabel"
|
|
6361
6372
|
></praxis-resource-identity>
|
|
6362
6373
|
</div>
|
|
@@ -6476,7 +6487,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
6476
6487
|
<praxis-resource-identity
|
|
6477
6488
|
[identity]="resourceIdentity"
|
|
6478
6489
|
density="compact"
|
|
6479
|
-
[
|
|
6490
|
+
[showKey]="showResourceIdentityKey"
|
|
6491
|
+
[showKeyLabel]="showResourceIdentityKey"
|
|
6480
6492
|
[ariaLabel]="resourceIdentityLabel"
|
|
6481
6493
|
></praxis-resource-identity>
|
|
6482
6494
|
</div>
|
|
@@ -6818,6 +6830,12 @@ const PRAXIS_CRUD_COMPONENT_METADATA = {
|
|
|
6818
6830
|
default: false,
|
|
6819
6831
|
description: 'Habilita modo de customização do layout.',
|
|
6820
6832
|
},
|
|
6833
|
+
{
|
|
6834
|
+
name: 'showResourceIdentityKey',
|
|
6835
|
+
type: 'boolean',
|
|
6836
|
+
default: true,
|
|
6837
|
+
description: 'Controla se modal e drawer exibem a chave da identidade canônica do registro. Use false quando a chave pública for opaca ou apenas técnica; o título legível permanece visível.',
|
|
6838
|
+
},
|
|
6821
6839
|
{
|
|
6822
6840
|
name: 'authoringCapability',
|
|
6823
6841
|
type: 'string | null',
|
|
@@ -7375,6 +7393,7 @@ const PRAXIS_CRUD_AUTHORING_MANIFEST = {
|
|
|
7375
7393
|
{ name: 'tableConfigPersistenceStrategy', type: "'local-first' | 'input-first' | 'volatile'", description: 'Persistence precedence forwarded to the internal Praxis Table. Governed previews should use input-first or volatile explicitly.' },
|
|
7376
7394
|
{ name: 'context', type: 'Record<string, unknown>', description: 'Opaque host context used for authoring seeds and launcher inputs.' },
|
|
7377
7395
|
{ name: 'enableCustomization', type: 'boolean', description: 'Explicit host opt-in for CRUD authoring surfaces.' },
|
|
7396
|
+
{ name: 'showResourceIdentityKey', type: 'boolean', description: 'Presentation-only control for the canonical key in existing-record modal and drawer headers. Defaults to true; false preserves the readable title while hiding an opaque or technical key.' },
|
|
7378
7397
|
{ name: 'authoringCapability', type: 'string | null', description: 'Public runtime capability required before CRUD and delegated table authoring can open.' },
|
|
7379
7398
|
{ name: 'afterOpen', type: '{ mode: FormOpenMode; action: string }', description: 'Emitted after a CRUD action opens.' },
|
|
7380
7399
|
{ name: 'afterSave', type: '{ id: string | number; data: unknown }', description: 'Emitted after save; CRUD refetches the list.' },
|
package/package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/crud",
|
|
3
|
-
"version": "9.0.5-rc.
|
|
3
|
+
"version": "9.0.5-rc.34",
|
|
4
4
|
"description": "CRUD building blocks for Praxis UI: integrates dynamic forms and tables with unified configuration and services.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
|
-
"@praxisui/dynamic-form": "^9.0.5-rc.
|
|
9
|
-
"@praxisui/table": "^9.0.5-rc.
|
|
10
|
-
"@praxisui/core": "^9.0.5-rc.
|
|
11
|
-
"@praxisui/dynamic-fields": "^9.0.5-rc.
|
|
12
|
-
"@praxisui/settings-panel": "^9.0.5-rc.
|
|
8
|
+
"@praxisui/dynamic-form": "^9.0.5-rc.34",
|
|
9
|
+
"@praxisui/table": "^9.0.5-rc.34",
|
|
10
|
+
"@praxisui/core": "^9.0.5-rc.34",
|
|
11
|
+
"@praxisui/dynamic-fields": "^9.0.5-rc.34",
|
|
12
|
+
"@praxisui/settings-panel": "^9.0.5-rc.34",
|
|
13
13
|
"@angular/cdk": "^21.0.0",
|
|
14
14
|
"@angular/forms": "^21.0.0",
|
|
15
15
|
"@angular/material": "^21.0.0",
|
|
16
16
|
"@angular/router": "^21.0.0",
|
|
17
|
-
"@praxisui/ai": "^9.0.5-rc.
|
|
17
|
+
"@praxisui/ai": "^9.0.5-rc.34",
|
|
18
18
|
"rxjs": "~7.8.0"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
@@ -80,6 +80,8 @@ interface CrudDrawerOpenConfig {
|
|
|
80
80
|
inputs: Record<string, unknown>;
|
|
81
81
|
/** Read-only record context for existing-record drawers. It is never part of form inputs or submit payloads. */
|
|
82
82
|
resourceIdentity?: MaterializedResourceIdentity | null;
|
|
83
|
+
/** Presentation-only preference. Defaults to true; false hides the record identity key while preserving its title. */
|
|
84
|
+
showResourceIdentityKey?: boolean;
|
|
83
85
|
/** Read-only task scope for related operations. It is never part of form inputs or submit payloads. */
|
|
84
86
|
contextIdentity?: MaterializedResourceIdentity | null;
|
|
85
87
|
/**
|
package/types/praxisui-crud.d.ts
CHANGED
|
@@ -188,6 +188,8 @@ declare class PraxisCrudComponent implements OnChanges {
|
|
|
188
188
|
tableConfigPersistenceStrategy: TableConfigPersistenceStrategy;
|
|
189
189
|
context?: Record<string, unknown>;
|
|
190
190
|
enableCustomization: boolean;
|
|
191
|
+
/** Controls whether existing-record hosts expose the canonical identity key. */
|
|
192
|
+
showResourceIdentityKey: boolean;
|
|
191
193
|
/** Capability publica exigida para authoring governado do CRUD e da tabela interna. */
|
|
192
194
|
authoringCapability: string | null;
|
|
193
195
|
configureRequested: EventEmitter<void>;
|
|
@@ -378,7 +380,7 @@ declare class PraxisCrudComponent implements OnChanges {
|
|
|
378
380
|
private txWithParams;
|
|
379
381
|
private interpolateTranslationParams;
|
|
380
382
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisCrudComponent, never>;
|
|
381
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisCrudComponent, "praxis-crud", never, { "metadata": { "alias": "metadata"; "required": true; }; "crudId": { "alias": "crudId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "tableConfigPersistenceStrategy": { "alias": "tableConfigPersistenceStrategy"; "required": false; }; "context": { "alias": "context"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "authoringCapability": { "alias": "authoringCapability"; "required": false; }; }, { "configureRequested": "configureRequested"; "afterOpen": "afterOpen"; "afterClose": "afterClose"; "afterSave": "afterSave"; "afterDelete": "afterDelete"; "reactiveDeterminationExecuted": "reactiveDeterminationExecuted"; "reactiveDeterminationPendingChange": "reactiveDeterminationPendingChange"; "reactiveDeterminationStabilityChange": "reactiveDeterminationStabilityChange"; "error": "error"; "rowClick": "rowClick"; "rowAction": "rowAction"; "selectionChange": "selectionChange"; "resourceEvent": "resourceEvent"; "tableRuntimeConfigChange": "tableRuntimeConfigChange"; "crudAuthoringDocumentApplied": "crudAuthoringDocumentApplied"; "crudAuthoringDocumentSaved": "crudAuthoringDocumentSaved"; }, never, never, true, never>;
|
|
383
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisCrudComponent, "praxis-crud", never, { "metadata": { "alias": "metadata"; "required": true; }; "crudId": { "alias": "crudId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "tableConfigPersistenceStrategy": { "alias": "tableConfigPersistenceStrategy"; "required": false; }; "context": { "alias": "context"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "showResourceIdentityKey": { "alias": "showResourceIdentityKey"; "required": false; }; "authoringCapability": { "alias": "authoringCapability"; "required": false; }; }, { "configureRequested": "configureRequested"; "afterOpen": "afterOpen"; "afterClose": "afterClose"; "afterSave": "afterSave"; "afterDelete": "afterDelete"; "reactiveDeterminationExecuted": "reactiveDeterminationExecuted"; "reactiveDeterminationPendingChange": "reactiveDeterminationPendingChange"; "reactiveDeterminationStabilityChange": "reactiveDeterminationStabilityChange"; "error": "error"; "rowClick": "rowClick"; "rowAction": "rowAction"; "selectionChange": "selectionChange"; "resourceEvent": "resourceEvent"; "tableRuntimeConfigChange": "tableRuntimeConfigChange"; "crudAuthoringDocumentApplied": "crudAuthoringDocumentApplied"; "crudAuthoringDocumentSaved": "crudAuthoringDocumentSaved"; }, never, never, true, never>;
|
|
382
384
|
}
|
|
383
385
|
|
|
384
386
|
type CrudDrawerResultType = 'save' | 'delete' | 'close';
|
|
@@ -392,6 +394,8 @@ interface CrudDrawerOpenConfig {
|
|
|
392
394
|
inputs: Record<string, unknown>;
|
|
393
395
|
/** Read-only record context for existing-record drawers. It is never part of form inputs or submit payloads. */
|
|
394
396
|
resourceIdentity?: MaterializedResourceIdentity | null;
|
|
397
|
+
/** Presentation-only preference. Defaults to true; false hides the record identity key while preserving its title. */
|
|
398
|
+
showResourceIdentityKey?: boolean;
|
|
395
399
|
/** Read-only task scope for related operations. It is never part of form inputs or submit payloads. */
|
|
396
400
|
contextIdentity?: MaterializedResourceIdentity | null;
|
|
397
401
|
/**
|
|
@@ -424,6 +428,8 @@ interface CrudLaunchRuntime {
|
|
|
424
428
|
links?: RestApiLinks | null;
|
|
425
429
|
resourceIdentity?: MaterializedResourceIdentity | null;
|
|
426
430
|
contextIdentity?: MaterializedResourceIdentity | null;
|
|
431
|
+
/** Presentation-only preference for the existing-record identity key. */
|
|
432
|
+
showResourceIdentityKey?: boolean;
|
|
427
433
|
/** Active runtime drawer session. It is never persisted in CRUD metadata. */
|
|
428
434
|
surfaceRuntime?: SurfaceDrawerRef | null;
|
|
429
435
|
/** Stable runtime trigger for restoring focus after a form overlay closes. */
|
|
@@ -510,6 +516,7 @@ declare class DynamicFormDialogHostComponent implements OnInit, AfterViewInit {
|
|
|
510
516
|
initialValue?: Record<string, unknown> | null;
|
|
511
517
|
resourceIdentity: MaterializedResourceIdentity | null;
|
|
512
518
|
contextIdentity: MaterializedResourceIdentity | null;
|
|
519
|
+
showResourceIdentityKey: boolean;
|
|
513
520
|
schemaUrl?: string | null;
|
|
514
521
|
submitUrl?: string | null;
|
|
515
522
|
submitMethod?: string | null;
|