@nubitio/crud 0.2.1 → 0.3.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/dist/index.cjs +589 -519
- package/dist/index.d.cts +188 -123
- package/dist/index.d.mts +188 -123
- package/dist/index.mjs +590 -522
- package/package.json +3 -3
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { ReactNode, RefObject } from "react";
|
|
1
|
+
import React, { ReactElement, ReactNode, RefObject } from "react";
|
|
2
2
|
import { CoreHttpClient, DataGridEventNames, DataRecord, DataRecord as DataRecord$1, DialogEventNames, FormEventNames, GridData, GridData as GridData$1, createCrudEvents } from "@nubitio/core";
|
|
3
3
|
import { AppDropdownOption } from "@nubitio/ui";
|
|
4
4
|
|
|
@@ -324,6 +324,85 @@ type FieldDef<T extends DataRecord$1 = DataRecord$1> = Omit<Field, 'defaultValue
|
|
|
324
324
|
onChange?: ((value: T[keyof T]) => void | Promise<void>) | GridOnChangeFn;
|
|
325
325
|
};
|
|
326
326
|
//#endregion
|
|
327
|
+
//#region packages/crud/field/BaseFieldBuilder.d.ts
|
|
328
|
+
declare class BaseFieldBuilder<TRecord extends DataRecord$1 = DataRecord$1> {
|
|
329
|
+
protected _field: Field;
|
|
330
|
+
constructor(type: FieldType);
|
|
331
|
+
isIdentity(isIdentity: boolean): this;
|
|
332
|
+
col(col: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12): this;
|
|
333
|
+
layoutHint(value: FormLayoutHint): this;
|
|
334
|
+
cardRole(value: 'title' | 'primary' | 'secondary' | 'hidden'): this;
|
|
335
|
+
preferredColSpan(value: 6 | 12): this;
|
|
336
|
+
minColSpan(value: 6 | 12): this;
|
|
337
|
+
forceFullWidth(value?: boolean): this;
|
|
338
|
+
name(name: string): this;
|
|
339
|
+
label(label: string): this;
|
|
340
|
+
width(width: number | string): this;
|
|
341
|
+
height(height: number): this;
|
|
342
|
+
minWidth(minWidth: number): this;
|
|
343
|
+
align(align: 'left' | 'center' | 'right'): this;
|
|
344
|
+
sortable(sortable: boolean): this;
|
|
345
|
+
filterable(filterable: boolean): this;
|
|
346
|
+
hideable(hideable: boolean): this;
|
|
347
|
+
validators(validators: ValidationRule[]): this;
|
|
348
|
+
valueType(valueType: 'string' | 'number' | 'date' | 'boolean' | 'object' | 'datetime'): this;
|
|
349
|
+
filterValue(filterValue: string | number | boolean | Date | null | undefined): this;
|
|
350
|
+
data(data: DataRecord$1[]): this;
|
|
351
|
+
format(format: string): this;
|
|
352
|
+
formatter(formatter: (cell: GridCellContext<TRecord>) => React.ReactNode): this;
|
|
353
|
+
itemFormatter(itemFormatter: ItemFormatterFn): this;
|
|
354
|
+
visible(visible: boolean): this;
|
|
355
|
+
defaultValue(defaultValue: string | number | boolean | Date | null | undefined | (() => unknown)): this;
|
|
356
|
+
onChange(onChange: OnChangeFn): this;
|
|
357
|
+
onSelect(onSelect: (e: unknown) => void): this;
|
|
358
|
+
onClick(onClick: (e: unknown) => void): this;
|
|
359
|
+
readonly(readonly: boolean): this;
|
|
360
|
+
disabled(disabled: boolean): this;
|
|
361
|
+
hidden(hidden: boolean): this;
|
|
362
|
+
required(required: boolean): this;
|
|
363
|
+
precision(value: number): this;
|
|
364
|
+
accept(value: string | null | undefined): this;
|
|
365
|
+
buttons(value: FieldButton[]): this;
|
|
366
|
+
searchEnabled(value: boolean): this;
|
|
367
|
+
searchExpr(value: string[]): this;
|
|
368
|
+
helpText(value: string): this;
|
|
369
|
+
contentRender(value: string | ((...args: unknown[]) => React.ReactNode) | null | undefined): this;
|
|
370
|
+
visibleOnForm(value: boolean): this;
|
|
371
|
+
autoSelectIfSingle(value: boolean): this;
|
|
372
|
+
url(url: string): this;
|
|
373
|
+
loadOptions(param: LoadOption[]): this;
|
|
374
|
+
filters(filters: FilterRule[]): this;
|
|
375
|
+
byKeyUrl(byKeyUrl: string): this;
|
|
376
|
+
textField(textField: string): this;
|
|
377
|
+
valueField(valueField: string): this;
|
|
378
|
+
selectedFilterOperation(operation: '<' | '<=' | '<>' | '=' | '>' | '>=' | 'between' | 'contains' | 'endswith' | 'notcontains' | 'startswith'): this;
|
|
379
|
+
sendAsString(value: boolean): this;
|
|
380
|
+
multiple(value: boolean): this;
|
|
381
|
+
maxLength(value: number): this;
|
|
382
|
+
visibleWhen(fn: (formData: TRecord) => boolean): this;
|
|
383
|
+
disabledWhen(fn: (formData: TRecord) => boolean): this;
|
|
384
|
+
computed(fn: (formData: TRecord) => unknown): this;
|
|
385
|
+
defaultWhen(fn: (formData: TRecord) => unknown): this;
|
|
386
|
+
requiredWhen(fn: (formData: TRecord) => boolean): this;
|
|
387
|
+
clearWhenHidden(value?: boolean): this;
|
|
388
|
+
dependsOn(fields: string[]): this;
|
|
389
|
+
permissions(perms: {
|
|
390
|
+
visible?: string[];
|
|
391
|
+
editable?: string[];
|
|
392
|
+
}): this;
|
|
393
|
+
build(): Field;
|
|
394
|
+
}
|
|
395
|
+
//#endregion
|
|
396
|
+
//#region packages/crud/field/buildFields.d.ts
|
|
397
|
+
/**
|
|
398
|
+
* A field definition as accepted by `ResourceConfig` arrays: either a built
|
|
399
|
+
* `Field` object or a builder instance straight from `textField()`,
|
|
400
|
+
* `entityField()`, etc. — calling `.build()` yourself is optional.
|
|
401
|
+
*/
|
|
402
|
+
type FieldInput<TRecord extends DataRecord$1 = DataRecord$1> = Field | BaseFieldBuilder<TRecord>;
|
|
403
|
+
/** Normalizes a mixed array of Fields and builders into plain Fields. */
|
|
404
|
+
declare function buildFields<TRecord extends DataRecord$1 = DataRecord$1>(items: ReadonlyArray<FieldInput<TRecord>>): Field[];
|
|
405
|
+
//#endregion
|
|
327
406
|
//#region packages/crud/form/FormDataSnapshot.d.ts
|
|
328
407
|
type FormDataRecord = DataRecord$1;
|
|
329
408
|
type FormDataSnapshot = FormDataRecord;
|
|
@@ -604,6 +683,58 @@ interface BackendAdapter {
|
|
|
604
683
|
synthesizeEntityKey(field: Field, entityValue: FormDataRecord): string | undefined;
|
|
605
684
|
}
|
|
606
685
|
//#endregion
|
|
686
|
+
//#region packages/crud/summary/SummaryTypes.d.ts
|
|
687
|
+
type SummaryType = 'sum' | 'count' | 'avg' | 'min' | 'max' | 'custom';
|
|
688
|
+
type SummaryFormat = 'currency' | 'fixedPoint' | 'decimal' | 'percent' | Intl.NumberFormatOptions | ((value: unknown, item: SummaryItem) => string);
|
|
689
|
+
interface SummaryCalculateContext {
|
|
690
|
+
rows: DataRecord$1[];
|
|
691
|
+
column?: string;
|
|
692
|
+
item: SummaryItem;
|
|
693
|
+
}
|
|
694
|
+
interface SummaryTextContext {
|
|
695
|
+
value: unknown;
|
|
696
|
+
valueText: string;
|
|
697
|
+
item: SummaryItem;
|
|
698
|
+
}
|
|
699
|
+
interface SummaryItem {
|
|
700
|
+
/** Field/column name used to read values and align table-based summaries. */
|
|
701
|
+
column?: string;
|
|
702
|
+
/** Optional label shown by table footer renderers before the computed value. */
|
|
703
|
+
label?: string;
|
|
704
|
+
/** Built-in aggregation or a custom calculator for reusable domain summaries. */
|
|
705
|
+
summaryType?: SummaryType | ((context: SummaryCalculateContext) => unknown);
|
|
706
|
+
/** Template applied after value formatting, e.g. "Total: {0}". */
|
|
707
|
+
displayFormat?: string;
|
|
708
|
+
/** Number format preset, Intl.NumberFormatOptions, or custom formatter. */
|
|
709
|
+
valueFormat?: SummaryFormat;
|
|
710
|
+
/** Final text customization hook. */
|
|
711
|
+
customizeText?: (cellInfo: SummaryTextContext) => string;
|
|
712
|
+
/** Decimal digits used by number presets. Defaults to 2 for currency/fixedPoint. */
|
|
713
|
+
precision?: number;
|
|
714
|
+
/**
|
|
715
|
+
* ISO currency used by the currency preset. Defaults to the app-wide
|
|
716
|
+
* `currency` from CoreConfig; with neither set, the preset falls back to
|
|
717
|
+
* plain fixed-point formatting (no currency symbol).
|
|
718
|
+
*/
|
|
719
|
+
currency?: string;
|
|
720
|
+
/** Intl currency display for the currency preset. Defaults to narrowSymbol. */
|
|
721
|
+
currencyDisplay?: Intl.NumberFormatOptions['currencyDisplay'];
|
|
722
|
+
/** Text alignment override for renderers that are not tied to a Field. */
|
|
723
|
+
align?: 'left' | 'center' | 'right';
|
|
724
|
+
}
|
|
725
|
+
interface DetailSummaryOptions {
|
|
726
|
+
items: SummaryItem[];
|
|
727
|
+
/** Keeps the summary visible at the bottom of the scrollable detail table. */
|
|
728
|
+
sticky?: boolean;
|
|
729
|
+
/** Allows temporarily disabling summaries without changing the item list. */
|
|
730
|
+
visible?: boolean;
|
|
731
|
+
}
|
|
732
|
+
//#endregion
|
|
733
|
+
//#region packages/crud/summary/SummaryUtils.d.ts
|
|
734
|
+
declare function computeSummaryValue(rows: DataRecord$1[], item: SummaryItem): unknown;
|
|
735
|
+
declare function formatSummaryValue(value: unknown, item: SummaryItem): string;
|
|
736
|
+
declare function resolveSummaryText(rows: DataRecord$1[], item: SummaryItem): string;
|
|
737
|
+
//#endregion
|
|
607
738
|
//#region packages/crud/crud/ResourceConfig.d.ts
|
|
608
739
|
/**
|
|
609
740
|
* URL-based deep-linking and filter sync configuration for SmartCrudPage.
|
|
@@ -630,6 +761,14 @@ interface ResourcePermissions {
|
|
|
630
761
|
canDelete?: boolean | (() => boolean);
|
|
631
762
|
canExport?: boolean | (() => boolean);
|
|
632
763
|
canBulkDelete?: boolean | (() => boolean);
|
|
764
|
+
/**
|
|
765
|
+
* Per-row gate for editing: rows where this returns false hide the Edit
|
|
766
|
+
* action and open read-only (View) on row click. Use it to lock records
|
|
767
|
+
* that are immutable by domain rule (issued documents, closed periods, …).
|
|
768
|
+
*/
|
|
769
|
+
canEditRow?: (row: DataRecord$1) => boolean;
|
|
770
|
+
/** Per-row gate for the Delete action. */
|
|
771
|
+
canDeleteRow?: (row: DataRecord$1) => boolean;
|
|
633
772
|
}
|
|
634
773
|
type ResourceToolbarActionVariant = string;
|
|
635
774
|
interface ResourceToolbarAction {
|
|
@@ -664,11 +803,21 @@ interface ResourceToolbarContext<T extends DataRecord$1 = DataRecord$1> {
|
|
|
664
803
|
type ResourceToolbar<T extends DataRecord$1 = DataRecord$1> = ResourceToolbarItems | ((context: ResourceToolbarContext<T>) => ResourceToolbarItems);
|
|
665
804
|
interface ResourceGridDetail {
|
|
666
805
|
url: string;
|
|
667
|
-
|
|
806
|
+
/** Built Fields or builder instances — `.build()` is called for you. */
|
|
807
|
+
fields: FieldInput[] | ((parentRow: DataRecord$1) => FieldInput[]);
|
|
668
808
|
}
|
|
669
809
|
interface ResourceFormDetail {
|
|
810
|
+
/**
|
|
811
|
+
* Source for existing detail rows when editing. Must contain an `{id}`
|
|
812
|
+
* placeholder replaced with the parent record id, e.g.
|
|
813
|
+
* `/api/sales-document-lines?document={id}`. Without it the edit form
|
|
814
|
+
* cannot reload rows and shows an empty detail grid.
|
|
815
|
+
*/
|
|
670
816
|
url?: string;
|
|
671
|
-
|
|
817
|
+
/** Footer summary for the detail grid (e.g. sum of line totals). */
|
|
818
|
+
summary?: DetailSummaryOptions;
|
|
819
|
+
/** Built Fields or builder instances — `.build()` is called for you. */
|
|
820
|
+
fields: FieldInput[];
|
|
672
821
|
propertyName?: string;
|
|
673
822
|
allowAdding?: boolean;
|
|
674
823
|
allowDeleting?: boolean;
|
|
@@ -723,13 +872,13 @@ interface ResourceConfig<T extends DataRecord$1 = DataRecord$1> {
|
|
|
723
872
|
* Omit (or pass an empty array) to let SmartCrudPage auto-infer fields from
|
|
724
873
|
* the Hydra/OpenAPI schema. Prefer `fieldContract` for augmenting inferred fields.
|
|
725
874
|
*/
|
|
726
|
-
fields?:
|
|
875
|
+
fields?: FieldInput[] | FieldDef<T>[];
|
|
727
876
|
/**
|
|
728
877
|
* Form-only field definitions. When set, the grid uses `fields` and the
|
|
729
878
|
* create/edit form uses `formFields` — avoids re-fetching the grid on every
|
|
730
879
|
* reactive form rule evaluation (e.g. visibleWhen while typing).
|
|
731
880
|
*/
|
|
732
|
-
formFields?:
|
|
881
|
+
formFields?: FieldInput[];
|
|
733
882
|
/**
|
|
734
883
|
* Canonical production field contract for SmartCrud.
|
|
735
884
|
* SmartCrud runtime treats this as authoritative over legacy
|
|
@@ -776,6 +925,12 @@ interface ResourceConfig<T extends DataRecord$1 = DataRecord$1> {
|
|
|
776
925
|
onSaveError?: (error?: unknown) => void;
|
|
777
926
|
onDeleteSuccess?: (response: T) => void;
|
|
778
927
|
onDeleteError?: (error?: unknown) => void;
|
|
928
|
+
/**
|
|
929
|
+
* Footer summaries for the main grid, aligned to their `column`. Computed
|
|
930
|
+
* client-side over the **loaded page**, not the full filtered dataset.
|
|
931
|
+
* e.g. `[{ column: 'total', summaryType: 'sum', valueFormat: 'currency' }]`
|
|
932
|
+
*/
|
|
933
|
+
summaryFields?: SummaryItem[];
|
|
779
934
|
/** Bulk actions rendered in the bulk toolbar when rows are selected. */
|
|
780
935
|
bulkActions?: BulkAction[];
|
|
781
936
|
/**
|
|
@@ -899,6 +1054,29 @@ declare const CrudPage: <T extends DataRecord$1 = DataRecord$1>({
|
|
|
899
1054
|
onOperationChange
|
|
900
1055
|
}: CrudPageProps<T>) => React.JSX.Element;
|
|
901
1056
|
//#endregion
|
|
1057
|
+
//#region packages/crud/crud/crudRoute.d.ts
|
|
1058
|
+
/**
|
|
1059
|
+
* Wires the two React Router v6 routes a page-mode resource needs:
|
|
1060
|
+
* the list route and the record route (`/sales` and `/sales/:id`, where
|
|
1061
|
+
* `:id` is also matched by the literal `new` for the create form).
|
|
1062
|
+
*
|
|
1063
|
+
* React Router v6 has no optional params (`:id?`), so page mode
|
|
1064
|
+
* (`viewMode: 'page'` + `routing: { routeParam: 'id' }`) requires both
|
|
1065
|
+
* routes to render the same element. This helper returns them in one call:
|
|
1066
|
+
*
|
|
1067
|
+
* ```tsx
|
|
1068
|
+
* <Routes>
|
|
1069
|
+
* {crudRoute('/sales', <SalesPage />)}
|
|
1070
|
+
* {crudRoute('/purchases', <PurchasesPage />, 'purchaseId')}
|
|
1071
|
+
* </Routes>
|
|
1072
|
+
* ```
|
|
1073
|
+
*
|
|
1074
|
+
* @param path - The list path, e.g. `/sales`.
|
|
1075
|
+
* @param element - The page element (typically a `SmartCrudPage` wrapper).
|
|
1076
|
+
* @param routeParam - Param name used in `routing.routeParam`. Default `'id'`.
|
|
1077
|
+
*/
|
|
1078
|
+
declare function crudRoute(path: string, element: ReactNode, routeParam?: string): ReactElement[];
|
|
1079
|
+
//#endregion
|
|
902
1080
|
//#region packages/crud/crud/resolveSmartCrudFields.d.ts
|
|
903
1081
|
type FieldOverride = Partial<Field> & {
|
|
904
1082
|
key: string;
|
|
@@ -979,75 +1157,6 @@ declare function AuditTrailPanel({
|
|
|
979
1157
|
onClose
|
|
980
1158
|
}: AuditTrailPanelProps): React.JSX.Element | null;
|
|
981
1159
|
//#endregion
|
|
982
|
-
//#region packages/crud/field/BaseFieldBuilder.d.ts
|
|
983
|
-
declare class BaseFieldBuilder<TRecord extends DataRecord$1 = DataRecord$1> {
|
|
984
|
-
protected _field: Field;
|
|
985
|
-
constructor(type: FieldType);
|
|
986
|
-
isIdentity(isIdentity: boolean): this;
|
|
987
|
-
col(col: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12): this;
|
|
988
|
-
layoutHint(value: FormLayoutHint): this;
|
|
989
|
-
cardRole(value: 'title' | 'primary' | 'secondary' | 'hidden'): this;
|
|
990
|
-
preferredColSpan(value: 6 | 12): this;
|
|
991
|
-
minColSpan(value: 6 | 12): this;
|
|
992
|
-
forceFullWidth(value?: boolean): this;
|
|
993
|
-
name(name: string): this;
|
|
994
|
-
label(label: string): this;
|
|
995
|
-
width(width: number | string): this;
|
|
996
|
-
height(height: number): this;
|
|
997
|
-
minWidth(minWidth: number): this;
|
|
998
|
-
align(align: 'left' | 'center' | 'right'): this;
|
|
999
|
-
sortable(sortable: boolean): this;
|
|
1000
|
-
filterable(filterable: boolean): this;
|
|
1001
|
-
hideable(hideable: boolean): this;
|
|
1002
|
-
validators(validators: ValidationRule[]): this;
|
|
1003
|
-
valueType(valueType: 'string' | 'number' | 'date' | 'boolean' | 'object' | 'datetime'): this;
|
|
1004
|
-
filterValue(filterValue: string | number | boolean | Date | null | undefined): this;
|
|
1005
|
-
data(data: DataRecord$1[]): this;
|
|
1006
|
-
format(format: string): this;
|
|
1007
|
-
formatter(formatter: (cell: GridCellContext<TRecord>) => React.ReactNode): this;
|
|
1008
|
-
itemFormatter(itemFormatter: ItemFormatterFn): this;
|
|
1009
|
-
visible(visible: boolean): this;
|
|
1010
|
-
defaultValue(defaultValue: string | number | boolean | Date | null | undefined | (() => unknown)): this;
|
|
1011
|
-
onChange(onChange: OnChangeFn): this;
|
|
1012
|
-
onSelect(onSelect: (e: unknown) => void): this;
|
|
1013
|
-
onClick(onClick: (e: unknown) => void): this;
|
|
1014
|
-
readonly(readonly: boolean): this;
|
|
1015
|
-
disabled(disabled: boolean): this;
|
|
1016
|
-
hidden(hidden: boolean): this;
|
|
1017
|
-
required(required: boolean): this;
|
|
1018
|
-
precision(value: number): this;
|
|
1019
|
-
accept(value: string | null | undefined): this;
|
|
1020
|
-
buttons(value: FieldButton[]): this;
|
|
1021
|
-
searchEnabled(value: boolean): this;
|
|
1022
|
-
searchExpr(value: string[]): this;
|
|
1023
|
-
helpText(value: string): this;
|
|
1024
|
-
contentRender(value: string | ((...args: unknown[]) => React.ReactNode) | null | undefined): this;
|
|
1025
|
-
visibleOnForm(value: boolean): this;
|
|
1026
|
-
autoSelectIfSingle(value: boolean): this;
|
|
1027
|
-
url(url: string): this;
|
|
1028
|
-
loadOptions(param: LoadOption[]): this;
|
|
1029
|
-
filters(filters: FilterRule[]): this;
|
|
1030
|
-
byKeyUrl(byKeyUrl: string): this;
|
|
1031
|
-
textField(textField: string): this;
|
|
1032
|
-
valueField(valueField: string): this;
|
|
1033
|
-
selectedFilterOperation(operation: '<' | '<=' | '<>' | '=' | '>' | '>=' | 'between' | 'contains' | 'endswith' | 'notcontains' | 'startswith'): this;
|
|
1034
|
-
sendAsString(value: boolean): this;
|
|
1035
|
-
multiple(value: boolean): this;
|
|
1036
|
-
maxLength(value: number): this;
|
|
1037
|
-
visibleWhen(fn: (formData: TRecord) => boolean): this;
|
|
1038
|
-
disabledWhen(fn: (formData: TRecord) => boolean): this;
|
|
1039
|
-
computed(fn: (formData: TRecord) => unknown): this;
|
|
1040
|
-
defaultWhen(fn: (formData: TRecord) => unknown): this;
|
|
1041
|
-
requiredWhen(fn: (formData: TRecord) => boolean): this;
|
|
1042
|
-
clearWhenHidden(value?: boolean): this;
|
|
1043
|
-
dependsOn(fields: string[]): this;
|
|
1044
|
-
permissions(perms: {
|
|
1045
|
-
visible?: string[];
|
|
1046
|
-
editable?: string[];
|
|
1047
|
-
}): this;
|
|
1048
|
-
build(): Field;
|
|
1049
|
-
}
|
|
1050
|
-
//#endregion
|
|
1051
1160
|
//#region packages/crud/field/FieldBuilders.d.ts
|
|
1052
1161
|
/**
|
|
1053
1162
|
* Factory for the standard hidden identity field (type NONE, name 'id').
|
|
@@ -1369,54 +1478,6 @@ declare const DATA_GRID_EVENTS: {
|
|
|
1369
1478
|
TOOLBAR_EVENT: string;
|
|
1370
1479
|
};
|
|
1371
1480
|
//#endregion
|
|
1372
|
-
//#region packages/crud/summary/SummaryTypes.d.ts
|
|
1373
|
-
type SummaryType = 'sum' | 'count' | 'avg' | 'min' | 'max' | 'custom';
|
|
1374
|
-
type SummaryFormat = 'currency' | 'fixedPoint' | 'decimal' | 'percent' | Intl.NumberFormatOptions | ((value: unknown, item: SummaryItem) => string);
|
|
1375
|
-
interface SummaryCalculateContext {
|
|
1376
|
-
rows: DataRecord$1[];
|
|
1377
|
-
column?: string;
|
|
1378
|
-
item: SummaryItem;
|
|
1379
|
-
}
|
|
1380
|
-
interface SummaryTextContext {
|
|
1381
|
-
value: unknown;
|
|
1382
|
-
valueText: string;
|
|
1383
|
-
item: SummaryItem;
|
|
1384
|
-
}
|
|
1385
|
-
interface SummaryItem {
|
|
1386
|
-
/** Field/column name used to read values and align table-based summaries. */
|
|
1387
|
-
column?: string;
|
|
1388
|
-
/** Optional label shown by table footer renderers before the computed value. */
|
|
1389
|
-
label?: string;
|
|
1390
|
-
/** Built-in aggregation or a custom calculator for reusable domain summaries. */
|
|
1391
|
-
summaryType?: SummaryType | ((context: SummaryCalculateContext) => unknown);
|
|
1392
|
-
/** Template applied after value formatting, e.g. "Total: {0}". */
|
|
1393
|
-
displayFormat?: string;
|
|
1394
|
-
/** Number format preset, Intl.NumberFormatOptions, or custom formatter. */
|
|
1395
|
-
valueFormat?: SummaryFormat;
|
|
1396
|
-
/** Final text customization hook. */
|
|
1397
|
-
customizeText?: (cellInfo: SummaryTextContext) => string;
|
|
1398
|
-
/** Decimal digits used by number presets. Defaults to 2 for currency/fixedPoint. */
|
|
1399
|
-
precision?: number;
|
|
1400
|
-
/** ISO currency used by the currency preset. Defaults to PEN. */
|
|
1401
|
-
currency?: string;
|
|
1402
|
-
/** Intl currency display for the currency preset. Defaults to narrowSymbol. */
|
|
1403
|
-
currencyDisplay?: Intl.NumberFormatOptions['currencyDisplay'];
|
|
1404
|
-
/** Text alignment override for renderers that are not tied to a Field. */
|
|
1405
|
-
align?: 'left' | 'center' | 'right';
|
|
1406
|
-
}
|
|
1407
|
-
interface DetailSummaryOptions {
|
|
1408
|
-
items: SummaryItem[];
|
|
1409
|
-
/** Keeps the summary visible at the bottom of the scrollable detail table. */
|
|
1410
|
-
sticky?: boolean;
|
|
1411
|
-
/** Allows temporarily disabling summaries without changing the item list. */
|
|
1412
|
-
visible?: boolean;
|
|
1413
|
-
}
|
|
1414
|
-
//#endregion
|
|
1415
|
-
//#region packages/crud/summary/SummaryUtils.d.ts
|
|
1416
|
-
declare function computeSummaryValue(rows: DataRecord$1[], item: SummaryItem): unknown;
|
|
1417
|
-
declare function formatSummaryValue(value: unknown, item: SummaryItem): string;
|
|
1418
|
-
declare function resolveSummaryText(rows: DataRecord$1[], item: SummaryItem): string;
|
|
1419
|
-
//#endregion
|
|
1420
1481
|
//#region packages/crud/datagrid/DataGridViewOptions.d.ts
|
|
1421
1482
|
interface DataGridSelectionChangedEvent {
|
|
1422
1483
|
selectedRowsData?: DataRecord$1[];
|
|
@@ -1444,6 +1505,10 @@ interface DataGridViewOptions {
|
|
|
1444
1505
|
addDisabled?: boolean;
|
|
1445
1506
|
editDisabled?: boolean;
|
|
1446
1507
|
deleteDisabled?: boolean;
|
|
1508
|
+
/** Per-row gate for the Edit action (and row-click editing). Absent = allowed. */
|
|
1509
|
+
canEditRow?: (row: DataRecord$1) => boolean;
|
|
1510
|
+
/** Per-row gate for the Delete action. Absent = allowed. */
|
|
1511
|
+
canDeleteRow?: (row: DataRecord$1) => boolean;
|
|
1447
1512
|
summaryFields?: DataGridSummaryItem[];
|
|
1448
1513
|
filter?: FilterRule[];
|
|
1449
1514
|
sort?: Array<{
|
|
@@ -1866,4 +1931,4 @@ declare function ResourceStoreProvider({
|
|
|
1866
1931
|
}: ResourceStoreProviderProps): React.JSX.Element;
|
|
1867
1932
|
declare function useResourceStoreFactory(): ResourceStoreFactory;
|
|
1868
1933
|
//#endregion
|
|
1869
|
-
export { type AuditEntry, type AuditTrailConfig, AuditTrailPanel, type AuditTrailPanelProps, type BackendAdapter, type BulkAction, type ColSpan, type ColumnPreset, ColumnPresetSelector, type ColumnPresetState, CrudDialogShell, CrudDrawerShell, type CrudDrawerSize, type CrudDrawerViewEvents, type CrudDrawerViewOptions, CrudFormShell, type CrudFormShellProps, CrudPage, CrudPageShell, type CrudPageViewEvents, type CrudPageViewOptions, type CrudViewMode, type CrudViewModeConfig, DATA_GRID_EVENTS, DEFAULT_DRAWER_SIZE, DEFAULT_DRAWER_WIDTH, DRAWER_WIDTHS, type DataGridSelectionChangedEvent, type DataGridSummaryItem, NativeDataGridView as DataGridView, type DataGridViewOptions, type DataRecord, type DetailSummaryOptions, CrudDialogView as DialogView, type DrawerSize, CrudDrawerView as DrawerView, type EnumOption, FORM_EVENTS, type Field, FieldBuilder, type FieldColSpanContext, type FieldDef, type FieldOverride, FieldType, type FilterRule, type FormHandle, type FormLayout, type FormLayoutHint, type FormOnChangeFn, type FormPresentationContext, type FormPresentationMode, type FormSection, type FormTab, NativeFormView as FormView, type FormViewOptions, type FormatterFn, type GridCellContext, type GridData, type GridHandle, type GridOnChangeFn, HydraAdapter, type ItemFormatterFn, type LoadOption, type OnChangeFn, CrudPageView as PageView, type ResolvedViewMode, type ResourceConfig, type ResourceEmptyState, type ResourceFilterDescriptor, type ResourceFilterRule, type ResourceFormDetail, type ResourceGridDetail, type ResourceLoadOption, type ResourceLoadOptions, type ResourcePermissions, type ResourceRouting, type ResourceRowActions, ResourceSchemaProvider, type ResourceSchemaProviderProps, type ResourceSchemaResolution, type ResourceSchemaResolver, type ResourceSortDescriptor, type ResourceStore, type ResourceStoreFactory, type ResourceStoreOptions, ResourceStoreProvider, type ResourceStoreProviderProps, type ResourceToolbar, type ResourceToolbarAction, type ResourceToolbarActionVariant, type ResourceToolbarContext, type ResourceToolbarItems, RestAdapter, type SmartCrudFieldContract, type SmartCrudFieldOperation, type SmartCrudFieldPatch, type SmartCrudHydraFieldContract, type SmartCrudHydraFieldDirective, type SmartCrudManualField, type SmartCrudManualFieldContract, type SmartCrudOperation, SmartCrudPage, SmartCrudRolesProvider, type SummaryCalculateContext, type SummaryFormat, type SummaryItem, type SummaryTextContext, type SummaryType, ToolbarSelect, type ToolbarSelectOption, type ToolbarSelectProps, type ValidationRule, buildFieldColSpanContext, checkboxField, computeSummaryValue, createCrudEvents, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, entityField, enumField, fileField, formatSummaryValue, identityField, imageField, isLongTextField, isShortField, noneField, numberField, parseDrawerWidthPx, passwordField, resolveDrawerLayoutBucket, resolveDrawerSize, resolveDrawerWidth, resolveFieldColSpan, resolveFieldsColSpans, resolveSummaryText, resolveViewMode, selectField, switchField, textField, textareaField, useColumnPreset, useResourceStoreFactory, useSmartCrudRoles, validateFieldContract };
|
|
1934
|
+
export { type AuditEntry, type AuditTrailConfig, AuditTrailPanel, type AuditTrailPanelProps, type BackendAdapter, type BulkAction, type ColSpan, type ColumnPreset, ColumnPresetSelector, type ColumnPresetState, CrudDialogShell, CrudDrawerShell, type CrudDrawerSize, type CrudDrawerViewEvents, type CrudDrawerViewOptions, CrudFormShell, type CrudFormShellProps, CrudPage, CrudPageShell, type CrudPageViewEvents, type CrudPageViewOptions, type CrudViewMode, type CrudViewModeConfig, DATA_GRID_EVENTS, DEFAULT_DRAWER_SIZE, DEFAULT_DRAWER_WIDTH, DRAWER_WIDTHS, type DataGridSelectionChangedEvent, type DataGridSummaryItem, NativeDataGridView as DataGridView, type DataGridViewOptions, type DataRecord, type DetailSummaryOptions, CrudDialogView as DialogView, type DrawerSize, CrudDrawerView as DrawerView, type EnumOption, FORM_EVENTS, type Field, FieldBuilder, type FieldColSpanContext, type FieldDef, type FieldInput, type FieldOverride, FieldType, type FilterRule, type FormHandle, type FormLayout, type FormLayoutHint, type FormOnChangeFn, type FormPresentationContext, type FormPresentationMode, type FormSection, type FormTab, NativeFormView as FormView, type FormViewOptions, type FormatterFn, type GridCellContext, type GridData, type GridHandle, type GridOnChangeFn, HydraAdapter, type ItemFormatterFn, type LoadOption, type OnChangeFn, CrudPageView as PageView, type ResolvedViewMode, type ResourceConfig, type ResourceEmptyState, type ResourceFilterDescriptor, type ResourceFilterRule, type ResourceFormDetail, type ResourceGridDetail, type ResourceLoadOption, type ResourceLoadOptions, type ResourcePermissions, type ResourceRouting, type ResourceRowActions, ResourceSchemaProvider, type ResourceSchemaProviderProps, type ResourceSchemaResolution, type ResourceSchemaResolver, type ResourceSortDescriptor, type ResourceStore, type ResourceStoreFactory, type ResourceStoreOptions, ResourceStoreProvider, type ResourceStoreProviderProps, type ResourceToolbar, type ResourceToolbarAction, type ResourceToolbarActionVariant, type ResourceToolbarContext, type ResourceToolbarItems, RestAdapter, type SmartCrudFieldContract, type SmartCrudFieldOperation, type SmartCrudFieldPatch, type SmartCrudHydraFieldContract, type SmartCrudHydraFieldDirective, type SmartCrudManualField, type SmartCrudManualFieldContract, type SmartCrudOperation, SmartCrudPage, SmartCrudRolesProvider, type SummaryCalculateContext, type SummaryFormat, type SummaryItem, type SummaryTextContext, type SummaryType, ToolbarSelect, type ToolbarSelectOption, type ToolbarSelectProps, type ValidationRule, buildFieldColSpanContext, buildFields, checkboxField, computeSummaryValue, createCrudEvents, crudRoute, currencyField, dateField, datetimeField, defineFieldContract, defineFields, defineResource, entityField, enumField, fileField, formatSummaryValue, identityField, imageField, isLongTextField, isShortField, noneField, numberField, parseDrawerWidthPx, passwordField, resolveDrawerLayoutBucket, resolveDrawerSize, resolveDrawerWidth, resolveFieldColSpan, resolveFieldsColSpans, resolveSummaryText, resolveViewMode, selectField, switchField, textField, textareaField, useColumnPreset, useResourceStoreFactory, useSmartCrudRoles, validateFieldContract };
|