@praxisui/crud 10.0.0-rc.13 → 10.0.0-rc.15
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 +28 -0
- package/ai/component-registry.json +2 -2
- package/fesm2022/praxisui-crud.mjs +449 -109
- package/package.json +7 -7
- package/types/praxisui-crud.d.ts +14 -0
package/README.md
CHANGED
|
@@ -344,6 +344,33 @@ The host does not need to call `HttpClient`, rebuild create schema URLs, or own
|
|
|
344
344
|
a second launcher. Absence of the HATEOAS link keeps the operation unavailable;
|
|
345
345
|
the runtime does not infer permission from labels, tags, or frontend flags.
|
|
346
346
|
|
|
347
|
+
## Governed Two-Phase Bulk Operations
|
|
348
|
+
|
|
349
|
+
`PraxisCrudComponent` discovers governed two-phase bulk operations published by
|
|
350
|
+
`praxis-metadata-starter` on collection capabilities (`actions[].execution.bulk`
|
|
351
|
+
for `DOMAIN_COMMAND` and `operations['bulk-update'].bulk` for `UNIFORM_UPDATE`)
|
|
352
|
+
and materializes them in the contextual bulk selection toolbar:
|
|
353
|
+
|
|
354
|
+
1. **Pre-evaluation gates**: validates `limits.maxTargets` before evaluation and
|
|
355
|
+
resolves `expectedVersion` (`ETag`) via `_links.self` only when
|
|
356
|
+
`preconditions.resourceVersion === 'REQUIRED'`.
|
|
357
|
+
2. **Phase 1 — Immutable Proposal (`PraxisBulkOperationDialogComponent` / `PraxisBulkEditDialogComponent`)**:
|
|
358
|
+
hydrates command parameters (unwrapping `/properties/parameters` and OpenAPI
|
|
359
|
+
`$ref` definitions with a resource-and-action-scoped `formId`) or
|
|
360
|
+
`@BulkEditable` fields (`SET` / `CLEAR`), submits the evaluation request, and
|
|
361
|
+
renders target eligibility totals (`executable`, `blocked`) and per-item
|
|
362
|
+
diagnostics.
|
|
363
|
+
3. **Phase 2 — Transactional Confirmation & Reconciliation**: confirms the
|
|
364
|
+
approved `proposalId` with an `Idempotency-Key`, polls asynchronous
|
|
365
|
+
executions until terminal state (`COMPLETED`, `COMPLETED_WITH_ERRORS`,
|
|
366
|
+
`CANCELLED`, `STOPPED`, `RECONCILIATION_REQUIRED`), aggregates all rejection
|
|
367
|
+
categories (`denied`, `invalid`, `conflict`, `notProcessed`, `unknown`),
|
|
368
|
+
clears table selection, refreshes the collection, and re-fetches capabilities
|
|
369
|
+
when `refresh.capabilities === true`.
|
|
370
|
+
|
|
371
|
+
Unavailable bulk operations (`availability.allowed === false`) remain visible
|
|
372
|
+
but disabled in the bulk toolbar with their canonical translated reason tooltip.
|
|
373
|
+
|
|
347
374
|
## Visual Authoring
|
|
348
375
|
|
|
349
376
|
The package publishes the CRUD-specific authoring surface:
|
|
@@ -377,6 +404,7 @@ The manifest owns CRUD orchestration only. It delegates table, form, field, and
|
|
|
377
404
|
Main exports:
|
|
378
405
|
|
|
379
406
|
- `PraxisCrudComponent`
|
|
407
|
+
- `PraxisBulkOperationDialogComponent`, `PraxisBulkEditDialogComponent`
|
|
380
408
|
- `CrudLauncherService`
|
|
381
409
|
- `DynamicFormDialogHostComponent`
|
|
382
410
|
- `CrudMetadata`, `CrudActionFormContract`, `CrudDefaults`, `CrudParamMapping`
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-10-
|
|
3
|
+
"generatedAt": "2026-10-14T16:04:24.084Z",
|
|
4
4
|
"packageName": "@praxisui/crud",
|
|
5
|
-
"packageVersion": "10.0.0-rc.
|
|
5
|
+
"packageVersion": "10.0.0-rc.15",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 2,
|