@praxisui/crud 9.0.4-rc.37 → 9.0.4-rc.39

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
@@ -103,7 +103,7 @@ It emits:
103
103
  - `configureRequested`
104
104
  - `afterOpen`, `afterClose`, `afterSave`, `afterDelete`
105
105
  - `error`
106
- - `rowClick`, `selectionChange`
106
+ - `rowClick`, `rowAction`, `selectionChange`. `rowAction` preserves the canonical table envelope (`row`, `action`, `resourceIdentity`) so a governed composition can update task context without forcing visual row selection.
107
107
  - `tableRuntimeConfigChange`
108
108
  - `crudAuthoringDocumentApplied`, `crudAuthoringDocumentSaved`
109
109
 
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-08-09T11:18:35.694Z",
3
+ "generatedAt": "2026-08-10T02:36:18.987Z",
4
4
  "packageName": "@praxisui/crud",
5
- "packageVersion": "9.0.4-rc.37",
5
+ "packageVersion": "9.0.4-rc.39",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 2,
@@ -130,6 +130,12 @@
130
130
  "required": false,
131
131
  "description": "Encaminha o clique de linha da tabela interna para composição master-detail e seleção local."
132
132
  },
133
+ {
134
+ "name": "rowAction",
135
+ "type": "CrudActionRuntimeEvent",
136
+ "required": false,
137
+ "description": "Encaminha a ação contextual da linha com row, action e resourceIdentity para composição governada."
138
+ },
133
139
  {
134
140
  "name": "selectionChange",
135
141
  "type": "unknown",
@@ -7218,9 +7224,9 @@
7218
7224
  {
7219
7225
  "chunkIndex": 0,
7220
7226
  "chunkKind": "summary",
7221
- "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 - rowClick ({ row: unknown; index: number })\n - selectionChange (unknown)\n - error (unknown)\n - configureRequested (void)\n - crudAuthoringDocumentApplied (CrudAuthoringWidgetPersistenceEvent)\n - crudAuthoringDocumentSaved (CrudAuthoringWidgetPersistenceEvent)\n",
7227
+ "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 - rowClick ({ row: unknown; index: number })\n - rowAction (CrudActionRuntimeEvent)\n - selectionChange (unknown)\n - error (unknown)\n - configureRequested (void)\n - crudAuthoringDocumentApplied (CrudAuthoringWidgetPersistenceEvent)\n - crudAuthoringDocumentSaved (CrudAuthoringWidgetPersistenceEvent)\n",
7222
7228
  "sourcePointer": "projects/praxis-crud/src/lib/praxis-crud.metadata.ts",
7223
- "contentHash": "a9d744b92ff6f475de4d870e57bc963200a7b68688a8ea5159cc02496a8967be",
7229
+ "contentHash": "5f18e01c2da358f033eb9b8ee4616dac8a348addc3ce3e56bcb077b094c13300",
7224
7230
  "sourceKind": "component_definition",
7225
7231
  "sourceId": "praxis-crud",
7226
7232
  "corpusVersion": "1.0.0"
@@ -3807,6 +3807,8 @@ class PraxisCrudComponent {
3807
3807
  afterDelete = new EventEmitter();
3808
3808
  error = new EventEmitter();
3809
3809
  rowClick = new EventEmitter();
3810
+ /** Emits the canonical table row-action envelope before the CRUD handles its surface/action. */
3811
+ rowAction = new EventEmitter();
3810
3812
  selectionChange = new EventEmitter();
3811
3813
  tableRuntimeConfigChange = new EventEmitter();
3812
3814
  crudAuthoringDocumentApplied = new EventEmitter();
@@ -3877,6 +3879,10 @@ class PraxisCrudComponent {
3877
3879
  collectionCapabilitiesRequestSeq = 0;
3878
3880
  currentAuthoringDocument;
3879
3881
  selectedRow = null;
3882
+ onTableRowAction(event) {
3883
+ this.rowAction.emit(event);
3884
+ void this.onAction(event.action || '', event.row, event);
3885
+ }
3880
3886
  getResourceDiscovery() {
3881
3887
  const assigned = this.resourceDiscovery;
3882
3888
  return assigned ?? (this.resourceDiscoveryInstance ??= this.injector.get(ResourceDiscoveryService));
@@ -4564,6 +4570,7 @@ class PraxisCrudComponent {
4564
4570
  presentation: 'drawer',
4565
4571
  title: surface.title,
4566
4572
  subtitle: surface.description ?? undefined,
4573
+ parentIdentity: runtimeEvent?.resourceIdentity ?? null,
4567
4574
  });
4568
4575
  }
4569
4576
  catch (error) {
@@ -5442,7 +5449,7 @@ class PraxisCrudComponent {
5442
5449
  return Object.entries(params).reduce((current, [name, value]) => current.split(`{${name}}`).join(value), text);
5443
5450
  }
5444
5451
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisCrudComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5445
- 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", error: "error", rowClick: "rowClick", selectionChange: "selectionChange", tableRuntimeConfigChange: "tableRuntimeConfigChange", crudAuthoringDocumentApplied: "crudAuthoringDocumentApplied", crudAuthoringDocumentSaved: "crudAuthoringDocumentSaved" }, providers: [
5452
+ 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", error: "error", rowClick: "rowClick", rowAction: "rowAction", selectionChange: "selectionChange", tableRuntimeConfigChange: "tableRuntimeConfigChange", crudAuthoringDocumentApplied: "crudAuthoringDocumentApplied", crudAuthoringDocumentSaved: "crudAuthoringDocumentSaved" }, providers: [
5446
5453
  providePraxisI18nConfig(RESOURCE_DISCOVERY_I18N_CONFIG),
5447
5454
  providePraxisI18nConfig(PRAXIS_CRUD_RUNTIME_I18N_CONFIG),
5448
5455
  ], viewQueries: [{ propertyName: "table", first: true, predicate: PraxisTable, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
@@ -5467,7 +5474,7 @@ class PraxisCrudComponent {
5467
5474
  [authoringCapability]="authoringCapability"
5468
5475
  (rowClick)="onTableRowClick($event)"
5469
5476
  (selectionChange)="onTableSelectionChange($event)"
5470
- (rowAction)="onAction($event.action, $event.row, $event)"
5477
+ (rowAction)="onTableRowAction($event)"
5471
5478
  (toolbarAction)="onToolbarAction($event)"
5472
5479
  (bulkAction)="onBulkAction($event)"
5473
5480
  (collectionLinksChange)="onCollectionLinksChange($event)"
@@ -5515,7 +5522,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
5515
5522
  [authoringCapability]="authoringCapability"
5516
5523
  (rowClick)="onTableRowClick($event)"
5517
5524
  (selectionChange)="onTableSelectionChange($event)"
5518
- (rowAction)="onAction($event.action, $event.row, $event)"
5525
+ (rowAction)="onTableRowAction($event)"
5519
5526
  (toolbarAction)="onToolbarAction($event)"
5520
5527
  (bulkAction)="onBulkAction($event)"
5521
5528
  (collectionLinksChange)="onCollectionLinksChange($event)"
@@ -5565,6 +5572,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
5565
5572
  type: Output
5566
5573
  }], rowClick: [{
5567
5574
  type: Output
5575
+ }], rowAction: [{
5576
+ type: Output
5568
5577
  }], selectionChange: [{
5569
5578
  type: Output
5570
5579
  }], tableRuntimeConfigChange: [{
@@ -6684,6 +6693,11 @@ const PRAXIS_CRUD_COMPONENT_METADATA = {
6684
6693
  type: '{ row: unknown; index: number }',
6685
6694
  description: 'Encaminha o clique de linha da tabela interna para composição master-detail e seleção local.',
6686
6695
  },
6696
+ {
6697
+ name: 'rowAction',
6698
+ type: 'CrudActionRuntimeEvent',
6699
+ description: 'Encaminha a ação contextual da linha com row, action e resourceIdentity para composição governada.',
6700
+ },
6687
6701
  {
6688
6702
  name: 'selectionChange',
6689
6703
  type: 'unknown',
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@praxisui/crud",
3
- "version": "9.0.4-rc.37",
3
+ "version": "9.0.4-rc.39",
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.4-rc.37",
9
- "@praxisui/table": "^9.0.4-rc.37",
10
- "@praxisui/core": "^9.0.4-rc.37",
11
- "@praxisui/dynamic-fields": "^9.0.4-rc.37",
12
- "@praxisui/settings-panel": "^9.0.4-rc.37",
8
+ "@praxisui/dynamic-form": "^9.0.4-rc.39",
9
+ "@praxisui/table": "^9.0.4-rc.39",
10
+ "@praxisui/core": "^9.0.4-rc.39",
11
+ "@praxisui/dynamic-fields": "^9.0.4-rc.39",
12
+ "@praxisui/settings-panel": "^9.0.4-rc.39",
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.4-rc.37",
17
+ "@praxisui/ai": "^9.0.4-rc.39",
18
18
  "rxjs": "~7.8.0"
19
19
  },
20
20
  "dependencies": {
@@ -194,6 +194,8 @@ declare class PraxisCrudComponent implements OnChanges {
194
194
  }>;
195
195
  error: EventEmitter<unknown>;
196
196
  rowClick: EventEmitter<unknown>;
197
+ /** Emits the canonical table row-action envelope before the CRUD handles its surface/action. */
198
+ rowAction: EventEmitter<CrudActionRuntimeEvent>;
197
199
  selectionChange: EventEmitter<unknown>;
198
200
  tableRuntimeConfigChange: EventEmitter<_praxisui_core.TableConfigModern>;
199
201
  crudAuthoringDocumentApplied: EventEmitter<CrudAuthoringWidgetPersistenceEvent>;
@@ -240,6 +242,7 @@ declare class PraxisCrudComponent implements OnChanges {
240
242
  private collectionCapabilitiesRequestSeq;
241
243
  private currentAuthoringDocument?;
242
244
  selectedRow: Record<string, unknown> | null;
245
+ onTableRowAction(event: CrudActionRuntimeEvent): void;
243
246
  private getResourceDiscovery;
244
247
  private getActionOpenAdapter;
245
248
  private getSurfaceOpenAdapter;
@@ -348,7 +351,7 @@ declare class PraxisCrudComponent implements OnChanges {
348
351
  private txWithParams;
349
352
  private interpolateTranslationParams;
350
353
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisCrudComponent, never>;
351
- 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"; "error": "error"; "rowClick": "rowClick"; "selectionChange": "selectionChange"; "tableRuntimeConfigChange": "tableRuntimeConfigChange"; "crudAuthoringDocumentApplied": "crudAuthoringDocumentApplied"; "crudAuthoringDocumentSaved": "crudAuthoringDocumentSaved"; }, never, never, true, never>;
354
+ 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"; "error": "error"; "rowClick": "rowClick"; "rowAction": "rowAction"; "selectionChange": "selectionChange"; "tableRuntimeConfigChange": "tableRuntimeConfigChange"; "crudAuthoringDocumentApplied": "crudAuthoringDocumentApplied"; "crudAuthoringDocumentSaved": "crudAuthoringDocumentSaved"; }, never, never, true, never>;
352
355
  }
353
356
 
354
357
  type CrudDrawerResultType = 'save' | 'delete' | 'close';