@toolbox-web/grid-angular 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.
@@ -0,0 +1,24 @@
1
+ import '@toolbox-web/grid/features/row-drag-drop';
2
+
3
+ /**
4
+ * Row drag & drop feature for @toolbox-web/grid-angular
5
+ *
6
+ * Import this module to enable the `rowDragDrop` input on Grid directive
7
+ * along with the `(rowDragStart)`, `(rowDragEnd)`, `(rowDrop)`, and
8
+ * `(rowTransfer)` outputs. Supports both intra-grid reorder and cross-grid
9
+ * transfer.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import '@toolbox-web/grid-angular/features/row-drag-drop';
14
+ *
15
+ * <tbw-grid [rowDragDrop]="{ dropZone: 'employees' }" />
16
+ * ```
17
+ *
18
+ * @packageDocumentation
19
+ */
20
+
21
+ /**
22
+ * Generated bundle index. Do not edit.
23
+ */
24
+ //# sourceMappingURL=toolbox-web-grid-angular-features-row-drag-drop.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbox-web-grid-angular-features-row-drag-drop.mjs","sources":["../../../../libs/grid-angular/features/row-drag-drop/src/index.ts","../../../../libs/grid-angular/features/row-drag-drop/src/toolbox-web-grid-angular-features-row-drag-drop.ts"],"sourcesContent":["/**\n * Row drag & drop feature for @toolbox-web/grid-angular\n *\n * Import this module to enable the `rowDragDrop` input on Grid directive\n * along with the `(rowDragStart)`, `(rowDragEnd)`, `(rowDrop)`, and\n * `(rowTransfer)` outputs. Supports both intra-grid reorder and cross-grid\n * transfer.\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid-angular/features/row-drag-drop';\n *\n * <tbw-grid [rowDragDrop]=\"{ dropZone: 'employees' }\" />\n * ```\n *\n * @packageDocumentation\n */\n\nimport '@toolbox-web/grid/features/row-drag-drop';\nexport type { _Augmentation as _RowDragDropAugmentation } from '@toolbox-web/grid/features/row-drag-drop';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;;;AAgBG;;AChBH;;AAEG"}
@@ -5,11 +5,34 @@ import '@toolbox-web/grid/features/server-side';
5
5
  *
6
6
  * Import this module to enable the `serverSide` input on Grid directive.
7
7
  *
8
+ * The grid's `ServerSideDataSource.getRows()` accepts either a `Promise` or an
9
+ * RxJS-style `Observable` (any `Subscribable`) directly — Angular `HttpClient`
10
+ * results work without any wrapper. Superseded requests are cancelled by the
11
+ * grid via `unsubscribe()`, which is what causes `HttpClient` to abort the
12
+ * underlying XHR.
13
+ *
8
14
  * @example
9
15
  * ```typescript
16
+ * import { Component, inject } from '@angular/core';
17
+ * import { HttpClient } from '@angular/common/http';
18
+ * import { map } from 'rxjs/operators';
19
+ * import { Grid } from '@toolbox-web/grid-angular';
10
20
  * import '@toolbox-web/grid-angular/features/server-side';
21
+ * import type { ServerSideDataSource } from '@toolbox-web/grid/plugins/server-side';
11
22
  *
12
- * <tbw-grid [serverSide]="{ dataSource: fetchDataFn }" />
23
+ * @Component({
24
+ * imports: [Grid],
25
+ * template: `<tbw-grid [serverSide]="{ dataSource }" />`,
26
+ * })
27
+ * class MyGrid {
28
+ * private http = inject(HttpClient);
29
+ * dataSource: ServerSideDataSource = {
30
+ * getRows: (params) =>
31
+ * this.http.get<{ items: unknown[]; total: number }>('/api/data', {
32
+ * params: { offset: params.startNode, limit: params.endNode - params.startNode },
33
+ * }).pipe(map((d) => ({ rows: d.items, totalNodeCount: d.total }))),
34
+ * };
35
+ * }
13
36
  * ```
14
37
  *
15
38
  * @packageDocumentation
@@ -1 +1 @@
1
- {"version":3,"file":"toolbox-web-grid-angular-features-server-side.mjs","sources":["../../../../libs/grid-angular/features/server-side/src/index.ts","../../../../libs/grid-angular/features/server-side/src/toolbox-web-grid-angular-features-server-side.ts"],"sourcesContent":["/**\n * Server-side feature for @toolbox-web/grid-angular\n *\n * Import this module to enable the `serverSide` input on Grid directive.\n *\n * @example\n * ```typescript\n * import '@toolbox-web/grid-angular/features/server-side';\n *\n * <tbw-grid [serverSide]=\"{ dataSource: fetchDataFn }\" />\n * ```\n *\n * @packageDocumentation\n */\n\nimport '@toolbox-web/grid/features/server-side';\nexport type { _Augmentation as _ServerSideAugmentation } from '@toolbox-web/grid/features/server-side';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;AAaG;;ACbH;;AAEG"}
1
+ {"version":3,"file":"toolbox-web-grid-angular-features-server-side.mjs","sources":["../../../../libs/grid-angular/features/server-side/src/index.ts","../../../../libs/grid-angular/features/server-side/src/toolbox-web-grid-angular-features-server-side.ts"],"sourcesContent":["/**\n * Server-side feature for @toolbox-web/grid-angular\n *\n * Import this module to enable the `serverSide` input on Grid directive.\n *\n * The grid's `ServerSideDataSource.getRows()` accepts either a `Promise` or an\n * RxJS-style `Observable` (any `Subscribable`) directly — Angular `HttpClient`\n * results work without any wrapper. Superseded requests are cancelled by the\n * grid via `unsubscribe()`, which is what causes `HttpClient` to abort the\n * underlying XHR.\n *\n * @example\n * ```typescript\n * import { Component, inject } from '@angular/core';\n * import { HttpClient } from '@angular/common/http';\n * import { map } from 'rxjs/operators';\n * import { Grid } from '@toolbox-web/grid-angular';\n * import '@toolbox-web/grid-angular/features/server-side';\n * import type { ServerSideDataSource } from '@toolbox-web/grid/plugins/server-side';\n *\n * @Component({\n * imports: [Grid],\n * template: `<tbw-grid [serverSide]=\"{ dataSource }\" />`,\n * })\n * class MyGrid {\n * private http = inject(HttpClient);\n * dataSource: ServerSideDataSource = {\n * getRows: (params) =>\n * this.http.get<{ items: unknown[]; total: number }>('/api/data', {\n * params: { offset: params.startNode, limit: params.endNode - params.startNode },\n * }).pipe(map((d) => ({ rows: d.items, totalNodeCount: d.total }))),\n * };\n * }\n * ```\n *\n * @packageDocumentation\n */\n\nimport '@toolbox-web/grid/features/server-side';\nexport type { _Augmentation as _ServerSideAugmentation } from '@toolbox-web/grid/features/server-side';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCG;;ACpCH;;AAEG"}
@@ -1554,6 +1554,21 @@ class GridAdapter {
1554
1554
  editorViewRefs = [];
1555
1555
  /** Editor-specific component refs tracked separately for per-cell cleanup via releaseCell. */
1556
1556
  editorComponentRefs = [];
1557
+ /**
1558
+ * Per-editor `before-edit-close` listener teardown functions, keyed by
1559
+ * editor host element.
1560
+ *
1561
+ * The grid's editing plugin emits `before-edit-close` on the host
1562
+ * `<tbw-grid>` before tearing down a row's managed editors. Angular
1563
+ * editors that commit on `(blur)` rely on the focused input firing `blur`
1564
+ * naturally, but Tab / programmatic row exit rebuilds the cell DOM
1565
+ * synchronously without giving the focused input a chance to blur first
1566
+ * — pending input is silently discarded.
1567
+ *
1568
+ * Mirror of Vue's `editorBeforeCloseUnsubs` and React's
1569
+ * `wrapReactEditor` queueMicrotask bridge.
1570
+ */
1571
+ editorBeforeCloseUnsubs = new Map();
1557
1572
  typeRegistry = null;
1558
1573
  constructor(injector, appRef, viewContainerRef) {
1559
1574
  this.injector = injector;
@@ -1828,6 +1843,7 @@ class GridAdapter {
1828
1843
  const container = document.createElement('span');
1829
1844
  container.style.display = 'contents';
1830
1845
  syncRootNodes(viewRef, container);
1846
+ this.attachBeforeEditCloseFlush(container);
1831
1847
  // Auto-wire: Listen for commit/cancel events on the rendered component.
1832
1848
  // This allows components to just emit (commit) and (cancel) without
1833
1849
  // requiring explicit template bindings like (commit)="onCommit($event)".
@@ -2114,6 +2130,7 @@ class GridAdapter {
2114
2130
  column: ctx.column,
2115
2131
  }, true);
2116
2132
  wireEditorCallbacks(hostElement, componentRef.instance, (value) => ctx.commit(value), () => ctx.cancel());
2133
+ this.attachBeforeEditCloseFlush(hostElement);
2117
2134
  // Auto-update editor when value changes externally (e.g., via updateRow cascade
2118
2135
  // or Escape-revert). Update the component input and run detectChanges() —
2119
2136
  // the component's own template handles rendering regardless of editor type.
@@ -2432,6 +2449,13 @@ class GridAdapter {
2432
2449
  this.editorComponentRefs.splice(i, 1);
2433
2450
  }
2434
2451
  }
2452
+ // Detach `before-edit-close` listeners for editor hosts inside this cell
2453
+ for (const [hostEl, unsub] of this.editorBeforeCloseUnsubs) {
2454
+ if (cellEl.contains(hostEl)) {
2455
+ unsub();
2456
+ this.editorBeforeCloseUnsubs.delete(hostEl);
2457
+ }
2458
+ }
2435
2459
  }
2436
2460
  /**
2437
2461
  * Unmount a specific container (e.g., detail panel, tool panel).
@@ -2469,6 +2493,41 @@ class GridAdapter {
2469
2493
  this.componentRefs = [];
2470
2494
  this.editorComponentRefs.forEach((ref) => ref.destroy());
2471
2495
  this.editorComponentRefs = [];
2496
+ this.editorBeforeCloseUnsubs.forEach((unsub) => unsub());
2497
+ this.editorBeforeCloseUnsubs.clear();
2498
+ }
2499
+ /**
2500
+ * Attaches a `before-edit-close` listener on the host grid that flushes
2501
+ * the focused input inside `host` via native `.blur()` so editors that
2502
+ * commit on `(blur)` flush pending input before the cell DOM is torn
2503
+ * down by Tab / programmatic row exit.
2504
+ *
2505
+ * The grid is resolved lazily via `queueMicrotask` because the host is
2506
+ * appended to the cell *after* the editor wrapper returns. Mirror of
2507
+ * Vue's `attachBeforeEditCloseFlush` and React's `wrapReactEditor`
2508
+ * queueMicrotask bridge.
2509
+ * @internal
2510
+ */
2511
+ attachBeforeEditCloseFlush(host) {
2512
+ queueMicrotask(() => {
2513
+ const gridEl = host.closest('tbw-grid');
2514
+ if (!gridEl)
2515
+ return;
2516
+ const flush = () => {
2517
+ const focused = host.ownerDocument.activeElement;
2518
+ if (focused &&
2519
+ host.contains(focused) &&
2520
+ (focused instanceof HTMLInputElement ||
2521
+ focused instanceof HTMLTextAreaElement ||
2522
+ focused instanceof HTMLSelectElement)) {
2523
+ focused.blur();
2524
+ }
2525
+ };
2526
+ gridEl.addEventListener('before-edit-close', flush);
2527
+ this.editorBeforeCloseUnsubs.set(host, () => {
2528
+ gridEl.removeEventListener('before-edit-close', flush);
2529
+ });
2530
+ });
2472
2531
  }
2473
2532
  }
2474
2533
 
@@ -5025,17 +5084,29 @@ class Grid {
5025
5084
  /**
5026
5085
  * Enable row drag-to-reorder.
5027
5086
  *
5087
+ * @deprecated Use `rowDragDrop` instead. `reorderRows` remains as an alias.
5088
+ *
5028
5089
  * **Requires feature import:**
5029
5090
  * ```typescript
5030
5091
  * import '@toolbox-web/grid-angular/features/reorder-rows';
5031
5092
  * ```
5093
+ */
5094
+ reorderRows = input(...(ngDevMode ? [undefined, { debugName: "reorderRows" }] : /* istanbul ignore next */ []));
5095
+ /**
5096
+ * Enable row drag-and-drop within and across grids.
5097
+ *
5098
+ * **Requires feature import:**
5099
+ * ```typescript
5100
+ * import '@toolbox-web/grid-angular/features/row-drag-drop';
5101
+ * ```
5032
5102
  *
5033
5103
  * @example
5034
5104
  * ```html
5035
- * <tbw-grid [reorderRows]="true" />
5105
+ * <tbw-grid [rowDragDrop]="{ dropZone: 'employees', operation: 'move' }" />
5036
5106
  * ```
5037
5107
  */
5038
- reorderRows = input(...(ngDevMode ? [undefined, { debugName: "reorderRows" }] : /* istanbul ignore next */ []));
5108
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5109
+ rowDragDrop = input(...(ngDevMode ? [undefined, { debugName: "rowDragDrop" }] : /* istanbul ignore next */ []));
5039
5110
  /**
5040
5111
  * Enable row grouping by field values.
5041
5112
  *
@@ -5338,6 +5409,33 @@ class Grid {
5338
5409
  */
5339
5410
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
5340
5411
  rowMove = output();
5412
+ /**
5413
+ * Emitted when a row drag starts. Cancelable via `event.preventDefault()`.
5414
+ *
5415
+ * @example
5416
+ * ```html
5417
+ * <tbw-grid (rowDragStart)="onRowDragStart($event)">...</tbw-grid>
5418
+ * ```
5419
+ */
5420
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5421
+ rowDragStart = output();
5422
+ /**
5423
+ * Emitted when a row drag ends (after drop or cancel).
5424
+ */
5425
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5426
+ rowDragEnd = output();
5427
+ /**
5428
+ * Emitted on the target grid when rows are dropped from another grid.
5429
+ * Cancelable via `event.preventDefault()`.
5430
+ */
5431
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5432
+ rowDrop = output();
5433
+ /**
5434
+ * Emitted on BOTH source and target grids after a successful cross-grid
5435
+ * row transfer.
5436
+ */
5437
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5438
+ rowTransfer = output();
5341
5439
  /**
5342
5440
  * Emitted when a group is expanded or collapsed.
5343
5441
  *
@@ -5462,6 +5560,10 @@ class Grid {
5462
5560
  columnStateChange: 'column-state-change',
5463
5561
  selectionChange: 'selection-change',
5464
5562
  rowMove: 'row-move',
5563
+ rowDragStart: 'row-drag-start',
5564
+ rowDragEnd: 'row-drag-end',
5565
+ rowDrop: 'row-drop',
5566
+ rowTransfer: 'row-transfer',
5465
5567
  groupToggle: 'group-toggle',
5466
5568
  treeExpand: 'tree-expand',
5467
5569
  detailExpand: 'detail-expand',
@@ -5542,6 +5644,7 @@ class Grid {
5542
5644
  }
5543
5645
  addPlugin('columnVirtualization', this.columnVirtualization());
5544
5646
  addPlugin('reorderRows', this.reorderRows());
5647
+ addPlugin('rowDragDrop', this.rowDragDrop());
5545
5648
  // Pre-process groupingRows config to bridge Angular component classes
5546
5649
  const grConfig = this.groupingRows();
5547
5650
  if (grConfig && typeof grConfig === 'object' && this.adapter) {
@@ -5703,12 +5806,12 @@ class Grid {
5703
5806
  }
5704
5807
  }
5705
5808
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: Grid, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5706
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: Grid, isStandalone: true, selector: "tbw-grid", inputs: { customStyles: { classPropertyName: "customStyles", publicName: "customStyles", isSignal: true, isRequired: false, transformFunction: null }, sortable: { classPropertyName: "sortable", publicName: "sortable", isSignal: true, isRequired: false, transformFunction: null }, filterable: { classPropertyName: "filterable", publicName: "filterable", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, fitMode: { classPropertyName: "fitMode", publicName: "fitMode", isSignal: true, isRequired: false, transformFunction: null }, gridConfig: { classPropertyName: "gridConfig", publicName: "gridConfig", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, editing: { classPropertyName: "editing", publicName: "editing", isSignal: true, isRequired: false, transformFunction: null }, clipboard: { classPropertyName: "clipboard", publicName: "clipboard", isSignal: true, isRequired: false, transformFunction: null }, contextMenu: { classPropertyName: "contextMenu", publicName: "contextMenu", isSignal: true, isRequired: false, transformFunction: null }, multiSort: { classPropertyName: "multiSort", publicName: "multiSort", isSignal: true, isRequired: false, transformFunction: null }, filtering: { classPropertyName: "filtering", publicName: "filtering", isSignal: true, isRequired: false, transformFunction: null }, reorderColumns: { classPropertyName: "reorderColumns", publicName: "reorderColumns", isSignal: true, isRequired: false, transformFunction: null }, visibility: { classPropertyName: "visibility", publicName: "visibility", isSignal: true, isRequired: false, transformFunction: null }, pinnedColumns: { classPropertyName: "pinnedColumns", publicName: "pinnedColumns", isSignal: true, isRequired: false, transformFunction: null }, groupingColumns: { classPropertyName: "groupingColumns", publicName: "groupingColumns", isSignal: true, isRequired: false, transformFunction: null }, columnVirtualization: { classPropertyName: "columnVirtualization", publicName: "columnVirtualization", isSignal: true, isRequired: false, transformFunction: null }, reorderRows: { classPropertyName: "reorderRows", publicName: "reorderRows", isSignal: true, isRequired: false, transformFunction: null }, groupingRows: { classPropertyName: "groupingRows", publicName: "groupingRows", isSignal: true, isRequired: false, transformFunction: null }, pinnedRows: { classPropertyName: "pinnedRows", publicName: "pinnedRows", isSignal: true, isRequired: false, transformFunction: null }, tree: { classPropertyName: "tree", publicName: "tree", isSignal: true, isRequired: false, transformFunction: null }, masterDetail: { classPropertyName: "masterDetail", publicName: "masterDetail", isSignal: true, isRequired: false, transformFunction: null }, responsive: { classPropertyName: "responsive", publicName: "responsive", isSignal: true, isRequired: false, transformFunction: null }, undoRedo: { classPropertyName: "undoRedo", publicName: "undoRedo", isSignal: true, isRequired: false, transformFunction: null }, exportFeature: { classPropertyName: "exportFeature", publicName: "export", isSignal: true, isRequired: false, transformFunction: null }, print: { classPropertyName: "print", publicName: "print", isSignal: true, isRequired: false, transformFunction: null }, pivot: { classPropertyName: "pivot", publicName: "pivot", isSignal: true, isRequired: false, transformFunction: null }, serverSide: { classPropertyName: "serverSide", publicName: "serverSide", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cellClick: "cellClick", rowClick: "rowClick", cellActivate: "cellActivate", cellChange: "cellChange", cellCommit: "cellCommit", rowCommit: "rowCommit", changedRowsReset: "changedRowsReset", sortChange: "sortChange", filterChange: "filterChange", columnResize: "columnResize", columnMove: "columnMove", columnVisibility: "columnVisibility", columnStateChange: "columnStateChange", selectionChange: "selectionChange", rowMove: "rowMove", groupToggle: "groupToggle", treeExpand: "treeExpand", detailExpand: "detailExpand", responsiveChange: "responsiveChange", copy: "copy", paste: "paste", undoRedoAction: "undoRedoAction", exportComplete: "exportComplete", printStart: "printStart", printComplete: "printComplete", tbwScroll: "tbwScroll" }, ngImport: i0 });
5809
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: Grid, isStandalone: true, selector: "tbw-grid", inputs: { customStyles: { classPropertyName: "customStyles", publicName: "customStyles", isSignal: true, isRequired: false, transformFunction: null }, sortable: { classPropertyName: "sortable", publicName: "sortable", isSignal: true, isRequired: false, transformFunction: null }, filterable: { classPropertyName: "filterable", publicName: "filterable", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, fitMode: { classPropertyName: "fitMode", publicName: "fitMode", isSignal: true, isRequired: false, transformFunction: null }, gridConfig: { classPropertyName: "gridConfig", publicName: "gridConfig", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, editing: { classPropertyName: "editing", publicName: "editing", isSignal: true, isRequired: false, transformFunction: null }, clipboard: { classPropertyName: "clipboard", publicName: "clipboard", isSignal: true, isRequired: false, transformFunction: null }, contextMenu: { classPropertyName: "contextMenu", publicName: "contextMenu", isSignal: true, isRequired: false, transformFunction: null }, multiSort: { classPropertyName: "multiSort", publicName: "multiSort", isSignal: true, isRequired: false, transformFunction: null }, filtering: { classPropertyName: "filtering", publicName: "filtering", isSignal: true, isRequired: false, transformFunction: null }, reorderColumns: { classPropertyName: "reorderColumns", publicName: "reorderColumns", isSignal: true, isRequired: false, transformFunction: null }, visibility: { classPropertyName: "visibility", publicName: "visibility", isSignal: true, isRequired: false, transformFunction: null }, pinnedColumns: { classPropertyName: "pinnedColumns", publicName: "pinnedColumns", isSignal: true, isRequired: false, transformFunction: null }, groupingColumns: { classPropertyName: "groupingColumns", publicName: "groupingColumns", isSignal: true, isRequired: false, transformFunction: null }, columnVirtualization: { classPropertyName: "columnVirtualization", publicName: "columnVirtualization", isSignal: true, isRequired: false, transformFunction: null }, reorderRows: { classPropertyName: "reorderRows", publicName: "reorderRows", isSignal: true, isRequired: false, transformFunction: null }, rowDragDrop: { classPropertyName: "rowDragDrop", publicName: "rowDragDrop", isSignal: true, isRequired: false, transformFunction: null }, groupingRows: { classPropertyName: "groupingRows", publicName: "groupingRows", isSignal: true, isRequired: false, transformFunction: null }, pinnedRows: { classPropertyName: "pinnedRows", publicName: "pinnedRows", isSignal: true, isRequired: false, transformFunction: null }, tree: { classPropertyName: "tree", publicName: "tree", isSignal: true, isRequired: false, transformFunction: null }, masterDetail: { classPropertyName: "masterDetail", publicName: "masterDetail", isSignal: true, isRequired: false, transformFunction: null }, responsive: { classPropertyName: "responsive", publicName: "responsive", isSignal: true, isRequired: false, transformFunction: null }, undoRedo: { classPropertyName: "undoRedo", publicName: "undoRedo", isSignal: true, isRequired: false, transformFunction: null }, exportFeature: { classPropertyName: "exportFeature", publicName: "export", isSignal: true, isRequired: false, transformFunction: null }, print: { classPropertyName: "print", publicName: "print", isSignal: true, isRequired: false, transformFunction: null }, pivot: { classPropertyName: "pivot", publicName: "pivot", isSignal: true, isRequired: false, transformFunction: null }, serverSide: { classPropertyName: "serverSide", publicName: "serverSide", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cellClick: "cellClick", rowClick: "rowClick", cellActivate: "cellActivate", cellChange: "cellChange", cellCommit: "cellCommit", rowCommit: "rowCommit", changedRowsReset: "changedRowsReset", sortChange: "sortChange", filterChange: "filterChange", columnResize: "columnResize", columnMove: "columnMove", columnVisibility: "columnVisibility", columnStateChange: "columnStateChange", selectionChange: "selectionChange", rowMove: "rowMove", rowDragStart: "rowDragStart", rowDragEnd: "rowDragEnd", rowDrop: "rowDrop", rowTransfer: "rowTransfer", groupToggle: "groupToggle", treeExpand: "treeExpand", detailExpand: "detailExpand", responsiveChange: "responsiveChange", copy: "copy", paste: "paste", undoRedoAction: "undoRedoAction", exportComplete: "exportComplete", printStart: "printStart", printComplete: "printComplete", tbwScroll: "tbwScroll" }, ngImport: i0 });
5707
5810
  }
5708
5811
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: Grid, decorators: [{
5709
5812
  type: Directive,
5710
5813
  args: [{ selector: 'tbw-grid' }]
5711
- }], ctorParameters: () => [], propDecorators: { customStyles: [{ type: i0.Input, args: [{ isSignal: true, alias: "customStyles", required: false }] }], sortable: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortable", required: false }] }], filterable: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterable", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], fitMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "fitMode", required: false }] }], gridConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "gridConfig", required: false }] }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }], editing: [{ type: i0.Input, args: [{ isSignal: true, alias: "editing", required: false }] }], clipboard: [{ type: i0.Input, args: [{ isSignal: true, alias: "clipboard", required: false }] }], contextMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "contextMenu", required: false }] }], multiSort: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiSort", required: false }] }], filtering: [{ type: i0.Input, args: [{ isSignal: true, alias: "filtering", required: false }] }], reorderColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "reorderColumns", required: false }] }], visibility: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibility", required: false }] }], pinnedColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedColumns", required: false }] }], groupingColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupingColumns", required: false }] }], columnVirtualization: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnVirtualization", required: false }] }], reorderRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "reorderRows", required: false }] }], groupingRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupingRows", required: false }] }], pinnedRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedRows", required: false }] }], tree: [{ type: i0.Input, args: [{ isSignal: true, alias: "tree", required: false }] }], masterDetail: [{ type: i0.Input, args: [{ isSignal: true, alias: "masterDetail", required: false }] }], responsive: [{ type: i0.Input, args: [{ isSignal: true, alias: "responsive", required: false }] }], undoRedo: [{ type: i0.Input, args: [{ isSignal: true, alias: "undoRedo", required: false }] }], exportFeature: [{ type: i0.Input, args: [{ isSignal: true, alias: "export", required: false }] }], print: [{ type: i0.Input, args: [{ isSignal: true, alias: "print", required: false }] }], pivot: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivot", required: false }] }], serverSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "serverSide", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }], cellClick: [{ type: i0.Output, args: ["cellClick"] }], rowClick: [{ type: i0.Output, args: ["rowClick"] }], cellActivate: [{ type: i0.Output, args: ["cellActivate"] }], cellChange: [{ type: i0.Output, args: ["cellChange"] }], cellCommit: [{ type: i0.Output, args: ["cellCommit"] }], rowCommit: [{ type: i0.Output, args: ["rowCommit"] }], changedRowsReset: [{ type: i0.Output, args: ["changedRowsReset"] }], sortChange: [{ type: i0.Output, args: ["sortChange"] }], filterChange: [{ type: i0.Output, args: ["filterChange"] }], columnResize: [{ type: i0.Output, args: ["columnResize"] }], columnMove: [{ type: i0.Output, args: ["columnMove"] }], columnVisibility: [{ type: i0.Output, args: ["columnVisibility"] }], columnStateChange: [{ type: i0.Output, args: ["columnStateChange"] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], rowMove: [{ type: i0.Output, args: ["rowMove"] }], groupToggle: [{ type: i0.Output, args: ["groupToggle"] }], treeExpand: [{ type: i0.Output, args: ["treeExpand"] }], detailExpand: [{ type: i0.Output, args: ["detailExpand"] }], responsiveChange: [{ type: i0.Output, args: ["responsiveChange"] }], copy: [{ type: i0.Output, args: ["copy"] }], paste: [{ type: i0.Output, args: ["paste"] }], undoRedoAction: [{ type: i0.Output, args: ["undoRedoAction"] }], exportComplete: [{ type: i0.Output, args: ["exportComplete"] }], printStart: [{ type: i0.Output, args: ["printStart"] }], printComplete: [{ type: i0.Output, args: ["printComplete"] }], tbwScroll: [{ type: i0.Output, args: ["tbwScroll"] }] } });
5814
+ }], ctorParameters: () => [], propDecorators: { customStyles: [{ type: i0.Input, args: [{ isSignal: true, alias: "customStyles", required: false }] }], sortable: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortable", required: false }] }], filterable: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterable", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], fitMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "fitMode", required: false }] }], gridConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "gridConfig", required: false }] }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }], editing: [{ type: i0.Input, args: [{ isSignal: true, alias: "editing", required: false }] }], clipboard: [{ type: i0.Input, args: [{ isSignal: true, alias: "clipboard", required: false }] }], contextMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "contextMenu", required: false }] }], multiSort: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiSort", required: false }] }], filtering: [{ type: i0.Input, args: [{ isSignal: true, alias: "filtering", required: false }] }], reorderColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "reorderColumns", required: false }] }], visibility: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibility", required: false }] }], pinnedColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedColumns", required: false }] }], groupingColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupingColumns", required: false }] }], columnVirtualization: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnVirtualization", required: false }] }], reorderRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "reorderRows", required: false }] }], rowDragDrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowDragDrop", required: false }] }], groupingRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupingRows", required: false }] }], pinnedRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnedRows", required: false }] }], tree: [{ type: i0.Input, args: [{ isSignal: true, alias: "tree", required: false }] }], masterDetail: [{ type: i0.Input, args: [{ isSignal: true, alias: "masterDetail", required: false }] }], responsive: [{ type: i0.Input, args: [{ isSignal: true, alias: "responsive", required: false }] }], undoRedo: [{ type: i0.Input, args: [{ isSignal: true, alias: "undoRedo", required: false }] }], exportFeature: [{ type: i0.Input, args: [{ isSignal: true, alias: "export", required: false }] }], print: [{ type: i0.Input, args: [{ isSignal: true, alias: "print", required: false }] }], pivot: [{ type: i0.Input, args: [{ isSignal: true, alias: "pivot", required: false }] }], serverSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "serverSide", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }], cellClick: [{ type: i0.Output, args: ["cellClick"] }], rowClick: [{ type: i0.Output, args: ["rowClick"] }], cellActivate: [{ type: i0.Output, args: ["cellActivate"] }], cellChange: [{ type: i0.Output, args: ["cellChange"] }], cellCommit: [{ type: i0.Output, args: ["cellCommit"] }], rowCommit: [{ type: i0.Output, args: ["rowCommit"] }], changedRowsReset: [{ type: i0.Output, args: ["changedRowsReset"] }], sortChange: [{ type: i0.Output, args: ["sortChange"] }], filterChange: [{ type: i0.Output, args: ["filterChange"] }], columnResize: [{ type: i0.Output, args: ["columnResize"] }], columnMove: [{ type: i0.Output, args: ["columnMove"] }], columnVisibility: [{ type: i0.Output, args: ["columnVisibility"] }], columnStateChange: [{ type: i0.Output, args: ["columnStateChange"] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], rowMove: [{ type: i0.Output, args: ["rowMove"] }], rowDragStart: [{ type: i0.Output, args: ["rowDragStart"] }], rowDragEnd: [{ type: i0.Output, args: ["rowDragEnd"] }], rowDrop: [{ type: i0.Output, args: ["rowDrop"] }], rowTransfer: [{ type: i0.Output, args: ["rowTransfer"] }], groupToggle: [{ type: i0.Output, args: ["groupToggle"] }], treeExpand: [{ type: i0.Output, args: ["treeExpand"] }], detailExpand: [{ type: i0.Output, args: ["detailExpand"] }], responsiveChange: [{ type: i0.Output, args: ["responsiveChange"] }], copy: [{ type: i0.Output, args: ["copy"] }], paste: [{ type: i0.Output, args: ["paste"] }], undoRedoAction: [{ type: i0.Output, args: ["undoRedoAction"] }], exportComplete: [{ type: i0.Output, args: ["exportComplete"] }], printStart: [{ type: i0.Output, args: ["printStart"] }], printComplete: [{ type: i0.Output, args: ["printComplete"] }], tbwScroll: [{ type: i0.Output, args: ["tbwScroll"] }] } });
5712
5815
 
5713
5816
  /**
5714
5817
  * @packageDocumentation