@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.
- package/README.md +5 -212
- package/dist/index.d.ts +1664 -632
- package/dist/index.js +5226 -3223
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/docs/anatomy.md +102 -0
- package/docs/cell-selection.md +154 -0
- package/docs/column-layout.md +204 -0
- package/docs/columns.md +262 -0
- package/docs/components.md +304 -0
- package/docs/editing.md +603 -0
- package/docs/editors.md +250 -0
- package/docs/export.md +326 -0
- package/docs/filtering.md +358 -0
- package/docs/getting-started.md +123 -0
- package/docs/grouping.md +165 -0
- package/docs/loading-and-empty.md +92 -0
- package/docs/localization.md +79 -0
- package/docs/menu.md +143 -0
- package/docs/pagination.md +144 -0
- package/docs/persistence.md +111 -0
- package/docs/portfolio-rebalancer.md +94 -0
- package/docs/query-builder.md +175 -0
- package/docs/quick-search.md +83 -0
- package/docs/row-details.md +113 -0
- package/docs/row-interaction.md +148 -0
- package/docs/row-pinning.md +132 -0
- package/docs/row-selection.md +134 -0
- package/docs/row-styling.md +133 -0
- package/docs/scrolling.md +111 -0
- package/docs/server-query.md +246 -0
- package/docs/server-side.md +206 -0
- package/docs/sorting.md +101 -0
- package/docs/styling.md +126 -0
- package/docs/summary-row.md +76 -0
- package/docs/testing.md +309 -0
- package/docs/toolbar.md +161 -0
- package/docs/use-tm-data-grid.md +361 -0
- package/package.json +21 -45
- package/skills/appearance/SKILL.md +70 -17
- package/skills/cell-selection/SKILL.md +70 -76
- package/skills/columns/SKILL.md +131 -32
- package/skills/data/SKILL.md +100 -23
- package/skills/editing/SKILL.md +217 -96
- package/skills/editing/references/common-mistakes.md +111 -24
- package/skills/editing/references/editing-api.md +63 -39
- package/skills/editing/references/editors-and-validation.md +77 -19
- package/skills/filtering/SKILL.md +148 -40
- package/skills/getting-started/SKILL.md +18 -16
- package/skills/grouping/SKILL.md +32 -15
- package/skills/options/SKILL.md +39 -9
- package/skills/rows/SKILL.md +22 -18
- package/skills/server-side/SKILL.md +170 -17
- package/skills/testing/SKILL.md +10 -7
- package/src/{tmdatagrid/TMDataGridContext.ts → TMDataGridContext.ts} +7 -19
- package/src/{tmdatagrid/components → components}/TMDataGrid.module.css +7 -1
- package/src/{tmdatagrid/components → components}/TMDataGrid.tsx +39 -23
- package/src/{tmdatagrid/components → components}/TMDataGridCellEditor.tsx +106 -38
- package/src/{tmdatagrid/components → components}/TMDataGridColumnsPanel.module.css +5 -1
- package/src/{tmdatagrid/components → components}/TMDataGridColumnsPanel.tsx +47 -55
- package/src/{tmdatagrid/components → components}/TMDataGridDetailsColumn.tsx +4 -4
- package/src/components/TMDataGridDraftActions.tsx +307 -0
- package/src/{tmdatagrid/components → components}/TMDataGridEditColumn.tsx +58 -50
- package/src/{tmdatagrid/components → components}/TMDataGridEntryRows.tsx +150 -115
- package/src/components/TMDataGridExportPicker.module.css +77 -0
- package/src/components/TMDataGridExportPicker.tsx +234 -0
- package/src/components/TMDataGridFilterPanel.module.css +54 -0
- package/src/components/TMDataGridFilterPanel.tsx +348 -0
- package/src/{tmdatagrid/components → components}/TMDataGridFilterPills.tsx +7 -5
- package/src/components/TMDataGridFilterSurface.module.css +54 -0
- package/src/components/TMDataGridFilterSurface.tsx +167 -0
- package/src/{tmdatagrid/components → components}/TMDataGridFooter.tsx +53 -13
- package/src/{tmdatagrid/components → components}/TMDataGridGroupColumn.tsx +4 -3
- package/src/{tmdatagrid/components → components}/TMDataGridHeaderCell.module.css +10 -0
- package/src/{tmdatagrid/components → components}/TMDataGridHeaderCell.tsx +100 -28
- package/src/components/TMDataGridHeaderFilterRow.module.css +51 -0
- package/src/components/TMDataGridHeaderFilterRow.tsx +301 -0
- package/src/components/TMDataGridMenu.tsx +354 -0
- package/src/{tmdatagrid/components → components}/TMDataGridSelectColumn.tsx +12 -7
- package/src/{tmdatagrid/components → components}/TMDataGridTable.module.css +90 -67
- package/src/{tmdatagrid/components → components}/TMDataGridTable.tsx +678 -156
- package/src/components/TMDataGridToolbar.module.css +21 -0
- package/src/components/TMDataGridToolbar.tsx +181 -0
- package/src/{tmdatagrid/components → components}/editors/TMDataGridBooleanEditor.tsx +3 -3
- package/src/{tmdatagrid/components → components}/editors/TMDataGridDateEditor.tsx +3 -3
- package/src/{tmdatagrid/components → components}/editors/TMDataGridMultiSelectEditor.tsx +3 -3
- package/src/components/editors/TMDataGridNumberEditor.tsx +70 -0
- package/src/{tmdatagrid/components → components}/editors/TMDataGridSelectEditor.tsx +3 -3
- package/src/{tmdatagrid/components → components}/editors/TMDataGridStringEditor.tsx +3 -3
- package/src/{tmdatagrid/components → components}/editors/editorShared.ts +17 -31
- package/src/{tmdatagrid/components → components}/filters/DgAutocompleteFilter.tsx +5 -4
- package/src/{tmdatagrid/components → components}/filters/DgDateRangeFilter.tsx +22 -5
- package/src/{tmdatagrid/components → components}/filters/DgRangeSliderFilter.tsx +5 -1
- package/src/{tmdatagrid/components → components}/filters/DgTriStateFilter.tsx +5 -1
- package/src/{tmdatagrid/components → components}/filters/TMDataGridFilterValueInput.tsx +44 -28
- package/src/components/filters/controlLayout.ts +32 -0
- package/src/components/filters/filterControlFor.ts +65 -0
- package/src/{tmdatagrid/components → components}/icons.ts +1 -0
- package/src/{tmdatagrid/components → components}/sticky.module.css +44 -0
- package/src/components/useHideableColumns.ts +52 -0
- package/src/{tmdatagrid/core → core}/autosize.ts +5 -2
- package/src/{tmdatagrid/core → core}/capabilities.ts +14 -6
- package/src/{tmdatagrid/core → core}/columnOptions.ts +46 -0
- package/src/{tmdatagrid/core → core}/columnOrdering.ts +33 -14
- package/src/{tmdatagrid/core → core}/columnUtils.ts +44 -5
- package/src/core/controlledState.ts +179 -0
- package/src/core/controlledStateSync.ts +108 -0
- package/src/core/deletedRows.ts +34 -0
- package/src/core/dom.ts +74 -0
- package/src/core/editEngine.ts +2476 -0
- package/src/{tmdatagrid/core → core}/editorFocus.ts +8 -4
- package/src/core/export.ts +843 -0
- package/src/{tmdatagrid/core → core}/filterControls.ts +38 -1
- package/src/{tmdatagrid/core → core}/filterOperators.ts +64 -1
- package/src/core/filterSurface.ts +99 -0
- package/src/{tmdatagrid/core → core}/labels.ts +66 -8
- package/src/{tmdatagrid/core → core}/labelsSv.ts +26 -3
- package/src/core/pageReset.ts +120 -0
- package/src/{tmdatagrid/core → core}/persistence.ts +22 -5
- package/src/core/resizePreview.ts +141 -0
- package/src/core/summary.ts +59 -0
- package/src/core/useSettledTableState.ts +36 -0
- package/src/{tmdatagrid/index.ts → index.ts} +75 -12
- package/src/{tmdatagrid/useTMDataGrid.tsx → useTMDataGrid.tsx} +734 -135
- package/src/useTMDataGridExport.ts +78 -0
- package/src/tmdatagrid/components/TMDataGridEditActions.tsx +0 -162
- package/src/tmdatagrid/components/TMDataGridFilterPanel.module.css +0 -35
- package/src/tmdatagrid/components/TMDataGridFilterPanel.tsx +0 -354
- package/src/tmdatagrid/components/TMDataGridToolbar.module.css +0 -12
- package/src/tmdatagrid/components/TMDataGridToolbar.tsx +0 -162
- package/src/tmdatagrid/components/editors/TMDataGridNumberEditor.tsx +0 -40
- package/src/tmdatagrid/core/cellExport.ts +0 -320
- package/src/tmdatagrid/core/editEngine.ts +0 -1006
- package/src/tmdatagrid/core/summary.ts +0 -35
- /package/src/{tmdatagrid/components → components}/TMDataGridDetailsColumn.module.css +0 -0
- /package/src/{tmdatagrid/components → components}/TMDataGridFilterPills.module.css +0 -0
- /package/src/{tmdatagrid/components → components}/TMDataGridFooter.module.css +0 -0
- /package/src/{tmdatagrid/components → components}/TMDataGridGroupColumn.module.css +0 -0
- /package/src/{tmdatagrid/components → components}/TMDataGridRowNumberColumn.tsx +0 -0
- /package/src/{tmdatagrid/components → components}/TMDataGridSearch.tsx +0 -0
- /package/src/{tmdatagrid/core → core}/cellNavigation.ts +0 -0
- /package/src/{tmdatagrid/core → core}/cellRange.ts +0 -0
- /package/src/{tmdatagrid/core → core}/draftCellContext.ts +0 -0
- /package/src/{tmdatagrid/core → core}/expanding.ts +0 -0
- /package/src/{tmdatagrid/core → core}/grouping.ts +0 -0
- /package/src/{tmdatagrid/core → core}/matchHighlight.ts +0 -0
- /package/src/{tmdatagrid/core → core}/quickSearch.ts +0 -0
- /package/src/{tmdatagrid/core → core}/rowPinning.ts +0 -0
- /package/src/{tmdatagrid/core → core}/rowSelection.ts +0 -0
- /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
|
-
|
|
71
|
-
type
|
|
72
|
-
type
|
|
73
|
-
type
|
|
74
|
-
type
|
|
75
|
-
type
|
|
76
|
-
} from "./components/
|
|
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
|
-
|
|
162
|
-
toClipboardText,
|
|
226
|
+
fromCellExportOptions,
|
|
163
227
|
toExcelCsv,
|
|
164
|
-
writeClipboardText,
|
|
165
228
|
type BuildCellMatrixArgs,
|
|
166
229
|
type TMDataGridCellExportOptions,
|
|
167
230
|
type TMDataGridCellMatrix,
|
|
168
|
-
} from "./core/
|
|
231
|
+
} from "./core/export";
|
|
169
232
|
export {
|
|
170
233
|
areAllRowsExpanded,
|
|
171
234
|
resolveExpandAll,
|