@svgrid/grid 3.0.3 → 3.0.5
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 +6 -5
- package/dist/GridMenus.svelte +44 -2
- package/dist/SvChartMenu.svelte +69 -0
- package/dist/SvChartMenu.svelte.d.ts +11 -0
- package/dist/SvChartPanes.svelte +113 -0
- package/dist/SvChartPanes.svelte.d.ts +20 -0
- package/dist/SvGrid.controller.svelte.d.ts +122 -41
- package/dist/SvGrid.controller.svelte.js +846 -207
- package/dist/SvGrid.css +178 -2
- package/dist/SvGrid.svelte +717 -720
- package/dist/SvGrid.types.d.ts +566 -12
- package/dist/SvGridCellEditor.svelte +17 -0
- package/dist/SvGridChart.svelte +2257 -329
- package/dist/SvGridChart.svelte.d.ts +6 -106
- package/dist/SvGridChart.types.d.ts +338 -0
- package/dist/SvGridChart.types.js +1 -0
- package/dist/SvGridChartBuilder.svelte +323 -0
- package/dist/SvGridChartBuilder.svelte.d.ts +34 -0
- package/dist/SvGridChartPanel.svelte +221 -275
- package/dist/SvGridChartPickers.svelte +417 -0
- package/dist/SvGridChartPickers.svelte.d.ts +70 -0
- package/dist/SvGridChartView.svelte +13 -14
- package/dist/SvModal.svelte +7 -1
- package/dist/SvModal.svelte.d.ts +5 -0
- package/dist/ai.d.ts +40 -8
- package/dist/ai.js +135 -24
- package/dist/aria.d.ts +11 -0
- package/dist/build-api.js +119 -28
- package/dist/cdn/GridMenus-CID62rlI.js +636 -0
- package/dist/cdn/GridMenus-DLL-qZeu.js +635 -0
- package/dist/cdn/SvChartMenu-Bl6PBbkT.js +58 -0
- package/dist/cdn/SvChartMenu-FBSMINA6.js +59 -0
- package/dist/cdn/{SvDateRangeInput-DMLKmGEc.js → SvDateRangeInput-BeU_TkbQ.js} +15 -14
- package/dist/cdn/{SvDateRangeInput-CaOuMs8O.js → SvDateRangeInput-yX8vzleW.js} +38 -37
- package/dist/cdn/{SvDateTimePicker-sonaH0oh.js → SvDateTimePicker-DQwt4UAs.js} +139 -180
- package/dist/cdn/SvDateTimePicker-vNU6bZ-q.js +775 -0
- package/dist/cdn/{SvGridCellEditor-CjEJMJKc.js → SvGridCellEditor-B1p-vCK5.js} +188 -178
- package/dist/cdn/{SvGridCellEditor-BWnTi2N7.js → SvGridCellEditor-D_0q4xAu.js} +98 -88
- package/dist/cdn/SvGridChart-C3EWAZaM.js +3574 -0
- package/dist/cdn/SvGridChart-DzLkSwCH.js +3572 -0
- package/dist/cdn/SvGridChartBuilder-BE2T1ykB.js +783 -0
- package/dist/cdn/SvGridChartBuilder-CfII62sZ.js +784 -0
- package/dist/cdn/SvGridChartPanel-CCX5_Wgd.js +675 -0
- package/dist/cdn/SvGridChartPanel-xf4sWVTo.js +699 -0
- package/dist/cdn/SvGridChartView-CfuXmY5I.js +48 -0
- package/dist/cdn/SvGridChartView-DYwabQWj.js +47 -0
- package/dist/cdn/SvMenuList-CLN8OuIK.js +452 -0
- package/dist/cdn/SvMenuList-DkGhNKjf.js +451 -0
- package/dist/cdn/SvModal-BAE-pjZX.js +396 -0
- package/dist/cdn/SvModal-CIZWCcad.js +397 -0
- package/dist/cdn/chart-Dz7SqMXH.js +4341 -0
- package/dist/cdn/chart-export-BXqueeWJ.js +135 -0
- package/dist/cdn/chart-export-pdf-DONFUnNY.js +110 -0
- package/dist/cdn/chart-panel-messages-CUbf2R4i.js +1052 -0
- package/dist/cdn/chart-panel-messages-CmNrMdsr.js +1053 -0
- package/dist/cdn/chart-summary-BJW_tg_X.js +138 -0
- package/dist/cdn/chart-trend-CaN9mDEV.js +50 -0
- package/dist/cdn/chart-validate-HcOVFAfJ.js +188 -0
- package/dist/cdn/{column-resize-DsfNXMom.js → column-resize-DpmOLfRp.js} +3 -3
- package/dist/cdn/{date-format-BnnHlqGw.js → date-format-CtquV-p3.js} +583 -603
- package/dist/cdn/{date-format-BNii4zeD.js → date-format-D6KFzU_W.js} +347 -367
- package/dist/cdn/dismissable-DAHetSNk.js +44 -0
- package/dist/cdn/editor-contract-LXgQJAgd.js +22 -0
- package/dist/cdn/focus-trap-BBOQYBma.js +65 -0
- package/dist/cdn/{row-resize-BRcimkUT.js → row-resize-niQCp040.js} +44 -36
- package/dist/cdn/server-block-cache-CGoWz-87.js +237 -0
- package/dist/cdn/{src-D6XvA1Ij.js → src-Bklofsad.js} +10615 -10155
- package/dist/cdn/{src-Bugf5XlI.js → src-jcFMkBnN.js} +7111 -6651
- package/dist/cdn/svgrid.js +27 -15
- package/dist/cdn/svgrid.svelte-external.js +27 -15
- package/dist/cdn/validate-C7Rn_Bns.js +76 -0
- package/dist/chart-axes.d.ts +53 -0
- package/dist/chart-axes.js +351 -0
- package/dist/chart-cartesian.d.ts +88 -0
- package/dist/chart-cartesian.js +1862 -0
- package/dist/chart-decimate.d.ts +51 -0
- package/dist/chart-decimate.js +199 -0
- package/dist/chart-export-pdf.d.ts +47 -0
- package/dist/chart-export-pdf.js +187 -0
- package/dist/chart-export.d.ts +2 -1
- package/dist/chart-export.js +18 -3
- package/dist/chart-financial.d.ts +91 -0
- package/dist/chart-financial.js +175 -0
- package/dist/chart-flow.d.ts +10 -0
- package/dist/chart-flow.js +298 -0
- package/dist/chart-format.d.ts +18 -0
- package/dist/chart-format.js +65 -0
- package/dist/chart-grid.d.ts +8 -0
- package/dist/chart-grid.js +190 -0
- package/dist/chart-hierarchy.d.ts +17 -0
- package/dist/chart-hierarchy.js +146 -0
- package/dist/chart-indicators.d.ts +115 -0
- package/dist/chart-indicators.js +389 -0
- package/dist/chart-messages.d.ts +95 -0
- package/dist/chart-messages.js +92 -0
- package/dist/chart-motion.d.ts +16 -0
- package/dist/chart-motion.js +141 -0
- package/dist/chart-panel-messages.d.ts +265 -0
- package/dist/chart-panel-messages.js +285 -0
- package/dist/chart-pivot.d.ts +87 -0
- package/dist/chart-pivot.js +156 -0
- package/dist/chart-polar.d.ts +25 -0
- package/dist/chart-polar.js +700 -0
- package/dist/chart-samples.d.ts +16 -0
- package/dist/chart-samples.js +153 -0
- package/dist/chart-scale.d.ts +113 -0
- package/dist/chart-scale.js +405 -0
- package/dist/chart-stats.d.ts +111 -0
- package/dist/chart-stats.js +419 -0
- package/dist/chart-stream.d.ts +45 -0
- package/dist/chart-stream.js +91 -0
- package/dist/chart-summary.d.ts +27 -0
- package/dist/chart-summary.js +205 -0
- package/dist/chart-sync.svelte.d.ts +32 -0
- package/dist/chart-sync.svelte.js +23 -0
- package/dist/chart-table.d.ts +35 -0
- package/dist/chart-table.js +165 -0
- package/dist/chart-trend.d.ts +19 -0
- package/dist/chart-trend.js +61 -0
- package/dist/chart-types.d.ts +1456 -0
- package/dist/chart-types.js +6 -0
- package/dist/chart-validate.d.ts +43 -0
- package/dist/chart-validate.js +272 -0
- package/dist/chart-zoom.d.ts +40 -0
- package/dist/chart-zoom.js +145 -0
- package/dist/chart.d.ts +186 -865
- package/dist/chart.js +460 -2204
- package/dist/clipboard.d.ts +1 -0
- package/dist/clipboard.js +137 -18
- package/dist/column-resize.d.ts +3 -0
- package/dist/column-resize.js +4 -1
- package/dist/columns.js +3 -0
- package/dist/command-context.d.ts +19 -0
- package/dist/command-context.js +116 -0
- package/dist/core.d.ts +7 -0
- package/dist/core.js +36 -13
- package/dist/createPopoverSelect.svelte.d.ts +2 -2
- package/dist/editing.d.ts +2 -8
- package/dist/editing.js +272 -33
- package/dist/fill-patterns.d.ts +0 -5
- package/dist/fill-patterns.js +56 -2
- package/dist/gantt-view.svelte.d.ts +24 -0
- package/dist/gantt-view.svelte.js +13 -0
- package/dist/grid-icons.d.ts +2 -2
- package/dist/grid-icons.js +2 -2
- package/dist/grid-messages.d.ts +16 -3
- package/dist/grid-messages.js +10 -0
- package/dist/history.d.ts +83 -0
- package/dist/history.js +133 -0
- package/dist/index.d.ts +29 -10
- package/dist/index.js +23 -5
- package/dist/keyboard-handlers.js +88 -31
- package/dist/keyboard.d.ts +55 -0
- package/dist/keyboard.js +132 -0
- package/dist/menus.d.ts +3 -1
- package/dist/menus.js +7 -2
- package/dist/merges.d.ts +97 -0
- package/dist/merges.js +147 -0
- package/dist/row-model.d.ts +133 -0
- package/dist/row-model.js +16 -0
- package/dist/row-resize.d.ts +3 -0
- package/dist/row-resize.js +14 -0
- package/dist/scroll-sync.d.ts +1 -0
- package/dist/scroll-sync.js +24 -0
- package/dist/selection.d.ts +18 -1
- package/dist/selection.js +138 -18
- package/dist/server-block-cache.d.ts +214 -0
- package/dist/server-block-cache.js +531 -0
- package/dist/server-data-source.d.ts +240 -6
- package/dist/server-data-source.js +220 -20
- package/dist/server.d.ts +13 -0
- package/dist/server.js +13 -0
- package/dist/shortcut-registry.d.ts +145 -0
- package/dist/shortcut-registry.js +44 -0
- package/dist/svgrid-wrapper.types.d.ts +213 -22
- package/dist/validate.d.ts +4 -0
- package/dist/validate.js +21 -3
- package/dist/virtualization/virtualizer.js +38 -17
- package/package.json +11 -1
- package/src/GridMenus.svelte +44 -2
- package/src/SvChartMenu.svelte +69 -0
- package/src/SvChartPanes.svelte +113 -0
- package/src/SvChartPanes.test.ts +66 -0
- package/src/SvGrid.controller.svelte.ts +819 -179
- package/src/SvGrid.css +178 -2
- package/src/SvGrid.svelte +717 -720
- package/src/SvGrid.types.ts +564 -11
- package/src/SvGridCellEditor.svelte +17 -0
- package/src/SvGridChart.svelte +2257 -329
- package/src/SvGridChart.test.ts +1419 -1
- package/src/SvGridChart.types.ts +336 -0
- package/src/SvGridChartBuilder.svelte +323 -0
- package/src/SvGridChartPanel.svelte +221 -275
- package/src/SvGridChartPickers.svelte +417 -0
- package/src/SvGridChartView.svelte +13 -14
- package/src/SvModal.svelte +7 -1
- package/src/SvModal.test.ts +9 -0
- package/src/ai.test.ts +57 -2
- package/src/ai.ts +166 -22
- package/src/aria.d.ts +11 -0
- package/src/build-api.coverage.test.ts +184 -0
- package/src/build-api.ts +118 -22
- package/src/chart-axes.test.ts +573 -0
- package/src/chart-axes.ts +342 -0
- package/src/chart-cartesian.ts +1863 -0
- package/src/chart-decimate.test.ts +249 -0
- package/src/chart-decimate.ts +186 -0
- package/src/chart-export-pdf.test.ts +91 -0
- package/src/chart-export-pdf.ts +207 -0
- package/src/chart-export.test.ts +14 -0
- package/src/chart-export.ts +13 -3
- package/src/chart-financial.ts +208 -0
- package/src/chart-flow.ts +286 -0
- package/src/chart-format.ts +67 -0
- package/src/chart-grid.ts +179 -0
- package/src/chart-hierarchy.ts +135 -0
- package/src/chart-indicators.test.ts +443 -0
- package/src/chart-indicators.ts +384 -0
- package/src/chart-messages.test.ts +21 -0
- package/src/chart-messages.ts +184 -0
- package/src/chart-motion.test.ts +71 -0
- package/src/chart-motion.ts +148 -0
- package/src/chart-panel-messages.test.ts +29 -0
- package/src/chart-panel-messages.ts +550 -0
- package/src/chart-pivot.test.ts +54 -0
- package/src/chart-pivot.ts +225 -0
- package/src/chart-polar.ts +674 -0
- package/src/chart-samples.ts +106 -0
- package/src/chart-scale.ts +394 -0
- package/src/chart-series-types.test.ts +714 -0
- package/src/chart-stats.ts +409 -0
- package/src/chart-stream.test.ts +75 -0
- package/src/chart-stream.ts +114 -0
- package/src/chart-summary.test.ts +90 -0
- package/src/chart-summary.ts +197 -0
- package/src/chart-sync.svelte.ts +41 -0
- package/src/chart-table.test.ts +76 -0
- package/src/chart-table.ts +178 -0
- package/src/chart-trend.ts +47 -0
- package/src/chart-types.ts +1309 -0
- package/src/chart-validate.test.ts +100 -0
- package/src/chart-validate.ts +247 -0
- package/src/chart-zoom.test.ts +137 -0
- package/src/chart-zoom.ts +124 -0
- package/src/chart.coverage.test.ts +81 -0
- package/src/chart.test.ts +56 -3
- package/src/chart.ts +557 -2784
- package/src/clipboard.test.ts +151 -0
- package/src/clipboard.ts +145 -16
- package/src/column-resize.ts +7 -1
- package/src/columns.ts +2 -0
- package/src/command-context.test.ts +200 -0
- package/src/command-context.ts +137 -0
- package/src/core.rowmodel-cache.test.ts +51 -0
- package/src/core.ts +40 -12
- package/src/editing.test.ts +281 -3
- package/src/editing.ts +264 -38
- package/src/fill-patterns.test.ts +35 -0
- package/src/fill-patterns.ts +56 -2
- package/src/gantt-stub.test.svelte +38 -0
- package/src/gantt-view.svelte.ts +35 -0
- package/src/grid-icons.ts +2 -2
- package/src/grid-messages.ts +28 -3
- package/src/history.test.ts +196 -0
- package/src/history.ts +162 -0
- package/src/icon-seam.test.ts +5 -6
- package/src/index.ts +186 -12
- package/src/keyboard-handlers.coverage.test.ts +126 -6
- package/src/keyboard-handlers.ts +91 -30
- package/src/keyboard-shortcuts.seam.test.ts +200 -0
- package/src/keyboard.test.ts +124 -1
- package/src/keyboard.ts +142 -0
- package/src/menus.test.ts +26 -0
- package/src/menus.ts +10 -3
- package/src/merges.test.ts +112 -0
- package/src/merges.ts +168 -0
- package/src/pivot.grid.test.ts +40 -5
- package/src/row-model.ts +146 -0
- package/src/row-resize.test.ts +44 -0
- package/src/row-resize.ts +17 -0
- package/src/scroll-sync.test.ts +42 -1
- package/src/scroll-sync.ts +25 -0
- package/src/selection.multi-range.test.ts +34 -0
- package/src/selection.test.ts +33 -2
- package/src/selection.ts +143 -21
- package/src/server-block-cache.test.ts +645 -0
- package/src/server-block-cache.ts +677 -0
- package/src/server-data-source.infinite.test.ts +343 -0
- package/src/server-data-source.ts +450 -27
- package/src/server.ts +47 -0
- package/src/shortcut-registry.test.ts +97 -0
- package/src/shortcut-registry.ts +181 -0
- package/src/svgrid-wrapper.types.ts +184 -13
- package/src/svgrid.behavior.test.ts +135 -0
- package/src/svgrid.charting.test.ts +513 -3
- package/src/svgrid.context-menu.test.ts +31 -0
- package/src/svgrid.gantt-seam.test.ts +199 -0
- package/src/svgrid.new-features.wrapper.test.ts +10 -3
- package/src/svgrid.row-model-prop.svelte.test.ts +352 -0
- package/src/svgrid.row-model-seam.svelte.test.ts +289 -0
- package/src/svgrid.upsell-license.test.ts +7 -4
- package/src/validate.test.ts +29 -0
- package/src/validate.ts +28 -3
- package/src/virtualization/virtualizer.ts +39 -17
- package/dist/SvGroupCell.svelte +0 -141
- package/dist/SvGroupCell.svelte.d.ts +0 -49
- package/dist/SvRowGroupPanel.svelte +0 -186
- package/dist/SvRowGroupPanel.svelte.d.ts +0 -25
- package/dist/cdn/GridMenus-CHOMnW-c.js +0 -602
- package/dist/cdn/GridMenus-DhdPF700.js +0 -603
- package/dist/cdn/SvDateTimePicker-CCbDZNZB.js +0 -816
- package/dist/cdn/SvGridChart-1PMSp2LZ.js +0 -1481
- package/dist/cdn/SvGridChart-D02avhyr.js +0 -1480
- package/dist/cdn/SvGridChartPanel-DJnViOv4.js +0 -834
- package/dist/cdn/SvGridChartPanel-vPTNerFZ.js +0 -810
- package/dist/cdn/SvGridChartView-C--HhdUo.js +0 -56
- package/dist/cdn/SvGridChartView-KyyFG-wY.js +0 -55
- package/dist/cdn/chart-DLg3_zTQ.js +0 -1652
- package/dist/cdn/validate-_CDJzgIo.js +0 -75
- package/dist/server-group-model.d.ts +0 -98
- package/dist/server-group-model.js +0 -263
- package/src/SvGroupCell.svelte +0 -141
- package/src/SvRowGroupPanel.svelte +0 -186
- package/src/server-group-model.test.ts +0 -294
- package/src/server-group-model.ts +0 -370
package/src/build-api.ts
CHANGED
|
@@ -26,6 +26,44 @@ import {
|
|
|
26
26
|
columnDefMatchesId,
|
|
27
27
|
} from "./cell-values";
|
|
28
28
|
import { hasAdvancedFilterEngine } from "./advanced-filter.svelte";
|
|
29
|
+
import { undoHistory, redoHistory } from "./history";
|
|
30
|
+
import { buildCommandContext } from "./command-context";
|
|
31
|
+
|
|
32
|
+
type OrientedRange = {
|
|
33
|
+
from: { row: number; col: number }
|
|
34
|
+
to: { row: number; col: number }
|
|
35
|
+
highlight: { row: number; col: number }
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* The selection as the user made it: committed ranges first, the active one
|
|
40
|
+
* last, each keeping its anchor as `from` and its focus as `to`. The active
|
|
41
|
+
* cell is the highlight of the range it sits in and of no other, which is
|
|
42
|
+
* how Handsontable reports it and what a range-aware paste needs to know.
|
|
43
|
+
*/
|
|
44
|
+
function selectedRanges(ctx: any): OrientedRange[] {
|
|
45
|
+
type Point = { rowIndex: number; colIndex: number } | null
|
|
46
|
+
type Range = { anchor: Point; focus: Point }
|
|
47
|
+
const committed: Range[] = ctx.selectionRanges ?? []
|
|
48
|
+
const active: Range = ctx.selectionRange ?? { anchor: null, focus: null }
|
|
49
|
+
const cursor = ctx.grid.getState().activeCell as Point
|
|
50
|
+
const toRange = (r: Range): OrientedRange | null => {
|
|
51
|
+
if (!r.anchor || !r.focus) return null
|
|
52
|
+
const from = { row: r.anchor.rowIndex, col: r.anchor.colIndex }
|
|
53
|
+
const to = { row: r.focus.rowIndex, col: r.focus.colIndex }
|
|
54
|
+
const inside =
|
|
55
|
+
cursor &&
|
|
56
|
+
cursor.rowIndex >= Math.min(from.row, to.row) && cursor.rowIndex <= Math.max(from.row, to.row) &&
|
|
57
|
+
cursor.colIndex >= Math.min(from.col, to.col) && cursor.colIndex <= Math.max(from.col, to.col)
|
|
58
|
+
const highlight = inside ? { row: cursor!.rowIndex, col: cursor!.colIndex } : from
|
|
59
|
+
return { from, to, highlight }
|
|
60
|
+
}
|
|
61
|
+
const out: OrientedRange[] = []
|
|
62
|
+
for (const r of committed) { const o = toRange(r); if (o) out.push(o) }
|
|
63
|
+
const last = toRange(active)
|
|
64
|
+
if (last) out.push(last)
|
|
65
|
+
return out
|
|
66
|
+
}
|
|
29
67
|
|
|
30
68
|
export function createGridApi<
|
|
31
69
|
TFeatures extends TableFeatures = TableFeatures,
|
|
@@ -129,12 +167,28 @@ export function createGridApi<
|
|
|
129
167
|
ctx.setActiveCell(active.anchor.rowIndex, active.anchor.colIndex);
|
|
130
168
|
},
|
|
131
169
|
getSelected() {
|
|
170
|
+
// Rectangles only. With cell selection off none is ever recorded and
|
|
171
|
+
// this stays [], which is how `selectable={false}` is observable from
|
|
172
|
+
// the API; the focused cell is `getActiveCell()`, not a selection.
|
|
132
173
|
return ctx
|
|
133
174
|
.getSelectionRects()
|
|
134
175
|
.map((r: { minRow: number; minCol: number; maxRow: number; maxCol: number }) =>
|
|
135
176
|
[r.minRow, r.minCol, r.maxRow, r.maxCol] as [number, number, number, number],
|
|
136
177
|
);
|
|
137
178
|
},
|
|
179
|
+
getSelectedLast() {
|
|
180
|
+
const all = selectedRanges(ctx);
|
|
181
|
+
const last = all[all.length - 1];
|
|
182
|
+
return last ? [last.from.row, last.from.col, last.to.row, last.to.col] : undefined;
|
|
183
|
+
},
|
|
184
|
+
getSelectedRange() {
|
|
185
|
+
const all = selectedRanges(ctx);
|
|
186
|
+
return all.length ? all : undefined;
|
|
187
|
+
},
|
|
188
|
+
getSelectedRangeLast() {
|
|
189
|
+
const all = selectedRanges(ctx);
|
|
190
|
+
return all[all.length - 1];
|
|
191
|
+
},
|
|
138
192
|
openChart() {
|
|
139
193
|
ctx.chartPanelOpen = true;
|
|
140
194
|
},
|
|
@@ -151,6 +205,21 @@ export function createGridApi<
|
|
|
151
205
|
configureChart(config) {
|
|
152
206
|
if (ctx.chartingEnabled) ctx.applyChartConfig(config);
|
|
153
207
|
},
|
|
208
|
+
saveChart(name) {
|
|
209
|
+
if (ctx.chartingEnabled) ctx.saveChart(name);
|
|
210
|
+
},
|
|
211
|
+
applySavedChart(name) {
|
|
212
|
+
return ctx.chartingEnabled ? ctx.applySavedChart(name) : false;
|
|
213
|
+
},
|
|
214
|
+
removeSavedChart(name) {
|
|
215
|
+
if (ctx.chartingEnabled) ctx.removeSavedChart(name);
|
|
216
|
+
},
|
|
217
|
+
getSavedCharts() {
|
|
218
|
+
return ctx.chartingEnabled ? ctx.getSavedCharts() : [];
|
|
219
|
+
},
|
|
220
|
+
setChartExplainHandler(handler) {
|
|
221
|
+
ctx.chartExplainHandler = handler ?? null;
|
|
222
|
+
},
|
|
154
223
|
setChartAiHandler(handler) {
|
|
155
224
|
ctx.chartAiHandler = handler ?? null;
|
|
156
225
|
},
|
|
@@ -351,6 +420,11 @@ export function createGridApi<
|
|
|
351
420
|
clearFilter(columnId) {
|
|
352
421
|
ctx.clearColumnFilter(columnId);
|
|
353
422
|
},
|
|
423
|
+
openContextMenu(event, rowIndex, colIndex) {
|
|
424
|
+
const columnId = ctx.allColumns[colIndex]?.id;
|
|
425
|
+
if (columnId == null) return;
|
|
426
|
+
ctx.openContextMenu(event, rowIndex, colIndex, columnId);
|
|
427
|
+
},
|
|
354
428
|
refreshEditorOptions(columnId) {
|
|
355
429
|
// Async `editorOptions` are cached per column (or per column+row for a
|
|
356
430
|
// per-row source) so opening an editor twice does not refetch. This
|
|
@@ -556,6 +630,30 @@ export function createGridApi<
|
|
|
556
630
|
autosizeColumn(columnId: string) {
|
|
557
631
|
ctx.autosizeColumn(columnId);
|
|
558
632
|
},
|
|
633
|
+
getRowHeight(rowIndex: number) {
|
|
634
|
+
const own = ctx.rowResizeHeightPx(rowIndex);
|
|
635
|
+
if (own != null) return own;
|
|
636
|
+
const declared = ctx.props.rowHeight;
|
|
637
|
+
return typeof declared === "function" ? declared(rowIndex) : (declared ?? 30);
|
|
638
|
+
},
|
|
639
|
+
setRowHeight(rowIndex: number, height: number | null) {
|
|
640
|
+
ctx.setRowResizeHeight(rowIndex, height);
|
|
641
|
+
},
|
|
642
|
+
setColumnCollapsed(columnId: string, collapsed: boolean) {
|
|
643
|
+
ctx.setColumnCollapsed(columnId, collapsed);
|
|
644
|
+
},
|
|
645
|
+
isColumnCollapsed(columnId: string) {
|
|
646
|
+
return !!ctx.collapsedColumns[columnId];
|
|
647
|
+
},
|
|
648
|
+
setRowCollapsed(rowIndex: number, collapsed: boolean) {
|
|
649
|
+
ctx.setRowCollapsed(rowIndex, collapsed);
|
|
650
|
+
},
|
|
651
|
+
getMergedCells() {
|
|
652
|
+
return (ctx.props.mergedCells ?? []).map((m: { rowIndex: number; colIndex: number; rowSpan: number; colSpan: number }) => ({ ...m }));
|
|
653
|
+
},
|
|
654
|
+
isRowCollapsed(rowIndex: number) {
|
|
655
|
+
return ctx.isRowCollapsed(rowIndex);
|
|
656
|
+
},
|
|
559
657
|
autosizeAllColumns() {
|
|
560
658
|
ctx.autosizeAllColumns();
|
|
561
659
|
},
|
|
@@ -598,24 +696,12 @@ export function createGridApi<
|
|
|
598
696
|
ctx.grid.setExpanded(() => ({}));
|
|
599
697
|
},
|
|
600
698
|
// ---- Undo / redo (history + pointer)
|
|
601
|
-
undo() {
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
ctx.historyVersion += 1
|
|
608
|
-
return true
|
|
609
|
-
},
|
|
610
|
-
redo() {
|
|
611
|
-
if (ctx.historyPtr >= ctx.history.length - 1) return false
|
|
612
|
-
const step = ctx.history[ctx.historyPtr + 1]
|
|
613
|
-
if (!step) return false
|
|
614
|
-
ctx.applyHistoryStep(step, 'redo')
|
|
615
|
-
ctx.historyPtr += 1
|
|
616
|
-
ctx.historyVersion += 1
|
|
617
|
-
return true
|
|
618
|
-
},
|
|
699
|
+
undo() { return undoHistory(ctx) },
|
|
700
|
+
redo() { return redoHistory(ctx) },
|
|
701
|
+
// Built fresh per call rather than memoized: it is a handful of getters
|
|
702
|
+
// over `ctx`, and a caller that holds one keeps reading live state
|
|
703
|
+
// anyway, so caching would only add a slot to keep in sync.
|
|
704
|
+
getCommandContext() { return buildCommandContext(ctx, false) },
|
|
619
705
|
canUndo() { void ctx.historyVersion; return ctx.historyPtr >= 0 },
|
|
620
706
|
canRedo() { void ctx.historyVersion; return ctx.historyPtr < ctx.history.length - 1 },
|
|
621
707
|
clearHistory() { ctx.history = []; ctx.historyPtr = -1; ctx.historyVersion += 1 },
|
|
@@ -649,9 +735,10 @@ export function createGridApi<
|
|
|
649
735
|
});
|
|
650
736
|
},
|
|
651
737
|
selectAllRows() {
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
738
|
+
// One implementation of "select everything", shared with the header
|
|
739
|
+
// checkbox, so it knows about an external selection model and about
|
|
740
|
+
// rows whose data has not arrived.
|
|
741
|
+
ctx.setSelectAllRows(true);
|
|
655
742
|
},
|
|
656
743
|
toggleRowSelected(id) {
|
|
657
744
|
ctx.toggleRowSelectionById(id);
|
|
@@ -659,7 +746,13 @@ export function createGridApi<
|
|
|
659
746
|
// ---- Pagination
|
|
660
747
|
getPageInfo() {
|
|
661
748
|
const { pageIndex, pageSize } = ctx.paginationState;
|
|
662
|
-
|
|
749
|
+
// Under external pagination the grid holds ONE page, so counting the
|
|
750
|
+
// rows in hand would report a 95-row table as a 20-row one. The
|
|
751
|
+
// consumer tells us the real total through rowCount, which is what
|
|
752
|
+
// the footer has always shown.
|
|
753
|
+
const total = ctx.externalPaginationEnabled
|
|
754
|
+
? (ctx.props.rowCount ?? ctx.allRowsBeforePagination.length)
|
|
755
|
+
: ctx.allRowsBeforePagination.length;
|
|
663
756
|
const pageCount = Math.max(1, Math.ceil(total / Math.max(1, pageSize)));
|
|
664
757
|
return { pageIndex, pageSize, pageCount, total };
|
|
665
758
|
},
|
|
@@ -769,6 +862,8 @@ export function createGridApi<
|
|
|
769
862
|
},
|
|
770
863
|
charts: ctx.getChartsState(),
|
|
771
864
|
chartActive: ctx.activeChartIndex,
|
|
865
|
+
// Only when there is one, for the same snapshot-churn reason.
|
|
866
|
+
...(ctx.savedCharts.length ? { savedCharts: ctx.getSavedCharts() } : {}),
|
|
772
867
|
}
|
|
773
868
|
: {}),
|
|
774
869
|
};
|
|
@@ -818,6 +913,7 @@ export function createGridApi<
|
|
|
818
913
|
if ("advancedFilter" in state) {
|
|
819
914
|
ctx.advancedFilter = state.advancedFilter ?? null;
|
|
820
915
|
}
|
|
916
|
+
if (Array.isArray(state.savedCharts) && ctx.chartingEnabled) ctx.applySavedCharts(state.savedCharts);
|
|
821
917
|
if ((state.chart || state.charts) && ctx.chartingEnabled) {
|
|
822
918
|
if (Array.isArray(state.charts) && state.charts.length) {
|
|
823
919
|
ctx.applyChartsState(state.charts, state.chartActive);
|