@toolbox-web/grid 1.3.0 → 1.4.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/all.d.ts +1 -0
- package/all.d.ts.map +1 -1
- package/all.js +997 -710
- package/all.js.map +1 -1
- package/index.js +642 -599
- package/index.js.map +1 -1
- package/lib/core/grid.d.ts.map +1 -1
- package/lib/core/internal/header.d.ts +7 -0
- package/lib/core/internal/header.d.ts.map +1 -1
- package/lib/core/types.d.ts +151 -0
- package/lib/core/types.d.ts.map +1 -1
- package/lib/plugins/clipboard/index.js +19 -16
- package/lib/plugins/clipboard/index.js.map +1 -1
- package/lib/plugins/column-virtualization/index.js +42 -39
- package/lib/plugins/column-virtualization/index.js.map +1 -1
- package/lib/plugins/context-menu/index.js +25 -22
- package/lib/plugins/context-menu/index.js.map +1 -1
- package/lib/plugins/editing/EditingPlugin.d.ts.map +1 -1
- package/lib/plugins/editing/index.js +53 -48
- package/lib/plugins/editing/index.js.map +1 -1
- package/lib/plugins/export/index.js +23 -20
- package/lib/plugins/export/index.js.map +1 -1
- package/lib/plugins/filtering/FilteringPlugin.d.ts +11 -1
- package/lib/plugins/filtering/FilteringPlugin.d.ts.map +1 -1
- package/lib/plugins/filtering/index.js +186 -150
- package/lib/plugins/filtering/index.js.map +1 -1
- package/lib/plugins/grouping-columns/index.js +21 -18
- package/lib/plugins/grouping-columns/index.js.map +1 -1
- package/lib/plugins/grouping-rows/index.js +67 -64
- package/lib/plugins/grouping-rows/index.js.map +1 -1
- package/lib/plugins/master-detail/index.js +52 -49
- package/lib/plugins/master-detail/index.js.map +1 -1
- package/lib/plugins/multi-sort/index.js +18 -15
- package/lib/plugins/multi-sort/index.js.map +1 -1
- package/lib/plugins/pinned-columns/index.js +25 -22
- package/lib/plugins/pinned-columns/index.js.map +1 -1
- package/lib/plugins/pinned-rows/index.js +26 -23
- package/lib/plugins/pinned-rows/index.js.map +1 -1
- package/lib/plugins/pivot/index.js +50 -47
- package/lib/plugins/pivot/index.js.map +1 -1
- package/lib/plugins/print/PrintPlugin.d.ts +98 -0
- package/lib/plugins/print/PrintPlugin.d.ts.map +1 -0
- package/lib/plugins/print/index.d.ts +10 -0
- package/lib/plugins/print/index.d.ts.map +1 -0
- package/lib/plugins/print/index.js +626 -0
- package/lib/plugins/print/index.js.map +1 -0
- package/lib/plugins/print/print-isolated.d.ts +26 -0
- package/lib/plugins/print/print-isolated.d.ts.map +1 -0
- package/lib/plugins/print/types.d.ts +147 -0
- package/lib/plugins/print/types.d.ts.map +1 -0
- package/lib/plugins/reorder/index.js +25 -22
- package/lib/plugins/reorder/index.js.map +1 -1
- package/lib/plugins/responsive/index.js +20 -17
- package/lib/plugins/responsive/index.js.map +1 -1
- package/lib/plugins/row-reorder/index.js +39 -36
- package/lib/plugins/row-reorder/index.js.map +1 -1
- package/lib/plugins/selection/SelectionPlugin.d.ts.map +1 -1
- package/lib/plugins/selection/index.js +115 -101
- package/lib/plugins/selection/index.js.map +1 -1
- package/lib/plugins/server-side/index.js +35 -32
- package/lib/plugins/server-side/index.js.map +1 -1
- package/lib/plugins/tree/index.js +26 -23
- package/lib/plugins/tree/index.js.map +1 -1
- package/lib/plugins/undo-redo/index.js +23 -20
- package/lib/plugins/undo-redo/index.js.map +1 -1
- package/lib/plugins/visibility/index.js +22 -19
- package/lib/plugins/visibility/index.js.map +1 -1
- package/package.json +1 -1
- package/public.d.ts +1 -1
- package/public.d.ts.map +1 -1
- package/umd/grid.all.umd.js +98 -24
- package/umd/grid.all.umd.js.map +1 -1
- package/umd/grid.umd.js +11 -11
- package/umd/grid.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/print.umd.js +76 -0
- package/umd/plugins/print.umd.js.map +1 -0
- package/umd/plugins/selection.umd.js +2 -2
- package/umd/plugins/selection.umd.js.map +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const y = '<svg viewBox="0 0 16 16" width="12" height="12"><path fill="currentColor" d="M6 10.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5zm-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5z"/></svg>', I = {
|
|
2
2
|
expand: "▶",
|
|
3
3
|
collapse: "▼",
|
|
4
4
|
sortAsc: "▲",
|
|
@@ -6,9 +6,12 @@ const C = {
|
|
|
6
6
|
sortNone: "⇅",
|
|
7
7
|
submenuArrow: "▶",
|
|
8
8
|
dragHandle: "⋮⋮",
|
|
9
|
-
toolPanel: "☰"
|
|
9
|
+
toolPanel: "☰",
|
|
10
|
+
filter: y,
|
|
11
|
+
filterActive: y,
|
|
12
|
+
print: "🖨️"
|
|
10
13
|
};
|
|
11
|
-
class
|
|
14
|
+
class M {
|
|
12
15
|
/**
|
|
13
16
|
* Plugin dependencies - declare other plugins this one requires.
|
|
14
17
|
*
|
|
@@ -232,7 +235,7 @@ class I {
|
|
|
232
235
|
*/
|
|
233
236
|
get gridIcons() {
|
|
234
237
|
const e = this.grid?.gridConfig?.icons ?? {};
|
|
235
|
-
return { ...
|
|
238
|
+
return { ...I, ...e };
|
|
236
239
|
}
|
|
237
240
|
// #region Animation Helpers
|
|
238
241
|
/**
|
|
@@ -312,10 +315,10 @@ const g = "@layer tbw-plugins{.tbw-context-menu{position:fixed;background:var(--
|
|
|
312
315
|
function v(r, e) {
|
|
313
316
|
return (typeof r == "function" ? r(e) : r).filter((n) => !(n.hidden === !0 || typeof n.hidden == "function" && n.hidden(e)));
|
|
314
317
|
}
|
|
315
|
-
function
|
|
318
|
+
function H(r, e) {
|
|
316
319
|
return r.disabled === !0 ? !0 : typeof r.disabled == "function" ? r.disabled(e) : !1;
|
|
317
320
|
}
|
|
318
|
-
function x(r, e, t, n =
|
|
321
|
+
function x(r, e, t, n = I.submenuArrow) {
|
|
319
322
|
const l = document.createElement("div");
|
|
320
323
|
l.className = "tbw-context-menu", l.setAttribute("role", "menu");
|
|
321
324
|
for (const s of r) {
|
|
@@ -326,7 +329,7 @@ function x(r, e, t, n = C.submenuArrow) {
|
|
|
326
329
|
}
|
|
327
330
|
const i = document.createElement("div");
|
|
328
331
|
i.className = "tbw-context-menu-item", s.cssClass && i.classList.add(s.cssClass), i.setAttribute("role", "menuitem"), i.setAttribute("data-id", s.id);
|
|
329
|
-
const d =
|
|
332
|
+
const d = H(s, e);
|
|
330
333
|
if (d && (i.classList.add("disabled"), i.setAttribute("aria-disabled", "true")), s.icon) {
|
|
331
334
|
const o = document.createElement("span");
|
|
332
335
|
o.className = "tbw-context-menu-icon", o.innerHTML = s.icon, i.appendChild(o);
|
|
@@ -340,7 +343,7 @@ function x(r, e, t, n = C.submenuArrow) {
|
|
|
340
343
|
const o = document.createElement("span");
|
|
341
344
|
o.className = "tbw-context-menu-arrow", typeof n == "string" ? o.innerHTML = n : n instanceof HTMLElement && o.appendChild(n.cloneNode(!0)), i.appendChild(o), i.addEventListener("mouseenter", () => {
|
|
342
345
|
if (i.querySelector(".tbw-context-menu") || !s.subMenu) return;
|
|
343
|
-
const
|
|
346
|
+
const h = v(s.subMenu, e), c = x(h, e, t, n);
|
|
344
347
|
c.classList.add("tbw-context-submenu"), c.style.position = "absolute", c.style.left = "100%", c.style.top = "0", i.style.position = "relative", i.appendChild(c);
|
|
345
348
|
}), i.addEventListener("mouseleave", () => {
|
|
346
349
|
const a = i.querySelector(".tbw-context-menu");
|
|
@@ -353,13 +356,13 @@ function x(r, e, t, n = C.submenuArrow) {
|
|
|
353
356
|
}
|
|
354
357
|
return l;
|
|
355
358
|
}
|
|
356
|
-
function
|
|
359
|
+
function C(r, e, t) {
|
|
357
360
|
r.style.position = "fixed", r.style.left = `${e}px`, r.style.top = `${t}px`, r.style.visibility = "hidden", r.style.zIndex = "10000";
|
|
358
361
|
const n = r.getBoundingClientRect(), l = window.innerWidth, s = window.innerHeight;
|
|
359
362
|
let i = e, d = t;
|
|
360
363
|
e + n.width > l && (i = e - n.width), t + n.height > s && (d = t - n.height), i = Math.max(0, i), d = Math.max(0, d), r.style.left = `${i}px`, r.style.top = `${d}px`, r.style.visibility = "visible";
|
|
361
364
|
}
|
|
362
|
-
let
|
|
365
|
+
let f = null, b = null, m = null, p = 0;
|
|
363
366
|
const w = [
|
|
364
367
|
{
|
|
365
368
|
id: "copy",
|
|
@@ -378,7 +381,7 @@ const w = [
|
|
|
378
381
|
}
|
|
379
382
|
}
|
|
380
383
|
];
|
|
381
|
-
class
|
|
384
|
+
class L extends M {
|
|
382
385
|
/** @internal */
|
|
383
386
|
name = "contextMenu";
|
|
384
387
|
/** @internal */
|
|
@@ -405,9 +408,9 @@ class H extends I {
|
|
|
405
408
|
// #endregion
|
|
406
409
|
// #region Private Methods
|
|
407
410
|
installGlobalHandlers() {
|
|
408
|
-
!m && typeof document < "u" && typeof g == "string" && g && (m = document.createElement("style"), m.id = "tbw-context-menu-styles", m.textContent = g, document.head.appendChild(m)),
|
|
411
|
+
!m && typeof document < "u" && typeof g == "string" && g && (m = document.createElement("style"), m.id = "tbw-context-menu-styles", m.textContent = g, document.head.appendChild(m)), f || (f = () => {
|
|
409
412
|
document.querySelectorAll(".tbw-context-menu").forEach((t) => t.remove());
|
|
410
|
-
}, document.addEventListener("click",
|
|
413
|
+
}, document.addEventListener("click", f)), b || (b = (e) => {
|
|
411
414
|
e.key === "Escape" && document.querySelectorAll(".tbw-context-menu").forEach((n) => n.remove());
|
|
412
415
|
}, document.addEventListener("keydown", b));
|
|
413
416
|
}
|
|
@@ -416,7 +419,7 @@ class H extends I {
|
|
|
416
419
|
* Uses reference counting to ensure handlers persist while any grid uses the plugin.
|
|
417
420
|
*/
|
|
418
421
|
uninstallGlobalHandlers() {
|
|
419
|
-
p--, !(p > 0) && (
|
|
422
|
+
p--, !(p > 0) && (f && (document.removeEventListener("click", f), f = null), b && (document.removeEventListener("keydown", b), b = null), m && (m.remove(), m = null));
|
|
420
423
|
}
|
|
421
424
|
// #endregion
|
|
422
425
|
// #region Hooks
|
|
@@ -431,25 +434,25 @@ class H extends I {
|
|
|
431
434
|
const s = l.target, i = s.closest("[data-row][data-col]"), d = s.closest(".header-cell");
|
|
432
435
|
let u;
|
|
433
436
|
if (i) {
|
|
434
|
-
const a = parseInt(i.getAttribute("data-row") ?? "-1", 10),
|
|
437
|
+
const a = parseInt(i.getAttribute("data-row") ?? "-1", 10), h = parseInt(i.getAttribute("data-col") ?? "-1", 10), c = this.columns[h], E = this.rows[a];
|
|
435
438
|
u = {
|
|
436
439
|
row: E,
|
|
437
440
|
rowIndex: a,
|
|
438
441
|
column: c,
|
|
439
|
-
columnIndex:
|
|
442
|
+
columnIndex: h,
|
|
440
443
|
field: c?.field ?? "",
|
|
441
444
|
value: E?.[c?.field] ?? null,
|
|
442
445
|
isHeader: !1,
|
|
443
446
|
event: l
|
|
444
447
|
};
|
|
445
448
|
} else if (d) {
|
|
446
|
-
const a = parseInt(d.getAttribute("data-col") ?? "-1", 10),
|
|
449
|
+
const a = parseInt(d.getAttribute("data-col") ?? "-1", 10), h = this.columns[a];
|
|
447
450
|
u = {
|
|
448
451
|
row: null,
|
|
449
452
|
rowIndex: -1,
|
|
450
|
-
column:
|
|
453
|
+
column: h,
|
|
451
454
|
columnIndex: a,
|
|
452
|
-
field:
|
|
455
|
+
field: h?.field ?? "",
|
|
453
456
|
value: null,
|
|
454
457
|
isHeader: !0,
|
|
455
458
|
event: l
|
|
@@ -465,7 +468,7 @@ class H extends I {
|
|
|
465
468
|
a.action && a.action(u), this.menuElement?.remove(), this.menuElement = null, this.isOpen = !1;
|
|
466
469
|
},
|
|
467
470
|
this.gridIcons.submenuArrow
|
|
468
|
-
), document.body.appendChild(this.menuElement),
|
|
471
|
+
), document.body.appendChild(this.menuElement), C(this.menuElement, l.clientX, l.clientY), this.isOpen = !0, this.emit("context-menu-open", { params: u, items: o }));
|
|
469
472
|
}));
|
|
470
473
|
}
|
|
471
474
|
// #endregion
|
|
@@ -494,7 +497,7 @@ class H extends I {
|
|
|
494
497
|
i.action && i.action(l), this.menuElement?.remove(), this.menuElement = null, this.isOpen = !1;
|
|
495
498
|
},
|
|
496
499
|
this.gridIcons.submenuArrow
|
|
497
|
-
), document.body.appendChild(this.menuElement),
|
|
500
|
+
), document.body.appendChild(this.menuElement), C(this.menuElement, e, t), this.isOpen = !0;
|
|
498
501
|
}
|
|
499
502
|
/**
|
|
500
503
|
* Hide the context menu.
|
|
@@ -513,6 +516,6 @@ class H extends I {
|
|
|
513
516
|
// Styles are injected globally via installGlobalHandlers() since menu renders in document.body
|
|
514
517
|
}
|
|
515
518
|
export {
|
|
516
|
-
|
|
519
|
+
L as ContextMenuPlugin
|
|
517
520
|
};
|
|
518
521
|
//# sourceMappingURL=index.js.map
|