@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 retain their own
210
- presentation responsibility.
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-17T14:12:23.932Z",
3
+ "generatedAt": "2026-08-17T16:11:34.642Z",
4
4
  "packageName": "@praxisui/crud",
5
- "packageVersion": "9.0.5-rc.32",
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": "04a816f3085729c0de1ea560be165ff5567d442134e77695da4748c180ac6377",
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": "2505feb950e32e30428806b38ef6a33e338e933789d7661d5ac81a648613c79b",
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
- [showKeyLabel]="true"
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
- [showKeyLabel]="true"
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.32",
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.32",
9
- "@praxisui/table": "^9.0.5-rc.32",
10
- "@praxisui/core": "^9.0.5-rc.32",
11
- "@praxisui/dynamic-fields": "^9.0.5-rc.32",
12
- "@praxisui/settings-panel": "^9.0.5-rc.32",
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.32",
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
  /**
@@ -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;