@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.
Files changed (82) hide show
  1. package/all.d.ts +1 -0
  2. package/all.d.ts.map +1 -1
  3. package/all.js +997 -710
  4. package/all.js.map +1 -1
  5. package/index.js +642 -599
  6. package/index.js.map +1 -1
  7. package/lib/core/grid.d.ts.map +1 -1
  8. package/lib/core/internal/header.d.ts +7 -0
  9. package/lib/core/internal/header.d.ts.map +1 -1
  10. package/lib/core/types.d.ts +151 -0
  11. package/lib/core/types.d.ts.map +1 -1
  12. package/lib/plugins/clipboard/index.js +19 -16
  13. package/lib/plugins/clipboard/index.js.map +1 -1
  14. package/lib/plugins/column-virtualization/index.js +42 -39
  15. package/lib/plugins/column-virtualization/index.js.map +1 -1
  16. package/lib/plugins/context-menu/index.js +25 -22
  17. package/lib/plugins/context-menu/index.js.map +1 -1
  18. package/lib/plugins/editing/EditingPlugin.d.ts.map +1 -1
  19. package/lib/plugins/editing/index.js +53 -48
  20. package/lib/plugins/editing/index.js.map +1 -1
  21. package/lib/plugins/export/index.js +23 -20
  22. package/lib/plugins/export/index.js.map +1 -1
  23. package/lib/plugins/filtering/FilteringPlugin.d.ts +11 -1
  24. package/lib/plugins/filtering/FilteringPlugin.d.ts.map +1 -1
  25. package/lib/plugins/filtering/index.js +186 -150
  26. package/lib/plugins/filtering/index.js.map +1 -1
  27. package/lib/plugins/grouping-columns/index.js +21 -18
  28. package/lib/plugins/grouping-columns/index.js.map +1 -1
  29. package/lib/plugins/grouping-rows/index.js +67 -64
  30. package/lib/plugins/grouping-rows/index.js.map +1 -1
  31. package/lib/plugins/master-detail/index.js +52 -49
  32. package/lib/plugins/master-detail/index.js.map +1 -1
  33. package/lib/plugins/multi-sort/index.js +18 -15
  34. package/lib/plugins/multi-sort/index.js.map +1 -1
  35. package/lib/plugins/pinned-columns/index.js +25 -22
  36. package/lib/plugins/pinned-columns/index.js.map +1 -1
  37. package/lib/plugins/pinned-rows/index.js +26 -23
  38. package/lib/plugins/pinned-rows/index.js.map +1 -1
  39. package/lib/plugins/pivot/index.js +50 -47
  40. package/lib/plugins/pivot/index.js.map +1 -1
  41. package/lib/plugins/print/PrintPlugin.d.ts +98 -0
  42. package/lib/plugins/print/PrintPlugin.d.ts.map +1 -0
  43. package/lib/plugins/print/index.d.ts +10 -0
  44. package/lib/plugins/print/index.d.ts.map +1 -0
  45. package/lib/plugins/print/index.js +626 -0
  46. package/lib/plugins/print/index.js.map +1 -0
  47. package/lib/plugins/print/print-isolated.d.ts +26 -0
  48. package/lib/plugins/print/print-isolated.d.ts.map +1 -0
  49. package/lib/plugins/print/types.d.ts +147 -0
  50. package/lib/plugins/print/types.d.ts.map +1 -0
  51. package/lib/plugins/reorder/index.js +25 -22
  52. package/lib/plugins/reorder/index.js.map +1 -1
  53. package/lib/plugins/responsive/index.js +20 -17
  54. package/lib/plugins/responsive/index.js.map +1 -1
  55. package/lib/plugins/row-reorder/index.js +39 -36
  56. package/lib/plugins/row-reorder/index.js.map +1 -1
  57. package/lib/plugins/selection/SelectionPlugin.d.ts.map +1 -1
  58. package/lib/plugins/selection/index.js +115 -101
  59. package/lib/plugins/selection/index.js.map +1 -1
  60. package/lib/plugins/server-side/index.js +35 -32
  61. package/lib/plugins/server-side/index.js.map +1 -1
  62. package/lib/plugins/tree/index.js +26 -23
  63. package/lib/plugins/tree/index.js.map +1 -1
  64. package/lib/plugins/undo-redo/index.js +23 -20
  65. package/lib/plugins/undo-redo/index.js.map +1 -1
  66. package/lib/plugins/visibility/index.js +22 -19
  67. package/lib/plugins/visibility/index.js.map +1 -1
  68. package/package.json +1 -1
  69. package/public.d.ts +1 -1
  70. package/public.d.ts.map +1 -1
  71. package/umd/grid.all.umd.js +98 -24
  72. package/umd/grid.all.umd.js.map +1 -1
  73. package/umd/grid.umd.js +11 -11
  74. package/umd/grid.umd.js.map +1 -1
  75. package/umd/plugins/editing.umd.js +1 -1
  76. package/umd/plugins/editing.umd.js.map +1 -1
  77. package/umd/plugins/filtering.umd.js +1 -1
  78. package/umd/plugins/filtering.umd.js.map +1 -1
  79. package/umd/plugins/print.umd.js +76 -0
  80. package/umd/plugins/print.umd.js.map +1 -0
  81. package/umd/plugins/selection.umd.js +2 -2
  82. package/umd/plugins/selection.umd.js.map +1 -1
@@ -1,4 +1,4 @@
1
- const C = {
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 I {
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 { ...C, ...e };
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 M(r, e) {
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 = C.submenuArrow) {
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 = M(s, e);
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 f = v(s.subMenu, e), c = x(f, e, t, n);
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 y(r, e, t) {
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 h = null, b = null, m = null, p = 0;
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 H extends I {
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)), h || (h = () => {
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", h)), b || (b = (e) => {
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) && (h && (document.removeEventListener("click", h), h = null), b && (document.removeEventListener("keydown", b), b = null), m && (m.remove(), m = null));
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), f = parseInt(i.getAttribute("data-col") ?? "-1", 10), c = this.columns[f], E = this.rows[a];
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: f,
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), f = this.columns[a];
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: f,
453
+ column: h,
451
454
  columnIndex: a,
452
- field: f?.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), y(this.menuElement, l.clientX, l.clientY), this.isOpen = !0, this.emit("context-menu-open", { params: u, items: o }));
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), y(this.menuElement, e, t), this.isOpen = !0;
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
- H as ContextMenuPlugin
519
+ L as ContextMenuPlugin
517
520
  };
518
521
  //# sourceMappingURL=index.js.map