@praxisui/crud 9.0.0-beta.6 → 9.0.0-beta.61

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/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@praxisui/crud",
3
- "version": "9.0.0-beta.6",
3
+ "version": "9.0.0-beta.61",
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.0-beta.6",
9
- "@praxisui/table": "^9.0.0-beta.6",
10
- "@praxisui/core": "^9.0.0-beta.6",
11
- "@praxisui/dynamic-fields": "^9.0.0-beta.6",
12
- "@praxisui/settings-panel": "^9.0.0-beta.6",
8
+ "@praxisui/dynamic-form": "^9.0.0-beta.61",
9
+ "@praxisui/table": "^9.0.0-beta.61",
10
+ "@praxisui/core": "^9.0.0-beta.61",
11
+ "@praxisui/dynamic-fields": "^9.0.0-beta.61",
12
+ "@praxisui/settings-panel": "^9.0.0-beta.61",
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.0-beta.6",
17
+ "@praxisui/ai": "^9.0.0-beta.61",
18
18
  "rxjs": "~7.8.0"
19
19
  },
20
20
  "dependencies": {
@@ -28,6 +28,7 @@
28
28
  "keywords": [
29
29
  "angular",
30
30
  "praxisui",
31
+ "praxis",
31
32
  "crud",
32
33
  "admin",
33
34
  "backoffice",
@@ -48,7 +49,10 @@
48
49
  "./drawer-adapter": {
49
50
  "types": "./types/praxisui-crud-drawer-adapter.d.ts",
50
51
  "default": "./fesm2022/praxisui-crud-drawer-adapter.mjs"
52
+ },
53
+ "./ai/component-registry.json": {
54
+ "default": "./ai/component-registry.json"
51
55
  }
52
56
  },
53
57
  "type": "module"
54
- }
58
+ }
@@ -1,5 +1,5 @@
1
1
  import * as _praxisui_core from '@praxisui/core';
2
- import { RowAction, ToolbarAction, ApiEndpoint, ApiUrlEntry, BackConfig, TableConfig, PraxisDataQueryContext, FormConfig, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, LoadingState, RestApiLinks, ResourceCapabilitySnapshot, GenericCrudService, AsyncConfigStorage, ComponentDocMeta, AiCapabilityCatalog, AiCapability, AiCapabilityCategory, AiValueKind, ComponentAuthoringManifest, SettingsValueProvider } from '@praxisui/core';
2
+ import { RowAction, ToolbarAction, ApiEndpoint, ApiUrlEntry, DynamicFormLayoutPolicy, BackConfig, TableConfig, PraxisDataQueryContext, FormConfig, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, LoadingState, RestApiLinks, ResourceCapabilitySnapshot, GenericCrudService, AsyncConfigStorage, ComponentDocMeta, AiCapabilityCatalog, AiCapability, AiCapabilityCategory, AiValueKind, ComponentAuthoringManifest, SettingsValueProvider } from '@praxisui/core';
3
3
  export { BackConfig } from '@praxisui/core';
4
4
  import * as _angular_core from '@angular/core';
5
5
  import { NgZone, OnChanges, EventEmitter, SimpleChanges, OnInit, Provider, AfterViewInit, OnDestroy } from '@angular/core';
@@ -53,6 +53,7 @@ interface CrudActionFormContract {
53
53
  apiEndpointKey?: ApiEndpoint | string | null;
54
54
  apiUrlEntry?: ApiUrlEntry | null;
55
55
  initialValue?: Record<string, unknown> | null;
56
+ layoutPolicy?: DynamicFormLayoutPolicy | null;
56
57
  }
57
58
  type CrudActionResolutionMode = 'inferred' | 'explicit';
58
59
  type CrudAction = (RowAction | ToolbarAction) & {
@@ -72,8 +73,13 @@ interface CrudDefaults {
72
73
  }
73
74
  interface CrudResource {
74
75
  path: string;
76
+ schemaPath?: string | null;
75
77
  idField?: string | number;
78
+ title?: string | null;
79
+ label?: string | null;
80
+ formTitle?: string | null;
76
81
  endpointKey?: ApiEndpoint;
82
+ apiUrlEntry?: ApiUrlEntry | null;
77
83
  }
78
84
  interface CrudMetadata {
79
85
  component: 'praxis-crud';
@@ -124,7 +130,9 @@ interface CrudValidationContext {
124
130
  }
125
131
 
126
132
  type CrudActionRuntimeEvent = {
133
+ action?: string;
127
134
  actionConfig?: ResourceActionCatalogItem | ResourceSurfaceCatalogItem | null;
135
+ rows?: Record<string, unknown>[];
128
136
  };
129
137
  type CrudContextAction = {
130
138
  action: string;
@@ -188,6 +196,7 @@ declare class PraxisCrudComponent implements OnChanges {
188
196
  private resourceDiscoveryInstance?;
189
197
  private actionOpenAdapterInstance?;
190
198
  private surfaceOpenAdapterInstance?;
199
+ private materializedRefreshSequence;
191
200
  private readonly global;
192
201
  private readonly surfaceService;
193
202
  private readonly componentKeys;
@@ -203,12 +212,14 @@ declare class PraxisCrudComponent implements OnChanges {
203
212
  private collectionCapabilitiesResolvedHref;
204
213
  private collectionCapabilitiesRequestSeq;
205
214
  private currentAuthoringDocument?;
215
+ selectedRow: Record<string, unknown> | null;
206
216
  private getResourceDiscovery;
207
217
  private getActionOpenAdapter;
208
218
  private getSurfaceOpenAdapter;
209
219
  onResetPreferences(): void;
210
220
  onTableRowClick(event: unknown): void;
211
221
  onTableSelectionChange(event: unknown): void;
222
+ onBulkAction(event: CrudActionRuntimeEvent): Promise<void>;
212
223
  ngOnChanges(changes: SimpleChanges): void;
213
224
  onAction(action: string, row?: Record<string, unknown>, runtimeEvent?: CrudActionRuntimeEvent): Promise<void>;
214
225
  private hasExplicitOpenBinding;
@@ -226,6 +237,11 @@ declare class PraxisCrudComponent implements OnChanges {
226
237
  onConfigureRequested(): void;
227
238
  private tryHandleCanonicalDeleteAction;
228
239
  private refreshTable;
240
+ private tryRefreshMaterializedLocalData;
241
+ private isCurrentMaterializedRefresh;
242
+ private resolveMaterializedReadUrl;
243
+ private unwrapRestData;
244
+ private extractCollectionData;
229
245
  private emitTableRuntimeConfigSnapshot;
230
246
  private applyResolvedCrudState;
231
247
  private assignTableConfigForBinding;
@@ -234,6 +250,10 @@ declare class PraxisCrudComponent implements OnChanges {
234
250
  private syncRuntimeBindings;
235
251
  private resolveQueryContext;
236
252
  private resolveFilterCriteria;
253
+ private extractRowFromEvent;
254
+ private extractSelectedRowFromEvent;
255
+ private extractSelectedRowFromBulkAction;
256
+ private resolveSelectedRowForAction;
237
257
  private tryOpenDiscoveredCrudSurface;
238
258
  private resolveDiscoveredSurfaceCatalog;
239
259
  private tryOpenDiscoveredWorkflowAction;
@@ -251,6 +271,9 @@ declare class PraxisCrudComponent implements OnChanges {
251
271
  private handleDiscoveredSurfaceResult;
252
272
  private buildEffectiveTableConfig;
253
273
  private isAddLike;
274
+ private normalizeCrudActionName;
275
+ private shouldCanonicalizeToolbarCreateAction;
276
+ private isCreateActionAliasName;
254
277
  private buildTableCrudContext;
255
278
  private readonly openCrudAuthoringFromTable;
256
279
  private applyCrudAuthoringPayload;
@@ -306,6 +329,7 @@ declare class CrudLauncherService {
306
329
  private buildRoute;
307
330
  private mapInputs;
308
331
  private resolveActionForLaunch;
332
+ private resolveSubmitUrlTemplate;
309
333
  private resolveActionFormContract;
310
334
  resolveRuntimeContract(action: CrudAction, row: Record<string, unknown> | undefined, metadata: CrudMetadata, runtime?: {
311
335
  capabilities?: ResourceCapabilitySnapshot | null;
@@ -316,10 +340,14 @@ declare class CrudLauncherService {
316
340
  submitMethod?: string | null;
317
341
  apiEndpointKey?: unknown;
318
342
  apiUrlEntry?: unknown;
343
+ layoutPolicy?: unknown;
319
344
  };
320
345
  private buildInferredFormId;
321
346
  private isCanonicalCrudAction;
347
+ private normalizeActionForLaunch;
348
+ private normalizeCrudOperationName;
322
349
  private isExplicitCrudAction;
350
+ private defaultInferredLayoutPolicy;
323
351
  private mergeCrudOverrides;
324
352
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CrudLauncherService, never>;
325
353
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<CrudLauncherService>;
@@ -333,6 +361,7 @@ declare class DynamicFormDialogHostComponent implements OnInit {
333
361
  private configStorage;
334
362
  formComp?: PraxisDynamicForm;
335
363
  modal: any;
364
+ presentation: 'modal' | 'drawer';
336
365
  maximized: boolean;
337
366
  private initialSize;
338
367
  private rememberState;
@@ -347,14 +376,22 @@ declare class DynamicFormDialogHostComponent implements OnInit {
347
376
  submitMethod?: string | null;
348
377
  apiEndpointKey?: ApiEndpoint | string | null;
349
378
  apiUrlEntry?: ApiUrlEntry | null;
379
+ layoutPolicy?: DynamicFormLayoutPolicy | null;
380
+ formConfig: FormConfig;
350
381
  formActions?: FormConfig['actions'];
382
+ readonly formConfigPersistenceStrategy = "input-first";
351
383
  mode: 'create' | 'edit' | 'view';
352
384
  backConfig?: BackConfig;
353
385
  private idField;
354
386
  texts: Record<string, string>;
355
387
  constructor(dialogRef: DialogRef<DynamicFormDialogHostComponent>, data: any, dialogService: DialogService, crud: GenericCrudService<any>, configStorage: AsyncConfigStorage);
356
388
  private extractInitialValue;
389
+ private resolveFormConfig;
390
+ get dialogTitle(): string;
391
+ private resolveActionDialogTitle;
392
+ private resolveResourceTitle;
357
393
  private resolveFormActions;
394
+ private resolveLayoutPolicy;
358
395
  private resolveSubmitLabel;
359
396
  ngOnInit(): void;
360
397
  onSave(result: unknown): void;