@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
package/README.md CHANGED
@@ -557,24 +557,59 @@ export class MyPlugin extends BaseGridPlugin<MyPluginConfig> {
557
557
 
558
558
  ### Inter-Plugin Communication
559
559
 
560
- Plugins can communicate with each other using the generic query system. This allows plugins to expose capabilities or constraints without the core knowing about specific plugin concepts.
560
+ Plugins can communicate with each other using two systems:
561
561
 
562
- **Responding to queries (in your plugin):**
562
+ 1. **Event Bus** - For async notifications between plugins
563
+ 2. **Query System** - For sync state retrieval
564
+
565
+ #### Event Bus
566
+
567
+ Emit and subscribe to plugin events (distinct from DOM events):
563
568
 
564
569
  ```typescript
565
- import { BaseGridPlugin, PLUGIN_QUERIES, PluginQuery } from '@toolbox-web/grid';
570
+ import { BaseGridPlugin, type PluginManifest } from '@toolbox-web/grid';
566
571
 
567
572
  export class MyPlugin extends BaseGridPlugin<MyConfig> {
568
- override onPluginQuery(query: PluginQuery): unknown {
569
- switch (query.type) {
570
- case PLUGIN_QUERIES.CAN_MOVE_COLUMN:
571
- // Veto column movement for locked columns
572
- const column = query.context as ColumnConfig;
573
- if (this.isLocked(column)) return false;
574
- return undefined; // Let other plugins decide
575
- default:
576
- return undefined;
573
+ // Declare events this plugin emits
574
+ static override readonly manifest: PluginManifest = {
575
+ events: [{ type: 'my-event', description: 'Emitted when something happens' }],
576
+ };
577
+
578
+ override attach(grid: GridElementRef): void {
579
+ super.attach(grid);
580
+ // Subscribe to events from other plugins
581
+ this.on('filter-change', (detail) => {
582
+ console.log('Filter changed:', detail);
583
+ });
584
+ }
585
+
586
+ private doSomething(): void {
587
+ // Emit to other plugins (not DOM events)
588
+ this.emitPluginEvent('my-event', { data: 'value' });
589
+ }
590
+ }
591
+ ```
592
+
593
+ #### Query System
594
+
595
+ Respond to queries from other plugins:
596
+
597
+ ```typescript
598
+ import { BaseGridPlugin, type PluginManifest, type PluginQuery } from '@toolbox-web/grid';
599
+
600
+ export class MyPlugin extends BaseGridPlugin<MyConfig> {
601
+ // Declare queries this plugin handles
602
+ static override readonly manifest: PluginManifest = {
603
+ queries: [{ type: 'canMoveColumn', description: 'Check if column can be moved' }],
604
+ };
605
+
606
+ override handleQuery(query: PluginQuery): unknown {
607
+ if (query.type === 'canMoveColumn') {
608
+ const column = query.context as ColumnConfig;
609
+ if (this.isLocked(column)) return false;
610
+ return undefined; // Let other plugins decide
577
611
  }
612
+ return undefined;
578
613
  }
579
614
  }
580
615
  ```
@@ -582,14 +617,15 @@ export class MyPlugin extends BaseGridPlugin<MyConfig> {
582
617
  **Querying other plugins:**
583
618
 
584
619
  ```typescript
585
- import { PLUGIN_QUERIES } from '@toolbox-web/grid';
620
+ // Simplified API
621
+ const responses = grid.query<boolean>('canMoveColumn', column);
622
+ const canMove = !responses.includes(false);
586
623
 
587
- // In your plugin or application code
624
+ // Or full query object
588
625
  const responses = grid.queryPlugins<boolean>({
589
626
  type: PLUGIN_QUERIES.CAN_MOVE_COLUMN,
590
627
  context: column,
591
628
  });
592
- const canMove = !responses.includes(false);
593
629
  ```
594
630
 
595
631
  **Built-in query types:**