@praxisui/crud 9.0.0-beta.5 → 9.0.0-beta.51

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.5",
3
+ "version": "9.0.0-beta.51",
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.5",
9
- "@praxisui/table": "^9.0.0-beta.5",
10
- "@praxisui/core": "^9.0.0-beta.5",
11
- "@praxisui/dynamic-fields": "^9.0.0-beta.5",
12
- "@praxisui/settings-panel": "^9.0.0-beta.5",
8
+ "@praxisui/dynamic-form": "^9.0.0-beta.51",
9
+ "@praxisui/table": "^9.0.0-beta.51",
10
+ "@praxisui/core": "^9.0.0-beta.51",
11
+ "@praxisui/dynamic-fields": "^9.0.0-beta.51",
12
+ "@praxisui/settings-panel": "^9.0.0-beta.51",
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.5",
17
+ "@praxisui/ai": "^9.0.0-beta.51",
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;
@@ -203,12 +211,14 @@ declare class PraxisCrudComponent implements OnChanges {
203
211
  private collectionCapabilitiesResolvedHref;
204
212
  private collectionCapabilitiesRequestSeq;
205
213
  private currentAuthoringDocument?;
214
+ selectedRow: Record<string, unknown> | null;
206
215
  private getResourceDiscovery;
207
216
  private getActionOpenAdapter;
208
217
  private getSurfaceOpenAdapter;
209
218
  onResetPreferences(): void;
210
219
  onTableRowClick(event: unknown): void;
211
220
  onTableSelectionChange(event: unknown): void;
221
+ onBulkAction(event: CrudActionRuntimeEvent): Promise<void>;
212
222
  ngOnChanges(changes: SimpleChanges): void;
213
223
  onAction(action: string, row?: Record<string, unknown>, runtimeEvent?: CrudActionRuntimeEvent): Promise<void>;
214
224
  private hasExplicitOpenBinding;
@@ -234,6 +244,10 @@ declare class PraxisCrudComponent implements OnChanges {
234
244
  private syncRuntimeBindings;
235
245
  private resolveQueryContext;
236
246
  private resolveFilterCriteria;
247
+ private extractRowFromEvent;
248
+ private extractSelectedRowFromEvent;
249
+ private extractSelectedRowFromBulkAction;
250
+ private resolveSelectedRowForAction;
237
251
  private tryOpenDiscoveredCrudSurface;
238
252
  private resolveDiscoveredSurfaceCatalog;
239
253
  private tryOpenDiscoveredWorkflowAction;
@@ -251,6 +265,9 @@ declare class PraxisCrudComponent implements OnChanges {
251
265
  private handleDiscoveredSurfaceResult;
252
266
  private buildEffectiveTableConfig;
253
267
  private isAddLike;
268
+ private normalizeCrudActionName;
269
+ private shouldCanonicalizeToolbarCreateAction;
270
+ private isCreateActionAliasName;
254
271
  private buildTableCrudContext;
255
272
  private readonly openCrudAuthoringFromTable;
256
273
  private applyCrudAuthoringPayload;
@@ -306,6 +323,7 @@ declare class CrudLauncherService {
306
323
  private buildRoute;
307
324
  private mapInputs;
308
325
  private resolveActionForLaunch;
326
+ private resolveSubmitUrlTemplate;
309
327
  private resolveActionFormContract;
310
328
  resolveRuntimeContract(action: CrudAction, row: Record<string, unknown> | undefined, metadata: CrudMetadata, runtime?: {
311
329
  capabilities?: ResourceCapabilitySnapshot | null;
@@ -316,10 +334,14 @@ declare class CrudLauncherService {
316
334
  submitMethod?: string | null;
317
335
  apiEndpointKey?: unknown;
318
336
  apiUrlEntry?: unknown;
337
+ layoutPolicy?: unknown;
319
338
  };
320
339
  private buildInferredFormId;
321
340
  private isCanonicalCrudAction;
341
+ private normalizeActionForLaunch;
342
+ private normalizeCrudOperationName;
322
343
  private isExplicitCrudAction;
344
+ private defaultInferredLayoutPolicy;
323
345
  private mergeCrudOverrides;
324
346
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CrudLauncherService, never>;
325
347
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<CrudLauncherService>;
@@ -333,6 +355,7 @@ declare class DynamicFormDialogHostComponent implements OnInit {
333
355
  private configStorage;
334
356
  formComp?: PraxisDynamicForm;
335
357
  modal: any;
358
+ presentation: 'modal' | 'drawer';
336
359
  maximized: boolean;
337
360
  private initialSize;
338
361
  private rememberState;
@@ -347,6 +370,8 @@ declare class DynamicFormDialogHostComponent implements OnInit {
347
370
  submitMethod?: string | null;
348
371
  apiEndpointKey?: ApiEndpoint | string | null;
349
372
  apiUrlEntry?: ApiUrlEntry | null;
373
+ layoutPolicy?: DynamicFormLayoutPolicy | null;
374
+ formConfig: FormConfig;
350
375
  formActions?: FormConfig['actions'];
351
376
  mode: 'create' | 'edit' | 'view';
352
377
  backConfig?: BackConfig;
@@ -354,7 +379,11 @@ declare class DynamicFormDialogHostComponent implements OnInit {
354
379
  texts: Record<string, string>;
355
380
  constructor(dialogRef: DialogRef<DynamicFormDialogHostComponent>, data: any, dialogService: DialogService, crud: GenericCrudService<any>, configStorage: AsyncConfigStorage);
356
381
  private extractInitialValue;
382
+ private resolveFormConfig;
383
+ get dialogTitle(): string;
384
+ private resolveResourceTitle;
357
385
  private resolveFormActions;
386
+ private resolveLayoutPolicy;
358
387
  private resolveSubmitLabel;
359
388
  ngOnInit(): void;
360
389
  onSave(result: unknown): void;