@toolbox-web/grid 1.7.0 → 1.9.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 (118) hide show
  1. package/README.md +51 -15
  2. package/all.js +717 -574
  3. package/all.js.map +1 -1
  4. package/index.js +586 -505
  5. package/index.js.map +1 -1
  6. package/lib/core/grid.d.ts +22 -1
  7. package/lib/core/grid.d.ts.map +1 -1
  8. package/lib/core/internal/header.d.ts.map +1 -1
  9. package/lib/core/internal/keyboard.d.ts.map +1 -1
  10. package/lib/core/internal/rows.d.ts.map +1 -1
  11. package/lib/core/internal/utils.d.ts +46 -0
  12. package/lib/core/internal/utils.d.ts.map +1 -1
  13. package/lib/core/plugin/base-plugin.d.ts +182 -1
  14. package/lib/core/plugin/base-plugin.d.ts.map +1 -1
  15. package/lib/core/plugin/index.d.ts +1 -1
  16. package/lib/core/plugin/index.d.ts.map +1 -1
  17. package/lib/core/plugin/plugin-manager.d.ts +56 -1
  18. package/lib/core/plugin/plugin-manager.d.ts.map +1 -1
  19. package/lib/core/plugin/types.d.ts +36 -0
  20. package/lib/core/plugin/types.d.ts.map +1 -1
  21. package/lib/core/types.d.ts +1232 -28
  22. package/lib/core/types.d.ts.map +1 -1
  23. package/lib/plugins/clipboard/ClipboardPlugin.d.ts.map +1 -1
  24. package/lib/plugins/clipboard/index.js +140 -87
  25. package/lib/plugins/clipboard/index.js.map +1 -1
  26. package/lib/plugins/column-virtualization/index.js +64 -7
  27. package/lib/plugins/column-virtualization/index.js.map +1 -1
  28. package/lib/plugins/context-menu/index.js +101 -44
  29. package/lib/plugins/context-menu/index.js.map +1 -1
  30. package/lib/plugins/editing/EditingPlugin.d.ts +6 -1
  31. package/lib/plugins/editing/EditingPlugin.d.ts.map +1 -1
  32. package/lib/plugins/editing/index.js +95 -13
  33. package/lib/plugins/editing/index.js.map +1 -1
  34. package/lib/plugins/export/index.js +91 -34
  35. package/lib/plugins/export/index.js.map +1 -1
  36. package/lib/plugins/filtering/FilteringPlugin.d.ts +6 -1
  37. package/lib/plugins/filtering/FilteringPlugin.d.ts.map +1 -1
  38. package/lib/plugins/filtering/index.js +192 -123
  39. package/lib/plugins/filtering/index.js.map +1 -1
  40. package/lib/plugins/grouping-columns/index.js +57 -0
  41. package/lib/plugins/grouping-columns/index.js.map +1 -1
  42. package/lib/plugins/grouping-rows/GroupingRowsPlugin.d.ts +7 -2
  43. package/lib/plugins/grouping-rows/GroupingRowsPlugin.d.ts.map +1 -1
  44. package/lib/plugins/grouping-rows/index.js +139 -60
  45. package/lib/plugins/grouping-rows/index.js.map +1 -1
  46. package/lib/plugins/master-detail/index.js +69 -12
  47. package/lib/plugins/master-detail/index.js.map +1 -1
  48. package/lib/plugins/multi-sort/index.js +70 -13
  49. package/lib/plugins/multi-sort/index.js.map +1 -1
  50. package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts +16 -9
  51. package/lib/plugins/pinned-columns/PinnedColumnsPlugin.d.ts.map +1 -1
  52. package/lib/plugins/pinned-columns/index.js +158 -61
  53. package/lib/plugins/pinned-columns/index.js.map +1 -1
  54. package/lib/plugins/pinned-columns/pinned-columns.d.ts +24 -7
  55. package/lib/plugins/pinned-columns/pinned-columns.d.ts.map +1 -1
  56. package/lib/plugins/pinned-columns/types.d.ts +51 -2
  57. package/lib/plugins/pinned-columns/types.d.ts.map +1 -1
  58. package/lib/plugins/pinned-rows/index.js +57 -0
  59. package/lib/plugins/pinned-rows/index.js.map +1 -1
  60. package/lib/plugins/pivot/index.js +57 -0
  61. package/lib/plugins/pivot/index.js.map +1 -1
  62. package/lib/plugins/print/index.js +58 -1
  63. package/lib/plugins/print/index.js.map +1 -1
  64. package/lib/plugins/reorder/ReorderPlugin.d.ts.map +1 -1
  65. package/lib/plugins/reorder/column-drag.d.ts +2 -2
  66. package/lib/plugins/reorder/index.js +68 -17
  67. package/lib/plugins/reorder/index.js.map +1 -1
  68. package/lib/plugins/responsive/ResponsivePlugin.d.ts +6 -1
  69. package/lib/plugins/responsive/ResponsivePlugin.d.ts.map +1 -1
  70. package/lib/plugins/responsive/index.js +299 -85
  71. package/lib/plugins/responsive/index.js.map +1 -1
  72. package/lib/plugins/row-reorder/index.js +169 -112
  73. package/lib/plugins/row-reorder/index.js.map +1 -1
  74. package/lib/plugins/selection/SelectionPlugin.d.ts +14 -2
  75. package/lib/plugins/selection/SelectionPlugin.d.ts.map +1 -1
  76. package/lib/plugins/selection/index.js +84 -7
  77. package/lib/plugins/selection/index.js.map +1 -1
  78. package/lib/plugins/server-side/index.js +79 -22
  79. package/lib/plugins/server-side/index.js.map +1 -1
  80. package/lib/plugins/tree/TreePlugin.d.ts +7 -1
  81. package/lib/plugins/tree/TreePlugin.d.ts.map +1 -1
  82. package/lib/plugins/tree/index.js +143 -61
  83. package/lib/plugins/tree/index.js.map +1 -1
  84. package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts +6 -1
  85. package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts.map +1 -1
  86. package/lib/plugins/undo-redo/index.js +79 -10
  87. package/lib/plugins/undo-redo/index.js.map +1 -1
  88. package/lib/plugins/visibility/index.js +57 -0
  89. package/lib/plugins/visibility/index.js.map +1 -1
  90. package/package.json +1 -1
  91. package/public.d.ts +79 -1
  92. package/public.d.ts.map +1 -1
  93. package/umd/grid.all.umd.js +25 -25
  94. package/umd/grid.all.umd.js.map +1 -1
  95. package/umd/grid.umd.js +11 -11
  96. package/umd/grid.umd.js.map +1 -1
  97. package/umd/plugins/clipboard.umd.js +5 -5
  98. package/umd/plugins/clipboard.umd.js.map +1 -1
  99. package/umd/plugins/editing.umd.js +1 -1
  100. package/umd/plugins/editing.umd.js.map +1 -1
  101. package/umd/plugins/filtering.umd.js +1 -1
  102. package/umd/plugins/filtering.umd.js.map +1 -1
  103. package/umd/plugins/grouping-rows.umd.js +2 -2
  104. package/umd/plugins/grouping-rows.umd.js.map +1 -1
  105. package/umd/plugins/pinned-columns.umd.js +1 -1
  106. package/umd/plugins/pinned-columns.umd.js.map +1 -1
  107. package/umd/plugins/print.umd.js +1 -1
  108. package/umd/plugins/print.umd.js.map +1 -1
  109. package/umd/plugins/reorder.umd.js +1 -1
  110. package/umd/plugins/reorder.umd.js.map +1 -1
  111. package/umd/plugins/responsive.umd.js +1 -1
  112. package/umd/plugins/responsive.umd.js.map +1 -1
  113. package/umd/plugins/selection.umd.js +2 -2
  114. package/umd/plugins/selection.umd.js.map +1 -1
  115. package/umd/plugins/tree.umd.js +1 -1
  116. package/umd/plugins/tree.umd.js.map +1 -1
  117. package/umd/plugins/undo-redo.umd.js +1 -1
  118. package/umd/plugins/undo-redo.umd.js.map +1 -1
@@ -239,6 +239,63 @@ class w {
239
239
  const i = new CustomEvent(t, { detail: e, bubbles: !0, cancelable: !0 });
240
240
  return this.grid?.dispatchEvent?.(i), i.defaultPrevented;
241
241
  }
242
+ // =========================================================================
243
+ // Event Bus - Plugin-to-Plugin Communication
244
+ // =========================================================================
245
+ /**
246
+ * Subscribe to an event from another plugin.
247
+ * The subscription is automatically cleaned up when this plugin is detached.
248
+ *
249
+ * @category Plugin Development
250
+ * @param eventType - The event type to listen for (e.g., 'filter-change')
251
+ * @param callback - The callback to invoke when the event is emitted
252
+ *
253
+ * @example
254
+ * ```typescript
255
+ * // In attach() or other initialization
256
+ * this.on('filter-change', (detail) => {
257
+ * console.log('Filter changed:', detail);
258
+ * });
259
+ * ```
260
+ */
261
+ on(t, e) {
262
+ this.grid?._pluginManager?.subscribe(this, t, e);
263
+ }
264
+ /**
265
+ * Unsubscribe from a plugin event.
266
+ *
267
+ * @category Plugin Development
268
+ * @param eventType - The event type to stop listening for
269
+ *
270
+ * @example
271
+ * ```typescript
272
+ * this.off('filter-change');
273
+ * ```
274
+ */
275
+ off(t) {
276
+ this.grid?._pluginManager?.unsubscribe(this, t);
277
+ }
278
+ /**
279
+ * Emit an event to other plugins via the Event Bus.
280
+ * This is for inter-plugin communication only; it does NOT dispatch DOM events.
281
+ * Use `emit()` to dispatch DOM events that external consumers can listen to.
282
+ *
283
+ * @category Plugin Development
284
+ * @param eventType - The event type to emit (should be declared in manifest.events)
285
+ * @param detail - The event payload
286
+ *
287
+ * @example
288
+ * ```typescript
289
+ * // Emit to other plugins (not DOM)
290
+ * this.emitPluginEvent('filter-change', { field: 'name', value: 'Alice' });
291
+ *
292
+ * // For DOM events that consumers can addEventListener to:
293
+ * this.emit('filter-change', { field: 'name', value: 'Alice' });
294
+ * ```
295
+ */
296
+ emitPluginEvent(t, e) {
297
+ this.grid?._pluginManager?.emitPluginEvent(t, e);
298
+ }
242
299
  /**
243
300
  * Request a re-render of the grid.
244
301
  */
@@ -401,7 +458,7 @@ class w {
401
458
  }
402
459
  // #endregion
403
460
  }
404
- const b = ".tbw-print-header,.tbw-print-footer{display:none}@media print{tbw-grid{overflow:visible!important;height:auto!important;border:none!important;border-radius:0!important;color-scheme:light only;-webkit-print-color-adjust:exact;print-color-adjust:exact}tbw-grid .tbw-grid-content{overflow:visible!important;height:auto!important;max-height:none!important}tbw-grid .tbw-scroll-area{overflow:visible!important;height:auto!important;max-height:none!important}tbw-grid .rows-body{overflow:visible!important;height:auto!important;max-height:none!important}tbw-grid .rows-container,tbw-grid .rows-viewport,tbw-grid .rows{overflow:visible!important;height:auto!important;max-height:none!important;transform:none!important}tbw-grid .rows-viewport .rows{position:static!important}tbw-grid .resize-handle,tbw-grid [part=sort-indicator],tbw-grid .tbw-filter-btn,tbw-grid .tool-panel,tbw-grid .tool-panel-content,tbw-grid .tbw-shell-header,tbw-grid .shell-toolbar,tbw-grid .tool-panel-toggle,tbw-grid [data-print-hide],tbw-grid .expander-cell,tbw-grid .tree-toggle,tbw-grid .context-menu,tbw-grid .faux-vscroll{display:none!important}tbw-grid .tbw-print-header{display:flex;justify-content:space-between;align-items:baseline;padding:var(--tbw-spacing-md, .5em) 0;margin-bottom:var(--tbw-spacing-md, .5em);border-bottom:2px solid var(--tbw-print-border, var(--tbw-color-border-strong));font-family:inherit}.tbw-print-header-title{font-size:1.25em;font-weight:700}.tbw-print-header-timestamp{font-size:var(--tbw-font-size-sm, .875em);color:var(--tbw-print-muted, var(--tbw-color-fg-muted))}tbw-grid .tbw-print-footer{display:block;margin-top:var(--tbw-spacing-md, .5em);padding-top:var(--tbw-spacing-md, .5em);border-top:1px solid var(--tbw-print-border, var(--tbw-color-border));font-size:var(--tbw-font-size-xs, .75em);color:var(--tbw-print-muted, var(--tbw-color-fg-muted));text-align:right}tbw-grid .data-grid-row{break-inside:avoid;page-break-inside:avoid}tbw-grid .cell{border:1px solid var(--tbw-print-cell-border, var(--tbw-color-border))!important}tbw-grid .header-row,tbw-grid .data-grid-row{padding-right:1px}tbw-grid .data-grid-row:hover,tbw-grid .cell:hover{background:inherit!important}@page{margin:1cm}@page{tbw-grid.print-landscape{size:landscape}}@page{tbw-grid.print-portrait{size:portrait}}}", f = {
461
+ const b = ".tbw-print-header,.tbw-print-footer{display:none}@media print{tbw-grid{overflow:visible!important;height:auto!important;border:none!important;border-radius:0!important;color-scheme:light only;-webkit-print-color-adjust:exact;print-color-adjust:exact}tbw-grid .tbw-grid-content{overflow:visible!important;height:auto!important;max-height:none!important}tbw-grid .tbw-scroll-area{overflow:visible!important;height:auto!important;max-height:none!important}tbw-grid .rows-body{overflow:visible!important;height:auto!important;max-height:none!important}tbw-grid .rows-container,tbw-grid .rows-viewport,tbw-grid .rows{overflow:visible!important;height:auto!important;max-height:none!important;transform:none!important}tbw-grid .rows-viewport .rows{position:static!important}tbw-grid .resize-handle,tbw-grid [part=sort-indicator],tbw-grid .tbw-filter-btn,tbw-grid .tool-panel,tbw-grid .tool-panel-content,tbw-grid .tbw-shell-header,tbw-grid .shell-toolbar,tbw-grid .tool-panel-toggle,tbw-grid [data-print-hide],tbw-grid .expander-cell,tbw-grid .tree-toggle,tbw-grid .context-menu,tbw-grid .faux-vscroll{display:none!important}tbw-grid .tbw-print-header{display:flex;justify-content:space-between;align-items:baseline;padding:var(--tbw-spacing-md, .5em) 0;margin-bottom:var(--tbw-spacing-md, .5em);border-bottom:2px solid var(--tbw-print-border, var(--tbw-color-border-strong));font-family:inherit}.tbw-print-header-title{font-size:1.25em;font-weight:700}.tbw-print-header-timestamp{font-size:var(--tbw-font-size-sm, .875em);color:var(--tbw-print-muted, var(--tbw-color-fg-muted))}tbw-grid .tbw-print-footer{display:block;margin-top:var(--tbw-spacing-md, .5em);padding-top:var(--tbw-spacing-md, .5em);border-top:1px solid var(--tbw-print-border, var(--tbw-color-border));font-size:var(--tbw-font-size-xs, .75em);color:var(--tbw-print-muted, var(--tbw-color-fg-muted));text-align:end}tbw-grid .data-grid-row{break-inside:avoid;page-break-inside:avoid}tbw-grid .cell{border:1px solid var(--tbw-print-cell-border, var(--tbw-color-border))!important}tbw-grid .header-row,tbw-grid .data-grid-row{padding-inline-end:1px}tbw-grid .data-grid-row:hover,tbw-grid .cell:hover{background:inherit!important}@page{margin:1cm}@page{tbw-grid.print-landscape{size:landscape}}@page{tbw-grid.print-portrait{size:portrait}}}", f = {
405
462
  button: !1,
406
463
  orientation: "landscape",
407
464
  warnThreshold: 500,