@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.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import React, { ReactNode, RefObject } from "react";
1
+ import React, { ReactElement, ReactNode, RefObject } from "react";
2
2
  import { AppDropdownOption } from "@nubitio/ui";
3
3
  import { CoreHttpClient, DataGridEventNames, DataRecord, DataRecord as DataRecord$1, DialogEventNames, FormEventNames, GridData, GridData as GridData$1, createCrudEvents } from "@nubitio/core";
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
- fields: Field[] | ((parentRow: DataRecord$1) => Field[]);
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
- fields: Field[];
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?: Field[] | FieldDef<T>[];
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?: Field[];
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 };