@praxisui/crud 6.0.0-beta.0 → 8.0.0-beta.0
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 +97 -1
- package/drawer-adapter/index.d.ts +2 -0
- package/fesm2022/praxisui-crud.mjs +3163 -70
- package/index.d.ts +273 -15
- package/package.json +6 -6
package/index.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import * as _praxisui_core from '@praxisui/core';
|
|
2
|
-
import { ApiEndpoint, TableConfig, PraxisDataQueryContext, FormConfig, BackConfig, RowAction, ToolbarAction, ApiUrlEntry, ResourceActionCatalogItem, LoadingState, RestApiLinks, GenericCrudService, AsyncConfigStorage, ComponentDocMeta, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
|
|
2
|
+
import { ApiEndpoint, TableConfig, PraxisDataQueryContext, FormConfig, BackConfig, RowAction, ToolbarAction, ApiUrlEntry, ResourceActionCatalogItem, LoadingState, RestApiLinks, ResourceCapabilitySnapshot, GenericCrudService, AsyncConfigStorage, ComponentDocMeta, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog, SettingsValueProvider } from '@praxisui/core';
|
|
3
3
|
export { BackConfig } from '@praxisui/core';
|
|
4
|
-
import * as
|
|
4
|
+
import * as _angular_core from '@angular/core';
|
|
5
5
|
import { NgZone, OnChanges, EventEmitter, SimpleChanges, OnInit, Provider } from '@angular/core';
|
|
6
6
|
import { MatDialogConfig, MatDialogRef, MatDialog } from '@angular/material/dialog';
|
|
7
7
|
export { MAT_DIALOG_DATA as DIALOG_DATA } from '@angular/material/dialog';
|
|
8
8
|
import { ComponentType } from '@angular/cdk/portal';
|
|
9
9
|
import { PraxisDynamicForm } from '@praxisui/dynamic-form';
|
|
10
|
+
import { BehaviorSubject } from 'rxjs';
|
|
11
|
+
import * as _praxisui_settings_panel from '@praxisui/settings-panel';
|
|
12
|
+
import { SettingsPanelService } from '@praxisui/settings-panel';
|
|
10
13
|
|
|
11
14
|
type DialogRef<T = any, R = any> = MatDialogRef<T, R>;
|
|
12
15
|
interface DialogConfig<D = any> extends MatDialogConfig<D> {
|
|
@@ -14,8 +17,12 @@ interface DialogConfig<D = any> extends MatDialogConfig<D> {
|
|
|
14
17
|
disableCloseOnBackdrop?: boolean;
|
|
15
18
|
/** Disable closing when user presses escape */
|
|
16
19
|
disableCloseOnEsc?: boolean;
|
|
20
|
+
/** Density hint consumed by CRUD dialog host chrome */
|
|
21
|
+
density?: 'default' | 'compact';
|
|
17
22
|
/** Enable maximize button */
|
|
18
23
|
canMaximize?: boolean;
|
|
24
|
+
/** Persist last dialog size/state for the same form */
|
|
25
|
+
rememberLastState?: boolean;
|
|
19
26
|
/** Start dialog maximized */
|
|
20
27
|
startMaximized?: boolean;
|
|
21
28
|
/** Screen width in px where dialog starts fullscreen */
|
|
@@ -28,8 +35,8 @@ declare class DialogService {
|
|
|
28
35
|
constructor(matDialog: MatDialog, zone: NgZone);
|
|
29
36
|
open<T, D = unknown, R = unknown>(component: ComponentType<T>, config?: DialogConfig<D>): DialogRef<T, R>;
|
|
30
37
|
openAsync<T, D = unknown, R = unknown>(loader: () => Promise<ComponentType<T>>, config?: DialogConfig<D>): Promise<DialogRef<T, R>>;
|
|
31
|
-
static ɵfac:
|
|
32
|
-
static ɵprov:
|
|
38
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogService, never>;
|
|
39
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<DialogService>;
|
|
33
40
|
}
|
|
34
41
|
|
|
35
42
|
type FormOpenMode = 'route' | 'modal' | 'drawer';
|
|
@@ -41,14 +48,17 @@ interface CrudParamMapping {
|
|
|
41
48
|
interface CrudActionFormContract {
|
|
42
49
|
schemaUrl?: string;
|
|
43
50
|
submitUrl?: string;
|
|
44
|
-
submitMethod?: 'post' | 'put' | 'patch';
|
|
51
|
+
submitMethod?: 'post' | 'put' | 'patch' | 'delete';
|
|
45
52
|
apiEndpointKey?: ApiEndpoint | string | null;
|
|
46
53
|
apiUrlEntry?: ApiUrlEntry | null;
|
|
54
|
+
initialValue?: Record<string, unknown> | null;
|
|
47
55
|
}
|
|
56
|
+
type CrudActionResolutionMode = 'inferred' | 'explicit';
|
|
48
57
|
type CrudAction = (RowAction | ToolbarAction) & {
|
|
49
58
|
openMode?: FormOpenMode;
|
|
50
59
|
route?: string;
|
|
51
60
|
formId?: string;
|
|
61
|
+
mode?: CrudActionResolutionMode;
|
|
52
62
|
form?: CrudActionFormContract;
|
|
53
63
|
params?: CrudParamMapping[];
|
|
54
64
|
back?: BackConfig;
|
|
@@ -92,6 +102,26 @@ interface CrudMetadataAssertionOptions {
|
|
|
92
102
|
}
|
|
93
103
|
declare function assertCrudMetadata(meta: CrudMetadata, options?: CrudMetadataAssertionOptions): void;
|
|
94
104
|
|
|
105
|
+
interface CrudAuthoringDocument {
|
|
106
|
+
kind: 'praxis.crud.editor';
|
|
107
|
+
version: 1;
|
|
108
|
+
metadata: CrudMetadata;
|
|
109
|
+
}
|
|
110
|
+
interface CrudAuthoringWidgetPersistenceEvent {
|
|
111
|
+
document: CrudAuthoringDocument;
|
|
112
|
+
metadata: CrudMetadata;
|
|
113
|
+
inputPatch: Record<string, unknown>;
|
|
114
|
+
}
|
|
115
|
+
interface CrudEditorDiagnostic {
|
|
116
|
+
level: 'error' | 'warning' | 'info';
|
|
117
|
+
code: string;
|
|
118
|
+
message: string;
|
|
119
|
+
path?: string;
|
|
120
|
+
}
|
|
121
|
+
interface CrudValidationContext {
|
|
122
|
+
requireCanonicalActions?: boolean;
|
|
123
|
+
}
|
|
124
|
+
|
|
95
125
|
type CrudActionRuntimeEvent = {
|
|
96
126
|
actionConfig?: ResourceActionCatalogItem | null;
|
|
97
127
|
};
|
|
@@ -110,6 +140,7 @@ type CrudContextValue = {
|
|
|
110
140
|
defaults?: CrudMetadata['defaults'];
|
|
111
141
|
actions?: CrudContextAction[];
|
|
112
142
|
idField?: string;
|
|
143
|
+
openAuthoring?: () => void;
|
|
113
144
|
};
|
|
114
145
|
declare class PraxisCrudComponent implements OnChanges {
|
|
115
146
|
metadata: CrudMetadata | string;
|
|
@@ -132,6 +163,8 @@ declare class PraxisCrudComponent implements OnChanges {
|
|
|
132
163
|
}>;
|
|
133
164
|
error: EventEmitter<unknown>;
|
|
134
165
|
tableRuntimeConfigChange: EventEmitter<_praxisui_core.TableConfigModern>;
|
|
166
|
+
crudAuthoringDocumentApplied: EventEmitter<CrudAuthoringWidgetPersistenceEvent>;
|
|
167
|
+
crudAuthoringDocumentSaved: EventEmitter<CrudAuthoringWidgetPersistenceEvent>;
|
|
135
168
|
resolvedMetadata: CrudMetadata;
|
|
136
169
|
effectiveTableConfig?: TableConfig;
|
|
137
170
|
tableConfigForBinding: TableConfig;
|
|
@@ -139,11 +172,14 @@ declare class PraxisCrudComponent implements OnChanges {
|
|
|
139
172
|
tableFilterCriteria: Record<string, unknown>;
|
|
140
173
|
tableCrudContext?: CrudContextValue;
|
|
141
174
|
private readonly launcher;
|
|
175
|
+
private readonly http;
|
|
142
176
|
private readonly destroyRef;
|
|
143
177
|
private readonly cdr;
|
|
144
178
|
private table;
|
|
145
179
|
private readonly storage;
|
|
180
|
+
private readonly settingsPanel;
|
|
146
181
|
private readonly snack;
|
|
182
|
+
private readonly dialog;
|
|
147
183
|
private readonly i18n;
|
|
148
184
|
private readonly resourceDiscovery;
|
|
149
185
|
private readonly actionOpenAdapter;
|
|
@@ -162,6 +198,7 @@ declare class PraxisCrudComponent implements OnChanges {
|
|
|
162
198
|
private collectionCapabilitiesRequestHref;
|
|
163
199
|
private collectionCapabilitiesResolvedHref;
|
|
164
200
|
private collectionCapabilitiesRequestSeq;
|
|
201
|
+
private currentAuthoringDocument?;
|
|
165
202
|
onResetPreferences(): void;
|
|
166
203
|
ngOnChanges(changes: SimpleChanges): void;
|
|
167
204
|
onAction(action: string, row?: Record<string, unknown>, runtimeEvent?: CrudActionRuntimeEvent): Promise<void>;
|
|
@@ -177,6 +214,7 @@ declare class PraxisCrudComponent implements OnChanges {
|
|
|
177
214
|
getEmptyStateDescription(): string;
|
|
178
215
|
getEmptyStatePrimaryAction(): string;
|
|
179
216
|
onConfigureRequested(): void;
|
|
217
|
+
private tryHandleCanonicalDeleteAction;
|
|
180
218
|
private refreshTable;
|
|
181
219
|
private emitTableRuntimeConfigSnapshot;
|
|
182
220
|
private applyResolvedCrudState;
|
|
@@ -203,6 +241,9 @@ declare class PraxisCrudComponent implements OnChanges {
|
|
|
203
241
|
private buildEffectiveTableConfig;
|
|
204
242
|
private isAddLike;
|
|
205
243
|
private buildTableCrudContext;
|
|
244
|
+
private readonly openCrudAuthoringFromTable;
|
|
245
|
+
private applyCrudAuthoringPayload;
|
|
246
|
+
private buildWidgetPersistencePayload;
|
|
206
247
|
private resolveCreateToolbarAction;
|
|
207
248
|
private resolveContextCrudActions;
|
|
208
249
|
private resolveCollectionWorkflowCrudActions;
|
|
@@ -216,14 +257,15 @@ declare class PraxisCrudComponent implements OnChanges {
|
|
|
216
257
|
private resolveCrudResourceIdentity;
|
|
217
258
|
private buildDiscoveryOptions;
|
|
218
259
|
private resolveDiscoveryApiEntry;
|
|
260
|
+
private resolveCrudRuntimeLinks;
|
|
219
261
|
private isRecord;
|
|
220
262
|
private getIdField;
|
|
221
263
|
private componentKeyId;
|
|
222
264
|
private warnMissingId;
|
|
223
265
|
private getCrudActionLabel;
|
|
224
266
|
private tx;
|
|
225
|
-
static ɵfac:
|
|
226
|
-
static ɵcmp:
|
|
267
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisCrudComponent, never>;
|
|
268
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisCrudComponent, "praxis-crud", never, { "metadata": { "alias": "metadata"; "required": true; }; "crudId": { "alias": "crudId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "context": { "alias": "context"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; }, { "configureRequested": "configureRequested"; "afterOpen": "afterOpen"; "afterClose": "afterClose"; "afterSave": "afterSave"; "afterDelete": "afterDelete"; "error": "error"; "tableRuntimeConfigChange": "tableRuntimeConfigChange"; "crudAuthoringDocumentApplied": "crudAuthoringDocumentApplied"; "crudAuthoringDocumentSaved": "crudAuthoringDocumentSaved"; }, never, never, true, never>;
|
|
227
269
|
}
|
|
228
270
|
|
|
229
271
|
type CrudDrawerResultType = 'save' | 'delete' | 'close';
|
|
@@ -237,10 +279,14 @@ declare class CrudLauncherService {
|
|
|
237
279
|
private readonly dialog;
|
|
238
280
|
private readonly storage;
|
|
239
281
|
private readonly global;
|
|
282
|
+
private readonly operationResolver;
|
|
240
283
|
private readonly drawerAdapter;
|
|
241
284
|
launch(action: CrudAction, row: Record<string, unknown> | undefined, metadata: CrudMetadata, componentKeyId?: string | null, drawerCallbacks?: {
|
|
242
285
|
onClose?: () => void;
|
|
243
286
|
onResult?: (result: CrudDrawerResult) => void;
|
|
287
|
+
}, runtime?: {
|
|
288
|
+
capabilities?: ResourceCapabilitySnapshot | null;
|
|
289
|
+
links?: RestApiLinks | null;
|
|
244
290
|
}): Promise<{
|
|
245
291
|
mode: FormOpenMode;
|
|
246
292
|
ref?: DialogRef<any>;
|
|
@@ -248,9 +294,24 @@ declare class CrudLauncherService {
|
|
|
248
294
|
resolveOpenMode(action: CrudAction, metadata: CrudMetadata): FormOpenMode;
|
|
249
295
|
private buildRoute;
|
|
250
296
|
private mapInputs;
|
|
297
|
+
private resolveActionForLaunch;
|
|
298
|
+
private resolveActionFormContract;
|
|
299
|
+
resolveRuntimeContract(action: CrudAction, row: Record<string, unknown> | undefined, metadata: CrudMetadata, runtime?: {
|
|
300
|
+
capabilities?: ResourceCapabilitySnapshot | null;
|
|
301
|
+
links?: RestApiLinks | null;
|
|
302
|
+
}): {
|
|
303
|
+
schemaUrl?: string | null;
|
|
304
|
+
submitUrl?: string | null;
|
|
305
|
+
submitMethod?: string | null;
|
|
306
|
+
apiEndpointKey?: unknown;
|
|
307
|
+
apiUrlEntry?: unknown;
|
|
308
|
+
};
|
|
309
|
+
private buildInferredFormId;
|
|
310
|
+
private isCanonicalCrudAction;
|
|
311
|
+
private isExplicitCrudAction;
|
|
251
312
|
private mergeCrudOverrides;
|
|
252
|
-
static ɵfac:
|
|
253
|
-
static ɵprov:
|
|
313
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CrudLauncherService, never>;
|
|
314
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<CrudLauncherService>;
|
|
254
315
|
}
|
|
255
316
|
|
|
256
317
|
declare class DynamicFormDialogHostComponent implements OnInit {
|
|
@@ -269,6 +330,7 @@ declare class DynamicFormDialogHostComponent implements OnInit {
|
|
|
269
330
|
private destroyRef;
|
|
270
331
|
resourcePath?: string;
|
|
271
332
|
resourceId?: string | number;
|
|
333
|
+
initialValue?: Record<string, unknown> | null;
|
|
272
334
|
schemaUrl?: string | null;
|
|
273
335
|
submitUrl?: string | null;
|
|
274
336
|
submitMethod?: string | null;
|
|
@@ -279,14 +341,15 @@ declare class DynamicFormDialogHostComponent implements OnInit {
|
|
|
279
341
|
private idField;
|
|
280
342
|
texts: Record<string, string>;
|
|
281
343
|
constructor(dialogRef: DialogRef<DynamicFormDialogHostComponent>, data: any, dialogService: DialogService, crud: GenericCrudService<any>, configStorage: AsyncConfigStorage);
|
|
344
|
+
private extractInitialValue;
|
|
282
345
|
ngOnInit(): void;
|
|
283
346
|
onSave(result: unknown): void;
|
|
284
347
|
onCancel(): void;
|
|
285
348
|
toggleMaximize(initial?: boolean): void;
|
|
286
349
|
private saveState;
|
|
287
350
|
private applySavedState;
|
|
288
|
-
static ɵfac:
|
|
289
|
-
static ɵcmp:
|
|
351
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicFormDialogHostComponent, never>;
|
|
352
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicFormDialogHostComponent, "praxis-dynamic-form-dialog-host", never, {}, {}, never, never, true, never>;
|
|
290
353
|
}
|
|
291
354
|
|
|
292
355
|
/** Metadata for PraxisCrudComponent */
|
|
@@ -303,8 +366,8 @@ declare class CrudPageHeaderComponent {
|
|
|
303
366
|
sticky: boolean;
|
|
304
367
|
divider: boolean;
|
|
305
368
|
returnTo?: string | null;
|
|
306
|
-
static ɵfac:
|
|
307
|
-
static ɵcmp:
|
|
369
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CrudPageHeaderComponent, never>;
|
|
370
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CrudPageHeaderComponent, "praxis-crud-page-header", never, { "title": { "alias": "title"; "required": false; }; "backLabel": { "alias": "backLabel"; "required": false; }; "showBack": { "alias": "showBack"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "sticky": { "alias": "sticky"; "required": false; }; "divider": { "alias": "divider"; "required": false; }; "returnTo": { "alias": "returnTo"; "required": false; }; }, {}, never, ["*"], true, never>;
|
|
308
371
|
}
|
|
309
372
|
|
|
310
373
|
/**
|
|
@@ -333,5 +396,200 @@ interface CapabilityCatalog extends AiCapabilityCatalog {
|
|
|
333
396
|
}
|
|
334
397
|
declare const CRUD_AI_CAPABILITIES: CapabilityCatalog;
|
|
335
398
|
|
|
336
|
-
|
|
337
|
-
|
|
399
|
+
declare function createCrudAuthoringDocument(source: {
|
|
400
|
+
metadata?: unknown;
|
|
401
|
+
}): CrudAuthoringDocument;
|
|
402
|
+
declare function parseLegacyOrCrudDocument(raw: unknown): CrudAuthoringDocument;
|
|
403
|
+
declare function normalizeCrudAuthoringDocument(doc: CrudAuthoringDocument): CrudAuthoringDocument;
|
|
404
|
+
declare function serializeCrudAuthoringDocument(doc: CrudAuthoringDocument): unknown;
|
|
405
|
+
declare function validateCrudAuthoringDocument(doc: CrudAuthoringDocument, context?: CrudValidationContext): CrudEditorDiagnostic[];
|
|
406
|
+
declare function findCrudAction(actions: CrudMetadata['actions'], actionName: string): CrudAction | undefined;
|
|
407
|
+
|
|
408
|
+
type CrudEditorActionKey = 'create' | 'view' | 'edit';
|
|
409
|
+
type CrudEditorActionGroupKey = 'binding' | 'schema' | 'submit' | 'api';
|
|
410
|
+
type CrudEditorParamTarget = CrudParamMapping['to'];
|
|
411
|
+
type CrudEditorSectionKey = 'connection' | 'defaults' | 'actions' | 'table';
|
|
412
|
+
type CrudEditorSectionStatus = 'ready' | 'pending' | 'invalid';
|
|
413
|
+
type CrudEditorHealthBucket = 'ready' | 'pending' | 'invalid';
|
|
414
|
+
type CrudEditorDiagnosticIssue = ReturnType<typeof validateCrudAuthoringDocument>[number];
|
|
415
|
+
type CrudEditorPayload = {
|
|
416
|
+
document: CrudAuthoringDocument;
|
|
417
|
+
metadata: CrudMetadata;
|
|
418
|
+
id?: string | null;
|
|
419
|
+
};
|
|
420
|
+
declare const HEADER_VARIANTS: readonly ["ghost", "tonal", "outlined"];
|
|
421
|
+
declare class CrudMetadataEditorComponent implements SettingsValueProvider {
|
|
422
|
+
readonly documentInput: _angular_core.InputSignal<CrudAuthoringDocument | null>;
|
|
423
|
+
readonly metadataInput: _angular_core.InputSignal<CrudMetadata | null>;
|
|
424
|
+
readonly crudIdInput: _angular_core.InputSignal<string | null>;
|
|
425
|
+
readonly readonlyInput: _angular_core.InputSignal<boolean>;
|
|
426
|
+
readonly isDirty$: BehaviorSubject<boolean>;
|
|
427
|
+
readonly isValid$: BehaviorSubject<boolean>;
|
|
428
|
+
readonly isBusy$: BehaviorSubject<boolean>;
|
|
429
|
+
readonly actionKeys: CrudEditorActionKey[];
|
|
430
|
+
readonly healthBuckets: CrudEditorHealthBucket[];
|
|
431
|
+
readonly openModes: FormOpenMode[];
|
|
432
|
+
readonly headerVariants: readonly ["ghost", "tonal", "outlined"];
|
|
433
|
+
readonly submitMethods: readonly ["post", "put", "patch"];
|
|
434
|
+
readonly modalDensities: readonly ["default", "compact"];
|
|
435
|
+
readonly backStrategies: readonly ["auto", "close", "navigate"];
|
|
436
|
+
readonly paramTargets: ("routeParam" | "query" | "input")[];
|
|
437
|
+
private readonly initialValueDrafts;
|
|
438
|
+
private readonly injectedData;
|
|
439
|
+
private readonly i18n;
|
|
440
|
+
private readonly currentDocument;
|
|
441
|
+
private readonly initialDocument;
|
|
442
|
+
private lastExternalSignature;
|
|
443
|
+
readonly effectiveCrudId: _angular_core.Signal<string | null>;
|
|
444
|
+
readonly isReadonly: _angular_core.Signal<boolean>;
|
|
445
|
+
readonly diagnostics: _angular_core.Signal<CrudEditorDiagnostic[]>;
|
|
446
|
+
readonly errorCount: _angular_core.Signal<number>;
|
|
447
|
+
readonly warningCount: _angular_core.Signal<number>;
|
|
448
|
+
readonly serializedDocument: _angular_core.Signal<string>;
|
|
449
|
+
readonly tableConfig: _angular_core.Signal<_praxisui_core.TableConfigModern>;
|
|
450
|
+
readonly resourcePath: _angular_core.Signal<string>;
|
|
451
|
+
readonly resourceIdField: _angular_core.Signal<string>;
|
|
452
|
+
readonly resourceEndpointKey: _angular_core.Signal<string>;
|
|
453
|
+
readonly defaultsOpenMode: _angular_core.Signal<FormOpenMode>;
|
|
454
|
+
readonly headerShowBack: _angular_core.Signal<boolean>;
|
|
455
|
+
readonly headerBackLabel: _angular_core.Signal<string>;
|
|
456
|
+
readonly headerVariant: _angular_core.Signal<"ghost" | "tonal" | "outlined">;
|
|
457
|
+
readonly headerSticky: _angular_core.Signal<boolean>;
|
|
458
|
+
readonly headerBreadcrumbs: _angular_core.Signal<boolean>;
|
|
459
|
+
readonly headerDivider: _angular_core.Signal<boolean>;
|
|
460
|
+
readonly modalDensity: _angular_core.Signal<string>;
|
|
461
|
+
readonly modalCanMaximize: _angular_core.Signal<boolean>;
|
|
462
|
+
readonly modalStartMaximized: _angular_core.Signal<boolean>;
|
|
463
|
+
readonly modalRememberLastState: _angular_core.Signal<boolean>;
|
|
464
|
+
readonly modalDisableCloseOnEsc: _angular_core.Signal<boolean>;
|
|
465
|
+
readonly modalDisableCloseOnBackdrop: _angular_core.Signal<boolean>;
|
|
466
|
+
readonly modalFullscreenBreakpoint: _angular_core.Signal<string>;
|
|
467
|
+
readonly backStrategy: _angular_core.Signal<string>;
|
|
468
|
+
readonly backReturnTo: _angular_core.Signal<string>;
|
|
469
|
+
readonly backConfirmOnDirty: _angular_core.Signal<boolean>;
|
|
470
|
+
readonly nextFocusSection: _angular_core.Signal<CrudEditorSectionKey>;
|
|
471
|
+
readonly nextFocusStatus: _angular_core.Signal<CrudEditorSectionStatus>;
|
|
472
|
+
readonly visibleHealthBuckets: _angular_core.Signal<CrudEditorHealthBucket[]>;
|
|
473
|
+
readonly showHealthMap: _angular_core.Signal<boolean>;
|
|
474
|
+
readonly groupedDiagnostics: _angular_core.Signal<{
|
|
475
|
+
section: CrudEditorSectionKey;
|
|
476
|
+
issues: CrudEditorDiagnostic[];
|
|
477
|
+
hasError: boolean;
|
|
478
|
+
}[]>;
|
|
479
|
+
constructor();
|
|
480
|
+
getSettingsValue(): CrudEditorPayload;
|
|
481
|
+
onSave(): CrudEditorPayload;
|
|
482
|
+
reset(): void;
|
|
483
|
+
actionValue(actionName: CrudEditorActionKey): CrudAction;
|
|
484
|
+
actionApiUrlEntryDraft(actionName: CrudEditorActionKey): string;
|
|
485
|
+
actionParams(actionName: CrudEditorActionKey): CrudParamMapping[];
|
|
486
|
+
actionInitialValueDraft(actionName: CrudEditorActionKey): string;
|
|
487
|
+
actionLabel(actionName: CrudEditorActionKey): string;
|
|
488
|
+
actionSummary(actionName: CrudEditorActionKey): string;
|
|
489
|
+
actionEffectiveBindingSummary(actionName: CrudEditorActionKey): string;
|
|
490
|
+
actionSubmitSummary(actionName: CrudEditorActionKey): string;
|
|
491
|
+
actionSchemaSummary(actionName: CrudEditorActionKey): string;
|
|
492
|
+
actionApiSummary(actionName: CrudEditorActionKey): string;
|
|
493
|
+
actionInputsNote(actionName: CrudEditorActionKey): string;
|
|
494
|
+
actionInputsSummary(actionName: CrudEditorActionKey): string;
|
|
495
|
+
actionParamsNote(actionName: CrudEditorActionKey): string;
|
|
496
|
+
actionInitialValueNote(actionName: CrudEditorActionKey): string;
|
|
497
|
+
actionAdvancedSummary(actionName: CrudEditorActionKey): string;
|
|
498
|
+
actionPrimarySummary(actionName: CrudEditorActionKey): string;
|
|
499
|
+
actionBindingNote(actionName: CrudEditorActionKey): string;
|
|
500
|
+
actionSchemaNote(actionName: CrudEditorActionKey): string;
|
|
501
|
+
actionSubmitNote(actionName: CrudEditorActionKey): string;
|
|
502
|
+
actionApiNote(actionName: CrudEditorActionKey): string;
|
|
503
|
+
actionBackStrategy(actionName: CrudEditorActionKey): string;
|
|
504
|
+
actionBackReturnTo(actionName: CrudEditorActionKey): string;
|
|
505
|
+
actionBackConfirmOnDirty(actionName: CrudEditorActionKey): boolean;
|
|
506
|
+
actionBackNote(actionName: CrudEditorActionKey): string;
|
|
507
|
+
actionGroupStatus(actionName: CrudEditorActionKey, group: CrudEditorActionGroupKey): 'ready' | 'pending' | 'invalid';
|
|
508
|
+
actionGroupStatusLabel(actionName: CrudEditorActionKey, group: CrudEditorActionGroupKey): string;
|
|
509
|
+
actionGroupLabel(group: CrudEditorActionGroupKey): string;
|
|
510
|
+
actionGroupsSummary(actionName: CrudEditorActionKey): string;
|
|
511
|
+
actionEditorialSummary(actionName: CrudEditorActionKey): string;
|
|
512
|
+
actionPanelExpanded(actionName: CrudEditorActionKey): boolean;
|
|
513
|
+
actionAdvancedPanelExpanded(actionName: CrudEditorActionKey): boolean;
|
|
514
|
+
actionStatus(actionName: CrudEditorActionKey): 'ready' | 'pending' | 'invalid';
|
|
515
|
+
actionStatusLabel(actionName: CrudEditorActionKey): string;
|
|
516
|
+
actionShowStatusChip(actionName: CrudEditorActionKey): boolean;
|
|
517
|
+
connectionOverview(): string;
|
|
518
|
+
connectionOverviewNote(): string;
|
|
519
|
+
defaultsOverview(): string;
|
|
520
|
+
defaultsOverviewNote(): string;
|
|
521
|
+
modalDefaultsNote(): string;
|
|
522
|
+
backDefaultsNote(): string;
|
|
523
|
+
actionsOverview(): string;
|
|
524
|
+
actionsOverviewNote(): string;
|
|
525
|
+
tableOverview(): string;
|
|
526
|
+
tableOverviewNote(): string;
|
|
527
|
+
tableStructureSummary(): string;
|
|
528
|
+
tableBehaviorSummary(): string;
|
|
529
|
+
tableStatesSummary(): string;
|
|
530
|
+
tableEditingFlowSummary(): string;
|
|
531
|
+
validationOverview(): string;
|
|
532
|
+
validationOverviewNote(): string;
|
|
533
|
+
jsonSectionSummary(): string;
|
|
534
|
+
sectionStatus(section: CrudEditorSectionKey): CrudEditorSectionStatus;
|
|
535
|
+
sectionStatusLabel(section: CrudEditorSectionKey): string;
|
|
536
|
+
sectionSummary(section: CrudEditorSectionKey): string;
|
|
537
|
+
nextFocusTitle(): string;
|
|
538
|
+
nextFocusSummary(): string;
|
|
539
|
+
nextFocusChipLabel(): string;
|
|
540
|
+
healthBucketLabel(bucket: CrudEditorHealthBucket): string;
|
|
541
|
+
healthBucketSummary(bucket: CrudEditorHealthBucket): string;
|
|
542
|
+
diagnosticsGroupStatusLabel(section: CrudEditorSectionKey, issues: CrudEditorDiagnosticIssue[]): string;
|
|
543
|
+
diagnosticsGroupSummary(section: CrudEditorSectionKey, issues: CrudEditorDiagnosticIssue[]): string;
|
|
544
|
+
modeLabel(mode: FormOpenMode): string;
|
|
545
|
+
variantLabel(variant: (typeof HEADER_VARIANTS)[number]): string;
|
|
546
|
+
modalDensityLabel(density: string): string;
|
|
547
|
+
backStrategyLabel(strategy: string): string;
|
|
548
|
+
private actionInputsSummaryBadge;
|
|
549
|
+
paramTargetLabel(target: CrudEditorParamTarget): string;
|
|
550
|
+
diagnosticMessage(code: string, fallback: string): string;
|
|
551
|
+
setResourceField(field: 'path' | 'idField' | 'endpointKey', value: unknown): void;
|
|
552
|
+
setDefaultsOpenMode(value: FormOpenMode): void;
|
|
553
|
+
setHeaderField(field: string, value: unknown): void;
|
|
554
|
+
setModalField(field: 'density' | 'canMaximize' | 'startMaximized' | 'rememberLastState' | 'disableCloseOnEsc' | 'disableCloseOnBackdrop' | 'fullscreenBreakpoint', value: unknown): void;
|
|
555
|
+
setBackField(field: 'strategy' | 'returnTo' | 'confirmOnDirty', value: unknown): void;
|
|
556
|
+
setActionField(actionName: CrudEditorActionKey, field: 'openMode' | 'route' | 'formId', value: unknown): void;
|
|
557
|
+
setActionFormField(actionName: CrudEditorActionKey, field: string, value: unknown): void;
|
|
558
|
+
addActionParam(actionName: CrudEditorActionKey): void;
|
|
559
|
+
removeActionParam(actionName: CrudEditorActionKey, index: number): void;
|
|
560
|
+
setActionParamField(actionName: CrudEditorActionKey, index: number, field: keyof CrudParamMapping, value: unknown): void;
|
|
561
|
+
setActionInitialValue(actionName: CrudEditorActionKey, raw: string): void;
|
|
562
|
+
setActionBackField(actionName: CrudEditorActionKey, field: 'strategy' | 'returnTo' | 'confirmOnDirty', value: unknown): void;
|
|
563
|
+
setActionApiUrlEntry(actionName: CrudEditorActionKey, raw: string): void;
|
|
564
|
+
setTableConfig(config: TableConfig): void;
|
|
565
|
+
private patchAction;
|
|
566
|
+
private updateMetadata;
|
|
567
|
+
private buildPayload;
|
|
568
|
+
private resolveExternalSeed;
|
|
569
|
+
private syncState;
|
|
570
|
+
protected tx(key: string, fallback: string): string;
|
|
571
|
+
private normalizeOptionalNumber;
|
|
572
|
+
private hasHealthBucketContent;
|
|
573
|
+
private sectionDiagnostics;
|
|
574
|
+
private actionDiagnostics;
|
|
575
|
+
private actionGroupLabelsByStatus;
|
|
576
|
+
private actionFocusSummary;
|
|
577
|
+
private prioritizedActionKey;
|
|
578
|
+
sectionDisplayLabel(section: CrudEditorSectionKey): string;
|
|
579
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CrudMetadataEditorComponent, never>;
|
|
580
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CrudMetadataEditorComponent, "praxis-crud-metadata-editor", never, { "documentInput": { "alias": "document"; "required": false; "isSignal": true; }; "metadataInput": { "alias": "metadata"; "required": false; "isSignal": true; }; "crudIdInput": { "alias": "crudId"; "required": false; "isSignal": true; }; "readonlyInput": { "alias": "readonly"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
type OpenCrudMetadataEditorOptions = {
|
|
584
|
+
id?: string;
|
|
585
|
+
title?: string;
|
|
586
|
+
titleIcon?: string;
|
|
587
|
+
document?: CrudAuthoringDocument | null;
|
|
588
|
+
metadata?: CrudMetadata | null;
|
|
589
|
+
crudId?: string;
|
|
590
|
+
readonly?: boolean;
|
|
591
|
+
};
|
|
592
|
+
declare function openCrudMetadataEditor(settings: SettingsPanelService, opts?: OpenCrudMetadataEditorOptions): _praxisui_settings_panel.SettingsPanelRef;
|
|
593
|
+
|
|
594
|
+
export { CRUD_AI_CAPABILITIES, CrudLauncherService, CrudMetadataEditorComponent, CrudPageHeaderComponent, DialogService, DynamicFormDialogHostComponent, PRAXIS_CRUD_COMPONENT_METADATA, PraxisCrudComponent, assertCrudMetadata, createCrudAuthoringDocument, findCrudAction, normalizeCrudAuthoringDocument, openCrudMetadataEditor, parseLegacyOrCrudDocument, providePraxisCrudMetadata, serializeCrudAuthoringDocument, validateCrudAuthoringDocument };
|
|
595
|
+
export type { Capability, CapabilityCatalog, CapabilityCategory, CrudAction, CrudActionFormContract, CrudActionResolutionMode, CrudAuthoringDocument, CrudAuthoringWidgetPersistenceEvent, CrudDefaults, CrudEditorDiagnostic, CrudHeaderConfig, CrudHeaderVariant, CrudMetadata, CrudMetadataAssertionOptions, CrudParamMapping, CrudResource, CrudValidationContext, DialogConfig, DialogRef, FormOpenMode, OpenCrudMetadataEditorOptions, ValueKind };
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/crud",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.0-beta.0",
|
|
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": "^20.1.0",
|
|
7
7
|
"@angular/core": "^20.1.0",
|
|
8
|
-
"@praxisui/dynamic-form": "^
|
|
9
|
-
"@praxisui/table": "^
|
|
10
|
-
"@praxisui/core": "^
|
|
11
|
-
"@praxisui/dynamic-fields": "^
|
|
12
|
-
"@praxisui/settings-panel": "^
|
|
8
|
+
"@praxisui/dynamic-form": "^8.0.0-beta.0",
|
|
9
|
+
"@praxisui/table": "^8.0.0-beta.0",
|
|
10
|
+
"@praxisui/core": "^8.0.0-beta.0",
|
|
11
|
+
"@praxisui/dynamic-fields": "^8.0.0-beta.0",
|
|
12
|
+
"@praxisui/settings-panel": "^8.0.0-beta.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"tslib": "^2.3.0"
|