@toolbox-web/grid 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +80 -22
  2. package/all.js +619 -571
  3. package/all.js.map +1 -1
  4. package/index.js +362 -302
  5. package/index.js.map +1 -1
  6. package/lib/core/grid.d.ts +64 -1
  7. package/lib/core/grid.d.ts.map +1 -1
  8. package/lib/core/internal/row-animation.d.ts +37 -0
  9. package/lib/core/internal/row-animation.d.ts.map +1 -0
  10. package/lib/core/types.d.ts +17 -0
  11. package/lib/core/types.d.ts.map +1 -1
  12. package/lib/plugins/clipboard/index.js +82 -76
  13. package/lib/plugins/clipboard/index.js.map +1 -1
  14. package/lib/plugins/clipboard/types.d.ts +1 -0
  15. package/lib/plugins/clipboard/types.d.ts.map +1 -1
  16. package/lib/plugins/column-virtualization/index.js +43 -41
  17. package/lib/plugins/column-virtualization/index.js.map +1 -1
  18. package/lib/plugins/context-menu/index.js +24 -22
  19. package/lib/plugins/context-menu/index.js.map +1 -1
  20. package/lib/plugins/editing/EditingPlugin.d.ts.map +1 -1
  21. package/lib/plugins/editing/index.js +83 -52
  22. package/lib/plugins/editing/index.js.map +1 -1
  23. package/lib/plugins/export/index.js +22 -20
  24. package/lib/plugins/export/index.js.map +1 -1
  25. package/lib/plugins/filtering/FilteringPlugin.d.ts +11 -1
  26. package/lib/plugins/filtering/FilteringPlugin.d.ts.map +1 -1
  27. package/lib/plugins/filtering/index.js +160 -125
  28. package/lib/plugins/filtering/index.js.map +1 -1
  29. package/lib/plugins/grouping-columns/index.js +20 -18
  30. package/lib/plugins/grouping-columns/index.js.map +1 -1
  31. package/lib/plugins/grouping-rows/index.js +66 -64
  32. package/lib/plugins/grouping-rows/index.js.map +1 -1
  33. package/lib/plugins/master-detail/index.js +51 -49
  34. package/lib/plugins/master-detail/index.js.map +1 -1
  35. package/lib/plugins/multi-sort/index.js +17 -15
  36. package/lib/plugins/multi-sort/index.js.map +1 -1
  37. package/lib/plugins/pinned-columns/index.js +24 -22
  38. package/lib/plugins/pinned-columns/index.js.map +1 -1
  39. package/lib/plugins/pinned-rows/index.js +25 -23
  40. package/lib/plugins/pinned-rows/index.js.map +1 -1
  41. package/lib/plugins/pivot/index.js +49 -47
  42. package/lib/plugins/pivot/index.js.map +1 -1
  43. package/lib/plugins/reorder/index.js +24 -22
  44. package/lib/plugins/reorder/index.js.map +1 -1
  45. package/lib/plugins/responsive/index.js +19 -17
  46. package/lib/plugins/responsive/index.js.map +1 -1
  47. package/lib/plugins/row-reorder/index.js +38 -36
  48. package/lib/plugins/row-reorder/index.js.map +1 -1
  49. package/lib/plugins/selection/SelectionPlugin.d.ts +13 -0
  50. package/lib/plugins/selection/SelectionPlugin.d.ts.map +1 -1
  51. package/lib/plugins/selection/index.d.ts +1 -1
  52. package/lib/plugins/selection/index.d.ts.map +1 -1
  53. package/lib/plugins/selection/index.js +118 -85
  54. package/lib/plugins/selection/index.js.map +1 -1
  55. package/lib/plugins/selection/types.d.ts +50 -6
  56. package/lib/plugins/selection/types.d.ts.map +1 -1
  57. package/lib/plugins/server-side/index.js +34 -32
  58. package/lib/plugins/server-side/index.js.map +1 -1
  59. package/lib/plugins/tree/index.js +25 -23
  60. package/lib/plugins/tree/index.js.map +1 -1
  61. package/lib/plugins/undo-redo/index.js +22 -20
  62. package/lib/plugins/undo-redo/index.js.map +1 -1
  63. package/lib/plugins/visibility/index.js +21 -19
  64. package/lib/plugins/visibility/index.js.map +1 -1
  65. package/package.json +21 -4
  66. package/public.d.ts +1 -1
  67. package/public.d.ts.map +1 -1
  68. package/umd/grid.all.umd.js +19 -19
  69. package/umd/grid.all.umd.js.map +1 -1
  70. package/umd/grid.umd.js +9 -9
  71. package/umd/grid.umd.js.map +1 -1
  72. package/umd/plugins/clipboard.umd.js +5 -5
  73. package/umd/plugins/clipboard.umd.js.map +1 -1
  74. package/umd/plugins/editing.umd.js +1 -1
  75. package/umd/plugins/editing.umd.js.map +1 -1
  76. package/umd/plugins/filtering.umd.js +1 -1
  77. package/umd/plugins/filtering.umd.js.map +1 -1
  78. package/umd/plugins/selection.umd.js +2 -2
  79. 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,11 @@ const C = {
6
6
  sortNone: "⇅",
7
7
  submenuArrow: "▶",
8
8
  dragHandle: "⋮⋮",
9
- toolPanel: "☰"
9
+ toolPanel: "☰",
10
+ filter: y,
11
+ filterActive: y
10
12
  };
11
- class I {
13
+ class M {
12
14
  /**
13
15
  * Plugin dependencies - declare other plugins this one requires.
14
16
  *
@@ -232,7 +234,7 @@ class I {
232
234
  */
233
235
  get gridIcons() {
234
236
  const e = this.grid?.gridConfig?.icons ?? {};
235
- return { ...C, ...e };
237
+ return { ...I, ...e };
236
238
  }
237
239
  // #region Animation Helpers
238
240
  /**
@@ -312,10 +314,10 @@ const g = "@layer tbw-plugins{.tbw-context-menu{position:fixed;background:var(--
312
314
  function v(r, e) {
313
315
  return (typeof r == "function" ? r(e) : r).filter((n) => !(n.hidden === !0 || typeof n.hidden == "function" && n.hidden(e)));
314
316
  }
315
- function M(r, e) {
317
+ function H(r, e) {
316
318
  return r.disabled === !0 ? !0 : typeof r.disabled == "function" ? r.disabled(e) : !1;
317
319
  }
318
- function x(r, e, t, n = C.submenuArrow) {
320
+ function x(r, e, t, n = I.submenuArrow) {
319
321
  const l = document.createElement("div");
320
322
  l.className = "tbw-context-menu", l.setAttribute("role", "menu");
321
323
  for (const s of r) {
@@ -326,7 +328,7 @@ function x(r, e, t, n = C.submenuArrow) {
326
328
  }
327
329
  const i = document.createElement("div");
328
330
  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);
331
+ const d = H(s, e);
330
332
  if (d && (i.classList.add("disabled"), i.setAttribute("aria-disabled", "true")), s.icon) {
331
333
  const o = document.createElement("span");
332
334
  o.className = "tbw-context-menu-icon", o.innerHTML = s.icon, i.appendChild(o);
@@ -340,7 +342,7 @@ function x(r, e, t, n = C.submenuArrow) {
340
342
  const o = document.createElement("span");
341
343
  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
344
  if (i.querySelector(".tbw-context-menu") || !s.subMenu) return;
343
- const f = v(s.subMenu, e), c = x(f, e, t, n);
345
+ const h = v(s.subMenu, e), c = x(h, e, t, n);
344
346
  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
347
  }), i.addEventListener("mouseleave", () => {
346
348
  const a = i.querySelector(".tbw-context-menu");
@@ -353,13 +355,13 @@ function x(r, e, t, n = C.submenuArrow) {
353
355
  }
354
356
  return l;
355
357
  }
356
- function y(r, e, t) {
358
+ function C(r, e, t) {
357
359
  r.style.position = "fixed", r.style.left = `${e}px`, r.style.top = `${t}px`, r.style.visibility = "hidden", r.style.zIndex = "10000";
358
360
  const n = r.getBoundingClientRect(), l = window.innerWidth, s = window.innerHeight;
359
361
  let i = e, d = t;
360
362
  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
363
  }
362
- let h = null, b = null, m = null, p = 0;
364
+ let f = null, b = null, m = null, p = 0;
363
365
  const w = [
364
366
  {
365
367
  id: "copy",
@@ -378,7 +380,7 @@ const w = [
378
380
  }
379
381
  }
380
382
  ];
381
- class H extends I {
383
+ class L extends M {
382
384
  /** @internal */
383
385
  name = "contextMenu";
384
386
  /** @internal */
@@ -405,9 +407,9 @@ class H extends I {
405
407
  // #endregion
406
408
  // #region Private Methods
407
409
  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 = () => {
410
+ !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
411
  document.querySelectorAll(".tbw-context-menu").forEach((t) => t.remove());
410
- }, document.addEventListener("click", h)), b || (b = (e) => {
412
+ }, document.addEventListener("click", f)), b || (b = (e) => {
411
413
  e.key === "Escape" && document.querySelectorAll(".tbw-context-menu").forEach((n) => n.remove());
412
414
  }, document.addEventListener("keydown", b));
413
415
  }
@@ -416,7 +418,7 @@ class H extends I {
416
418
  * Uses reference counting to ensure handlers persist while any grid uses the plugin.
417
419
  */
418
420
  uninstallGlobalHandlers() {
419
- p--, !(p > 0) && (h && (document.removeEventListener("click", h), h = null), b && (document.removeEventListener("keydown", b), b = null), m && (m.remove(), m = null));
421
+ p--, !(p > 0) && (f && (document.removeEventListener("click", f), f = null), b && (document.removeEventListener("keydown", b), b = null), m && (m.remove(), m = null));
420
422
  }
421
423
  // #endregion
422
424
  // #region Hooks
@@ -431,25 +433,25 @@ class H extends I {
431
433
  const s = l.target, i = s.closest("[data-row][data-col]"), d = s.closest(".header-cell");
432
434
  let u;
433
435
  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];
436
+ 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
437
  u = {
436
438
  row: E,
437
439
  rowIndex: a,
438
440
  column: c,
439
- columnIndex: f,
441
+ columnIndex: h,
440
442
  field: c?.field ?? "",
441
443
  value: E?.[c?.field] ?? null,
442
444
  isHeader: !1,
443
445
  event: l
444
446
  };
445
447
  } else if (d) {
446
- const a = parseInt(d.getAttribute("data-col") ?? "-1", 10), f = this.columns[a];
448
+ const a = parseInt(d.getAttribute("data-col") ?? "-1", 10), h = this.columns[a];
447
449
  u = {
448
450
  row: null,
449
451
  rowIndex: -1,
450
- column: f,
452
+ column: h,
451
453
  columnIndex: a,
452
- field: f?.field ?? "",
454
+ field: h?.field ?? "",
453
455
  value: null,
454
456
  isHeader: !0,
455
457
  event: l
@@ -465,7 +467,7 @@ class H extends I {
465
467
  a.action && a.action(u), this.menuElement?.remove(), this.menuElement = null, this.isOpen = !1;
466
468
  },
467
469
  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 }));
470
+ ), 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
471
  }));
470
472
  }
471
473
  // #endregion
@@ -494,7 +496,7 @@ class H extends I {
494
496
  i.action && i.action(l), this.menuElement?.remove(), this.menuElement = null, this.isOpen = !1;
495
497
  },
496
498
  this.gridIcons.submenuArrow
497
- ), document.body.appendChild(this.menuElement), y(this.menuElement, e, t), this.isOpen = !0;
499
+ ), document.body.appendChild(this.menuElement), C(this.menuElement, e, t), this.isOpen = !0;
498
500
  }
499
501
  /**
500
502
  * Hide the context menu.
@@ -513,6 +515,6 @@ class H extends I {
513
515
  // Styles are injected globally via installGlobalHandlers() since menu renders in document.body
514
516
  }
515
517
  export {
516
- H as ContextMenuPlugin
518
+ L as ContextMenuPlugin
517
519
  };
518
520
  //# sourceMappingURL=index.js.map