@toolbox-web/grid 0.3.3 → 0.4.1
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/all.d.ts +19 -19
- package/all.d.ts.map +1 -1
- package/all.js +1798 -1201
- package/all.js.map +1 -1
- package/index.js +2215 -2026
- package/index.js.map +1 -1
- package/lib/core/grid.d.ts +22 -12
- package/lib/core/grid.d.ts.map +1 -1
- package/lib/core/internal/columns.d.ts +0 -9
- package/lib/core/internal/columns.d.ts.map +1 -1
- package/lib/core/internal/config-manager.d.ts +236 -0
- package/lib/core/internal/config-manager.d.ts.map +1 -0
- package/lib/core/internal/editing.d.ts +3 -3
- package/lib/core/internal/editing.d.ts.map +1 -1
- package/lib/core/internal/event-delegation.d.ts.map +1 -1
- package/lib/core/internal/header.d.ts.map +1 -1
- package/lib/core/internal/keyboard.d.ts.map +1 -1
- package/lib/core/internal/render-scheduler.d.ts +123 -0
- package/lib/core/internal/render-scheduler.d.ts.map +1 -0
- package/lib/core/internal/rows.d.ts +8 -3
- package/lib/core/internal/rows.d.ts.map +1 -1
- package/lib/core/internal/sanitize.d.ts +2 -2
- package/lib/core/internal/sanitize.d.ts.map +1 -1
- package/lib/core/internal/shell.d.ts +40 -2
- package/lib/core/internal/shell.d.ts.map +1 -1
- package/lib/core/internal/validate-config.d.ts +25 -0
- package/lib/core/internal/validate-config.d.ts.map +1 -0
- package/lib/core/plugin/base-plugin.d.ts +118 -0
- package/lib/core/plugin/base-plugin.d.ts.map +1 -1
- package/lib/core/plugin/index.d.ts +1 -0
- package/lib/core/plugin/index.d.ts.map +1 -1
- package/lib/core/plugin/plugin-manager.d.ts +13 -2
- package/lib/core/plugin/plugin-manager.d.ts.map +1 -1
- package/lib/core/plugin/types.d.ts +17 -3
- package/lib/core/plugin/types.d.ts.map +1 -1
- package/lib/core/types.d.ts +112 -12
- package/lib/core/types.d.ts.map +1 -1
- package/lib/plugins/clipboard/ClipboardPlugin.d.ts +7 -1
- package/lib/plugins/clipboard/ClipboardPlugin.d.ts.map +1 -1
- package/lib/plugins/clipboard/index.js +78 -22
- package/lib/plugins/clipboard/index.js.map +1 -1
- package/lib/plugins/column-virtualization/index.js +72 -21
- package/lib/plugins/column-virtualization/index.js.map +1 -1
- package/lib/plugins/context-menu/index.js +53 -2
- package/lib/plugins/context-menu/index.js.map +1 -1
- package/lib/plugins/editing/EditingPlugin.d.ts +117 -0
- package/lib/plugins/editing/EditingPlugin.d.ts.map +1 -0
- package/lib/{core/internal → plugins/editing}/editors.d.ts +1 -1
- package/lib/plugins/editing/editors.d.ts.map +1 -0
- package/lib/plugins/editing/index.d.ts +8 -0
- package/lib/plugins/editing/index.d.ts.map +1 -0
- package/lib/plugins/editing/index.js +721 -0
- package/lib/plugins/editing/index.js.map +1 -0
- package/lib/plugins/editing/types.d.ts +45 -0
- package/lib/plugins/editing/types.d.ts.map +1 -0
- package/lib/plugins/export/ExportPlugin.d.ts.map +1 -1
- package/lib/plugins/export/index.js +68 -17
- package/lib/plugins/export/index.js.map +1 -1
- package/lib/plugins/filtering/FilteringPlugin.d.ts.map +1 -1
- package/lib/plugins/filtering/index.js +103 -50
- package/lib/plugins/filtering/index.js.map +1 -1
- package/lib/plugins/grouping-columns/grouping-columns.d.ts +4 -4
- package/lib/plugins/grouping-columns/grouping-columns.d.ts.map +1 -1
- package/lib/plugins/grouping-columns/index.js +80 -29
- package/lib/plugins/grouping-columns/index.js.map +1 -1
- package/lib/plugins/grouping-rows/GroupingRowsPlugin.d.ts.map +1 -1
- package/lib/plugins/grouping-rows/grouping-rows.d.ts.map +1 -1
- package/lib/plugins/grouping-rows/index.js +62 -11
- package/lib/plugins/grouping-rows/index.js.map +1 -1
- package/lib/plugins/master-detail/MasterDetailPlugin.d.ts +2 -2
- package/lib/plugins/master-detail/MasterDetailPlugin.d.ts.map +1 -1
- package/lib/plugins/master-detail/index.js +156 -102
- package/lib/plugins/master-detail/index.js.map +1 -1
- package/lib/plugins/master-detail/types.d.ts +12 -2
- package/lib/plugins/master-detail/types.d.ts.map +1 -1
- package/lib/plugins/multi-sort/MultiSortPlugin.d.ts.map +1 -1
- package/lib/plugins/multi-sort/index.js +75 -22
- package/lib/plugins/multi-sort/index.js.map +1 -1
- package/lib/plugins/pinned-columns/index.js +57 -6
- package/lib/plugins/pinned-columns/index.js.map +1 -1
- package/lib/plugins/pinned-rows/PinnedRowsPlugin.d.ts.map +1 -1
- package/lib/plugins/pinned-rows/index.js +61 -9
- package/lib/plugins/pinned-rows/index.js.map +1 -1
- package/lib/plugins/pivot/index.js +58 -7
- package/lib/plugins/pivot/index.js.map +1 -1
- package/lib/plugins/reorder/ReorderPlugin.d.ts.map +1 -1
- package/lib/plugins/reorder/index.js +75 -19
- package/lib/plugins/reorder/index.js.map +1 -1
- package/lib/plugins/selection/index.js +57 -6
- package/lib/plugins/selection/index.js.map +1 -1
- package/lib/plugins/server-side/index.js +60 -9
- package/lib/plugins/server-side/index.js.map +1 -1
- package/lib/plugins/tree/TreePlugin.d.ts +3 -3
- package/lib/plugins/tree/TreePlugin.d.ts.map +1 -1
- package/lib/plugins/tree/index.js +181 -126
- package/lib/plugins/tree/index.js.map +1 -1
- package/lib/plugins/tree/tree-data.d.ts +6 -6
- package/lib/plugins/tree/tree-data.d.ts.map +1 -1
- package/lib/plugins/tree/tree-detect.d.ts +5 -9
- package/lib/plugins/tree/tree-detect.d.ts.map +1 -1
- package/lib/plugins/tree/types.d.ts +16 -4
- package/lib/plugins/tree/types.d.ts.map +1 -1
- package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts +7 -1
- package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts.map +1 -1
- package/lib/plugins/undo-redo/index.js +65 -6
- package/lib/plugins/undo-redo/index.js.map +1 -1
- package/lib/plugins/visibility/VisibilityPlugin.d.ts +7 -1
- package/lib/plugins/visibility/VisibilityPlugin.d.ts.map +1 -1
- package/lib/plugins/visibility/index.js +61 -2
- package/lib/plugins/visibility/index.js.map +1 -1
- package/package.json +1 -1
- package/public.d.ts +104 -13
- package/public.d.ts.map +1 -1
- package/umd/grid.all.umd.js +37 -19
- package/umd/grid.all.umd.js.map +1 -1
- package/umd/grid.umd.js +25 -7
- package/umd/grid.umd.js.map +1 -1
- package/umd/plugins/clipboard.umd.js +2 -2
- package/umd/plugins/clipboard.umd.js.map +1 -1
- package/umd/plugins/editing.umd.js +2 -0
- package/umd/plugins/editing.umd.js.map +1 -0
- package/umd/plugins/export.umd.js +2 -2
- package/umd/plugins/export.umd.js.map +1 -1
- package/umd/plugins/filtering.umd.js +1 -1
- package/umd/plugins/filtering.umd.js.map +1 -1
- package/umd/plugins/grouping-columns.umd.js +1 -1
- package/umd/plugins/grouping-columns.umd.js.map +1 -1
- package/umd/plugins/grouping-rows.umd.js +1 -1
- package/umd/plugins/grouping-rows.umd.js.map +1 -1
- package/umd/plugins/master-detail.umd.js +1 -1
- package/umd/plugins/master-detail.umd.js.map +1 -1
- package/umd/plugins/multi-sort.umd.js +1 -1
- package/umd/plugins/multi-sort.umd.js.map +1 -1
- package/umd/plugins/pinned-rows.umd.js +1 -1
- package/umd/plugins/pinned-rows.umd.js.map +1 -1
- package/umd/plugins/reorder.umd.js +1 -1
- package/umd/plugins/reorder.umd.js.map +1 -1
- package/umd/plugins/tree.umd.js +1 -1
- package/umd/plugins/tree.umd.js.map +1 -1
- package/umd/plugins/undo-redo.umd.js +1 -1
- package/umd/plugins/undo-redo.umd.js.map +1 -1
- package/umd/plugins/visibility.umd.js +1 -1
- package/umd/plugins/visibility.umd.js.map +1 -1
- package/lib/core/internal/column-state.d.ts +0 -124
- package/lib/core/internal/column-state.d.ts.map +0 -1
- package/lib/core/internal/editors.d.ts.map +0 -1
- package/lib/core/internal/grid-internals.d.ts +0 -83
- package/lib/core/internal/grid-internals.d.ts.map +0 -1
|
@@ -9,6 +9,22 @@ const E = {
|
|
|
9
9
|
toolPanel: "☰"
|
|
10
10
|
};
|
|
11
11
|
class P {
|
|
12
|
+
/**
|
|
13
|
+
* Plugin dependencies - declare other plugins this one requires.
|
|
14
|
+
*
|
|
15
|
+
* Dependencies are validated when the plugin is attached.
|
|
16
|
+
* Required dependencies throw an error if missing.
|
|
17
|
+
* Optional dependencies log an info message if missing.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* static readonly dependencies: PluginDependency[] = [
|
|
22
|
+
* { name: 'editing', required: true, reason: 'Tracks cell edits for undo/redo' },
|
|
23
|
+
* { name: 'selection', required: false, reason: 'Enables selection-based undo' },
|
|
24
|
+
* ];
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
static dependencies;
|
|
12
28
|
/** Plugin version - override in subclass if needed */
|
|
13
29
|
version = "1.0.0";
|
|
14
30
|
/** CSS styles to inject into the grid's shadow DOM */
|
|
@@ -25,6 +41,12 @@ class P {
|
|
|
25
41
|
config;
|
|
26
42
|
/** User-provided configuration from constructor */
|
|
27
43
|
userConfig;
|
|
44
|
+
/**
|
|
45
|
+
* Plugin-level AbortController for event listener cleanup.
|
|
46
|
+
* Created fresh in attach(), aborted in detach().
|
|
47
|
+
* This ensures event listeners are properly cleaned up when plugins are re-attached.
|
|
48
|
+
*/
|
|
49
|
+
#e;
|
|
28
50
|
/**
|
|
29
51
|
* Default configuration - subclasses should override this getter.
|
|
30
52
|
* Note: This must be a getter (not property initializer) for proper inheritance
|
|
@@ -39,19 +61,48 @@ class P {
|
|
|
39
61
|
/**
|
|
40
62
|
* Called when the plugin is attached to a grid.
|
|
41
63
|
* Override to set up event listeners, initialize state, etc.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* attach(grid: GridElement): void {
|
|
68
|
+
* super.attach(grid);
|
|
69
|
+
* // Set up document-level listeners with auto-cleanup
|
|
70
|
+
* document.addEventListener('keydown', this.handleEscape, {
|
|
71
|
+
* signal: this.disconnectSignal
|
|
72
|
+
* });
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
42
75
|
*/
|
|
43
76
|
attach(e) {
|
|
44
|
-
this.grid = e, this.config = { ...this.defaultConfig, ...this.userConfig };
|
|
77
|
+
this.#e?.abort(), this.#e = new AbortController(), this.grid = e, this.config = { ...this.defaultConfig, ...this.userConfig };
|
|
45
78
|
}
|
|
46
79
|
/**
|
|
47
80
|
* Called when the plugin is detached from a grid.
|
|
48
81
|
* Override to clean up event listeners, timers, etc.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* detach(): void {
|
|
86
|
+
* // Clean up any state not handled by disconnectSignal
|
|
87
|
+
* this.selectedRows.clear();
|
|
88
|
+
* this.cache = null;
|
|
89
|
+
* }
|
|
90
|
+
* ```
|
|
49
91
|
*/
|
|
50
92
|
detach() {
|
|
93
|
+
this.#e?.abort(), this.#e = void 0;
|
|
51
94
|
}
|
|
52
95
|
/**
|
|
53
96
|
* Get another plugin instance from the same grid.
|
|
54
97
|
* Use for inter-plugin communication.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```ts
|
|
101
|
+
* const selection = this.getPlugin(SelectionPlugin);
|
|
102
|
+
* if (selection) {
|
|
103
|
+
* const selectedRows = selection.getSelectedRows();
|
|
104
|
+
* }
|
|
105
|
+
* ```
|
|
55
106
|
*/
|
|
56
107
|
getPlugin(e) {
|
|
57
108
|
return this.grid?.getPlugin(e);
|
|
@@ -125,7 +176,7 @@ class P {
|
|
|
125
176
|
* document.addEventListener('keydown', handler, { signal: this.disconnectSignal });
|
|
126
177
|
*/
|
|
127
178
|
get disconnectSignal() {
|
|
128
|
-
return this.grid?.disconnectSignal;
|
|
179
|
+
return this.#e?.signal ?? this.grid?.disconnectSignal;
|
|
129
180
|
}
|
|
130
181
|
/**
|
|
131
182
|
* Get the grid-level icons configuration.
|
|
@@ -214,7 +265,7 @@ const m = {
|
|
|
214
265
|
list() {
|
|
215
266
|
return [...Object.keys(m), ...v.keys()];
|
|
216
267
|
}
|
|
217
|
-
},
|
|
268
|
+
}, R = {
|
|
218
269
|
sum: (i) => i.reduce((e, t) => e + t, 0),
|
|
219
270
|
avg: (i) => i.length ? i.reduce((e, t) => e + t, 0) / i.length : 0,
|
|
220
271
|
count: (i) => i.length,
|
|
@@ -224,7 +275,7 @@ const m = {
|
|
|
224
275
|
last: (i) => i[i.length - 1] ?? 0
|
|
225
276
|
};
|
|
226
277
|
function N(i) {
|
|
227
|
-
return
|
|
278
|
+
return R[i] ?? R.sum;
|
|
228
279
|
}
|
|
229
280
|
h.register.bind(h);
|
|
230
281
|
h.unregister.bind(h);
|
|
@@ -292,8 +343,8 @@ function L(i, e, t, o, n, r, s) {
|
|
|
292
343
|
const l = e[0], d = e.slice(1), c = d.length > 0, p = M(i, l);
|
|
293
344
|
for (const [u, g] of p) {
|
|
294
345
|
const y = s ? `${s}|${u}` : u, F = T(g, t, o, n), k = _(F);
|
|
295
|
-
let
|
|
296
|
-
c && (
|
|
346
|
+
let A;
|
|
347
|
+
c && (A = L(
|
|
297
348
|
g,
|
|
298
349
|
d,
|
|
299
350
|
t,
|
|
@@ -308,7 +359,7 @@ function L(i, e, t, o, n, r, s) {
|
|
|
308
359
|
values: F,
|
|
309
360
|
total: k,
|
|
310
361
|
isGroup: c,
|
|
311
|
-
children:
|
|
362
|
+
children: A,
|
|
312
363
|
rowCount: g.length
|
|
313
364
|
});
|
|
314
365
|
}
|