@toolbox-web/grid 1.6.2 → 1.8.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/README.md +51 -15
- package/all.js +267 -158
- package/all.js.map +1 -1
- package/index.js +866 -722
- package/index.js.map +1 -1
- package/lib/core/grid.d.ts +68 -1
- package/lib/core/grid.d.ts.map +1 -1
- package/lib/core/internal/header.d.ts.map +1 -1
- package/lib/core/plugin/base-plugin.d.ts +182 -1
- package/lib/core/plugin/base-plugin.d.ts.map +1 -1
- package/lib/core/plugin/index.d.ts +1 -1
- package/lib/core/plugin/index.d.ts.map +1 -1
- package/lib/core/plugin/plugin-manager.d.ts +56 -1
- package/lib/core/plugin/plugin-manager.d.ts.map +1 -1
- package/lib/core/plugin/types.d.ts +36 -0
- package/lib/core/plugin/types.d.ts.map +1 -1
- package/lib/core/types.d.ts +1349 -31
- package/lib/core/types.d.ts.map +1 -1
- package/lib/plugins/clipboard/ClipboardPlugin.d.ts.map +1 -1
- package/lib/plugins/clipboard/index.js +140 -87
- package/lib/plugins/clipboard/index.js.map +1 -1
- package/lib/plugins/column-virtualization/index.js +64 -7
- package/lib/plugins/column-virtualization/index.js.map +1 -1
- package/lib/plugins/context-menu/ContextMenuPlugin.d.ts.map +1 -1
- package/lib/plugins/context-menu/index.js +123 -65
- package/lib/plugins/context-menu/index.js.map +1 -1
- package/lib/plugins/editing/EditingPlugin.d.ts +6 -1
- package/lib/plugins/editing/EditingPlugin.d.ts.map +1 -1
- package/lib/plugins/editing/index.js +95 -13
- package/lib/plugins/editing/index.js.map +1 -1
- package/lib/plugins/export/index.js +91 -34
- package/lib/plugins/export/index.js.map +1 -1
- package/lib/plugins/filtering/FilteringPlugin.d.ts +6 -1
- package/lib/plugins/filtering/FilteringPlugin.d.ts.map +1 -1
- package/lib/plugins/filtering/index.js +192 -123
- package/lib/plugins/filtering/index.js.map +1 -1
- package/lib/plugins/grouping-columns/index.js +57 -0
- package/lib/plugins/grouping-columns/index.js.map +1 -1
- package/lib/plugins/grouping-rows/GroupingRowsPlugin.d.ts +7 -2
- package/lib/plugins/grouping-rows/GroupingRowsPlugin.d.ts.map +1 -1
- package/lib/plugins/grouping-rows/index.js +142 -60
- package/lib/plugins/grouping-rows/index.js.map +1 -1
- package/lib/plugins/master-detail/index.js +69 -12
- package/lib/plugins/master-detail/index.js.map +1 -1
- package/lib/plugins/multi-sort/index.js +70 -13
- package/lib/plugins/multi-sort/index.js.map +1 -1
- package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts +3 -3
- package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts.map +1 -1
- package/lib/plugins/pinned-columns/index.js +106 -36
- package/lib/plugins/pinned-columns/index.js.map +1 -1
- package/lib/plugins/pinned-rows/index.js +57 -0
- package/lib/plugins/pinned-rows/index.js.map +1 -1
- package/lib/plugins/pivot/index.js +57 -0
- package/lib/plugins/pivot/index.js.map +1 -1
- package/lib/plugins/print/PrintPlugin.d.ts.map +1 -1
- package/lib/plugins/print/index.js +58 -1
- package/lib/plugins/print/index.js.map +1 -1
- package/lib/plugins/reorder/ReorderPlugin.d.ts.map +1 -1
- package/lib/plugins/reorder/column-drag.d.ts +2 -2
- package/lib/plugins/reorder/index.js +68 -17
- package/lib/plugins/reorder/index.js.map +1 -1
- package/lib/plugins/responsive/ResponsivePlugin.d.ts +6 -1
- package/lib/plugins/responsive/ResponsivePlugin.d.ts.map +1 -1
- package/lib/plugins/responsive/index.js +125 -54
- package/lib/plugins/responsive/index.js.map +1 -1
- package/lib/plugins/row-reorder/index.js +169 -112
- package/lib/plugins/row-reorder/index.js.map +1 -1
- package/lib/plugins/selection/SelectionPlugin.d.ts +14 -2
- package/lib/plugins/selection/SelectionPlugin.d.ts.map +1 -1
- package/lib/plugins/selection/index.js +84 -7
- package/lib/plugins/selection/index.js.map +1 -1
- package/lib/plugins/server-side/index.js +79 -22
- package/lib/plugins/server-side/index.js.map +1 -1
- package/lib/plugins/tree/TreePlugin.d.ts +7 -1
- package/lib/plugins/tree/TreePlugin.d.ts.map +1 -1
- package/lib/plugins/tree/index.js +140 -58
- package/lib/plugins/tree/index.js.map +1 -1
- package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts +6 -1
- package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts.map +1 -1
- package/lib/plugins/undo-redo/index.js +79 -10
- package/lib/plugins/undo-redo/index.js.map +1 -1
- package/lib/plugins/visibility/index.js +57 -0
- package/lib/plugins/visibility/index.js.map +1 -1
- package/package.json +1 -1
- package/public.d.ts +80 -2
- package/public.d.ts.map +1 -1
- package/umd/grid.all.umd.js +25 -25
- package/umd/grid.all.umd.js.map +1 -1
- package/umd/grid.umd.js +15 -15
- package/umd/grid.umd.js.map +1 -1
- package/umd/plugins/clipboard.umd.js +5 -5
- package/umd/plugins/clipboard.umd.js.map +1 -1
- package/umd/plugins/context-menu.umd.js +1 -1
- package/umd/plugins/context-menu.umd.js.map +1 -1
- package/umd/plugins/editing.umd.js +1 -1
- package/umd/plugins/editing.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-rows.umd.js +2 -2
- package/umd/plugins/grouping-rows.umd.js.map +1 -1
- package/umd/plugins/pinned-columns.umd.js +1 -1
- package/umd/plugins/pinned-columns.umd.js.map +1 -1
- package/umd/plugins/print.umd.js +1 -1
- package/umd/plugins/print.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/responsive.umd.js +1 -1
- package/umd/plugins/responsive.umd.js.map +1 -1
- package/umd/plugins/selection.umd.js +2 -2
- package/umd/plugins/selection.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/all.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { BaseGridPlugin as A, DEFAULT_GRID_ICONS as st, a as at, runAggregator as ee, e as lt, s as dt,
|
|
2
|
-
import { DEFAULT_ANIMATION_CONFIG as Ln, DGEvents as Fn, DataGridElement as In, FitModeEnum as Pn, GridCSSVars as Dn, GridClasses as Mn, GridDataAttrs as Nn, DataGridElement as qn, GridSelectors as Hn, PluginEvents as zn, PluginManager as
|
|
3
|
-
const
|
|
1
|
+
import { BaseGridPlugin as A, DEFAULT_GRID_ICONS as st, a as at, runAggregator as ee, e as lt, s as dt, getAggregator as ve, getValueAggregator as ct, b as D, c as ye, g as ut } from "./index.js";
|
|
2
|
+
import { DEFAULT_ANIMATION_CONFIG as Ln, DGEvents as Fn, DataGridElement as In, FitModeEnum as Pn, GridCSSVars as Dn, GridClasses as Mn, GridDataAttrs as Nn, DataGridElement as qn, GridSelectors as Kn, PLUGIN_QUERIES as Hn, PluginEvents as zn, PluginManager as On, RenderPhase as Gn, builtInSort as Bn, createGrid as Vn, defaultComparator as Wn, queryGrid as $n } from "./index.js";
|
|
3
|
+
const Qe = "__tbw_expander", ht = 32;
|
|
4
4
|
function fe(s) {
|
|
5
|
-
return s.field ===
|
|
5
|
+
return s.field === Qe;
|
|
6
6
|
}
|
|
7
7
|
function q(s) {
|
|
8
8
|
return s.meta?.utility === !0;
|
|
@@ -12,7 +12,7 @@ function gt(s) {
|
|
|
12
12
|
}
|
|
13
13
|
function ft(s) {
|
|
14
14
|
return {
|
|
15
|
-
field:
|
|
15
|
+
field: Qe,
|
|
16
16
|
header: "",
|
|
17
17
|
width: ht,
|
|
18
18
|
resizable: !1,
|
|
@@ -110,34 +110,34 @@ class un extends A {
|
|
|
110
110
|
return (e.ctrlKey || e.metaKey) && e.key === "c" ? (this.#e(e.target), !0) : !1;
|
|
111
111
|
}
|
|
112
112
|
#e(e) {
|
|
113
|
-
const t = this.#n(), i =
|
|
114
|
-
let
|
|
115
|
-
if (
|
|
116
|
-
const { mode:
|
|
117
|
-
|
|
118
|
-
startRow:
|
|
113
|
+
const t = this.#n(), i = this.columns.length - 1, n = this.rows.length - 1;
|
|
114
|
+
let r;
|
|
115
|
+
if (t && t.ranges.length > 0) {
|
|
116
|
+
const { mode: a, ranges: l } = t, d = l[l.length - 1];
|
|
117
|
+
a === "row" ? r = {
|
|
118
|
+
startRow: d.from.row,
|
|
119
119
|
startCol: 0,
|
|
120
|
-
endRow:
|
|
121
|
-
endCol:
|
|
122
|
-
} :
|
|
123
|
-
startRow:
|
|
124
|
-
startCol:
|
|
125
|
-
endRow:
|
|
126
|
-
endCol:
|
|
120
|
+
endRow: d.to.row,
|
|
121
|
+
endCol: i
|
|
122
|
+
} : r = {
|
|
123
|
+
startRow: d.from.row,
|
|
124
|
+
startCol: d.from.col,
|
|
125
|
+
endRow: d.to.row,
|
|
126
|
+
endCol: d.to.col
|
|
127
127
|
};
|
|
128
128
|
} else if (!t)
|
|
129
|
-
|
|
129
|
+
r = { startRow: 0, startCol: 0, endRow: n, endCol: i };
|
|
130
130
|
else {
|
|
131
|
-
const
|
|
132
|
-
if (!
|
|
133
|
-
|
|
131
|
+
const a = this.#r(e);
|
|
132
|
+
if (!a) return;
|
|
133
|
+
r = { startRow: a.row, startCol: a.col, endRow: a.row, endCol: a.col };
|
|
134
134
|
}
|
|
135
|
-
const
|
|
136
|
-
te(
|
|
137
|
-
this.lastCopied = { text:
|
|
138
|
-
text:
|
|
139
|
-
rowCount:
|
|
140
|
-
columnCount:
|
|
135
|
+
const o = this.#i(r);
|
|
136
|
+
te(o.text).then(() => {
|
|
137
|
+
this.lastCopied = { text: o.text, timestamp: Date.now() }, this.emit("copy", {
|
|
138
|
+
text: o.text,
|
|
139
|
+
rowCount: o.rowCount,
|
|
140
|
+
columnCount: o.columnCount
|
|
141
141
|
});
|
|
142
142
|
});
|
|
143
143
|
}
|
|
@@ -145,13 +145,13 @@ class un extends A {
|
|
|
145
145
|
const t = e.clipboardData?.getData("text/plain");
|
|
146
146
|
if (!t) return;
|
|
147
147
|
e.preventDefault();
|
|
148
|
-
const i = xe(t, this.config),
|
|
149
|
-
for (let
|
|
150
|
-
const
|
|
151
|
-
|
|
148
|
+
const i = xe(t, this.config), n = this.#n(), r = n?.ranges?.[0], o = r?.from.row ?? 0, a = r?.from.col ?? 0, d = r && (n?.mode === "range" || n?.mode === "row") && (r.from.row !== r.to.row || r.from.col !== r.to.col) ? { endRow: r.to.row, endCol: r.to.col } : null, c = d?.endCol ?? this.columns.length - 1, u = this.columns[a], h = u ? { row: o, col: a, field: u.field, bounds: d } : null, g = [], f = i[0]?.length ?? 0;
|
|
149
|
+
for (let w = 0; w < f && a + w <= c; w++) {
|
|
150
|
+
const b = this.columns[a + w];
|
|
151
|
+
b && !b.hidden && g.push(b.field);
|
|
152
152
|
}
|
|
153
|
-
const
|
|
154
|
-
this.emit("paste",
|
|
153
|
+
const p = { rows: i, text: t, target: h, fields: g };
|
|
154
|
+
this.emit("paste", p), this.#o(p);
|
|
155
155
|
}
|
|
156
156
|
#o(e) {
|
|
157
157
|
if (!this.grid) return;
|
|
@@ -160,12 +160,7 @@ class un extends A {
|
|
|
160
160
|
(t ?? mt)(e, this.grid);
|
|
161
161
|
}
|
|
162
162
|
#n() {
|
|
163
|
-
|
|
164
|
-
const e = this.grid?.getPluginByName("selection");
|
|
165
|
-
if (e)
|
|
166
|
-
return e;
|
|
167
|
-
} catch {
|
|
168
|
-
}
|
|
163
|
+
return this.grid?.query("getSelection", void 0)?.[0];
|
|
169
164
|
}
|
|
170
165
|
#i(e) {
|
|
171
166
|
const { startRow: t, startCol: i, endRow: n, endCol: r } = e, o = Math.min(t, n), a = Math.max(t, n), l = Math.min(i, r), d = Math.max(i, r), c = this.config.delimiter ?? " ", u = this.config.newline ?? `
|
|
@@ -200,19 +195,19 @@ class un extends A {
|
|
|
200
195
|
return o === -1 ? null : { row: r, col: o };
|
|
201
196
|
}
|
|
202
197
|
async copy() {
|
|
203
|
-
const
|
|
204
|
-
let
|
|
205
|
-
if (
|
|
206
|
-
const
|
|
207
|
-
|
|
208
|
-
startRow:
|
|
209
|
-
startCol:
|
|
210
|
-
endRow:
|
|
211
|
-
endCol:
|
|
198
|
+
const e = this.#n(), t = this.columns.length - 1;
|
|
199
|
+
let i = { startRow: 0, startCol: 0, endRow: this.rows.length - 1, endCol: t };
|
|
200
|
+
if (e && e.ranges.length > 0) {
|
|
201
|
+
const r = e.ranges[e.ranges.length - 1];
|
|
202
|
+
e.mode === "row" ? i = { startRow: r.from.row, startCol: 0, endRow: r.to.row, endCol: t } : i = {
|
|
203
|
+
startRow: r.from.row,
|
|
204
|
+
startCol: r.from.col,
|
|
205
|
+
endRow: r.to.row,
|
|
206
|
+
endCol: r.to.col
|
|
212
207
|
};
|
|
213
208
|
}
|
|
214
|
-
const
|
|
215
|
-
return await te(
|
|
209
|
+
const n = this.#i(i);
|
|
210
|
+
return await te(n.text), this.lastCopied = { text: n.text, timestamp: Date.now() }, n.text;
|
|
216
211
|
}
|
|
217
212
|
async copyRows(e) {
|
|
218
213
|
if (e.length === 0) return "";
|
|
@@ -354,7 +349,7 @@ class hn extends A {
|
|
|
354
349
|
return this.totalWidth;
|
|
355
350
|
}
|
|
356
351
|
}
|
|
357
|
-
const ie = "@layer tbw-plugins{.tbw-context-menu{position:fixed;background:var(--tbw-context-menu-bg, var(--tbw-color-panel-bg));color:var(--tbw-context-menu-fg, var(--tbw-color-fg));border:1px solid var(--tbw-context-menu-border, var(--tbw-color-border));border-radius:var(--tbw-context-menu-radius, var(--tbw-border-radius));box-shadow:
|
|
352
|
+
const ie = "@layer tbw-plugins{.tbw-context-menu{position:fixed;background:var(--tbw-context-menu-bg, var(--tbw-color-panel-bg));color:var(--tbw-context-menu-fg, var(--tbw-color-fg));border:1px solid var(--tbw-context-menu-border, var(--tbw-color-border));border-radius:var(--tbw-context-menu-radius, var(--tbw-border-radius));box-shadow:var(--tbw-context-menu-shadow, 0 2px 10px var(--tbw-color-shadow));min-width:var(--tbw-context-menu-min-width, var(--tbw-menu-min-width));padding:var(--tbw-spacing-xs) 0;z-index:10000;font-size:var(--tbw-context-menu-font-size, var(--tbw-font-size-sm));font-family:var(--tbw-context-menu-font-family, var(--tbw-font-family))}.tbw-context-menu-item{display:flex;align-items:center;padding:var(--tbw-context-menu-item-padding, var(--tbw-menu-item-padding));cursor:pointer;gap:var(--tbw-context-menu-item-gap, var(--tbw-menu-item-gap))}.tbw-context-menu-item:hover:not(.disabled){background:var(--tbw-context-menu-hover, var(--tbw-color-row-hover))}.tbw-context-menu-item.disabled{opacity:.5;cursor:default}.tbw-context-menu-item.danger{color:var(--tbw-context-menu-danger, var(--tbw-color-danger))}.tbw-context-menu-icon{width:var(--tbw-context-menu-icon-size, var(--tbw-icon-size));text-align:center}.tbw-context-menu-label{flex:1}.tbw-context-menu-shortcut{color:var(--tbw-context-menu-muted, var(--tbw-color-fg-muted));font-size:var(--tbw-context-menu-shortcut-size, var(--tbw-font-size-xs))}.tbw-context-menu-arrow{font-size:var(--tbw-context-menu-arrow-size, var(--tbw-font-size-2xs));color:var(--tbw-context-menu-muted, var(--tbw-color-fg-muted))}.tbw-context-menu-separator{height:1px;background:var(--tbw-context-menu-border, var(--tbw-color-border));margin:var(--tbw-spacing-xs) 0}}";
|
|
358
353
|
function ue(s, e) {
|
|
359
354
|
return (typeof s == "function" ? s(e) : s).filter((i) => !(i.hidden === !0 || typeof i.hidden == "function" && i.hidden(e)));
|
|
360
355
|
}
|
|
@@ -405,7 +400,7 @@ function ke(s, e, t) {
|
|
|
405
400
|
let o = e, a = t;
|
|
406
401
|
e + i.width > n && (o = e - i.width), t + i.height > r && (a = t - i.height), o = Math.max(0, o), a = Math.max(0, a), s.style.left = `${o}px`, s.style.top = `${a}px`, s.style.visibility = "visible";
|
|
407
402
|
}
|
|
408
|
-
let
|
|
403
|
+
let z = null, O = null, M = null, ne = 0;
|
|
409
404
|
const re = [
|
|
410
405
|
{
|
|
411
406
|
id: "copy",
|
|
@@ -424,7 +419,7 @@ const re = [
|
|
|
424
419
|
}
|
|
425
420
|
}
|
|
426
421
|
];
|
|
427
|
-
class
|
|
422
|
+
class Je extends A {
|
|
428
423
|
name = "contextMenu";
|
|
429
424
|
get defaultConfig() {
|
|
430
425
|
return {
|
|
@@ -479,25 +474,26 @@ class Qe extends A {
|
|
|
479
474
|
copyGridStyles(e) {
|
|
480
475
|
const t = this.gridElement;
|
|
481
476
|
if (!t) return;
|
|
482
|
-
const i = getComputedStyle(t), n = [];
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
477
|
+
const i = getComputedStyle(t), n = [], r = i.getPropertyValue("color-scheme").trim();
|
|
478
|
+
r && n.push(`color-scheme: ${r}`);
|
|
479
|
+
for (const o of Je.CSS_VARS_TO_COPY) {
|
|
480
|
+
const a = i.getPropertyValue(o).trim();
|
|
481
|
+
a && n.push(`${o}: ${a}`);
|
|
486
482
|
}
|
|
487
483
|
if (n.length > 0) {
|
|
488
|
-
const
|
|
489
|
-
e.setAttribute("style",
|
|
484
|
+
const o = e.getAttribute("style") || "";
|
|
485
|
+
e.setAttribute("style", o + n.join("; ") + ";");
|
|
490
486
|
}
|
|
491
487
|
}
|
|
492
488
|
installGlobalHandlers() {
|
|
493
|
-
!M && typeof document < "u" && typeof ie == "string" && ie && (M = document.createElement("style"), M.id = "tbw-context-menu-styles", M.textContent = ie, document.head.appendChild(M)),
|
|
489
|
+
!M && typeof document < "u" && typeof ie == "string" && ie && (M = document.createElement("style"), M.id = "tbw-context-menu-styles", M.textContent = ie, document.head.appendChild(M)), z || (z = () => {
|
|
494
490
|
document.querySelectorAll(".tbw-context-menu").forEach((t) => t.remove());
|
|
495
|
-
}, document.addEventListener("click",
|
|
491
|
+
}, document.addEventListener("click", z)), O || (O = (e) => {
|
|
496
492
|
e.key === "Escape" && document.querySelectorAll(".tbw-context-menu").forEach((i) => i.remove());
|
|
497
493
|
}, document.addEventListener("keydown", O));
|
|
498
494
|
}
|
|
499
495
|
uninstallGlobalHandlers() {
|
|
500
|
-
ne--, !(ne > 0) && (
|
|
496
|
+
ne--, !(ne > 0) && (z && (document.removeEventListener("click", z), z = null), O && (document.removeEventListener("keydown", O), O = null), M && (M.remove(), M = null));
|
|
501
497
|
}
|
|
502
498
|
afterRender() {
|
|
503
499
|
const e = this.gridElement;
|
|
@@ -702,6 +698,18 @@ class gn extends A {
|
|
|
702
698
|
level: "column",
|
|
703
699
|
description: 'the "editorParams" column property'
|
|
704
700
|
}
|
|
701
|
+
],
|
|
702
|
+
events: [
|
|
703
|
+
{
|
|
704
|
+
type: "cell-edit-committed",
|
|
705
|
+
description: "Emitted when a cell edit is committed (for plugin-to-plugin coordination)"
|
|
706
|
+
}
|
|
707
|
+
],
|
|
708
|
+
queries: [
|
|
709
|
+
{
|
|
710
|
+
type: "isEditing",
|
|
711
|
+
description: "Returns whether any cell is currently being edited"
|
|
712
|
+
}
|
|
705
713
|
]
|
|
706
714
|
};
|
|
707
715
|
name = "editing";
|
|
@@ -749,6 +757,10 @@ class gn extends A {
|
|
|
749
757
|
detach() {
|
|
750
758
|
this.#e = -1, this.#t = -1, this.#o.clear(), this.#n.clear(), this.#i.clear(), super.detach();
|
|
751
759
|
}
|
|
760
|
+
handleQuery(e) {
|
|
761
|
+
if (e.type === "isEditing")
|
|
762
|
+
return this.#e !== -1;
|
|
763
|
+
}
|
|
752
764
|
onCellClick(e) {
|
|
753
765
|
const t = this.grid, i = this.config.editOn ?? t.effectiveConfig?.editOn;
|
|
754
766
|
if (i === !1 || i === "manual" || i !== "click" && i !== "dblclick") return !1;
|
|
@@ -989,7 +1001,12 @@ class gn extends A {
|
|
|
989
1001
|
firstTimeForRow: d,
|
|
990
1002
|
updateRow: c
|
|
991
1003
|
})) return;
|
|
992
|
-
n[r] = i, l && this.#n.add(l), this.#a()
|
|
1004
|
+
n[r] = i, l && this.#n.add(l), this.#a(), this.emitPluginEvent("cell-edit-committed", {
|
|
1005
|
+
rowIndex: e,
|
|
1006
|
+
field: r,
|
|
1007
|
+
oldValue: o,
|
|
1008
|
+
newValue: i
|
|
1009
|
+
});
|
|
993
1010
|
const h = a.findRenderedRowElement?.(e);
|
|
994
1011
|
h && (h.classList.add("changed"), at(h, "change"));
|
|
995
1012
|
}
|
|
@@ -1291,10 +1308,10 @@ function qt(s) {
|
|
|
1291
1308
|
totalHeight: e * n
|
|
1292
1309
|
};
|
|
1293
1310
|
}
|
|
1294
|
-
function
|
|
1311
|
+
function Kt(s, e) {
|
|
1295
1312
|
return s <= e;
|
|
1296
1313
|
}
|
|
1297
|
-
function
|
|
1314
|
+
function Ht(s, e, t = !1) {
|
|
1298
1315
|
const i = s[e.field];
|
|
1299
1316
|
if (e.operator === "blank")
|
|
1300
1317
|
return i == null || i === "";
|
|
@@ -1333,8 +1350,8 @@ function zt(s, e, t = !1) {
|
|
|
1333
1350
|
return !0;
|
|
1334
1351
|
}
|
|
1335
1352
|
}
|
|
1336
|
-
function
|
|
1337
|
-
return e.length ? s.filter((i) => e.every((n) =>
|
|
1353
|
+
function zt(s, e, t = !1) {
|
|
1354
|
+
return e.length ? s.filter((i) => e.every((n) => Ht(i, n, t))) : s;
|
|
1338
1355
|
}
|
|
1339
1356
|
function Ot(s) {
|
|
1340
1357
|
return JSON.stringify(
|
|
@@ -1356,6 +1373,14 @@ function Le(s, e) {
|
|
|
1356
1373
|
}
|
|
1357
1374
|
const Gt = '@layer tbw-plugins{tbw-grid{.tbw-quick-filter-input{flex:1;max-width:300px;height:var(--tbw-input-height, 1.75rem);padding:var(--tbw-input-padding, 0 .5rem);border:1px solid var(--tbw-color-border);border-radius:var(--tbw-border-radius);background:var(--tbw-color-bg);color:var(--tbw-color-fg);font-size:var(--tbw-font-size-sm, .8125rem);&:focus{outline:none;border-color:var(--tbw-color-accent)}}.header-cell.filtered:before{content:"";position:absolute;top:var(--tbw-spacing-xs, .25rem);right:var(--tbw-spacing-xs, .25rem);width:var(--tbw-indicator-size, .375rem);height:var(--tbw-indicator-size, .375rem);background:var(--tbw-filter-accent, var(--tbw-color-accent, #3b82f6));border-radius:50%}.tbw-filter-btn{display:var(--tbw-filter-btn-display, inline-flex);visibility:var(--tbw-filter-btn-visibility, visible);align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;padding:2px;margin-left:var(--tbw-spacing-xs, .25rem);opacity:.4;transition:opacity .15s,visibility 0s,display 0s allow-discrete;color:inherit;vertical-align:middle;transition-behavior:allow-discrete;&:hover,&.active{opacity:1;visibility:visible;display:inline-flex}&.active{color:var(--tbw-filter-accent, var(--tbw-color-accent, #3b82f6))}}.header-row .cell:hover .tbw-filter-btn,.header-row .cell.filtered .tbw-filter-btn{display:inline-flex;visibility:visible}}}', Bt = "@layer tbw-plugins{.tbw-filter-panel{position:fixed;background:var(--tbw-filter-panel-bg, var(--tbw-color-panel-bg, light-dark(#eeeeee, #222222)));color:var(--tbw-filter-panel-fg, var(--tbw-color-fg, light-dark(#222222, #eeeeee)));border:1px solid var(--tbw-filter-panel-border, var(--tbw-color-border, light-dark(#d0d0d4, #454545)));border-radius:var(--tbw-filter-panel-radius, var(--tbw-border-radius, .25rem));box-shadow:0 4px 16px var(--tbw-filter-panel-shadow, var(--tbw-color-shadow, light-dark(rgba(0, 0, 0, .1), rgba(0, 0, 0, .3))));padding:var(--tbw-panel-padding, var(--tbw-spacing-lg, .75rem));z-index:10000;min-width:200px;max-width:280px;max-height:350px;display:flex;flex-direction:column;font-family:var(--tbw-font-family, system-ui, sans-serif);font-size:var(--tbw-font-size, .8125rem);transform-origin:top center}.tbw-filter-panel.tbw-filter-panel-above{transform-origin:bottom center}.tbw-filter-panel.tbw-filter-panel-animated{animation:tbw-filter-panel-enter var(--tbw-animation-duration, .15s) var(--tbw-animation-easing, ease-out)}.tbw-filter-panel.tbw-filter-panel-above.tbw-filter-panel-animated{animation:tbw-filter-panel-enter-above var(--tbw-animation-duration, .15s) var(--tbw-animation-easing, ease-out)}@keyframes tbw-filter-panel-enter{0%{opacity:0;transform:scaleY(.3) translateY(-10px)}to{opacity:1;transform:scaleY(1) translateY(0)}}@keyframes tbw-filter-panel-enter-above{0%{opacity:0;transform:scaleY(.3) translateY(10px)}to{opacity:1;transform:scaleY(1) translateY(0)}}@supports (anchor-name: --test){.tbw-filter-panel{position-anchor:--tbw-filter-anchor;top:anchor(bottom);left:anchor(left);margin-top:4px;position-try-fallbacks:flip-inline,flip-block,flip-block flip-inline}}.tbw-filter-search{margin-bottom:var(--tbw-panel-gap, var(--tbw-spacing-md, .5rem));min-height:var(--tbw-filter-item-height, 28px)}.tbw-filter-search-input{height:var(--tbw-filter-item-height, 28px);width:100%;padding:var(--tbw-filter-search-padding, var(--tbw-spacing-sm, .375rem) var(--tbw-spacing-md, .5rem));background:var(--tbw-filter-input-bg, var(--tbw-color-bg, transparent));color:inherit;border:1px solid var(--tbw-filter-input-border, var(--tbw-color-border, light-dark(#d0d0d4, #454545)));border-radius:var(--tbw-filter-input-radius, var(--tbw-border-radius, .25rem));font-size:inherit;box-sizing:border-box}.tbw-filter-search-input:focus{outline:none;border-color:var(--tbw-filter-accent, var(--tbw-color-accent, #3b82f6));box-shadow:0 0 0 2px rgba(from var(--tbw-filter-accent, var(--tbw-color-accent, #3b82f6)) r g b / 15%)}.tbw-filter-actions{display:flex;padding:var(--tbw-button-padding-sm, .25rem .125rem);margin-bottom:var(--tbw-panel-gap, var(--tbw-spacing-md, .5rem));border-bottom:1px solid var(--tbw-filter-divider, var(--tbw-color-border, light-dark(#d0d0d4, #454545)));min-height:var(--tbw-filter-item-height, 28px)}.tbw-filter-action-btn{background:transparent;border:none;color:var(--tbw-filter-accent, var(--tbw-color-accent, #3b82f6));cursor:pointer;font-size:var(--tbw-font-size-xs, .75rem);padding:2px 0}.tbw-filter-action-btn:hover{text-decoration:underline}.tbw-filter-values{flex:1;overflow-y:auto;margin-bottom:var(--tbw-panel-gap, var(--tbw-spacing-md, .5rem));max-height:180px;position:relative}.tbw-filter-values-spacer{width:1px}.tbw-filter-values-content{position:absolute;top:0;left:0;right:0}.tbw-filter-value-item{display:flex;align-items:center;gap:var(--tbw-panel-gap, var(--tbw-spacing-md, .5rem));padding:var(--tbw-button-padding-sm, .25rem .125rem);cursor:pointer;border-radius:3px;height:var(--tbw-filter-item-height, 28px)}.tbw-filter-value-item:hover{background:var(--tbw-filter-hover, var(--tbw-color-row-hover, light-dark(#f0f6ff, #1c1c1c)))}.tbw-filter-checkbox{margin:0;cursor:pointer;accent-color:var(--tbw-filter-accent, var(--tbw-color-accent, #3b82f6))}.tbw-filter-no-match{color:var(--tbw-filter-muted, var(--tbw-color-fg-muted, light-dark(#555555, #aaaaaa)));padding:var(--tbw-panel-gap, var(--tbw-spacing-md, .5rem)) 0;text-align:center;font-style:italic}.tbw-filter-buttons{display:flex;gap:var(--tbw-panel-gap, var(--tbw-spacing-md, .5rem));padding-top:var(--tbw-panel-gap, var(--tbw-spacing-md, .5rem));border-top:1px solid var(--tbw-filter-divider, var(--tbw-color-border, light-dark(#d0d0d4, #454545)))}.tbw-filter-apply-btn{flex:1;padding:var(--tbw-filter-btn-padding, var(--tbw-button-padding, .375rem .75rem));background:var(--tbw-filter-accent, var(--tbw-color-accent, #3b82f6));color:var(--tbw-filter-accent-fg, var(--tbw-color-accent-fg, light-dark(#ffffff, #000000)));border:none;border-radius:var(--tbw-border-radius, .25rem);cursor:pointer;font-size:var(--tbw-font-size-sm, .8125rem);font-weight:var(--tbw-filter-btn-font-weight, 500);min-height:var(--tbw-filter-btn-min-height, auto)}.tbw-filter-apply-btn:hover{filter:brightness(.9)}.tbw-filter-clear-btn{flex:1;padding:var(--tbw-filter-btn-padding, var(--tbw-button-padding, .375rem .75rem));background:transparent;color:var(--tbw-filter-muted, var(--tbw-color-fg-muted, light-dark(#555555, #aaaaaa)));border:1px solid var(--tbw-filter-input-border, var(--tbw-color-border, light-dark(#d0d0d4, #454545)));border-radius:var(--tbw-border-radius, .25rem);cursor:pointer;font-size:var(--tbw-font-size-sm, .8125rem);font-weight:var(--tbw-filter-btn-font-weight, 500);min-height:var(--tbw-filter-btn-min-height, auto)}.tbw-filter-clear-btn:hover{background:var(--tbw-filter-hover, var(--tbw-color-row-hover, light-dark(#f0f6ff, #1c1c1c)))}.tbw-filter-range-inputs,.tbw-filter-date-range{display:flex;align-items:flex-end;gap:var(--tbw-spacing-sm, .375rem);margin-bottom:var(--tbw-panel-gap, var(--tbw-spacing-md, .5rem))}.tbw-filter-range-group,.tbw-filter-date-group{display:flex;flex-direction:column;gap:var(--tbw-spacing-xs, .25rem);flex:1}.tbw-filter-range-label{font-size:var(--tbw-font-size-xs, .75rem);color:var(--tbw-filter-muted, var(--tbw-color-fg-muted, light-dark(#555555, #aaaaaa)))}.tbw-filter-range-input,.tbw-filter-date-input{width:100%;height:var(--tbw-filter-item-height, 28px);padding:var(--tbw-spacing-xs, .25rem) var(--tbw-spacing-sm, .375rem);background:var(--tbw-filter-input-bg, var(--tbw-color-bg, transparent));color:inherit;border:1px solid var(--tbw-filter-input-border, var(--tbw-color-border, light-dark(#d0d0d4, #454545)));border-radius:var(--tbw-filter-input-radius, var(--tbw-border-radius, .25rem));font-size:inherit;box-sizing:border-box}.tbw-filter-range-input:focus,.tbw-filter-date-input:focus{outline:none;border-color:var(--tbw-filter-accent, var(--tbw-color-accent, #3b82f6));box-shadow:0 0 0 2px rgba(from var(--tbw-filter-accent, var(--tbw-color-accent, #3b82f6)) r g b / 15%)}.tbw-filter-range-separator{color:var(--tbw-filter-muted, var(--tbw-color-fg-muted, light-dark(#555555, #aaaaaa)));padding-bottom:var(--tbw-spacing-xs, .25rem)}.tbw-filter-range-slider{position:relative;height:24px;margin:var(--tbw-spacing-md, .5rem) 0 var(--tbw-panel-gap, var(--tbw-spacing-md, .5rem))}.tbw-filter-range-track{position:absolute;top:50%;left:0;right:0;height:4px;background:var(--tbw-filter-input-border, var(--tbw-color-border, light-dark(#d0d0d4, #454545)));border-radius:2px;transform:translateY(-50%)}.tbw-filter-range-fill{position:absolute;top:50%;height:4px;background:var(--tbw-filter-accent, var(--tbw-color-accent, #3b82f6));border-radius:2px;transform:translateY(-50%)}.tbw-filter-range-thumb{position:absolute;top:0;width:100%;height:100%;background:none;pointer-events:none;-webkit-appearance:none;appearance:none}.tbw-filter-range-thumb::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;background:var(--tbw-filter-accent, var(--tbw-color-accent, #3b82f6));border:2px solid var(--tbw-filter-panel-bg, var(--tbw-color-panel-bg, light-dark(#eeeeee, #222222)));border-radius:50%;cursor:pointer;pointer-events:all;box-shadow:0 1px 3px #0003}.tbw-filter-range-thumb::-moz-range-thumb{width:16px;height:16px;background:var(--tbw-filter-accent, var(--tbw-color-accent, #3b82f6));border:2px solid var(--tbw-filter-panel-bg, var(--tbw-color-panel-bg, light-dark(#eeeeee, #222222)));border-radius:50%;cursor:pointer;pointer-events:all;box-shadow:0 1px 3px #0003}.tbw-filter-range-thumb::-webkit-slider-thumb:hover{transform:scale(1.1)}.tbw-filter-range-thumb::-moz-range-thumb:hover{transform:scale(1.1)}}";
|
|
1358
1375
|
class N extends A {
|
|
1376
|
+
static manifest = {
|
|
1377
|
+
events: [
|
|
1378
|
+
{
|
|
1379
|
+
type: "filter-applied",
|
|
1380
|
+
description: "Emitted when filter criteria change. Subscribers can react to row visibility changes."
|
|
1381
|
+
}
|
|
1382
|
+
]
|
|
1383
|
+
};
|
|
1359
1384
|
name = "filtering";
|
|
1360
1385
|
styles = Gt;
|
|
1361
1386
|
get defaultConfig() {
|
|
@@ -1413,7 +1438,7 @@ class N extends A {
|
|
|
1413
1438
|
const i = Ot(t);
|
|
1414
1439
|
if (this.cacheKey === i && this.cachedResult)
|
|
1415
1440
|
return this.cachedResult;
|
|
1416
|
-
const n =
|
|
1441
|
+
const n = zt([...e], t, this.config.caseSensitive);
|
|
1417
1442
|
return this.cachedResult = n, this.cacheKey = i, n;
|
|
1418
1443
|
}
|
|
1419
1444
|
afterRender() {
|
|
@@ -1455,7 +1480,7 @@ class N extends A {
|
|
|
1455
1480
|
this.cachedResult = null, this.cacheKey = null, this.emit("filter-change", {
|
|
1456
1481
|
filters: [...this.filters.values()],
|
|
1457
1482
|
filteredRowCount: 0
|
|
1458
|
-
}), this.requestRender();
|
|
1483
|
+
}), this.emitPluginEvent("filter-applied", { filters: [...this.filters.values()] }), this.requestRender();
|
|
1459
1484
|
}
|
|
1460
1485
|
getFilter(e) {
|
|
1461
1486
|
return this.filters.get(e);
|
|
@@ -1473,7 +1498,7 @@ class N extends A {
|
|
|
1473
1498
|
this.cachedResult = null, this.cacheKey = null, this.emit("filter-change", {
|
|
1474
1499
|
filters: [...this.filters.values()],
|
|
1475
1500
|
filteredRowCount: 0
|
|
1476
|
-
}), this.requestRender();
|
|
1501
|
+
}), this.emitPluginEvent("filter-applied", { filters: [...this.filters.values()] }), this.requestRender();
|
|
1477
1502
|
}
|
|
1478
1503
|
clearAllFilters() {
|
|
1479
1504
|
this.filters.clear(), this.excludedValues.clear(), this.searchText.clear(), this.applyFiltersInternal();
|
|
@@ -1632,11 +1657,11 @@ class N extends A {
|
|
|
1632
1657
|
L.type = "checkbox", L.className = "tbw-filter-checkbox", L.checked = b.get(m) ?? !0, L.dataset.value = m, L.addEventListener("change", () => {
|
|
1633
1658
|
b.set(m, L.checked), g();
|
|
1634
1659
|
});
|
|
1635
|
-
const
|
|
1636
|
-
return
|
|
1660
|
+
const K = document.createElement("span");
|
|
1661
|
+
return K.textContent = T, y.appendChild(L), y.appendChild(K), y;
|
|
1637
1662
|
}, _ = () => {
|
|
1638
1663
|
const x = v.length, S = f.clientHeight, T = f.scrollTop;
|
|
1639
|
-
if (p.style.height = `${x * o}px`,
|
|
1664
|
+
if (p.style.height = `${x * o}px`, Kt(x, N.LIST_BYPASS_THRESHOLD / 3)) {
|
|
1640
1665
|
w.innerHTML = "", w.style.transform = "translateY(0px)", v.forEach((y, L) => {
|
|
1641
1666
|
w.appendChild(C(y, L));
|
|
1642
1667
|
});
|
|
@@ -1699,13 +1724,13 @@ class N extends A {
|
|
|
1699
1724
|
}), F.appendChild(R), e.appendChild(F);
|
|
1700
1725
|
}
|
|
1701
1726
|
renderNumberFilterPanel(e, t, i) {
|
|
1702
|
-
const { field: n, column: r } = t, o = r.filterParams, a = r.editorParams, l = (k,
|
|
1727
|
+
const { field: n, column: r } = t, o = r.filterParams, a = r.editorParams, l = (k, H) => {
|
|
1703
1728
|
if (typeof k == "number") return k;
|
|
1704
1729
|
if (typeof k == "string") {
|
|
1705
1730
|
const W = parseFloat(k);
|
|
1706
|
-
return isNaN(W) ?
|
|
1731
|
+
return isNaN(W) ? H : W;
|
|
1707
1732
|
}
|
|
1708
|
-
return
|
|
1733
|
+
return H;
|
|
1709
1734
|
}, d = i.filter((k) => typeof k == "number" && !isNaN(k)), c = d.length > 0 ? Math.min(...d) : 0, u = d.length > 0 ? Math.max(...d) : 100, h = l(o?.min ?? a?.min, c), g = l(o?.max ?? a?.max, u), f = o?.step ?? a?.step ?? 1, p = this.filters.get(n);
|
|
1710
1735
|
let w = h, b = g;
|
|
1711
1736
|
p?.operator === "between" ? (w = l(p.value, h), b = l(p.valueTo, g)) : p?.operator === "greaterThanOrEqual" ? w = l(p.value, h) : p?.operator === "lessThanOrEqual" && (b = l(p.value, g));
|
|
@@ -1736,7 +1761,7 @@ class N extends A {
|
|
|
1736
1761
|
const y = document.createElement("input");
|
|
1737
1762
|
y.type = "range", y.className = "tbw-filter-range-thumb tbw-filter-range-thumb-max", y.min = String(h), y.max = String(g), y.step = String(f), y.value = String(b), x.appendChild(S), x.appendChild(T), x.appendChild(m), x.appendChild(y), e.appendChild(x);
|
|
1738
1763
|
const L = () => {
|
|
1739
|
-
const k = parseFloat(m.value),
|
|
1764
|
+
const k = parseFloat(m.value), H = parseFloat(y.value), W = g - h, be = (k - h) / W * 100, ot = (H - h) / W * 100;
|
|
1740
1765
|
T.style.left = `${be}%`, T.style.width = `${ot - be}%`;
|
|
1741
1766
|
};
|
|
1742
1767
|
m.addEventListener("input", () => {
|
|
@@ -1752,17 +1777,17 @@ class N extends A {
|
|
|
1752
1777
|
let k = parseFloat(R.value) || g;
|
|
1753
1778
|
k = Math.min(g, Math.max(k, parseFloat(E.value))), y.value = String(k), L();
|
|
1754
1779
|
}), L();
|
|
1755
|
-
const
|
|
1756
|
-
|
|
1780
|
+
const K = document.createElement("div");
|
|
1781
|
+
K.className = "tbw-filter-buttons";
|
|
1757
1782
|
const Y = document.createElement("button");
|
|
1758
1783
|
Y.className = "tbw-filter-apply-btn", Y.textContent = "Apply", Y.addEventListener("click", () => {
|
|
1759
|
-
const k = parseFloat(E.value),
|
|
1760
|
-
t.applyTextFilter("between", k,
|
|
1761
|
-
}),
|
|
1784
|
+
const k = parseFloat(E.value), H = parseFloat(R.value);
|
|
1785
|
+
t.applyTextFilter("between", k, H);
|
|
1786
|
+
}), K.appendChild(Y);
|
|
1762
1787
|
const X = document.createElement("button");
|
|
1763
1788
|
X.className = "tbw-filter-clear-btn", X.textContent = "Clear Filter", X.addEventListener("click", () => {
|
|
1764
1789
|
t.clearFilter();
|
|
1765
|
-
}),
|
|
1790
|
+
}), K.appendChild(X), e.appendChild(K);
|
|
1766
1791
|
}
|
|
1767
1792
|
renderDateFilterPanel(e, t, i) {
|
|
1768
1793
|
const { field: n, column: r } = t, o = r.filterParams, a = r.editorParams, l = i.filter((m) => m instanceof Date || typeof m == "string" && !isNaN(Date.parse(m))).map((m) => m instanceof Date ? m : new Date(m)).filter((m) => !isNaN(m.getTime())), d = l.length > 0 ? new Date(Math.min(...l.map((m) => m.getTime()))) : null, c = l.length > 0 ? new Date(Math.max(...l.map((m) => m.getTime()))) : null, u = (m) => m ? m.toISOString().split("T")[0] : "", h = (m) => m ? typeof m == "string" ? m : typeof m == "number" ? u(new Date(m)) : "" : "", g = h(o?.min) || h(a?.min) || u(d), f = h(o?.max) || h(a?.max) || u(c), p = this.filters.get(n);
|
|
@@ -1823,7 +1848,7 @@ class N extends A {
|
|
|
1823
1848
|
t.removeAttribute("aria-busy"), this.cachedResult = r, this.grid.rows = r, this.emit("filter-change", {
|
|
1824
1849
|
filters: e,
|
|
1825
1850
|
filteredRowCount: r.length
|
|
1826
|
-
}), this.requestRender();
|
|
1851
|
+
}), this.emitPluginEvent("filter-applied", { filters: e }), this.requestRender();
|
|
1827
1852
|
};
|
|
1828
1853
|
i && typeof i.then == "function" ? i.then(n) : n(i);
|
|
1829
1854
|
return;
|
|
@@ -1831,7 +1856,7 @@ class N extends A {
|
|
|
1831
1856
|
this.emit("filter-change", {
|
|
1832
1857
|
filters: e,
|
|
1833
1858
|
filteredRowCount: 0
|
|
1834
|
-
}), this.requestRender();
|
|
1859
|
+
}), this.emitPluginEvent("filter-applied", { filters: e }), this.requestRender();
|
|
1835
1860
|
}
|
|
1836
1861
|
getColumnState(e) {
|
|
1837
1862
|
const t = this.filters.get(e);
|
|
@@ -2085,15 +2110,27 @@ function Zt(s, e) {
|
|
|
2085
2110
|
}
|
|
2086
2111
|
return typeof s == "string" ? /* @__PURE__ */ new Set([s]) : Array.isArray(s) ? new Set(s) : /* @__PURE__ */ new Set();
|
|
2087
2112
|
}
|
|
2088
|
-
function
|
|
2113
|
+
function Qt(s) {
|
|
2089
2114
|
return s.filter((e) => e.kind === "group").map((e) => e.key);
|
|
2090
2115
|
}
|
|
2091
|
-
function
|
|
2116
|
+
function Jt(s) {
|
|
2092
2117
|
return s.kind !== "group" ? 0 : s.rows.length;
|
|
2093
2118
|
}
|
|
2094
2119
|
const ei = "@layer tbw-plugins{.group-row{display:grid;grid-template-columns:var(--tbw-column-template);background:var(--tbw-grouping-rows-bg, var(--tbw-color-panel-bg));font-weight:500;border-bottom:var(--tbw-row-divider);min-height:var(--tbw-row-height)}.group-row .cell{display:flex;align-items:center;padding:var(--tbw-cell-padding, .125rem .5rem)}.group-row:hover{background:var(--tbw-grouping-rows-bg-hover, var(--tbw-color-row-hover))}.group-toggle{cursor:pointer;user-select:none;display:inline-flex;align-items:center;justify-content:center;width:var(--tbw-toggle-size, 1.25rem);height:var(--tbw-toggle-size, 1.25rem);margin-right:.25rem;background:none;border:0;font:inherit}.group-toggle:hover{background:var(--tbw-grouping-rows-toggle-hover, var(--tbw-color-row-hover));border-radius:var(--tbw-border-radius, .125rem)}.group-label{display:inline-flex;align-items:center;gap:var(--tbw-panel-gap, var(--tbw-spacing-md, .5rem))}.group-count{color:var(--tbw-grouping-rows-count-color, var(--tbw-color-fg-muted));font-size:var(--tbw-font-size-xs, .85em);font-weight:400}.group-aggregates{display:inline-flex;align-items:center;gap:var(--tbw-spacing-lg, 1rem);margin-left:var(--tbw-spacing-lg, 1rem);font-weight:400;font-size:var(--tbw-font-size-sm, .875em);color:var(--tbw-grouping-rows-aggregate-color, var(--tbw-color-fg-muted))}.group-aggregate{white-space:nowrap}.group-row{padding-left:calc(var(--tbw-group-depth, 0) * var(--tbw-group-indent-width, 1.25em))}.data-grid-row.tbw-group-slide-in{animation:tbw-group-slide-in var(--tbw-animation-duration, .2s) var(--tbw-animation-easing, ease-out) forwards}@keyframes tbw-group-slide-in{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.data-grid-row.tbw-group-fade-in{animation:tbw-group-fade-in var(--tbw-animation-duration, .2s) var(--tbw-animation-easing, ease-out) forwards}@keyframes tbw-group-fade-in{0%{opacity:0}to{opacity:1}}}";
|
|
2095
2120
|
class mn extends A {
|
|
2096
2121
|
static manifest = {
|
|
2122
|
+
events: [
|
|
2123
|
+
{
|
|
2124
|
+
type: "grouping-state-change",
|
|
2125
|
+
description: "Emitted when groups are expanded/collapsed. Subscribers can react to row visibility changes."
|
|
2126
|
+
}
|
|
2127
|
+
],
|
|
2128
|
+
queries: [
|
|
2129
|
+
{
|
|
2130
|
+
type: "canMoveRow",
|
|
2131
|
+
description: "Returns false for group header rows (cannot be reordered)"
|
|
2132
|
+
}
|
|
2133
|
+
],
|
|
2097
2134
|
configRules: [
|
|
2098
2135
|
{
|
|
2099
2136
|
id: "groupingRows/accordion-defaultExpanded",
|
|
@@ -2130,6 +2167,13 @@ class mn extends A {
|
|
|
2130
2167
|
detach() {
|
|
2131
2168
|
this.expandedKeys.clear(), this.flattenedRows = [], this.isActive = !1, this.previousVisibleKeys.clear(), this.keysToAnimate.clear(), this.hasAppliedDefaultExpanded = !1;
|
|
2132
2169
|
}
|
|
2170
|
+
handleQuery(e) {
|
|
2171
|
+
if (e.type === "canMoveRow") {
|
|
2172
|
+
const t = e.context;
|
|
2173
|
+
if (t && t.__isGroupRow === !0)
|
|
2174
|
+
return !1;
|
|
2175
|
+
}
|
|
2176
|
+
}
|
|
2133
2177
|
static detect(e, t) {
|
|
2134
2178
|
return typeof t?.groupOn == "function" || typeof t?.enableRowGrouping == "boolean";
|
|
2135
2179
|
}
|
|
@@ -2146,7 +2190,7 @@ class mn extends A {
|
|
|
2146
2190
|
return this.isActive = !1, this.flattenedRows = [], [...e];
|
|
2147
2191
|
let n;
|
|
2148
2192
|
if (!this.hasAppliedDefaultExpanded && this.expandedKeys.size === 0 && t.defaultExpanded !== !1) {
|
|
2149
|
-
const a =
|
|
2193
|
+
const a = Qt(i);
|
|
2150
2194
|
n = Zt(t.defaultExpanded ?? !1, a), n.size > 0 && (this.expandedKeys = new Set(n), this.hasAppliedDefaultExpanded = !0);
|
|
2151
2195
|
}
|
|
2152
2196
|
const r = Ie({
|
|
@@ -2169,7 +2213,7 @@ class mn extends A {
|
|
|
2169
2213
|
__groupDepth: a.depth,
|
|
2170
2214
|
__groupRows: a.rows,
|
|
2171
2215
|
__groupExpanded: a.expanded,
|
|
2172
|
-
__groupRowCount:
|
|
2216
|
+
__groupRowCount: Jt(a)
|
|
2173
2217
|
} : a.row);
|
|
2174
2218
|
}
|
|
2175
2219
|
onCellClick(e) {
|
|
@@ -2287,10 +2331,10 @@ class mn extends A {
|
|
|
2287
2331
|
});
|
|
2288
2332
|
}
|
|
2289
2333
|
expandAll() {
|
|
2290
|
-
this.expandedKeys = Yt(this.flattenedRows), this.requestRender();
|
|
2334
|
+
this.expandedKeys = Yt(this.flattenedRows), this.emitPluginEvent("grouping-state-change", { expandedKeys: [...this.expandedKeys] }), this.requestRender();
|
|
2291
2335
|
}
|
|
2292
2336
|
collapseAll() {
|
|
2293
|
-
this.expandedKeys = Xt(), this.requestRender();
|
|
2337
|
+
this.expandedKeys = Xt(), this.emitPluginEvent("grouping-state-change", { expandedKeys: [...this.expandedKeys] }), this.requestRender();
|
|
2294
2338
|
}
|
|
2295
2339
|
toggle(e) {
|
|
2296
2340
|
const t = !this.expandedKeys.has(e), i = this.config, n = this.flattenedRows.find((r) => r.kind === "group" && r.key === e);
|
|
@@ -2311,6 +2355,8 @@ class mn extends A {
|
|
|
2311
2355
|
expanded: this.expandedKeys.has(e),
|
|
2312
2356
|
value: n?.value,
|
|
2313
2357
|
depth: n?.depth ?? 0
|
|
2358
|
+
}), this.emitPluginEvent("grouping-state-change", {
|
|
2359
|
+
expandedKeys: [...this.expandedKeys]
|
|
2314
2360
|
}), this.requestRender();
|
|
2315
2361
|
}
|
|
2316
2362
|
isExpanded(e) {
|
|
@@ -2729,6 +2775,7 @@ function qe(s) {
|
|
|
2729
2775
|
t.classList.remove("sticky-left", "sticky-right"), t.style.position = "", t.style.left = "", t.style.right = "";
|
|
2730
2776
|
});
|
|
2731
2777
|
}
|
|
2778
|
+
const Ke = "canMoveColumn";
|
|
2732
2779
|
class bn extends A {
|
|
2733
2780
|
static manifest = {
|
|
2734
2781
|
ownedProperties: [
|
|
@@ -2738,6 +2785,16 @@ class bn extends A {
|
|
|
2738
2785
|
description: 'the "sticky" column property',
|
|
2739
2786
|
isUsed: (e) => e === "left" || e === "right"
|
|
2740
2787
|
}
|
|
2788
|
+
],
|
|
2789
|
+
queries: [
|
|
2790
|
+
{
|
|
2791
|
+
type: Ke,
|
|
2792
|
+
description: "Prevents pinned (sticky) columns from being moved/reordered"
|
|
2793
|
+
},
|
|
2794
|
+
{
|
|
2795
|
+
type: "getStickyOffsets",
|
|
2796
|
+
description: "Returns the sticky offsets for left/right pinned columns"
|
|
2797
|
+
}
|
|
2741
2798
|
]
|
|
2742
2799
|
};
|
|
2743
2800
|
name = "pinnedColumns";
|
|
@@ -2769,15 +2826,20 @@ class bn extends A {
|
|
|
2769
2826
|
Ne(e, t);
|
|
2770
2827
|
});
|
|
2771
2828
|
}
|
|
2772
|
-
|
|
2829
|
+
handleQuery(e) {
|
|
2773
2830
|
switch (e.type) {
|
|
2774
|
-
case
|
|
2831
|
+
case Ke: {
|
|
2775
2832
|
const t = e.context, i = t.sticky;
|
|
2776
2833
|
if (i === "left" || i === "right")
|
|
2777
2834
|
return !1;
|
|
2778
2835
|
const n = t.meta?.sticky;
|
|
2779
2836
|
return n === "left" || n === "right" ? !1 : void 0;
|
|
2780
2837
|
}
|
|
2838
|
+
case "getStickyOffsets":
|
|
2839
|
+
return {
|
|
2840
|
+
left: Object.fromEntries(this.leftOffsets),
|
|
2841
|
+
right: Object.fromEntries(this.rightOffsets)
|
|
2842
|
+
};
|
|
2781
2843
|
default:
|
|
2782
2844
|
return;
|
|
2783
2845
|
}
|
|
@@ -2896,7 +2958,7 @@ function gi(s, e) {
|
|
|
2896
2958
|
const i = s.render(e);
|
|
2897
2959
|
return typeof i == "string" ? t.innerHTML = i : t.appendChild(i), t;
|
|
2898
2960
|
}
|
|
2899
|
-
function
|
|
2961
|
+
function Oe(s, e, t, i, n) {
|
|
2900
2962
|
return {
|
|
2901
2963
|
totalRows: s.length,
|
|
2902
2964
|
filteredRows: n?.cachedResult?.length ?? s.length,
|
|
@@ -2931,7 +2993,7 @@ class vn extends A {
|
|
|
2931
2993
|
const t = e.querySelector(".tbw-scroll-area") ?? e.querySelector(".tbw-grid-content") ?? e.children[0];
|
|
2932
2994
|
if (!t) return;
|
|
2933
2995
|
this.footerWrapper && !t.contains(this.footerWrapper) && (this.footerWrapper = null, this.bottomAggregationContainer = null, this.infoBarElement = null), this.topAggregationContainer && !t.contains(this.topAggregationContainer) && (this.topAggregationContainer = null), this.infoBarElement && !t.contains(this.infoBarElement) && (this.infoBarElement = null);
|
|
2934
|
-
const i = this.getSelectionState(), n = this.getFilterState(), r =
|
|
2996
|
+
const i = this.getSelectionState(), n = this.getFilterState(), r = Oe(
|
|
2935
2997
|
this.rows,
|
|
2936
2998
|
this.columns,
|
|
2937
2999
|
this.grid,
|
|
@@ -2992,7 +3054,7 @@ class vn extends A {
|
|
|
2992
3054
|
}
|
|
2993
3055
|
getContext() {
|
|
2994
3056
|
const e = this.getSelectionState(), t = this.getFilterState();
|
|
2995
|
-
return
|
|
3057
|
+
return Oe(
|
|
2996
3058
|
this.rows,
|
|
2997
3059
|
this.columns,
|
|
2998
3060
|
this.grid,
|
|
@@ -3058,7 +3120,7 @@ function vi(s, e) {
|
|
|
3058
3120
|
function tt(s, e, t, i, n, r, o) {
|
|
3059
3121
|
const a = [];
|
|
3060
3122
|
if (e.length === 0) {
|
|
3061
|
-
const h =
|
|
3123
|
+
const h = Ge(s, t, i, n), g = Be(h);
|
|
3062
3124
|
return a.push({
|
|
3063
3125
|
rowKey: o || "all",
|
|
3064
3126
|
rowLabel: o || "All",
|
|
@@ -3071,7 +3133,7 @@ function tt(s, e, t, i, n, r, o) {
|
|
|
3071
3133
|
}
|
|
3072
3134
|
const l = e[0], d = e.slice(1), c = d.length > 0, u = vi(s, l);
|
|
3073
3135
|
for (const [h, g] of u) {
|
|
3074
|
-
const f = o ? `${o}|${h}` : h, p =
|
|
3136
|
+
const f = o ? `${o}|${h}` : h, p = Ge(g, t, i, n), w = Be(p);
|
|
3075
3137
|
let b;
|
|
3076
3138
|
c && (b = tt(
|
|
3077
3139
|
g,
|
|
@@ -3094,7 +3156,7 @@ function tt(s, e, t, i, n, r, o) {
|
|
|
3094
3156
|
}
|
|
3095
3157
|
return a;
|
|
3096
3158
|
}
|
|
3097
|
-
function
|
|
3159
|
+
function Ge(s, e, t, i) {
|
|
3098
3160
|
const n = {};
|
|
3099
3161
|
for (const r of t)
|
|
3100
3162
|
for (const o of i) {
|
|
@@ -3103,7 +3165,7 @@ function Oe(s, e, t, i) {
|
|
|
3103
3165
|
}
|
|
3104
3166
|
return n;
|
|
3105
3167
|
}
|
|
3106
|
-
function
|
|
3168
|
+
function Be(s) {
|
|
3107
3169
|
let e = 0;
|
|
3108
3170
|
for (const t of Object.values(s))
|
|
3109
3171
|
e += t ?? 0;
|
|
@@ -3150,7 +3212,7 @@ function Ci(s) {
|
|
|
3150
3212
|
const Ei = ["sum", "avg", "count", "min", "max", "first", "last"];
|
|
3151
3213
|
function Ri(s, e, t, i) {
|
|
3152
3214
|
const n = new AbortController(), r = { config: e, callbacks: i, signal: n.signal }, o = document.createElement("div");
|
|
3153
|
-
return o.className = "tbw-pivot-panel", o.appendChild(j("Options", () => Ti(t, r))), o.appendChild(j("Row Groups", () =>
|
|
3215
|
+
return o.className = "tbw-pivot-panel", o.appendChild(j("Options", () => Ti(t, r))), o.appendChild(j("Row Groups", () => Ve("rowGroups", r))), o.appendChild(j("Column Groups", () => Ve("columnGroups", r))), o.appendChild(j("Values", () => ki(r))), o.appendChild(j("Available Fields", () => _i(r))), s.appendChild(o), () => {
|
|
3154
3216
|
n.abort(), o.remove();
|
|
3155
3217
|
};
|
|
3156
3218
|
}
|
|
@@ -3162,7 +3224,7 @@ function j(s, e) {
|
|
|
3162
3224
|
const n = document.createElement("div");
|
|
3163
3225
|
return n.className = "tbw-pivot-section-content", n.appendChild(e()), t.appendChild(i), t.appendChild(n), t;
|
|
3164
3226
|
}
|
|
3165
|
-
function
|
|
3227
|
+
function Ve(s, e) {
|
|
3166
3228
|
const { config: t, callbacks: i, signal: n } = e, r = document.createElement("div");
|
|
3167
3229
|
r.className = "tbw-pivot-drop-zone", r.setAttribute("data-zone", s);
|
|
3168
3230
|
const o = s === "rowGroups" ? t.rowGroupFields ?? [] : t.columnGroupFields ?? [];
|
|
@@ -3688,10 +3750,10 @@ class G extends A {
|
|
|
3688
3750
|
n >= 0 && (i[n] = { ...i[n], aggFunc: t }, this.config.valueFields = [...i]), this.isActive && this.refresh();
|
|
3689
3751
|
}
|
|
3690
3752
|
}
|
|
3691
|
-
const
|
|
3753
|
+
const Q = "tbw-print-isolation-style";
|
|
3692
3754
|
function Di(s, e) {
|
|
3693
3755
|
const t = document.createElement("style");
|
|
3694
|
-
return t.id =
|
|
3756
|
+
return t.id = Q, t.textContent = `
|
|
3695
3757
|
/* Print isolation: hide everything except the target grid */
|
|
3696
3758
|
@media print {
|
|
3697
3759
|
/* Hide all body children by default */
|
|
@@ -3767,14 +3829,14 @@ async function Mi(s, e = {}) {
|
|
|
3767
3829
|
const { orientation: t = "landscape" } = e, i = s.id;
|
|
3768
3830
|
document.querySelectorAll(`#${CSS.escape(i)}`).length > 1 && console.warn(
|
|
3769
3831
|
`[tbw-grid:print] Multiple elements found with id="${i}". Print isolation may not work correctly. Ensure each grid has a unique ID.`
|
|
3770
|
-
), document.getElementById(
|
|
3832
|
+
), document.getElementById(Q)?.remove();
|
|
3771
3833
|
const r = Di(i, t);
|
|
3772
3834
|
return document.head.appendChild(r), new Promise((o) => {
|
|
3773
3835
|
const a = () => {
|
|
3774
|
-
window.removeEventListener("afterprint", a), document.getElementById(
|
|
3836
|
+
window.removeEventListener("afterprint", a), document.getElementById(Q)?.remove(), o();
|
|
3775
3837
|
};
|
|
3776
3838
|
window.addEventListener("afterprint", a), window.print(), setTimeout(() => {
|
|
3777
|
-
window.removeEventListener("afterprint", a), document.getElementById(
|
|
3839
|
+
window.removeEventListener("afterprint", a), document.getElementById(Q)?.remove(), o();
|
|
3778
3840
|
}, 5e3);
|
|
3779
3841
|
});
|
|
3780
3842
|
}
|
|
@@ -3880,7 +3942,7 @@ Click OK to continue, or Cancel to abort.`
|
|
|
3880
3942
|
window.removeEventListener("afterprint", t), e();
|
|
3881
3943
|
};
|
|
3882
3944
|
window.addEventListener("afterprint", t), window.print(), setTimeout(() => {
|
|
3883
|
-
window.removeEventListener("afterprint", t), e();
|
|
3945
|
+
typeof window < "u" && window.removeEventListener("afterprint", t), e();
|
|
3884
3946
|
}, 1e3);
|
|
3885
3947
|
});
|
|
3886
3948
|
}
|
|
@@ -3935,19 +3997,19 @@ Click OK to continue, or Cancel to abort.`
|
|
|
3935
3997
|
});
|
|
3936
3998
|
}
|
|
3937
3999
|
}
|
|
3938
|
-
function
|
|
4000
|
+
function Ki(s) {
|
|
3939
4001
|
const e = s.meta ?? {};
|
|
3940
4002
|
return e.lockPosition !== !0 && e.suppressMovable !== !0;
|
|
3941
4003
|
}
|
|
3942
|
-
function
|
|
4004
|
+
function We(s, e, t) {
|
|
3943
4005
|
if (e === t || e < 0 || e >= s.length || t < 0 || t > s.length) return s;
|
|
3944
4006
|
const i = [...s], [n] = i.splice(e, 1);
|
|
3945
4007
|
return i.splice(t, 0, n), i;
|
|
3946
4008
|
}
|
|
3947
|
-
const
|
|
4009
|
+
const Hi = '@layer tbw-plugins{.header-row>.cell[draggable=true]{cursor:grab;position:relative}.header-row>.cell.dragging{opacity:.5;cursor:grabbing}.header-row>.cell.drop-before:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--tbw-reorder-indicator, var(--tbw-color-accent));z-index:1}.header-row>.cell.drop-after:after{content:"";position:absolute;right:0;top:0;bottom:0;width:2px;background:var(--tbw-reorder-indicator, var(--tbw-color-accent));z-index:1}.cell.flip-animating{transition:transform var(--tbw-animation-duration, .2s) ease-out;will-change:transform;z-index:1}@keyframes reorder-fade-in{0%{opacity:0}to{opacity:1}}.cell.fade-animating{animation:reorder-fade-in var(--tbw-animation-duration, .2s) ease-out backwards}}';
|
|
3948
4010
|
class xn extends A {
|
|
3949
4011
|
name = "reorder";
|
|
3950
|
-
styles =
|
|
4012
|
+
styles = Hi;
|
|
3951
4013
|
get defaultConfig() {
|
|
3952
4014
|
return {
|
|
3953
4015
|
animation: "flip"
|
|
@@ -3964,10 +4026,7 @@ class xn extends A {
|
|
|
3964
4026
|
draggedIndex = null;
|
|
3965
4027
|
dropIndex = null;
|
|
3966
4028
|
canMoveColumnWithPlugins(e) {
|
|
3967
|
-
return !e || !
|
|
3968
|
-
type: Ze.CAN_MOVE_COLUMN,
|
|
3969
|
-
context: e
|
|
3970
|
-
}).includes(!1);
|
|
4029
|
+
return !e || !Ki(e) ? !1 : !this.grid.query("canMoveColumn", e).includes(!1);
|
|
3971
4030
|
}
|
|
3972
4031
|
clearDragClasses() {
|
|
3973
4032
|
this.gridElement?.querySelectorAll(".header-row > .cell").forEach((e) => {
|
|
@@ -4014,7 +4073,7 @@ class xn extends A {
|
|
|
4014
4073
|
const l = this.draggedField, d = this.draggedIndex, c = this.dropIndex;
|
|
4015
4074
|
if (!this.isDragging || l === null || d === null || c === null)
|
|
4016
4075
|
return;
|
|
4017
|
-
const u = c > d ? c - 1 : c, h = this.getColumnOrder(), g =
|
|
4076
|
+
const u = c > d ? c - 1 : c, h = this.getColumnOrder(), g = We(h, d, u), f = {
|
|
4018
4077
|
field: l,
|
|
4019
4078
|
fromIndex: d,
|
|
4020
4079
|
toIndex: u,
|
|
@@ -4045,7 +4104,7 @@ class xn extends A {
|
|
|
4045
4104
|
moveColumn(e, t) {
|
|
4046
4105
|
const i = this.getColumnOrder(), n = i.indexOf(e);
|
|
4047
4106
|
if (n === -1) return;
|
|
4048
|
-
const r =
|
|
4107
|
+
const r = We(i, n, t);
|
|
4049
4108
|
this.emitCancelable("column-move", {
|
|
4050
4109
|
field: e,
|
|
4051
4110
|
fromIndex: n,
|
|
@@ -4140,17 +4199,23 @@ class xn extends A {
|
|
|
4140
4199
|
this.grid.requestStateChange?.();
|
|
4141
4200
|
}
|
|
4142
4201
|
}
|
|
4143
|
-
const
|
|
4202
|
+
const zi = 'tbw-grid[data-responsive-animate]{.data-grid-row,.data-grid-row>.cell{transition:opacity var(--tbw-responsive-duration, .2s) ease-out,transform var(--tbw-responsive-duration, .2s) ease-out}}tbw-grid[data-responsive][data-responsive-animate]{.data-grid-row{animation:responsive-card-enter var(--tbw-responsive-duration, .2s) ease-out}}@keyframes responsive-card-enter{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}tbw-grid[data-responsive]{.header{display:none!important}.footer-row{display:none}.tbw-scroll-area{overflow-x:hidden;min-width:0!important}.rows-body-wrapper{min-width:0!important}.data-grid-row:not(.group-row){display:block!important;grid-template-columns:none!important;padding:var(--tbw-cell-padding);padding-left:var(--tbw-spacing-xl);border-bottom:1px solid var(--tbw-color-border);min-height:auto!important;height:auto!important;contain:none!important;content-visibility:visible!important;background:var(--tbw-color-bg);position:relative;&:nth-child(2n){background:var(--tbw-color-row-alt)}&:hover{background:var(--tbw-color-row-hover)}&[aria-selected=true]{background:var(--tbw-color-selection);&:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--tbw-color-accent)}}}.data-grid-row:not(.group-row)>.cell{display:flex!important;justify-content:space-between;align-items:center;padding:var(--tbw-spacing-xs) var(--tbw-spacing-md);width:100%!important;min-width:0!important;min-height:auto!important;height:auto!important;line-height:1.5!important;position:static!important;left:auto!important;right:auto!important;border:none!important;border-bottom:none!important;border-right:none!important;background:transparent!important;white-space:normal!important;overflow:visible!important;&:before{content:attr(data-header) ": ";font-weight:600;color:var(--tbw-color-header-fg);flex-shrink:0;margin-right:var(--tbw-spacing-md);min-width:100px}&:after{content:none}}.cell[data-utility]{display:none!important}}tbw-grid[data-responsive] .cell[data-responsive-hidden]{display:none!important}tbw-grid[data-responsive] .cell[data-responsive-value-only]{&:before{display:none!important}justify-content:flex-start!important;font-weight:500}tbw-grid:not([data-responsive]) .cell[data-responsive-hidden]{display:none!important}tbw-grid[data-responsive]{.tbw-footer,.tbw-pinned-rows,.tbw-aggregation-rows{display:none!important}.tbw-pinned-rows,.tbw-aggregation-rows,.tbw-aggregation-row{min-width:0!important}}tbw-grid[data-responsive] .data-grid-row.responsive-card{display:block!important;padding:var(--tbw-cell-padding);border-bottom:1px solid var(--tbw-color-border);>*{width:100%}.cell:before{display:none}}';
|
|
4144
4203
|
class Cn extends A {
|
|
4145
4204
|
name = "responsive";
|
|
4146
4205
|
version = "1.0.0";
|
|
4147
|
-
styles =
|
|
4206
|
+
styles = zi;
|
|
4148
4207
|
static manifest = {
|
|
4149
4208
|
incompatibleWith: [
|
|
4150
4209
|
{
|
|
4151
4210
|
name: "groupingRows",
|
|
4152
4211
|
reason: "Responsive card layout does not yet support row grouping. The variable row heights (cards vs group headers) cause scroll calculation issues."
|
|
4153
4212
|
}
|
|
4213
|
+
],
|
|
4214
|
+
queries: [
|
|
4215
|
+
{
|
|
4216
|
+
type: "isCardMode",
|
|
4217
|
+
description: "Returns whether the grid is currently in responsive card mode"
|
|
4218
|
+
}
|
|
4154
4219
|
]
|
|
4155
4220
|
};
|
|
4156
4221
|
#e;
|
|
@@ -4200,6 +4265,10 @@ class Cn extends A {
|
|
|
4200
4265
|
detach() {
|
|
4201
4266
|
this.#e?.disconnect(), this.#e = void 0, clearTimeout(this.#o), this.#o = void 0, this.gridElement && this.gridElement.removeAttribute("data-responsive"), super.detach();
|
|
4202
4267
|
}
|
|
4268
|
+
handleQuery(e) {
|
|
4269
|
+
if (e.type === "isCardMode")
|
|
4270
|
+
return this.#t;
|
|
4271
|
+
}
|
|
4203
4272
|
afterRender() {
|
|
4204
4273
|
if (this.#E(), !(this.#c.length > 0 ? this.#a !== null : this.#t))
|
|
4205
4274
|
return;
|
|
@@ -4600,7 +4669,7 @@ function Vi(s, e, t) {
|
|
|
4600
4669
|
const i = V(t);
|
|
4601
4670
|
return s >= i.startRow && s <= i.endRow && e >= i.startCol && e <= i.endCol;
|
|
4602
4671
|
}
|
|
4603
|
-
function
|
|
4672
|
+
function $e(s, e, t) {
|
|
4604
4673
|
return t.some((i) => Vi(s, e, i));
|
|
4605
4674
|
}
|
|
4606
4675
|
function Wi(s) {
|
|
@@ -4652,6 +4721,7 @@ function Ui(s, e, t) {
|
|
|
4652
4721
|
}
|
|
4653
4722
|
class Rn extends A {
|
|
4654
4723
|
static manifest = {
|
|
4724
|
+
queries: [{ type: "getSelection", description: "Get the current selection state" }],
|
|
4655
4725
|
configRules: [
|
|
4656
4726
|
{
|
|
4657
4727
|
id: "selection/range-dblclick",
|
|
@@ -4698,9 +4768,19 @@ class Rn extends A {
|
|
|
4698
4768
|
isCellSelectable(e, t) {
|
|
4699
4769
|
return this.checkSelectable(e, t);
|
|
4700
4770
|
}
|
|
4771
|
+
attach(e) {
|
|
4772
|
+
super.attach(e), this.on("filter-applied", () => this.clearSelectionSilent()), this.on("grouping-state-change", () => this.clearSelectionSilent()), this.on("tree-state-change", () => this.clearSelectionSilent());
|
|
4773
|
+
}
|
|
4774
|
+
handleQuery(e) {
|
|
4775
|
+
if (e.type === "getSelection")
|
|
4776
|
+
return this.getSelection();
|
|
4777
|
+
}
|
|
4701
4778
|
detach() {
|
|
4702
4779
|
this.selected.clear(), this.ranges = [], this.activeRange = null, this.cellAnchor = null, this.isDragging = !1, this.selectedCell = null, this.pendingKeyboardUpdate = null;
|
|
4703
4780
|
}
|
|
4781
|
+
clearSelectionSilent() {
|
|
4782
|
+
this.selected.clear(), this.ranges = [], this.activeRange = null, this.cellAnchor = null, this.selectedCell = null, this.lastSelected = null, this.anchor = null, this.requestAfterRender();
|
|
4783
|
+
}
|
|
4704
4784
|
onCellClick(e) {
|
|
4705
4785
|
if (!this.isSelectionEnabled()) return !1;
|
|
4706
4786
|
const { rowIndex: t, colIndex: i, originalEvent: n } = e, { mode: r, triggerOn: o = "click" } = this.config;
|
|
@@ -4835,7 +4915,7 @@ class Rn extends A {
|
|
|
4835
4915
|
const h = this.columns[u];
|
|
4836
4916
|
if (h && q(h))
|
|
4837
4917
|
return;
|
|
4838
|
-
if (
|
|
4918
|
+
if ($e(c, u, this.ranges) && (d.classList.add("selected"), o)) {
|
|
4839
4919
|
c === o.startRow && d.classList.add("top"), c === o.endRow && d.classList.add("bottom");
|
|
4840
4920
|
const f = Math.max(o.startCol, a);
|
|
4841
4921
|
u === f && d.classList.add("first"), u === o.endCol && d.classList.add("last");
|
|
@@ -4875,7 +4955,7 @@ class Rn extends A {
|
|
|
4875
4955
|
return $i(this.ranges);
|
|
4876
4956
|
}
|
|
4877
4957
|
isCellSelected(e, t) {
|
|
4878
|
-
return
|
|
4958
|
+
return $e(e, t, this.ranges);
|
|
4879
4959
|
}
|
|
4880
4960
|
clearSelection() {
|
|
4881
4961
|
this.selectedCell = null, this.selected.clear(), this.anchor = null, this.ranges = [], this.activeRange = null, this.cellAnchor = null, this.emit("selection-change", { mode: this.config.mode, ranges: [] }), this.requestAfterRender();
|
|
@@ -4903,7 +4983,7 @@ class Rn extends A {
|
|
|
4903
4983
|
);
|
|
4904
4984
|
}
|
|
4905
4985
|
}
|
|
4906
|
-
function
|
|
4986
|
+
function J(s, e) {
|
|
4907
4987
|
return Math.floor(s / e);
|
|
4908
4988
|
}
|
|
4909
4989
|
function Yi(s, e) {
|
|
@@ -4913,12 +4993,12 @@ function Yi(s, e) {
|
|
|
4913
4993
|
};
|
|
4914
4994
|
}
|
|
4915
4995
|
function Xi(s, e, t) {
|
|
4916
|
-
const i =
|
|
4996
|
+
const i = J(s, t), n = J(e - 1, t), r = [];
|
|
4917
4997
|
for (let o = i; o <= n; o++)
|
|
4918
4998
|
r.push(o);
|
|
4919
4999
|
return r;
|
|
4920
5000
|
}
|
|
4921
|
-
async function
|
|
5001
|
+
async function je(s, e, t, i) {
|
|
4922
5002
|
const n = Yi(e, t);
|
|
4923
5003
|
return s.getRows({
|
|
4924
5004
|
startRow: n.start,
|
|
@@ -4928,12 +5008,12 @@ async function $e(s, e, t, i) {
|
|
|
4928
5008
|
});
|
|
4929
5009
|
}
|
|
4930
5010
|
function Zi(s, e, t) {
|
|
4931
|
-
const i =
|
|
5011
|
+
const i = J(s, e), n = t.get(i);
|
|
4932
5012
|
if (!n) return;
|
|
4933
5013
|
const r = s % e;
|
|
4934
5014
|
return n[r];
|
|
4935
5015
|
}
|
|
4936
|
-
const
|
|
5016
|
+
const Qi = 100;
|
|
4937
5017
|
class Sn extends A {
|
|
4938
5018
|
name = "serverSide";
|
|
4939
5019
|
get defaultConfig() {
|
|
@@ -4959,7 +5039,7 @@ class Sn extends A {
|
|
|
4959
5039
|
if (!(this.loadedBlocks.has(r) || this.loadingBlocks.has(r))) {
|
|
4960
5040
|
if (this.loadingBlocks.size >= (this.config.maxConcurrentRequests ?? 2))
|
|
4961
5041
|
break;
|
|
4962
|
-
this.loadingBlocks.add(r),
|
|
5042
|
+
this.loadingBlocks.add(r), je(this.dataSource, r, t, {}).then((o) => {
|
|
4963
5043
|
this.loadedBlocks.set(r, o.rows), this.totalRowCount = o.totalRowCount, this.loadingBlocks.delete(r), this.requestRender(), this.loadRequiredBlocks();
|
|
4964
5044
|
}).catch(() => {
|
|
4965
5045
|
this.loadingBlocks.delete(r);
|
|
@@ -4978,12 +5058,12 @@ class Sn extends A {
|
|
|
4978
5058
|
onScroll(e) {
|
|
4979
5059
|
this.dataSource && (this.loadRequiredBlocks(), this.scrollDebounceTimer && clearTimeout(this.scrollDebounceTimer), this.scrollDebounceTimer = setTimeout(() => {
|
|
4980
5060
|
this.loadRequiredBlocks();
|
|
4981
|
-
},
|
|
5061
|
+
}, Qi));
|
|
4982
5062
|
}
|
|
4983
5063
|
setDataSource(e) {
|
|
4984
5064
|
this.dataSource = e, this.loadedBlocks.clear(), this.loadingBlocks.clear();
|
|
4985
5065
|
const t = this.config.cacheBlockSize ?? 100;
|
|
4986
|
-
|
|
5066
|
+
je(e, 0, t, {}).then((i) => {
|
|
4987
5067
|
this.loadedBlocks.set(0, i.rows), this.totalRowCount = i.totalRowCount, this.requestRender();
|
|
4988
5068
|
});
|
|
4989
5069
|
}
|
|
@@ -4997,7 +5077,7 @@ class Sn extends A {
|
|
|
4997
5077
|
return this.totalRowCount;
|
|
4998
5078
|
}
|
|
4999
5079
|
isRowLoaded(e) {
|
|
5000
|
-
const t = this.config.cacheBlockSize ?? 100, i =
|
|
5080
|
+
const t = this.config.cacheBlockSize ?? 100, i = J(e, t);
|
|
5001
5081
|
return this.loadedBlocks.has(i);
|
|
5002
5082
|
}
|
|
5003
5083
|
getLoadedBlockCount() {
|
|
@@ -5023,7 +5103,7 @@ function ge(s, e, t = null, i = 0) {
|
|
|
5023
5103
|
}
|
|
5024
5104
|
return r;
|
|
5025
5105
|
}
|
|
5026
|
-
function
|
|
5106
|
+
function Ji() {
|
|
5027
5107
|
return /* @__PURE__ */ new Set();
|
|
5028
5108
|
}
|
|
5029
5109
|
function rt(s, e, t, i = null, n = 0) {
|
|
@@ -5049,7 +5129,7 @@ function en(s, e, t, i) {
|
|
|
5049
5129
|
r.add(n[o]);
|
|
5050
5130
|
return r;
|
|
5051
5131
|
}
|
|
5052
|
-
function
|
|
5132
|
+
function Ue(s, e = "children") {
|
|
5053
5133
|
if (!Array.isArray(s) || s.length === 0) return !1;
|
|
5054
5134
|
for (const t of s) {
|
|
5055
5135
|
if (!t) continue;
|
|
@@ -5073,6 +5153,20 @@ function tn(s) {
|
|
|
5073
5153
|
}
|
|
5074
5154
|
const nn = "@layer tbw-plugins{tbw-grid{.cell[data-field=__tbw_expander]{border-right:none!important;padding:0;display:flex;align-items:center;justify-content:flex-start}.header-row .cell[data-field=__tbw_expander]{display:none}.header-row .cell[data-field=__tbw_expander]+.cell{grid-column:1 / 3}.tree-cell-wrapper{display:inline-flex;align-items:center;padding-left:calc(var(--tbw-tree-depth, 0) * var(--tbw-tree-indent-width, var(--tbw-tree-toggle-size, 1.25em)))}.tree-expander{display:flex;align-items:center;justify-content:flex-start;width:100%;height:100%;box-sizing:border-box}.tree-toggle{cursor:pointer;user-select:none;display:inline-flex;align-items:center;justify-content:center;width:var(--tbw-tree-toggle-size, 1.25em);height:var(--tbw-tree-toggle-size, 1.25em);flex-shrink:0}.tree-toggle:hover{color:var(--tbw-tree-accent, var(--tbw-color-accent))}.tree-spacer{width:var(--tbw-tree-toggle-size, 1.25em);display:inline-block;flex-shrink:0}.data-grid-row.tbw-tree-slide-in{animation:tbw-tree-slide-in var(--tbw-animation-duration, .2s) var(--tbw-animation-easing, ease-out) forwards}.data-grid-row.tbw-tree-fade-in{animation:tbw-tree-fade-in var(--tbw-animation-duration, .2s) var(--tbw-animation-easing, ease-out) forwards}}@keyframes tbw-tree-slide-in{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes tbw-tree-fade-in{0%{opacity:0}to{opacity:1}}}";
|
|
5075
5155
|
class kn extends A {
|
|
5156
|
+
static manifest = {
|
|
5157
|
+
events: [
|
|
5158
|
+
{
|
|
5159
|
+
type: "tree-state-change",
|
|
5160
|
+
description: "Emitted when tree expansion state changes (toggle, expand all, collapse all)"
|
|
5161
|
+
}
|
|
5162
|
+
],
|
|
5163
|
+
queries: [
|
|
5164
|
+
{
|
|
5165
|
+
type: "canMoveRow",
|
|
5166
|
+
description: "Returns false for rows with children (parent nodes cannot be reordered)"
|
|
5167
|
+
}
|
|
5168
|
+
]
|
|
5169
|
+
};
|
|
5076
5170
|
name = "tree";
|
|
5077
5171
|
styles = nn;
|
|
5078
5172
|
get defaultConfig() {
|
|
@@ -5095,17 +5189,24 @@ class kn extends A {
|
|
|
5095
5189
|
detach() {
|
|
5096
5190
|
this.expandedKeys.clear(), this.initialExpansionDone = !1, this.flattenedRows = [], this.rowKeyMap.clear(), this.previousVisibleKeys.clear(), this.keysToAnimate.clear(), this.sortState = null;
|
|
5097
5191
|
}
|
|
5192
|
+
handleQuery(e) {
|
|
5193
|
+
if (e.type === "canMoveRow") {
|
|
5194
|
+
const t = e.context;
|
|
5195
|
+
if (t && t[this.config.childrenField ?? "children"]?.length > 0)
|
|
5196
|
+
return !1;
|
|
5197
|
+
}
|
|
5198
|
+
}
|
|
5098
5199
|
get animationStyle() {
|
|
5099
5200
|
return this.isAnimationEnabled ? this.config.animation ?? "slide" : !1;
|
|
5100
5201
|
}
|
|
5101
5202
|
detect(e) {
|
|
5102
5203
|
if (!this.config.autoDetect) return !1;
|
|
5103
5204
|
const t = e, i = this.config.childrenField ?? tn(t) ?? "children";
|
|
5104
|
-
return
|
|
5205
|
+
return Ue(t, i);
|
|
5105
5206
|
}
|
|
5106
5207
|
processRows(e) {
|
|
5107
5208
|
const t = this.config.childrenField ?? "children", i = e;
|
|
5108
|
-
if (!
|
|
5209
|
+
if (!Ue(i, t))
|
|
5109
5210
|
return this.flattenedRows = [], this.rowKeyMap.clear(), this.previousVisibleKeys.clear(), [...e];
|
|
5110
5211
|
let n = this.withStableKeys(i);
|
|
5111
5212
|
this.sortState && (n = this.sortTree(n, this.sortState.field, this.sortState.direction)), this.config.defaultExpanded && !this.initialExpansionDone && (this.expandedKeys = ge(n, this.config), this.initialExpansionDone = !0), this.flattenedRows = this.flattenTree(n, this.expandedKeys), this.rowKeyMap.clear(), this.keysToAnimate.clear();
|
|
@@ -5230,13 +5331,13 @@ class kn extends A {
|
|
|
5230
5331
|
this.expandedKeys.delete(e), this.requestRender();
|
|
5231
5332
|
}
|
|
5232
5333
|
toggle(e) {
|
|
5233
|
-
this.expandedKeys = ce(this.expandedKeys, e), this.requestRender();
|
|
5334
|
+
this.expandedKeys = ce(this.expandedKeys, e), this.emitPluginEvent("tree-state-change", { expandedKeys: [...this.expandedKeys] }), this.requestRender();
|
|
5234
5335
|
}
|
|
5235
5336
|
expandAll() {
|
|
5236
|
-
this.expandedKeys = ge(this.rows, this.config), this.requestRender();
|
|
5337
|
+
this.expandedKeys = ge(this.rows, this.config), this.emitPluginEvent("tree-state-change", { expandedKeys: [...this.expandedKeys] }), this.requestRender();
|
|
5237
5338
|
}
|
|
5238
5339
|
collapseAll() {
|
|
5239
|
-
this.expandedKeys =
|
|
5340
|
+
this.expandedKeys = Ji(), this.emitPluginEvent("tree-state-change", { expandedKeys: [...this.expandedKeys] }), this.requestRender();
|
|
5240
5341
|
}
|
|
5241
5342
|
isExpanded(e) {
|
|
5242
5343
|
return this.expandedKeys.has(e);
|
|
@@ -5263,7 +5364,7 @@ function rn(s, e, t) {
|
|
|
5263
5364
|
redoStack: []
|
|
5264
5365
|
};
|
|
5265
5366
|
}
|
|
5266
|
-
function
|
|
5367
|
+
function Ye(s) {
|
|
5267
5368
|
if (s.undoStack.length === 0)
|
|
5268
5369
|
return { newState: s, action: null };
|
|
5269
5370
|
const e = [...s.undoStack], t = e.pop();
|
|
@@ -5275,7 +5376,7 @@ function Ue(s) {
|
|
|
5275
5376
|
action: t
|
|
5276
5377
|
} : { newState: s, action: null };
|
|
5277
5378
|
}
|
|
5278
|
-
function
|
|
5379
|
+
function Xe(s) {
|
|
5279
5380
|
if (s.redoStack.length === 0)
|
|
5280
5381
|
return { newState: s, action: null };
|
|
5281
5382
|
const e = [...s.redoStack], t = e.pop();
|
|
@@ -5318,13 +5419,21 @@ class An extends A {
|
|
|
5318
5419
|
}
|
|
5319
5420
|
undoStack = [];
|
|
5320
5421
|
redoStack = [];
|
|
5422
|
+
attach(e) {
|
|
5423
|
+
super.attach(e), this.on(
|
|
5424
|
+
"cell-edit-committed",
|
|
5425
|
+
(t) => {
|
|
5426
|
+
this.recordEdit(t.rowIndex, t.field, t.oldValue, t.newValue);
|
|
5427
|
+
}
|
|
5428
|
+
);
|
|
5429
|
+
}
|
|
5321
5430
|
detach() {
|
|
5322
5431
|
this.undoStack = [], this.redoStack = [];
|
|
5323
5432
|
}
|
|
5324
5433
|
onKeyDown(e) {
|
|
5325
5434
|
const t = (e.ctrlKey || e.metaKey) && e.key === "z" && !e.shiftKey, i = (e.ctrlKey || e.metaKey) && (e.key === "y" || e.key === "z" && e.shiftKey);
|
|
5326
5435
|
if (t) {
|
|
5327
|
-
const n =
|
|
5436
|
+
const n = Ye({ undoStack: this.undoStack, redoStack: this.redoStack });
|
|
5328
5437
|
if (n.action) {
|
|
5329
5438
|
const r = this.rows;
|
|
5330
5439
|
r[n.action.rowIndex] && (r[n.action.rowIndex][n.action.field] = n.action.oldValue), this.undoStack = n.newState.undoStack, this.redoStack = n.newState.redoStack, this.emit("undo", {
|
|
@@ -5335,7 +5444,7 @@ class An extends A {
|
|
|
5335
5444
|
return !0;
|
|
5336
5445
|
}
|
|
5337
5446
|
if (i) {
|
|
5338
|
-
const n =
|
|
5447
|
+
const n = Xe({ undoStack: this.undoStack, redoStack: this.redoStack });
|
|
5339
5448
|
if (n.action) {
|
|
5340
5449
|
const r = this.rows;
|
|
5341
5450
|
r[n.action.rowIndex] && (r[n.action.rowIndex][n.action.field] = n.action.newValue), this.undoStack = n.newState.undoStack, this.redoStack = n.newState.redoStack, this.emit("redo", {
|
|
@@ -5356,7 +5465,7 @@ class An extends A {
|
|
|
5356
5465
|
this.undoStack = o.undoStack, this.redoStack = o.redoStack;
|
|
5357
5466
|
}
|
|
5358
5467
|
undo() {
|
|
5359
|
-
const e =
|
|
5468
|
+
const e = Ye({ undoStack: this.undoStack, redoStack: this.redoStack });
|
|
5360
5469
|
if (e.action) {
|
|
5361
5470
|
const t = this.rows;
|
|
5362
5471
|
t[e.action.rowIndex] && (t[e.action.rowIndex][e.action.field] = e.action.oldValue), this.undoStack = e.newState.undoStack, this.redoStack = e.newState.redoStack, this.requestRender();
|
|
@@ -5364,7 +5473,7 @@ class An extends A {
|
|
|
5364
5473
|
return e.action;
|
|
5365
5474
|
}
|
|
5366
5475
|
redo() {
|
|
5367
|
-
const e =
|
|
5476
|
+
const e = Xe({ undoStack: this.undoStack, redoStack: this.redoStack });
|
|
5368
5477
|
if (e.action) {
|
|
5369
5478
|
const t = this.rows;
|
|
5370
5479
|
t[e.action.rowIndex] && (t[e.action.rowIndex][e.action.field] = e.action.newValue), this.undoStack = e.newState.undoStack, this.redoStack = e.newState.redoStack, this.requestRender();
|
|
@@ -5389,7 +5498,7 @@ class An extends A {
|
|
|
5389
5498
|
}
|
|
5390
5499
|
}
|
|
5391
5500
|
const dn = '@layer tbw-plugins{.tbw-visibility-content{display:flex;flex-direction:column;height:100%}.tbw-visibility-list{flex:1;overflow-y:auto;padding:var(--tbw-panel-padding, var(--tbw-spacing-md, .5rem))}.tbw-visibility-row{display:flex;align-items:center;gap:var(--tbw-panel-gap, var(--tbw-spacing-md, .5rem));padding:var(--tbw-menu-item-padding, .375rem .25rem);cursor:pointer;font-size:var(--tbw-font-size-sm, .8125rem);border-radius:var(--tbw-border-radius, .25rem);position:relative}.tbw-visibility-row:hover{background:var(--tbw-visibility-hover, var(--tbw-color-row-hover))}.tbw-visibility-row input[type=checkbox]{cursor:pointer}.tbw-visibility-row.locked span{color:var(--tbw-color-fg-muted)}.tbw-visibility-handle{cursor:grab;color:var(--tbw-color-fg-muted);font-size:var(--tbw-font-size-2xs, .625rem);letter-spacing:-2px;user-select:none;flex-shrink:0}.tbw-visibility-row.reorderable:hover .tbw-visibility-handle{color:var(--tbw-color-fg)}.tbw-visibility-label{display:flex;align-items:center;gap:var(--tbw-panel-gap, var(--tbw-spacing-md, .5rem));flex:1;cursor:pointer}.tbw-visibility-row.dragging{opacity:.5;cursor:grabbing}.tbw-visibility-row.drop-before:before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--tbw-visibility-indicator, var(--tbw-color-accent))}.tbw-visibility-row.drop-after:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--tbw-visibility-indicator, var(--tbw-color-accent))}.tbw-visibility-show-all{margin:var(--tbw-panel-padding, var(--tbw-spacing-md, .5rem));padding:var(--tbw-button-padding, .5rem .75rem);border:1px solid var(--tbw-visibility-border, var(--tbw-color-border));border-radius:var(--tbw-border-radius, .25rem);background:var(--tbw-visibility-btn-bg, var(--tbw-color-header-bg));color:var(--tbw-color-fg);cursor:pointer;font-size:var(--tbw-font-size-sm, .8125rem)}.tbw-visibility-show-all:hover{background:var(--tbw-visibility-hover, var(--tbw-color-row-hover))}}';
|
|
5392
|
-
function
|
|
5501
|
+
function Ze(s) {
|
|
5393
5502
|
const e = s.meta ?? {};
|
|
5394
5503
|
return e.lockPosition !== !0 && e.suppressMovable !== !0;
|
|
5395
5504
|
}
|
|
@@ -5489,7 +5598,7 @@ class B extends A {
|
|
|
5489
5598
|
const i = this.grid.getAllColumns().filter((n) => !n.utility);
|
|
5490
5599
|
for (let n = 0; n < i.length; n++) {
|
|
5491
5600
|
const r = i[n], o = r.header || r.field, a = document.createElement("div");
|
|
5492
|
-
a.className = r.lockVisible ? "tbw-visibility-row locked" : "tbw-visibility-row", a.setAttribute("data-field", r.field), a.setAttribute("data-index", String(n)), t &&
|
|
5601
|
+
a.className = r.lockVisible ? "tbw-visibility-row locked" : "tbw-visibility-row", a.setAttribute("data-field", r.field), a.setAttribute("data-index", String(n)), t && Ze(r) && (a.draggable = !0, a.classList.add("reorderable"), this.setupDragListeners(a, r.field, n, e));
|
|
5493
5602
|
const l = document.createElement("label");
|
|
5494
5603
|
l.className = "tbw-visibility-label";
|
|
5495
5604
|
const d = document.createElement("input");
|
|
@@ -5497,7 +5606,7 @@ class B extends A {
|
|
|
5497
5606
|
this.grid.toggleColumnVisibility(r.field), setTimeout(() => this.rebuildToggles(e), 0);
|
|
5498
5607
|
});
|
|
5499
5608
|
const c = document.createElement("span");
|
|
5500
|
-
if (c.textContent = o, l.appendChild(d), l.appendChild(c), t &&
|
|
5609
|
+
if (c.textContent = o, l.appendChild(d), l.appendChild(c), t && Ze(r)) {
|
|
5501
5610
|
const u = document.createElement("span");
|
|
5502
5611
|
u.className = "tbw-visibility-handle", this.setIcon(u, this.resolveIcon("dragHandle")), u.title = "Drag to reorder", a.appendChild(u);
|
|
5503
5612
|
}
|
|
@@ -5540,7 +5649,7 @@ export {
|
|
|
5540
5649
|
A as BaseGridPlugin,
|
|
5541
5650
|
un as ClipboardPlugin,
|
|
5542
5651
|
hn as ColumnVirtualizationPlugin,
|
|
5543
|
-
|
|
5652
|
+
Je as ContextMenuPlugin,
|
|
5544
5653
|
Ln as DEFAULT_ANIMATION_CONFIG,
|
|
5545
5654
|
st as DEFAULT_GRID_ICONS,
|
|
5546
5655
|
Fn as DGEvents,
|
|
@@ -5553,20 +5662,20 @@ export {
|
|
|
5553
5662
|
Mn as GridClasses,
|
|
5554
5663
|
Nn as GridDataAttrs,
|
|
5555
5664
|
qn as GridElement,
|
|
5556
|
-
|
|
5665
|
+
Kn as GridSelectors,
|
|
5557
5666
|
pn as GroupingColumnsPlugin,
|
|
5558
5667
|
mn as GroupingRowsPlugin,
|
|
5559
5668
|
et as MasterDetailPlugin,
|
|
5560
5669
|
wn as MultiSortPlugin,
|
|
5561
|
-
|
|
5670
|
+
Hn as PLUGIN_QUERIES,
|
|
5562
5671
|
bn as PinnedColumnsPlugin,
|
|
5563
5672
|
vn as PinnedRowsPlugin,
|
|
5564
5673
|
G as PivotPlugin,
|
|
5565
5674
|
zn as PluginEvents,
|
|
5566
|
-
|
|
5675
|
+
On as PluginManager,
|
|
5567
5676
|
yn as PrintPlugin,
|
|
5568
5677
|
Gi as ROW_DRAG_HANDLE_FIELD,
|
|
5569
|
-
|
|
5678
|
+
Gn as RenderPhase,
|
|
5570
5679
|
xn as ReorderPlugin,
|
|
5571
5680
|
Cn as ResponsivePlugin,
|
|
5572
5681
|
En as RowReorderPlugin,
|
|
@@ -5575,12 +5684,12 @@ export {
|
|
|
5575
5684
|
kn as TreePlugin,
|
|
5576
5685
|
An as UndoRedoPlugin,
|
|
5577
5686
|
B as VisibilityPlugin,
|
|
5578
|
-
|
|
5579
|
-
|
|
5580
|
-
|
|
5687
|
+
Bn as builtInSort,
|
|
5688
|
+
Vn as createGrid,
|
|
5689
|
+
Wn as defaultComparator,
|
|
5581
5690
|
_t as defaultEditorFor,
|
|
5582
5691
|
mt as defaultPasteHandler,
|
|
5583
5692
|
Mi as printGridIsolated,
|
|
5584
|
-
|
|
5693
|
+
$n as queryGrid
|
|
5585
5694
|
};
|
|
5586
5695
|
//# sourceMappingURL=all.js.map
|