@jielga/tmdatagrid 2.0.0-beta.2 → 2.0.0-beta.21

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.
Files changed (150) hide show
  1. package/README.md +5 -212
  2. package/dist/index.d.ts +1664 -632
  3. package/dist/index.js +5226 -3223
  4. package/dist/index.js.map +1 -1
  5. package/dist/styles.css +1 -1
  6. package/docs/anatomy.md +102 -0
  7. package/docs/cell-selection.md +154 -0
  8. package/docs/column-layout.md +204 -0
  9. package/docs/columns.md +262 -0
  10. package/docs/components.md +304 -0
  11. package/docs/editing.md +603 -0
  12. package/docs/editors.md +250 -0
  13. package/docs/export.md +326 -0
  14. package/docs/filtering.md +358 -0
  15. package/docs/getting-started.md +123 -0
  16. package/docs/grouping.md +165 -0
  17. package/docs/loading-and-empty.md +92 -0
  18. package/docs/localization.md +79 -0
  19. package/docs/menu.md +143 -0
  20. package/docs/pagination.md +144 -0
  21. package/docs/persistence.md +111 -0
  22. package/docs/portfolio-rebalancer.md +94 -0
  23. package/docs/query-builder.md +175 -0
  24. package/docs/quick-search.md +83 -0
  25. package/docs/row-details.md +113 -0
  26. package/docs/row-interaction.md +148 -0
  27. package/docs/row-pinning.md +132 -0
  28. package/docs/row-selection.md +134 -0
  29. package/docs/row-styling.md +133 -0
  30. package/docs/scrolling.md +111 -0
  31. package/docs/server-query.md +246 -0
  32. package/docs/server-side.md +206 -0
  33. package/docs/sorting.md +101 -0
  34. package/docs/styling.md +126 -0
  35. package/docs/summary-row.md +76 -0
  36. package/docs/testing.md +309 -0
  37. package/docs/toolbar.md +161 -0
  38. package/docs/use-tm-data-grid.md +361 -0
  39. package/package.json +21 -45
  40. package/skills/appearance/SKILL.md +70 -17
  41. package/skills/cell-selection/SKILL.md +70 -76
  42. package/skills/columns/SKILL.md +131 -32
  43. package/skills/data/SKILL.md +100 -23
  44. package/skills/editing/SKILL.md +217 -96
  45. package/skills/editing/references/common-mistakes.md +111 -24
  46. package/skills/editing/references/editing-api.md +63 -39
  47. package/skills/editing/references/editors-and-validation.md +77 -19
  48. package/skills/filtering/SKILL.md +148 -40
  49. package/skills/getting-started/SKILL.md +18 -16
  50. package/skills/grouping/SKILL.md +32 -15
  51. package/skills/options/SKILL.md +39 -9
  52. package/skills/rows/SKILL.md +22 -18
  53. package/skills/server-side/SKILL.md +170 -17
  54. package/skills/testing/SKILL.md +10 -7
  55. package/src/{tmdatagrid/TMDataGridContext.ts → TMDataGridContext.ts} +7 -19
  56. package/src/{tmdatagrid/components → components}/TMDataGrid.module.css +7 -1
  57. package/src/{tmdatagrid/components → components}/TMDataGrid.tsx +39 -23
  58. package/src/{tmdatagrid/components → components}/TMDataGridCellEditor.tsx +106 -38
  59. package/src/{tmdatagrid/components → components}/TMDataGridColumnsPanel.module.css +5 -1
  60. package/src/{tmdatagrid/components → components}/TMDataGridColumnsPanel.tsx +47 -55
  61. package/src/{tmdatagrid/components → components}/TMDataGridDetailsColumn.tsx +4 -4
  62. package/src/components/TMDataGridDraftActions.tsx +307 -0
  63. package/src/{tmdatagrid/components → components}/TMDataGridEditColumn.tsx +58 -50
  64. package/src/{tmdatagrid/components → components}/TMDataGridEntryRows.tsx +150 -115
  65. package/src/components/TMDataGridExportPicker.module.css +77 -0
  66. package/src/components/TMDataGridExportPicker.tsx +234 -0
  67. package/src/components/TMDataGridFilterPanel.module.css +54 -0
  68. package/src/components/TMDataGridFilterPanel.tsx +348 -0
  69. package/src/{tmdatagrid/components → components}/TMDataGridFilterPills.tsx +7 -5
  70. package/src/components/TMDataGridFilterSurface.module.css +54 -0
  71. package/src/components/TMDataGridFilterSurface.tsx +167 -0
  72. package/src/{tmdatagrid/components → components}/TMDataGridFooter.tsx +53 -13
  73. package/src/{tmdatagrid/components → components}/TMDataGridGroupColumn.tsx +4 -3
  74. package/src/{tmdatagrid/components → components}/TMDataGridHeaderCell.module.css +10 -0
  75. package/src/{tmdatagrid/components → components}/TMDataGridHeaderCell.tsx +100 -28
  76. package/src/components/TMDataGridHeaderFilterRow.module.css +51 -0
  77. package/src/components/TMDataGridHeaderFilterRow.tsx +301 -0
  78. package/src/components/TMDataGridMenu.tsx +354 -0
  79. package/src/{tmdatagrid/components → components}/TMDataGridSelectColumn.tsx +12 -7
  80. package/src/{tmdatagrid/components → components}/TMDataGridTable.module.css +90 -67
  81. package/src/{tmdatagrid/components → components}/TMDataGridTable.tsx +678 -156
  82. package/src/components/TMDataGridToolbar.module.css +21 -0
  83. package/src/components/TMDataGridToolbar.tsx +181 -0
  84. package/src/{tmdatagrid/components → components}/editors/TMDataGridBooleanEditor.tsx +3 -3
  85. package/src/{tmdatagrid/components → components}/editors/TMDataGridDateEditor.tsx +3 -3
  86. package/src/{tmdatagrid/components → components}/editors/TMDataGridMultiSelectEditor.tsx +3 -3
  87. package/src/components/editors/TMDataGridNumberEditor.tsx +70 -0
  88. package/src/{tmdatagrid/components → components}/editors/TMDataGridSelectEditor.tsx +3 -3
  89. package/src/{tmdatagrid/components → components}/editors/TMDataGridStringEditor.tsx +3 -3
  90. package/src/{tmdatagrid/components → components}/editors/editorShared.ts +17 -31
  91. package/src/{tmdatagrid/components → components}/filters/DgAutocompleteFilter.tsx +5 -4
  92. package/src/{tmdatagrid/components → components}/filters/DgDateRangeFilter.tsx +22 -5
  93. package/src/{tmdatagrid/components → components}/filters/DgRangeSliderFilter.tsx +5 -1
  94. package/src/{tmdatagrid/components → components}/filters/DgTriStateFilter.tsx +5 -1
  95. package/src/{tmdatagrid/components → components}/filters/TMDataGridFilterValueInput.tsx +44 -28
  96. package/src/components/filters/controlLayout.ts +32 -0
  97. package/src/components/filters/filterControlFor.ts +65 -0
  98. package/src/{tmdatagrid/components → components}/icons.ts +1 -0
  99. package/src/{tmdatagrid/components → components}/sticky.module.css +44 -0
  100. package/src/components/useHideableColumns.ts +52 -0
  101. package/src/{tmdatagrid/core → core}/autosize.ts +5 -2
  102. package/src/{tmdatagrid/core → core}/capabilities.ts +14 -6
  103. package/src/{tmdatagrid/core → core}/columnOptions.ts +46 -0
  104. package/src/{tmdatagrid/core → core}/columnOrdering.ts +33 -14
  105. package/src/{tmdatagrid/core → core}/columnUtils.ts +44 -5
  106. package/src/core/controlledState.ts +179 -0
  107. package/src/core/controlledStateSync.ts +108 -0
  108. package/src/core/deletedRows.ts +34 -0
  109. package/src/core/dom.ts +74 -0
  110. package/src/core/editEngine.ts +2476 -0
  111. package/src/{tmdatagrid/core → core}/editorFocus.ts +8 -4
  112. package/src/core/export.ts +843 -0
  113. package/src/{tmdatagrid/core → core}/filterControls.ts +38 -1
  114. package/src/{tmdatagrid/core → core}/filterOperators.ts +64 -1
  115. package/src/core/filterSurface.ts +99 -0
  116. package/src/{tmdatagrid/core → core}/labels.ts +66 -8
  117. package/src/{tmdatagrid/core → core}/labelsSv.ts +26 -3
  118. package/src/core/pageReset.ts +120 -0
  119. package/src/{tmdatagrid/core → core}/persistence.ts +22 -5
  120. package/src/core/resizePreview.ts +141 -0
  121. package/src/core/summary.ts +59 -0
  122. package/src/core/useSettledTableState.ts +36 -0
  123. package/src/{tmdatagrid/index.ts → index.ts} +75 -12
  124. package/src/{tmdatagrid/useTMDataGrid.tsx → useTMDataGrid.tsx} +734 -135
  125. package/src/useTMDataGridExport.ts +78 -0
  126. package/src/tmdatagrid/components/TMDataGridEditActions.tsx +0 -162
  127. package/src/tmdatagrid/components/TMDataGridFilterPanel.module.css +0 -35
  128. package/src/tmdatagrid/components/TMDataGridFilterPanel.tsx +0 -354
  129. package/src/tmdatagrid/components/TMDataGridToolbar.module.css +0 -12
  130. package/src/tmdatagrid/components/TMDataGridToolbar.tsx +0 -162
  131. package/src/tmdatagrid/components/editors/TMDataGridNumberEditor.tsx +0 -40
  132. package/src/tmdatagrid/core/cellExport.ts +0 -320
  133. package/src/tmdatagrid/core/editEngine.ts +0 -1006
  134. package/src/tmdatagrid/core/summary.ts +0 -35
  135. /package/src/{tmdatagrid/components → components}/TMDataGridDetailsColumn.module.css +0 -0
  136. /package/src/{tmdatagrid/components → components}/TMDataGridFilterPills.module.css +0 -0
  137. /package/src/{tmdatagrid/components → components}/TMDataGridFooter.module.css +0 -0
  138. /package/src/{tmdatagrid/components → components}/TMDataGridGroupColumn.module.css +0 -0
  139. /package/src/{tmdatagrid/components → components}/TMDataGridRowNumberColumn.tsx +0 -0
  140. /package/src/{tmdatagrid/components → components}/TMDataGridSearch.tsx +0 -0
  141. /package/src/{tmdatagrid/core → core}/cellNavigation.ts +0 -0
  142. /package/src/{tmdatagrid/core → core}/cellRange.ts +0 -0
  143. /package/src/{tmdatagrid/core → core}/draftCellContext.ts +0 -0
  144. /package/src/{tmdatagrid/core → core}/expanding.ts +0 -0
  145. /package/src/{tmdatagrid/core → core}/grouping.ts +0 -0
  146. /package/src/{tmdatagrid/core → core}/matchHighlight.ts +0 -0
  147. /package/src/{tmdatagrid/core → core}/quickSearch.ts +0 -0
  148. /package/src/{tmdatagrid/core → core}/rowPinning.ts +0 -0
  149. /package/src/{tmdatagrid/core → core}/rowSelection.ts +0 -0
  150. /package/src/{tmdatagrid/core → core}/sizes.ts +0 -0
@@ -0,0 +1,141 @@
1
+ /**
2
+ * What a running column resize drag paints, frame by frame.
3
+ *
4
+ * The grid's whole layout is one `grid-template-columns` on the grid element -
5
+ * every row follows it through `subgrid` - so a drag only has to rewrite that
6
+ * one string. Rendering the drag through React state instead costs a pass over
7
+ * every mounted cell per pointer move, which is what makes a resize feel heavy
8
+ * on a wide grid.
9
+ *
10
+ * This module computes the frame; `TMDataGridTable` writes it to the DOM and
11
+ * TanStack commits the width into `columnSizing` when the pointer is released.
12
+ */
13
+
14
+ /** One entry of the grid's track list, paired with the column it sizes. */
15
+ export type TMDataGridColumnTrack = {
16
+ id: string;
17
+ /** The `grid-template-columns` entry - `120px` or `minmax(120px, 1fr)`. */
18
+ track: string;
19
+ /** The exact width where the track is exact, the floor where it is fluid. */
20
+ minWidth: number;
21
+ };
22
+
23
+ /** TanStack's transient `columnResizing` state, narrowed to what a frame reads. */
24
+ export type TMDataGridResizeProgress = {
25
+ isResizingColumn: string | false;
26
+ columnSizingStart: Array<[string, number]>;
27
+ deltaPercentage: number | null;
28
+ };
29
+
30
+ /** A column's declared bounds, as `column_getSize` reads them. */
31
+ export type TMDataGridSizeBounds = { minSize?: number; maxSize?: number };
32
+
33
+ /** A sticky offset the drag has moved. */
34
+ export type TMDataGridOffsetPatch = {
35
+ columnId: string;
36
+ side: "left" | "right";
37
+ offset: number;
38
+ };
39
+
40
+ export type TMDataGridResizePreview = {
41
+ gridTemplateColumns: string;
42
+ minWidth: number;
43
+ offsets: Array<TMDataGridOffsetPatch>;
44
+ };
45
+
46
+ /**
47
+ * TanStack's own defaults, from `getDefaultColumnSizingColumnDef()`. Not
48
+ * exported by the package, and the preview has to clamp exactly the way
49
+ * `column_getSize` will once the width is committed - a preview that rounds
50
+ * differently makes the column settle by a pixel when the pointer is released.
51
+ */
52
+ const DEFAULT_MIN_SIZE = 20;
53
+ const DEFAULT_MAX_SIZE = Number.MAX_SAFE_INTEGER;
54
+
55
+ /** The width `columnSizing` would hold if the drag ended on this delta. */
56
+ function draggedWidth(
57
+ startWidth: number,
58
+ deltaPercentage: number,
59
+ bounds: TMDataGridSizeBounds,
60
+ ): number {
61
+ // Two decimals and the `max(…, 0)` are what `header_getResizeHandler`
62
+ // commits; the clamp around it is what `column_getSize` applies on read.
63
+ const dragged =
64
+ Math.round(Math.max(startWidth + startWidth * deltaPercentage, 0) * 100) /
65
+ 100;
66
+ return Math.min(
67
+ Math.max(bounds.minSize ?? DEFAULT_MIN_SIZE, dragged),
68
+ bounds.maxSize ?? DEFAULT_MAX_SIZE,
69
+ );
70
+ }
71
+
72
+ function* laneOffsets(
73
+ lane: Array<string>,
74
+ side: "left" | "right",
75
+ widthOf: (columnId: string) => number,
76
+ ): Generator<TMDataGridOffsetPatch> {
77
+ let offset = 0;
78
+ for (const columnId of lane) {
79
+ yield { columnId, side, offset };
80
+ offset += widthOf(columnId);
81
+ }
82
+ }
83
+
84
+ /**
85
+ * The frame to paint for the drag in `progress`, or `null` when no drag is
86
+ * running - which is also the answer for the first publish of a gesture, made
87
+ * before the pointer has moved at all.
88
+ *
89
+ * `leftLane` and `rightLane` are the pinned lanes in the order the grid stacks
90
+ * them: left to right, and outermost last on the right. Their offsets come
91
+ * back only when the drag is resizing a pinned column, since nothing else
92
+ * moves them.
93
+ */
94
+ export function resizePreview({
95
+ progress,
96
+ tracks,
97
+ boundsOf,
98
+ leftLane,
99
+ rightLane,
100
+ }: {
101
+ progress: TMDataGridResizeProgress;
102
+ tracks: Array<TMDataGridColumnTrack>;
103
+ boundsOf: (columnId: string) => TMDataGridSizeBounds;
104
+ leftLane: Array<string>;
105
+ rightLane: Array<string>;
106
+ }): TMDataGridResizePreview | null {
107
+ if (progress.isResizingColumn === false) return null;
108
+ if (progress.columnSizingStart.length === 0) return null;
109
+
110
+ const deltaPercentage = progress.deltaPercentage ?? 0;
111
+ const widths = new Map<string, number>();
112
+ for (const [columnId, startWidth] of progress.columnSizingStart) {
113
+ widths.set(
114
+ columnId,
115
+ draggedWidth(startWidth, deltaPercentage, boundsOf(columnId)),
116
+ );
117
+ }
118
+
119
+ const template: Array<string> = [];
120
+ let minWidth = 0;
121
+ for (const track of tracks) {
122
+ const width = widths.get(track.id);
123
+ template.push(width === undefined ? track.track : `${width}px`);
124
+ minWidth += width ?? track.minWidth;
125
+ }
126
+
127
+ const inLane = (lane: Array<string>) => lane.some((id) => widths.has(id));
128
+ const widthOf = (columnId: string) =>
129
+ widths.get(columnId) ??
130
+ tracks.find((track) => track.id === columnId)?.minWidth ??
131
+ 0;
132
+
133
+ return {
134
+ gridTemplateColumns: template.join(" "),
135
+ minWidth,
136
+ offsets: [
137
+ ...(inLane(leftLane) ? laneOffsets(leftLane, "left", widthOf) : []),
138
+ ...(inLane(rightLane) ? laneOffsets(rightLane, "right", widthOf) : []),
139
+ ],
140
+ };
141
+ }
@@ -0,0 +1,59 @@
1
+ import {
2
+ type AggregationContext,
3
+ aggregationFns,
4
+ type RowData,
5
+ } from "@tanstack/react-table";
6
+ import type { TMDataGridRowData } from "../TMDataGridContext";
7
+ import type { TMDataGridFeatures, TMDataGridTable } from "../useTMDataGrid";
8
+
9
+ /** The registered aggregation names - the same set `aggregationFn` accepts. */
10
+ export type TMDataGridAggregationName = keyof typeof aggregationFns;
11
+
12
+ /**
13
+ * One column aggregated over every filtered row - the number a summary-row
14
+ * `footer` wants:
15
+ *
16
+ * ```tsx
17
+ * columnHelper.accessor("salary", {
18
+ * footer: ({ table }) => sek(Number(aggregateColumn({ table, columnId: "salary" }))),
19
+ * });
20
+ * ```
21
+ *
22
+ * Filtered rather than paginated rows, so the total covers everything the
23
+ * filters left (all pages), and follows the filters as they change. Reuses
24
+ * TanStack's registered aggregation functions; `fn` defaults to `"sum"`.
25
+ *
26
+ * Every data row counts once. Grouping builds its group rows from this model
27
+ * rather than into it, so a grouped grid totals its records, not its records
28
+ * plus their subtotals; a tree counts parents and children alike.
29
+ */
30
+ export function aggregateColumn<TData extends RowData>({
31
+ table,
32
+ columnId,
33
+ fn = "sum",
34
+ }: {
35
+ table: TMDataGridTable<TData>;
36
+ columnId: string;
37
+ fn?: TMDataGridAggregationName;
38
+ }): unknown {
39
+ const erased = table as unknown as TMDataGridTable<TMDataGridRowData>;
40
+ const column = erased.getColumn(columnId);
41
+ // A summary for a column the table does not hold has no value.
42
+ if (!column) return undefined;
43
+ // `flatRows`, not `rows`: the filtered model nests under `getSubRows`, and
44
+ // the top-level array would total a tree's roots and drop every child.
45
+ // Grouping does not nest it - the group rows are built from this model, not
46
+ // held in it - so a grouped grid is unaffected either way.
47
+ const rows = erased.getFilteredRowModel().flatRows;
48
+ // The rows are already every row, so there is nothing below them to select:
49
+ // `maxDepth: 0`, and no `subRows` or `groupingRow` - this is not a group.
50
+ const context: AggregationContext<TMDataGridFeatures, TMDataGridRowData> = {
51
+ column,
52
+ columnId,
53
+ maxDepth: 0,
54
+ getValue: (row) => row.getValue(columnId),
55
+ rows,
56
+ table: erased,
57
+ };
58
+ return aggregationFns[fn].aggregate(context);
59
+ }
@@ -0,0 +1,36 @@
1
+ import { useSelector } from "@tanstack/react-store";
2
+ import { shallow } from "@tanstack/store";
3
+ import type { ReadonlyStore, Store } from "@tanstack/store";
4
+
5
+ /** The one slice a settled subscription leaves out. */
6
+ const TRANSIENT_SLICE = "columnResizing";
7
+
8
+ /**
9
+ * Subscribes to every table state slice except the transient resize state.
10
+ *
11
+ * `columnResizing` publishes a new delta on every pointer move of a resize
12
+ * drag. Nothing renders from those deltas - the divider highlight reads
13
+ * `isResizingColumn` through its own selector, and the drag itself is painted
14
+ * straight onto the grid's track list (see `resizePreview`) - so a component
15
+ * subscribed to the whole store would re-render the grid dozens of times a
16
+ * second for state it does not show.
17
+ *
18
+ * The comparison is shallow over the remaining slices, which is the
19
+ * granularity TanStack publishes at: a slice keeps its identity until it
20
+ * changes.
21
+ */
22
+ export function useSettledTableState<TState extends object>(
23
+ store: Store<TState> | ReadonlyStore<TState>,
24
+ ): void {
25
+ useSelector(
26
+ store,
27
+ (state) => {
28
+ const settled: Record<string, unknown> = {};
29
+ for (const [slice, value] of Object.entries(state)) {
30
+ if (slice !== TRANSIENT_SLICE) settled[slice] = value;
31
+ }
32
+ return settled;
33
+ },
34
+ { compare: shallow },
35
+ );
36
+ }
@@ -1,6 +1,5 @@
1
1
  export { TMDataGrid, type TMDataGridProps } from "./components/TMDataGrid";
2
2
  export {
3
- useCellControlTabIndex,
4
3
  useTMDataGridContext,
5
4
  type TMDataGridContextValue,
6
5
  type TMDataGridRowData,
@@ -33,6 +32,10 @@ export {
33
32
  useTMDataGrid,
34
33
  type UseTMDataGridOptions,
35
34
  } from "./useTMDataGrid";
35
+ export {
36
+ useTMDataGridExport,
37
+ type TMDataGridExportApi,
38
+ } from "./useTMDataGridExport";
36
39
  export {
37
40
  TMDataGridFilterPills,
38
41
  type TMDataGridFilterPillsProps,
@@ -41,12 +44,21 @@ export {
41
44
  TMDataGridSearch,
42
45
  type TMDataGridSearchProps,
43
46
  } from "./components/TMDataGridSearch";
47
+ export type {
48
+ TMDataGridMenuColumnsProps,
49
+ TMDataGridMenuExportProps,
50
+ TMDataGridMenuProps,
51
+ } from "./components/TMDataGridMenu";
44
52
  export {
53
+ type TMDataGridColumnFilter,
45
54
  type TMDataGridColumnType,
46
55
  type TMDataGridFilterOperator,
47
56
  type TMDataGridFilterValue,
57
+ type TMDataGridFilterValueShape,
58
+ activeColumnFilters,
48
59
  emptyValueForOperator,
49
60
  FILTER_OPERATOR_LABELS,
61
+ filterValueShape,
50
62
  formatFilterLabel,
51
63
  getDefaultOperator,
52
64
  getOperatorsForType,
@@ -67,13 +79,13 @@ export {
67
79
  type TMDataGridOptionsSource,
68
80
  } from "./core/columnOptions";
69
81
  export {
70
- TMDataGridEditActions,
71
- type TMDataGridEditActionsActions,
72
- type TMDataGridEditActionsControls,
73
- type TMDataGridEditActionsProps,
74
- type TMDataGridEditActionsSlotArgs,
75
- type TMDataGridEditActionsState,
76
- } from "./components/TMDataGridEditActions";
82
+ TMDataGridDraftActions,
83
+ type TMDataGridDraftActionsActions,
84
+ type TMDataGridDraftActionsControls,
85
+ type TMDataGridDraftActionsProps,
86
+ type TMDataGridDraftActionsSlotArgs,
87
+ type TMDataGridDraftActionsState,
88
+ } from "./components/TMDataGridDraftActions";
77
89
  export {
78
90
  clearedValueForType,
79
91
  getEditFieldName,
@@ -82,12 +94,18 @@ export {
82
94
  type TMDataGridEditApi,
83
95
  type TMDataGridEditChange,
84
96
  type TMDataGridEditCommitArgs,
97
+ type TMDataGridSaveDraftsArgs,
98
+ type TMDataGridSaveDraftsResult,
99
+ type TMDataGridSaveOutcomes,
85
100
  type TMDataGridEditCommitDraftsArgs,
101
+ type TMDataGridAddRowsOptions,
102
+ type TMDataGridAddRowsResult,
86
103
  type TMDataGridEditField,
87
104
  type TMDataGridEditMode,
88
105
  type TMDataGridEditorArgs,
89
106
  type TMDataGridEditorComponent,
90
107
  type TMDataGridEditRowProjection,
108
+ type TMDataGridEditRowSnapshot,
91
109
  type TMDataGridEditState,
92
110
  type TMDataGridEditValueMap,
93
111
  type TMDataGridEditValueMapArgs,
@@ -96,12 +114,25 @@ export {
96
114
  type TMDataGridRowDeleteArgs,
97
115
  type TMDataGridRowEditForm,
98
116
  type TMDataGridRowValidators,
117
+ type TMDataGridTableValidateArgs,
118
+ type TMDataGridTableValidators,
99
119
  } from "./core/editEngine";
100
120
  export type {
101
121
  TMDataGridColumnFilterOptions,
102
122
  TMDataGridFilterControlArgs,
103
123
  TMDataGridFilterControlComponent,
124
+ TMDataGridFilterControlLayout,
125
+ TMDataGridFilterPanelLayout,
104
126
  } from "./core/filterControls";
127
+ export type {
128
+ TMDataGridFiltersOptions,
129
+ TMDataGridFiltersSettings,
130
+ TMDataGridFilterSidebarSide,
131
+ TMDataGridFilterSurface,
132
+ } from "./core/filterSurface";
133
+ export type { TMDataGridFilterPanelProps } from "./components/TMDataGridFilterPanel";
134
+ export type { TMDataGridColumnsPanelProps } from "./components/TMDataGridColumnsPanel";
135
+ export type { TMDataGridToolbarProps } from "./components/TMDataGridToolbar";
105
136
  export { TMDataGridFilterValueInput } from "./components/filters/TMDataGridFilterValueInput";
106
137
  export { DgRangeSliderFilter } from "./components/filters/DgRangeSliderFilter";
107
138
  export { DgDateRangeFilter } from "./components/filters/DgDateRangeFilter";
@@ -123,12 +154,14 @@ export { TMDATAGRID_LABELS_SV } from "./core/labelsSv";
123
154
  export {
124
155
  getColumnDefaultOperator,
125
156
  getColumnFilterControl,
157
+ getColumnOperators,
126
158
  getColumnLabel,
127
159
  getColumnType,
128
160
  isColumnEditableForRow,
129
161
  isColumnReorderable,
130
162
  isControlColumn,
131
163
  isGeneratedColumn,
164
+ type TMDataGridColumnSearchable,
132
165
  } from "./core/columnUtils";
133
166
  export { getGroupDataRows } from "./core/grouping";
134
167
  export {
@@ -153,19 +186,49 @@ export {
153
186
  type TMDataGridRangeBounds,
154
187
  } from "./core/cellRange";
155
188
  export {
189
+ buildExportData,
190
+ countSelectedExportRows,
191
+ csvExcelFormat,
192
+ csvFormat,
193
+ DEFAULT_EXPORT_OPTIONS,
194
+ downloadFile,
195
+ exportGrid,
196
+ formatExportValue,
197
+ getExportableColumns,
198
+ guardFormula,
199
+ jsonFormat,
200
+ resolveExportOptions,
201
+ toClipboardText,
202
+ tsvFormat,
203
+ writeClipboardText,
204
+ writeExportFile,
205
+ type BuildExportDataArgs,
206
+ type ExportGridArgs,
207
+ type TMDataGridClipboardTextOptions,
208
+ type TMDataGridCsvFormatOptions,
209
+ type TMDataGridExportColumns,
210
+ type TMDataGridExportData,
211
+ type TMDataGridExportFormat,
212
+ type TMDataGridExportOptions,
213
+ type TMDataGridExportPickerRequest,
214
+ type TMDataGridExportRows,
215
+ type TMDataGridExportSettings,
216
+ type TMDataGridExportValueGetter,
217
+ type TMDataGridExportWriteOptions,
218
+ type TMDataGridJsonFormatOptions,
219
+ type TMDataGridTsvFormatOptions,
220
+ // Deprecated, gone in the next beta.
156
221
  buildCellMatrix,
157
222
  buildGridCellMatrix,
158
223
  DEFAULT_CELL_EXPORT_OPTIONS,
159
224
  downloadTextFile,
160
225
  exportGridToCsv,
161
- formatExportValue,
162
- toClipboardText,
226
+ fromCellExportOptions,
163
227
  toExcelCsv,
164
- writeClipboardText,
165
228
  type BuildCellMatrixArgs,
166
229
  type TMDataGridCellExportOptions,
167
230
  type TMDataGridCellMatrix,
168
- } from "./core/cellExport";
231
+ } from "./core/export";
169
232
  export {
170
233
  areAllRowsExpanded,
171
234
  resolveExpandAll,