@toolbox-web/grid-angular 0.18.2 → 0.18.4

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 (40) hide show
  1. package/fesm2022/toolbox-web-grid-angular-features-export.mjs +1 -1
  2. package/fesm2022/toolbox-web-grid-angular-features-export.mjs.map +1 -1
  3. package/fesm2022/toolbox-web-grid-angular-features-filtering.mjs +13 -1
  4. package/fesm2022/toolbox-web-grid-angular-features-filtering.mjs.map +1 -1
  5. package/fesm2022/toolbox-web-grid-angular-features-print.mjs +1 -1
  6. package/fesm2022/toolbox-web-grid-angular-features-print.mjs.map +1 -1
  7. package/fesm2022/toolbox-web-grid-angular-features-selection.mjs +4 -4
  8. package/fesm2022/toolbox-web-grid-angular-features-selection.mjs.map +1 -1
  9. package/fesm2022/toolbox-web-grid-angular-features-undo-redo.mjs +3 -3
  10. package/fesm2022/toolbox-web-grid-angular-features-undo-redo.mjs.map +1 -1
  11. package/fesm2022/toolbox-web-grid-angular.mjs +167 -176
  12. package/fesm2022/toolbox-web-grid-angular.mjs.map +1 -1
  13. package/package.json +1 -1
  14. package/types/toolbox-web-grid-angular-features-clipboard.d.ts.map +1 -1
  15. package/types/toolbox-web-grid-angular-features-column-virtualization.d.ts.map +1 -1
  16. package/types/toolbox-web-grid-angular-features-context-menu.d.ts.map +1 -1
  17. package/types/toolbox-web-grid-angular-features-editing.d.ts.map +1 -1
  18. package/types/toolbox-web-grid-angular-features-export.d.ts.map +1 -1
  19. package/types/toolbox-web-grid-angular-features-filtering.d.ts +13 -1
  20. package/types/toolbox-web-grid-angular-features-filtering.d.ts.map +1 -1
  21. package/types/toolbox-web-grid-angular-features-grouping-columns.d.ts.map +1 -1
  22. package/types/toolbox-web-grid-angular-features-grouping-rows.d.ts.map +1 -1
  23. package/types/toolbox-web-grid-angular-features-master-detail.d.ts.map +1 -1
  24. package/types/toolbox-web-grid-angular-features-multi-sort.d.ts.map +1 -1
  25. package/types/toolbox-web-grid-angular-features-pinned-columns.d.ts.map +1 -1
  26. package/types/toolbox-web-grid-angular-features-pinned-rows.d.ts.map +1 -1
  27. package/types/toolbox-web-grid-angular-features-pivot.d.ts.map +1 -1
  28. package/types/toolbox-web-grid-angular-features-print.d.ts.map +1 -1
  29. package/types/toolbox-web-grid-angular-features-reorder-columns.d.ts.map +1 -1
  30. package/types/toolbox-web-grid-angular-features-reorder-rows.d.ts.map +1 -1
  31. package/types/toolbox-web-grid-angular-features-reorder.d.ts.map +1 -1
  32. package/types/toolbox-web-grid-angular-features-responsive.d.ts.map +1 -1
  33. package/types/toolbox-web-grid-angular-features-row-reorder.d.ts.map +1 -1
  34. package/types/toolbox-web-grid-angular-features-selection.d.ts.map +1 -1
  35. package/types/toolbox-web-grid-angular-features-server-side.d.ts.map +1 -1
  36. package/types/toolbox-web-grid-angular-features-sorting.d.ts.map +1 -1
  37. package/types/toolbox-web-grid-angular-features-tree.d.ts.map +1 -1
  38. package/types/toolbox-web-grid-angular-features-undo-redo.d.ts.map +1 -1
  39. package/types/toolbox-web-grid-angular-features-visibility.d.ts.map +1 -1
  40. package/types/toolbox-web-grid-angular.d.ts.map +1 -1
@@ -91,7 +91,7 @@ class GridColumnEditor {
91
91
  /**
92
92
  * Query for the ng-template content child.
93
93
  */
94
- template = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "template" }] : []));
94
+ template = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "template" }] : /* istanbul ignore next */ []));
95
95
  /** Effect that triggers when the template is available */
96
96
  onTemplateReceived = effect(() => {
97
97
  const template = this.template();
@@ -99,7 +99,7 @@ class GridColumnEditor {
99
99
  // Register the template for this element
100
100
  editorTemplateRegistry.set(this.elementRef.nativeElement, template);
101
101
  }
102
- }, ...(ngDevMode ? [{ debugName: "onTemplateReceived" }] : []));
102
+ }, ...(ngDevMode ? [{ debugName: "onTemplateReceived" }] : /* istanbul ignore next */ []));
103
103
  /**
104
104
  * Static type guard for template context.
105
105
  * Enables type inference in templates.
@@ -107,10 +107,10 @@ class GridColumnEditor {
107
107
  static ngTemplateContextGuard(dir, ctx) {
108
108
  return true;
109
109
  }
110
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridColumnEditor, deps: [], target: i0.ɵɵFactoryTarget.Directive });
111
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.1", type: GridColumnEditor, isStandalone: true, selector: "tbw-grid-column-editor", queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], ngImport: i0 });
110
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridColumnEditor, deps: [], target: i0.ɵɵFactoryTarget.Directive });
111
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.5", type: GridColumnEditor, isStandalone: true, selector: "tbw-grid-column-editor", queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], ngImport: i0 });
112
112
  }
113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridColumnEditor, decorators: [{
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridColumnEditor, decorators: [{
114
114
  type: Directive,
115
115
  args: [{ selector: 'tbw-grid-column-editor' }]
116
116
  }], propDecorators: { template: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
@@ -165,7 +165,7 @@ class GridColumnView {
165
165
  /**
166
166
  * Query for the ng-template content child.
167
167
  */
168
- template = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "template" }] : []));
168
+ template = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "template" }] : /* istanbul ignore next */ []));
169
169
  /** Effect that triggers when the template is available */
170
170
  onTemplateReceived = effect(() => {
171
171
  const template = this.template();
@@ -173,7 +173,7 @@ class GridColumnView {
173
173
  // Register the template for this element
174
174
  templateRegistry.set(this.elementRef.nativeElement, template);
175
175
  }
176
- }, ...(ngDevMode ? [{ debugName: "onTemplateReceived" }] : []));
176
+ }, ...(ngDevMode ? [{ debugName: "onTemplateReceived" }] : /* istanbul ignore next */ []));
177
177
  /**
178
178
  * Static type guard for template context.
179
179
  * Enables type inference in templates.
@@ -181,10 +181,10 @@ class GridColumnView {
181
181
  static ngTemplateContextGuard(dir, ctx) {
182
182
  return true;
183
183
  }
184
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridColumnView, deps: [], target: i0.ɵɵFactoryTarget.Directive });
185
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.1", type: GridColumnView, isStandalone: true, selector: "tbw-grid-column-view", queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], ngImport: i0 });
184
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridColumnView, deps: [], target: i0.ɵɵFactoryTarget.Directive });
185
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.5", type: GridColumnView, isStandalone: true, selector: "tbw-grid-column-view", queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], ngImport: i0 });
186
186
  }
187
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridColumnView, decorators: [{
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridColumnView, decorators: [{
188
188
  type: Directive,
189
189
  args: [{ selector: 'tbw-grid-column-view' }]
190
190
  }], propDecorators: { template: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
@@ -261,13 +261,13 @@ function getDetailConfig(gridElement) {
261
261
  class GridDetailView {
262
262
  elementRef = inject((ElementRef));
263
263
  /** Whether to show the expand/collapse column. Default: true */
264
- showExpandColumn = input(true, ...(ngDevMode ? [{ debugName: "showExpandColumn" }] : []));
264
+ showExpandColumn = input(true, ...(ngDevMode ? [{ debugName: "showExpandColumn" }] : /* istanbul ignore next */ []));
265
265
  /** Animation style for expand/collapse. Default: 'slide' */
266
- animation = input('slide', ...(ngDevMode ? [{ debugName: "animation" }] : []));
266
+ animation = input('slide', ...(ngDevMode ? [{ debugName: "animation" }] : /* istanbul ignore next */ []));
267
267
  /**
268
268
  * Query for the ng-template content child.
269
269
  */
270
- template = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "template" }] : []));
270
+ template = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "template" }] : /* istanbul ignore next */ []));
271
271
  /** Effect that triggers when the template is available */
272
272
  onTemplateReceived = effect(() => {
273
273
  const template = this.template();
@@ -275,7 +275,7 @@ class GridDetailView {
275
275
  // Register the template for this element
276
276
  detailTemplateRegistry.set(this.elementRef.nativeElement, template);
277
277
  }
278
- }, ...(ngDevMode ? [{ debugName: "onTemplateReceived" }] : []));
278
+ }, ...(ngDevMode ? [{ debugName: "onTemplateReceived" }] : /* istanbul ignore next */ []));
279
279
  /**
280
280
  * Static type guard for template context.
281
281
  * Enables type inference in templates.
@@ -283,10 +283,10 @@ class GridDetailView {
283
283
  static ngTemplateContextGuard(dir, ctx) {
284
284
  return true;
285
285
  }
286
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridDetailView, deps: [], target: i0.ɵɵFactoryTarget.Directive });
287
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.1", type: GridDetailView, isStandalone: true, selector: "tbw-grid-detail", inputs: { showExpandColumn: { classPropertyName: "showExpandColumn", publicName: "showExpandColumn", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], ngImport: i0 });
286
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridDetailView, deps: [], target: i0.ɵɵFactoryTarget.Directive });
287
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.5", type: GridDetailView, isStandalone: true, selector: "tbw-grid-detail", inputs: { showExpandColumn: { classPropertyName: "showExpandColumn", publicName: "showExpandColumn", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], ngImport: i0 });
288
288
  }
289
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridDetailView, decorators: [{
289
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridDetailView, decorators: [{
290
290
  type: Directive,
291
291
  args: [{ selector: 'tbw-grid-detail' }]
292
292
  }], propDecorators: { showExpandColumn: [{ type: i0.Input, args: [{ isSignal: true, alias: "showExpandColumn", required: false }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], template: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
@@ -365,7 +365,7 @@ class GridFormArray {
365
365
  /**
366
366
  * The FormArray to bind to the grid.
367
367
  */
368
- formArray = input.required(...(ngDevMode ? [{ debugName: "formArray" }] : []));
368
+ formArray = input.required(...(ngDevMode ? [{ debugName: "formArray" }] : /* istanbul ignore next */ []));
369
369
  /**
370
370
  * Whether to automatically sync Angular validation state to grid's visual invalid styling.
371
371
  *
@@ -377,7 +377,7 @@ class GridFormArray {
377
377
  *
378
378
  * @default true
379
379
  */
380
- syncValidation = input(true, ...(ngDevMode ? [{ debugName: "syncValidation" }] : []));
380
+ syncValidation = input(true, ...(ngDevMode ? [{ debugName: "syncValidation" }] : /* istanbul ignore next */ []));
381
381
  /**
382
382
  * Effect that sets up valueChanges subscription when FormArray changes.
383
383
  * This handles both initial binding and when the FormArray reference changes.
@@ -408,7 +408,7 @@ class GridFormArray {
408
408
  return;
409
409
  grid.rows = formArray.getRawValue();
410
410
  });
411
- }, ...(ngDevMode ? [{ debugName: "syncFormArrayToGrid" }] : []));
411
+ }, ...(ngDevMode ? [{ debugName: "syncFormArrayToGrid" }] : /* istanbul ignore next */ []));
412
412
  ngOnInit() {
413
413
  const grid = this.elementRef.nativeElement;
414
414
  if (!grid)
@@ -757,10 +757,10 @@ class GridFormArray {
757
757
  return typeof error === 'string' ? error : (error?.message ?? `Validation error: ${firstKey}`);
758
758
  }
759
759
  }
760
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridFormArray, deps: [], target: i0.ɵɵFactoryTarget.Directive });
761
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: GridFormArray, isStandalone: true, selector: "tbw-grid[formArray]", inputs: { formArray: { classPropertyName: "formArray", publicName: "formArray", isSignal: true, isRequired: true, transformFunction: null }, syncValidation: { classPropertyName: "syncValidation", publicName: "syncValidation", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
760
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridFormArray, deps: [], target: i0.ɵɵFactoryTarget.Directive });
761
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: GridFormArray, isStandalone: true, selector: "tbw-grid[formArray]", inputs: { formArray: { classPropertyName: "formArray", publicName: "formArray", isSignal: true, isRequired: true, transformFunction: null }, syncValidation: { classPropertyName: "syncValidation", publicName: "syncValidation", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
762
762
  }
763
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridFormArray, decorators: [{
763
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridFormArray, decorators: [{
764
764
  type: Directive,
765
765
  args: [{
766
766
  selector: 'tbw-grid[formArray]',
@@ -823,7 +823,7 @@ class GridResponsiveCard {
823
823
  /**
824
824
  * The ng-template containing the card content.
825
825
  */
826
- template = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "template" }] : []));
826
+ template = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "template" }] : /* istanbul ignore next */ []));
827
827
  /**
828
828
  * Effect that registers the template when it becomes available.
829
829
  */
@@ -832,17 +832,17 @@ class GridResponsiveCard {
832
832
  if (template) {
833
833
  responsiveCardTemplateRegistry.set(this.elementRef.nativeElement, template);
834
834
  }
835
- }, ...(ngDevMode ? [{ debugName: "onTemplateReceived" }] : []));
835
+ }, ...(ngDevMode ? [{ debugName: "onTemplateReceived" }] : /* istanbul ignore next */ []));
836
836
  /**
837
837
  * Type guard for template context inference.
838
838
  */
839
839
  static ngTemplateContextGuard(_directive, context) {
840
840
  return true;
841
841
  }
842
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridResponsiveCard, deps: [], target: i0.ɵɵFactoryTarget.Directive });
843
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.1", type: GridResponsiveCard, isStandalone: true, selector: "tbw-grid-responsive-card", queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], ngImport: i0 });
842
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridResponsiveCard, deps: [], target: i0.ɵɵFactoryTarget.Directive });
843
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.5", type: GridResponsiveCard, isStandalone: true, selector: "tbw-grid-responsive-card", queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], ngImport: i0 });
844
844
  }
845
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridResponsiveCard, decorators: [{
845
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridResponsiveCard, decorators: [{
846
846
  type: Directive,
847
847
  args: [{
848
848
  selector: 'tbw-grid-responsive-card',
@@ -916,19 +916,19 @@ function getToolPanelElements(gridElement) {
916
916
  class GridToolPanel {
917
917
  elementRef = inject((ElementRef));
918
918
  /** Unique panel identifier (required) */
919
- id = input.required({ ...(ngDevMode ? { debugName: "id" } : {}), alias: 'id' });
919
+ id = input.required({ ...(ngDevMode ? { debugName: "id" } : /* istanbul ignore next */ {}), alias: 'id' });
920
920
  /** Panel title shown in accordion header (required) */
921
- title = input.required({ ...(ngDevMode ? { debugName: "title" } : {}), alias: 'title' });
921
+ title = input.required({ ...(ngDevMode ? { debugName: "title" } : /* istanbul ignore next */ {}), alias: 'title' });
922
922
  /** Icon for accordion section header (emoji or text) */
923
- icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : []));
923
+ icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
924
924
  /** Tooltip for accordion section header */
925
- tooltip = input(...(ngDevMode ? [undefined, { debugName: "tooltip" }] : []));
925
+ tooltip = input(...(ngDevMode ? [undefined, { debugName: "tooltip" }] : /* istanbul ignore next */ []));
926
926
  /** Panel order priority (lower = first, default: 100) */
927
- order = input(100, ...(ngDevMode ? [{ debugName: "order" }] : []));
927
+ order = input(100, ...(ngDevMode ? [{ debugName: "order" }] : /* istanbul ignore next */ []));
928
928
  /**
929
929
  * Query for the ng-template content child.
930
930
  */
931
- template = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "template" }] : []));
931
+ template = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "template" }] : /* istanbul ignore next */ []));
932
932
  /** Effect that triggers when the template is available */
933
933
  onTemplateReceived = effect(() => {
934
934
  const template = this.template();
@@ -947,7 +947,7 @@ class GridToolPanel {
947
947
  // Register the template for this element
948
948
  toolPanelTemplateRegistry.set(element, template);
949
949
  }
950
- }, ...(ngDevMode ? [{ debugName: "onTemplateReceived" }] : []));
950
+ }, ...(ngDevMode ? [{ debugName: "onTemplateReceived" }] : /* istanbul ignore next */ []));
951
951
  /**
952
952
  * Static type guard for template context.
953
953
  * Enables type inference in templates.
@@ -955,10 +955,10 @@ class GridToolPanel {
955
955
  static ngTemplateContextGuard(dir, ctx) {
956
956
  return true;
957
957
  }
958
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridToolPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
959
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.1", type: GridToolPanel, isStandalone: true, selector: "tbw-grid-tool-panel", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, order: { classPropertyName: "order", publicName: "order", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], ngImport: i0 });
958
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridToolPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
959
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.5", type: GridToolPanel, isStandalone: true, selector: "tbw-grid-tool-panel", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, order: { classPropertyName: "order", publicName: "order", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "template", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], ngImport: i0 });
960
960
  }
961
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridToolPanel, decorators: [{
961
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridToolPanel, decorators: [{
962
962
  type: Directive,
963
963
  args: [{ selector: 'tbw-grid-tool-panel' }]
964
964
  }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }], order: [{ type: i0.Input, args: [{ isSignal: true, alias: "order", required: false }] }], template: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
@@ -1078,10 +1078,10 @@ class TbwRenderer {
1078
1078
  static ngTemplateContextGuard(dir, ctx) {
1079
1079
  return true;
1080
1080
  }
1081
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TbwRenderer, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1082
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TbwRenderer, isStandalone: true, selector: "[tbwRenderer]", ngImport: i0 });
1081
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TbwRenderer, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1082
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: TbwRenderer, isStandalone: true, selector: "[tbwRenderer]", ngImport: i0 });
1083
1083
  }
1084
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TbwRenderer, decorators: [{
1084
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TbwRenderer, decorators: [{
1085
1085
  type: Directive,
1086
1086
  args: [{ selector: '[tbwRenderer]' }]
1087
1087
  }], ctorParameters: () => [] });
@@ -1163,10 +1163,10 @@ class TbwEditor {
1163
1163
  static ngTemplateContextGuard(dir, ctx) {
1164
1164
  return true;
1165
1165
  }
1166
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TbwEditor, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1167
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TbwEditor, isStandalone: true, selector: "[tbwEditor]", ngImport: i0 });
1166
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TbwEditor, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1167
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: TbwEditor, isStandalone: true, selector: "[tbwEditor]", ngImport: i0 });
1168
1168
  }
1169
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TbwEditor, decorators: [{
1169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TbwEditor, decorators: [{
1170
1170
  type: Directive,
1171
1171
  args: [{ selector: '[tbwEditor]' }]
1172
1172
  }], ctorParameters: () => [] });
@@ -1361,10 +1361,10 @@ class GridTypeRegistry {
1361
1361
  // the actual functions that instantiate Angular components
1362
1362
  };
1363
1363
  }
1364
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridTypeRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1365
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridTypeRegistry, providedIn: 'root' });
1364
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridTypeRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1365
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridTypeRegistry, providedIn: 'root' });
1366
1366
  }
1367
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridTypeRegistry, decorators: [{
1367
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridTypeRegistry, decorators: [{
1368
1368
  type: Injectable,
1369
1369
  args: [{ providedIn: 'root' }]
1370
1370
  }], ctorParameters: () => [] });
@@ -1789,40 +1789,33 @@ class GridAdapter {
1789
1789
  this.editorViewRefs.push(viewRef);
1790
1790
  // Trigger change detection
1791
1791
  viewRef.detectChanges();
1792
- // Get the first root node (the component's host element)
1793
- const rootNode = viewRef.rootNodes[0];
1792
+ // Use a stable wrapper so Angular's rootNodes (which may include comment
1793
+ // placeholders from <ng-container>) are always inside one element node.
1794
+ const container = document.createElement('span');
1795
+ container.style.display = 'contents';
1796
+ syncRootNodes(viewRef, container);
1794
1797
  // Auto-wire: Listen for commit/cancel events on the rendered component.
1795
1798
  // This allows components to just emit (commit) and (cancel) without
1796
1799
  // requiring explicit template bindings like (commit)="onCommit($event)".
1797
- if (rootNode && rootNode.addEventListener) {
1798
- rootNode.addEventListener('commit', (e) => {
1799
- const customEvent = e;
1800
- ctx.commit(customEvent.detail);
1801
- });
1802
- rootNode.addEventListener('cancel', () => {
1803
- ctx.cancel();
1804
- });
1805
- }
1806
- // Auto-update editor when value changes externally (e.g., via updateRow cascade).
1807
- // This keeps Angular template editors in sync without manual DOM patching.
1800
+ container.addEventListener('commit', (e) => {
1801
+ const customEvent = e;
1802
+ ctx.commit(customEvent.detail);
1803
+ });
1804
+ container.addEventListener('cancel', () => {
1805
+ ctx.cancel();
1806
+ });
1807
+ // Auto-update editor when value changes externally (e.g., via updateRow cascade
1808
+ // or Escape-revert in grid mode). Update the template context and run synchronous
1809
+ // detectChanges() Angular's own bindings and control flow (@for, @if) handle
1810
+ // re-rendering regardless of editor type (inputs, chips, contenteditable, etc.).
1808
1811
  ctx.onValueChange?.((newVal) => {
1809
1812
  context.$implicit = newVal;
1810
1813
  context.value = newVal;
1811
- viewRef.markForCheck();
1812
- // Also patch raw DOM inputs as a fallback for editors that don't bind to context
1813
- if (rootNode) {
1814
- const input = rootNode.querySelector?.('input,textarea,select');
1815
- if (input) {
1816
- if (input instanceof HTMLInputElement && input.type === 'checkbox') {
1817
- input.checked = !!newVal;
1818
- }
1819
- else {
1820
- input.value = String(newVal ?? '');
1821
- }
1822
- }
1823
- }
1814
+ viewRef.detectChanges();
1815
+ // Re-sync rootNodes in case Angular control flow changed them
1816
+ syncRootNodes(viewRef, container);
1824
1817
  });
1825
- return rootNode;
1818
+ return container;
1826
1819
  };
1827
1820
  }
1828
1821
  /**
@@ -2074,13 +2067,13 @@ class GridAdapter {
2074
2067
  column: ctx.column,
2075
2068
  }, true);
2076
2069
  wireEditorCallbacks(hostElement, componentRef.instance, (value) => ctx.commit(value), () => ctx.cancel());
2077
- // Auto-update editor when value changes externally (e.g., via updateRow cascade).
2078
- // This keeps Angular component editors in sync without manual DOM patching.
2070
+ // Auto-update editor when value changes externally (e.g., via updateRow cascade
2071
+ // or Escape-revert). Update the component input and run detectChanges()
2072
+ // the component's own template handles rendering regardless of editor type.
2079
2073
  ctx.onValueChange?.((newVal) => {
2080
2074
  try {
2081
2075
  // Notify the editor so it can clear stale internal state (e.g., searchText
2082
- // in autocomplete editors) before the value input updates. This ensures the
2083
- // template reads fresh state during the synchronous detectChanges() below.
2076
+ // in autocomplete editors) before the value input updates.
2084
2077
  const instance = componentRef.instance;
2085
2078
  if (typeof instance['onExternalValueChange'] === 'function') {
2086
2079
  instance.onExternalValueChange(newVal);
@@ -2089,16 +2082,7 @@ class GridAdapter {
2089
2082
  componentRef.changeDetectorRef.detectChanges();
2090
2083
  }
2091
2084
  catch {
2092
- // Input doesn't exist or component is destroyed — fall back to DOM patching
2093
- const input = hostElement.querySelector?.('input,textarea,select');
2094
- if (input) {
2095
- if (input instanceof HTMLInputElement && input.type === 'checkbox') {
2096
- input.checked = !!newVal;
2097
- }
2098
- else {
2099
- input.value = String(newVal ?? '');
2100
- }
2101
- }
2085
+ // Component is destroyed — nothing to update.
2102
2086
  }
2103
2087
  });
2104
2088
  return hostElement;
@@ -2544,10 +2528,10 @@ class GridIconRegistry {
2544
2528
  getRegisteredIcons() {
2545
2529
  return Array.from(this.icons.keys());
2546
2530
  }
2547
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridIconRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2548
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridIconRegistry, providedIn: 'root' });
2531
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridIconRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2532
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridIconRegistry, providedIn: 'root' });
2549
2533
  }
2550
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridIconRegistry, decorators: [{
2534
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridIconRegistry, decorators: [{
2551
2535
  type: Injectable,
2552
2536
  args: [{ providedIn: 'root' }]
2553
2537
  }], ctorParameters: () => [] });
@@ -2629,9 +2613,9 @@ function provideGridIcons(icons) {
2629
2613
  function injectGrid() {
2630
2614
  const elementRef = inject(ElementRef);
2631
2615
  // Reactive signals
2632
- const isReady = signal(false, ...(ngDevMode ? [{ debugName: "isReady" }] : []));
2633
- const config = signal(null, ...(ngDevMode ? [{ debugName: "config" }] : []));
2634
- const element = signal(null, ...(ngDevMode ? [{ debugName: "element" }] : []));
2616
+ const isReady = signal(false, ...(ngDevMode ? [{ debugName: "isReady" }] : /* istanbul ignore next */ []));
2617
+ const config = signal(null, ...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
2618
+ const element = signal(null, ...(ngDevMode ? [{ debugName: "element" }] : /* istanbul ignore next */ []));
2635
2619
  // Initialize after render
2636
2620
  afterNextRender(() => {
2637
2621
  const gridElement = elementRef.nativeElement.querySelector('tbw-grid');
@@ -2655,7 +2639,7 @@ function injectGrid() {
2655
2639
  if (!currentConfig?.columns)
2656
2640
  return [];
2657
2641
  return currentConfig.columns.filter((col) => !col.hidden);
2658
- }, ...(ngDevMode ? [{ debugName: "visibleColumns" }] : []));
2642
+ }, ...(ngDevMode ? [{ debugName: "visibleColumns" }] : /* istanbul ignore next */ []));
2659
2643
  // ═══════════════════════════════════════════════════════════════════
2660
2644
  // CORE METHODS
2661
2645
  // ═══════════════════════════════════════════════════════════════════
@@ -2869,7 +2853,7 @@ class BaseFilterPanel {
2869
2853
  * - `clearFilter()` — clear the filter for this column
2870
2854
  * - `closePanel()` — close the filter panel
2871
2855
  */
2872
- params = input.required(...(ngDevMode ? [{ debugName: "params" }] : []));
2856
+ params = input.required(...(ngDevMode ? [{ debugName: "params" }] : /* istanbul ignore next */ []));
2873
2857
  /**
2874
2858
  * Apply the filter then close the panel.
2875
2859
  *
@@ -2890,10 +2874,10 @@ class BaseFilterPanel {
2890
2874
  this.params().clearFilter();
2891
2875
  this.params().closePanel();
2892
2876
  }
2893
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: BaseFilterPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2894
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: BaseFilterPanel, isStandalone: true, inputs: { params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
2877
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: BaseFilterPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2878
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: BaseFilterPanel, isStandalone: true, inputs: { params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
2895
2879
  }
2896
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: BaseFilterPanel, decorators: [{
2880
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: BaseFilterPanel, decorators: [{
2897
2881
  type: Directive
2898
2882
  }], propDecorators: { params: [{ type: i0.Input, args: [{ isSignal: true, alias: "params", required: true }] }] } });
2899
2883
 
@@ -2969,20 +2953,20 @@ class BaseGridEditor {
2969
2953
  * The cell value. Used when FormControl is not available.
2970
2954
  * When a FormControl is provided, value is derived from control.value instead.
2971
2955
  */
2972
- value = input(...(ngDevMode ? [undefined, { debugName: "value" }] : []));
2956
+ value = input(...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
2973
2957
  /**
2974
2958
  * The full row data object.
2975
2959
  */
2976
- row = input(...(ngDevMode ? [undefined, { debugName: "row" }] : []));
2960
+ row = input(...(ngDevMode ? [undefined, { debugName: "row" }] : /* istanbul ignore next */ []));
2977
2961
  /**
2978
2962
  * The column configuration.
2979
2963
  */
2980
- column = input(...(ngDevMode ? [undefined, { debugName: "column" }] : []));
2964
+ column = input(...(ngDevMode ? [undefined, { debugName: "column" }] : /* istanbul ignore next */ []));
2981
2965
  /**
2982
2966
  * The FormControl for this cell, if the grid is bound to a FormArray.
2983
2967
  * When provided, the editor uses control.value instead of the value input.
2984
2968
  */
2985
- control = input(...(ngDevMode ? [undefined, { debugName: "control" }] : []));
2969
+ control = input(...(ngDevMode ? [undefined, { debugName: "control" }] : /* istanbul ignore next */ []));
2986
2970
  // ============================================================================
2987
2971
  // Outputs
2988
2972
  // ============================================================================
@@ -3008,35 +2992,35 @@ class BaseGridEditor {
3008
2992
  return ctrl.value;
3009
2993
  }
3010
2994
  return this.value();
3011
- }, ...(ngDevMode ? [{ debugName: "currentValue" }] : []));
2995
+ }, ...(ngDevMode ? [{ debugName: "currentValue" }] : /* istanbul ignore next */ []));
3012
2996
  /**
3013
2997
  * Whether the control is invalid (has validation errors).
3014
2998
  * Returns false if no FormControl is available.
3015
2999
  */
3016
3000
  isInvalid = computed(() => {
3017
3001
  return this.control()?.invalid ?? false;
3018
- }, ...(ngDevMode ? [{ debugName: "isInvalid" }] : []));
3002
+ }, ...(ngDevMode ? [{ debugName: "isInvalid" }] : /* istanbul ignore next */ []));
3019
3003
  /**
3020
3004
  * Whether the control is dirty (has been modified).
3021
3005
  * Returns false if no FormControl is available.
3022
3006
  */
3023
3007
  isDirty = computed(() => {
3024
3008
  return this.control()?.dirty ?? false;
3025
- }, ...(ngDevMode ? [{ debugName: "isDirty" }] : []));
3009
+ }, ...(ngDevMode ? [{ debugName: "isDirty" }] : /* istanbul ignore next */ []));
3026
3010
  /**
3027
3011
  * Whether the control has been touched.
3028
3012
  * Returns false if no FormControl is available.
3029
3013
  */
3030
3014
  isTouched = computed(() => {
3031
3015
  return this.control()?.touched ?? false;
3032
- }, ...(ngDevMode ? [{ debugName: "isTouched" }] : []));
3016
+ }, ...(ngDevMode ? [{ debugName: "isTouched" }] : /* istanbul ignore next */ []));
3033
3017
  /**
3034
3018
  * Whether the control has any validation errors.
3035
3019
  */
3036
3020
  hasErrors = computed(() => {
3037
3021
  const ctrl = this.control();
3038
3022
  return ctrl?.errors != null && Object.keys(ctrl.errors).length > 0;
3039
- }, ...(ngDevMode ? [{ debugName: "hasErrors" }] : []));
3023
+ }, ...(ngDevMode ? [{ debugName: "hasErrors" }] : /* istanbul ignore next */ []));
3040
3024
  /**
3041
3025
  * The first error message from the control's validation errors.
3042
3026
  * Returns an empty string if no errors.
@@ -3047,7 +3031,7 @@ class BaseGridEditor {
3047
3031
  return '';
3048
3032
  const firstKey = Object.keys(ctrl.errors)[0];
3049
3033
  return this.getErrorMessage(firstKey, ctrl.errors[firstKey]);
3050
- }, ...(ngDevMode ? [{ debugName: "firstErrorMessage" }] : []));
3034
+ }, ...(ngDevMode ? [{ debugName: "firstErrorMessage" }] : /* istanbul ignore next */ []));
3051
3035
  /**
3052
3036
  * All error messages from the control's validation errors.
3053
3037
  */
@@ -3056,7 +3040,7 @@ class BaseGridEditor {
3056
3040
  if (!ctrl?.errors)
3057
3041
  return [];
3058
3042
  return Object.entries(ctrl.errors).map(([key, value]) => this.getErrorMessage(key, value));
3059
- }, ...(ngDevMode ? [{ debugName: "allErrorMessages" }] : []));
3043
+ }, ...(ngDevMode ? [{ debugName: "allErrorMessages" }] : /* istanbul ignore next */ []));
3060
3044
  // ============================================================================
3061
3045
  // Lifecycle
3062
3046
  // ============================================================================
@@ -3202,10 +3186,10 @@ class BaseGridEditor {
3202
3186
  return `Invalid value (${errorKey})`;
3203
3187
  }
3204
3188
  }
3205
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: BaseGridEditor, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3206
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: BaseGridEditor, isStandalone: true, inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, row: { classPropertyName: "row", publicName: "row", isSignal: true, isRequired: false, transformFunction: null }, column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { commit: "commit", cancel: "cancel" }, ngImport: i0 });
3189
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: BaseGridEditor, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3190
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: BaseGridEditor, isStandalone: true, inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, row: { classPropertyName: "row", publicName: "row", isSignal: true, isRequired: false, transformFunction: null }, column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { commit: "commit", cancel: "cancel" }, ngImport: i0 });
3207
3191
  }
3208
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: BaseGridEditor, decorators: [{
3192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: BaseGridEditor, decorators: [{
3209
3193
  type: Directive
3210
3194
  }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], row: [{ type: i0.Input, args: [{ isSignal: true, alias: "row", required: false }] }], column: [{ type: i0.Input, args: [{ isSignal: true, alias: "column", required: false }] }], control: [{ type: i0.Input, args: [{ isSignal: true, alias: "control", required: false }] }], commit: [{ type: i0.Output, args: ["commit"] }], cancel: [{ type: i0.Output, args: ["cancel"] }] } });
3211
3195
 
@@ -3273,12 +3257,12 @@ class BaseGridEditorCVA extends BaseGridEditor {
3273
3257
  * Signal holding the value written by the form control via `writeValue()`.
3274
3258
  * Updated when the form control pushes a new value (e.g. `patchValue`, `setValue`).
3275
3259
  */
3276
- cvaValue = signal(null, ...(ngDevMode ? [{ debugName: "cvaValue" }] : []));
3260
+ cvaValue = signal(null, ...(ngDevMode ? [{ debugName: "cvaValue" }] : /* istanbul ignore next */ []));
3277
3261
  /**
3278
3262
  * Signal tracking the disabled state set by the form control.
3279
3263
  * Updated when `setDisabledState()` is called by Angular's forms module.
3280
3264
  */
3281
- disabledState = signal(false, ...(ngDevMode ? [{ debugName: "disabledState" }] : []));
3265
+ disabledState = signal(false, ...(ngDevMode ? [{ debugName: "disabledState" }] : /* istanbul ignore next */ []));
3282
3266
  /**
3283
3267
  * Resolved display value.
3284
3268
  *
@@ -3290,7 +3274,7 @@ class BaseGridEditorCVA extends BaseGridEditor {
3290
3274
  */
3291
3275
  displayValue = computed(() => {
3292
3276
  return this.currentValue() ?? this.cvaValue();
3293
- }, ...(ngDevMode ? [{ debugName: "displayValue" }] : []));
3277
+ }, ...(ngDevMode ? [{ debugName: "displayValue" }] : /* istanbul ignore next */ []));
3294
3278
  // ============================================================================
3295
3279
  // ControlValueAccessor Implementation
3296
3280
  // ============================================================================
@@ -3341,10 +3325,10 @@ class BaseGridEditorCVA extends BaseGridEditor {
3341
3325
  // handler and EditingPlugin will apply it correctly)
3342
3326
  this.commitValue(value);
3343
3327
  }
3344
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: BaseGridEditorCVA, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3345
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: BaseGridEditorCVA, isStandalone: true, usesInheritance: true, ngImport: i0 });
3328
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: BaseGridEditorCVA, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3329
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: BaseGridEditorCVA, isStandalone: true, usesInheritance: true, ngImport: i0 });
3346
3330
  }
3347
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: BaseGridEditorCVA, decorators: [{
3331
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: BaseGridEditorCVA, decorators: [{
3348
3332
  type: Directive
3349
3333
  }] });
3350
3334
 
@@ -3878,10 +3862,10 @@ class BaseOverlayEditor extends BaseGridEditor {
3878
3862
  });
3879
3863
  this._focusObserver.observe(cell, { attributes: true, attributeFilter: ['class'] });
3880
3864
  }
3881
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: BaseOverlayEditor, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3882
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: BaseOverlayEditor, isStandalone: true, usesInheritance: true, ngImport: i0 });
3865
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: BaseOverlayEditor, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3866
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: BaseOverlayEditor, isStandalone: true, usesInheritance: true, ngImport: i0 });
3883
3867
  }
3884
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: BaseOverlayEditor, decorators: [{
3868
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: BaseOverlayEditor, decorators: [{
3885
3869
  type: Directive
3886
3870
  }], ctorParameters: () => [] });
3887
3871
 
@@ -3916,10 +3900,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
3916
3900
  * @category Directive
3917
3901
  */
3918
3902
  class TbwGridColumn {
3919
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TbwGridColumn, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3920
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TbwGridColumn, isStandalone: true, selector: "tbw-grid-column", ngImport: i0 });
3903
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TbwGridColumn, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3904
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: TbwGridColumn, isStandalone: true, selector: "tbw-grid-column", ngImport: i0 });
3921
3905
  }
3922
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TbwGridColumn, decorators: [{
3906
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TbwGridColumn, decorators: [{
3923
3907
  type: Directive,
3924
3908
  args: [{
3925
3909
  selector: 'tbw-grid-column',
@@ -3954,10 +3938,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
3954
3938
  * @category Directive
3955
3939
  */
3956
3940
  class TbwGridHeader {
3957
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TbwGridHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3958
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TbwGridHeader, isStandalone: true, selector: "tbw-grid-header", ngImport: i0 });
3941
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TbwGridHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3942
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: TbwGridHeader, isStandalone: true, selector: "tbw-grid-header", ngImport: i0 });
3959
3943
  }
3960
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TbwGridHeader, decorators: [{
3944
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TbwGridHeader, decorators: [{
3961
3945
  type: Directive,
3962
3946
  args: [{
3963
3947
  selector: 'tbw-grid-header',
@@ -4068,7 +4052,7 @@ class GridLazyForm {
4068
4052
  * });
4069
4053
  * ```
4070
4054
  */
4071
- lazyForm = input.required(...(ngDevMode ? [{ debugName: "lazyForm" }] : []));
4055
+ lazyForm = input.required(...(ngDevMode ? [{ debugName: "lazyForm" }] : /* istanbul ignore next */ []));
4072
4056
  /**
4073
4057
  * Whether to automatically sync Angular validation state to grid's visual invalid styling.
4074
4058
  *
@@ -4079,7 +4063,7 @@ class GridLazyForm {
4079
4063
  *
4080
4064
  * @default true
4081
4065
  */
4082
- syncValidation = input(true, ...(ngDevMode ? [{ debugName: "syncValidation" }] : []));
4066
+ syncValidation = input(true, ...(ngDevMode ? [{ debugName: "syncValidation" }] : /* istanbul ignore next */ []));
4083
4067
  /**
4084
4068
  * Whether to keep FormGroups cached after a row exits edit mode.
4085
4069
  *
@@ -4088,7 +4072,7 @@ class GridLazyForm {
4088
4072
  *
4089
4073
  * @default false
4090
4074
  */
4091
- keepFormGroups = input(false, ...(ngDevMode ? [{ debugName: "keepFormGroups" }] : []));
4075
+ keepFormGroups = input(false, ...(ngDevMode ? [{ debugName: "keepFormGroups" }] : /* istanbul ignore next */ []));
4092
4076
  /**
4093
4077
  * Emitted when a row's form values change.
4094
4078
  * Useful for auto-save, validation display, or syncing to external state.
@@ -4428,10 +4412,10 @@ class GridLazyForm {
4428
4412
  }
4429
4413
  return true;
4430
4414
  }
4431
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridLazyForm, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4432
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: GridLazyForm, isStandalone: true, selector: "tbw-grid[lazyForm]", inputs: { lazyForm: { classPropertyName: "lazyForm", publicName: "lazyForm", isSignal: true, isRequired: true, transformFunction: null }, syncValidation: { classPropertyName: "syncValidation", publicName: "syncValidation", isSignal: true, isRequired: false, transformFunction: null }, keepFormGroups: { classPropertyName: "keepFormGroups", publicName: "keepFormGroups", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rowFormChange: "rowFormChange" }, ngImport: i0 });
4415
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridLazyForm, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4416
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: GridLazyForm, isStandalone: true, selector: "tbw-grid[lazyForm]", inputs: { lazyForm: { classPropertyName: "lazyForm", publicName: "lazyForm", isSignal: true, isRequired: true, transformFunction: null }, syncValidation: { classPropertyName: "syncValidation", publicName: "syncValidation", isSignal: true, isRequired: false, transformFunction: null }, keepFormGroups: { classPropertyName: "keepFormGroups", publicName: "keepFormGroups", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rowFormChange: "rowFormChange" }, ngImport: i0 });
4433
4417
  }
4434
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: GridLazyForm, decorators: [{
4418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridLazyForm, decorators: [{
4435
4419
  type: Directive,
4436
4420
  args: [{
4437
4421
  selector: 'tbw-grid[lazyForm]',
@@ -4467,10 +4451,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
4467
4451
  * @category Directive
4468
4452
  */
4469
4453
  class TbwGridToolButtons {
4470
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TbwGridToolButtons, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4471
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TbwGridToolButtons, isStandalone: true, selector: "tbw-grid-tool-buttons", ngImport: i0 });
4454
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TbwGridToolButtons, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4455
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: TbwGridToolButtons, isStandalone: true, selector: "tbw-grid-tool-buttons", ngImport: i0 });
4472
4456
  }
4473
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TbwGridToolButtons, decorators: [{
4457
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: TbwGridToolButtons, decorators: [{
4474
4458
  type: Directive,
4475
4459
  args: [{
4476
4460
  selector: 'tbw-grid-tool-buttons',
@@ -4601,7 +4585,14 @@ class Grid {
4601
4585
  if (columnsValue === undefined)
4602
4586
  return;
4603
4587
  const grid = this.elementRef.nativeElement;
4604
- grid.columns = columnsValue;
4588
+ // Process columns through the adapter to convert Angular component classes
4589
+ // (renderer/editor) to functions — the grid's columns setter does NOT call
4590
+ // processConfig, unlike gridConfig. Without this, raw component classes
4591
+ // would be invoked without `new`, causing runtime errors.
4592
+ const processed = this.adapter
4593
+ ? columnsValue.map((col) => this.adapter.processColumn(col))
4594
+ : columnsValue;
4595
+ grid.columns = processed;
4605
4596
  });
4606
4597
  // Effect to sync fitMode to the grid element
4607
4598
  effect(() => {
@@ -4629,7 +4620,7 @@ class Grid {
4629
4620
  * <tbw-grid [customStyles]="customStyles">...</tbw-grid>
4630
4621
  * ```
4631
4622
  */
4632
- customStyles = input(...(ngDevMode ? [undefined, { debugName: "customStyles" }] : []));
4623
+ customStyles = input(...(ngDevMode ? [undefined, { debugName: "customStyles" }] : /* istanbul ignore next */ []));
4633
4624
  /**
4634
4625
  * Grid-wide sorting toggle.
4635
4626
  * When false, disables sorting for all columns regardless of their individual `sortable` setting.
@@ -4652,7 +4643,7 @@ class Grid {
4652
4643
  * <tbw-grid [sortable]="true" [multiSort]="true" />
4653
4644
  * ```
4654
4645
  */
4655
- sortable = input(...(ngDevMode ? [undefined, { debugName: "sortable" }] : []));
4646
+ sortable = input(...(ngDevMode ? [undefined, { debugName: "sortable" }] : /* istanbul ignore next */ []));
4656
4647
  /**
4657
4648
  * Grid-wide filtering toggle.
4658
4649
  * When false, disables filtering for all columns regardless of their individual `filterable` setting.
@@ -4671,7 +4662,7 @@ class Grid {
4671
4662
  * <tbw-grid [filterable]="true" [filtering]="true" />
4672
4663
  * ```
4673
4664
  */
4674
- filterable = input(...(ngDevMode ? [undefined, { debugName: "filterable" }] : []));
4665
+ filterable = input(...(ngDevMode ? [undefined, { debugName: "filterable" }] : /* istanbul ignore next */ []));
4675
4666
  /**
4676
4667
  * Grid-wide selection toggle.
4677
4668
  * When false, disables selection for all rows/cells.
@@ -4690,7 +4681,7 @@ class Grid {
4690
4681
  * <tbw-grid [selectable]="true" [selection]="'range'" />
4691
4682
  * ```
4692
4683
  */
4693
- selectable = input(...(ngDevMode ? [undefined, { debugName: "selectable" }] : []));
4684
+ selectable = input(...(ngDevMode ? [undefined, { debugName: "selectable" }] : /* istanbul ignore next */ []));
4694
4685
  /**
4695
4686
  * Show a loading overlay on the grid.
4696
4687
  * Use this during initial data fetch or refresh operations.
@@ -4718,7 +4709,7 @@ class Grid {
4718
4709
  * }
4719
4710
  * ```
4720
4711
  */
4721
- loading = input(...(ngDevMode ? [undefined, { debugName: "loading" }] : []));
4712
+ loading = input(...(ngDevMode ? [undefined, { debugName: "loading" }] : /* istanbul ignore next */ []));
4722
4713
  /**
4723
4714
  * The data rows to display in the grid.
4724
4715
  *
@@ -4731,7 +4722,7 @@ class Grid {
4731
4722
  * ```
4732
4723
  */
4733
4724
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4734
- rows = input(...(ngDevMode ? [undefined, { debugName: "rows" }] : []));
4725
+ rows = input(...(ngDevMode ? [undefined, { debugName: "rows" }] : /* istanbul ignore next */ []));
4735
4726
  /**
4736
4727
  * Column configuration array.
4737
4728
  *
@@ -4749,7 +4740,7 @@ class Grid {
4749
4740
  * ```
4750
4741
  */
4751
4742
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4752
- columns = input(...(ngDevMode ? [undefined, { debugName: "columns" }] : []));
4743
+ columns = input(...(ngDevMode ? [undefined, { debugName: "columns" }] : /* istanbul ignore next */ []));
4753
4744
  /**
4754
4745
  * Column sizing strategy.
4755
4746
  *
@@ -4765,7 +4756,7 @@ class Grid {
4765
4756
  * <tbw-grid [rows]="data" [fitMode]="dynamicMode()" />
4766
4757
  * ```
4767
4758
  */
4768
- fitMode = input(...(ngDevMode ? [undefined, { debugName: "fitMode" }] : []));
4759
+ fitMode = input(...(ngDevMode ? [undefined, { debugName: "fitMode" }] : /* istanbul ignore next */ []));
4769
4760
  /**
4770
4761
  * Grid configuration object with optional Angular-specific extensions.
4771
4762
  *
@@ -4803,7 +4794,7 @@ class Grid {
4803
4794
  * ```
4804
4795
  */
4805
4796
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4806
- gridConfig = input(...(ngDevMode ? [undefined, { debugName: "gridConfig" }] : []));
4797
+ gridConfig = input(...(ngDevMode ? [undefined, { debugName: "gridConfig" }] : /* istanbul ignore next */ []));
4807
4798
  /**
4808
4799
  * @deprecated Use `gridConfig` instead. This input will be removed in v2.
4809
4800
  *
@@ -4819,7 +4810,7 @@ class Grid {
4819
4810
  * ```
4820
4811
  */
4821
4812
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4822
- angularConfig = input(...(ngDevMode ? [undefined, { debugName: "angularConfig" }] : []));
4813
+ angularConfig = input(...(ngDevMode ? [undefined, { debugName: "angularConfig" }] : /* istanbul ignore next */ []));
4823
4814
  // ═══════════════════════════════════════════════════════════════════════════
4824
4815
  // FEATURE INPUTS - Declarative plugin configuration
4825
4816
  // ═══════════════════════════════════════════════════════════════════════════
@@ -4841,7 +4832,7 @@ class Grid {
4841
4832
  * ```
4842
4833
  */
4843
4834
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4844
- selection = input(...(ngDevMode ? [undefined, { debugName: "selection" }] : []));
4835
+ selection = input(...(ngDevMode ? [undefined, { debugName: "selection" }] : /* istanbul ignore next */ []));
4845
4836
  /**
4846
4837
  * Enable inline cell editing.
4847
4838
  *
@@ -4864,7 +4855,7 @@ class Grid {
4864
4855
  * <tbw-grid [editing]="{ editOn: 'dblclick', onBeforeEditClose: myCallback }" />
4865
4856
  * ```
4866
4857
  */
4867
- editing = input(...(ngDevMode ? [undefined, { debugName: "editing" }] : []));
4858
+ editing = input(...(ngDevMode ? [undefined, { debugName: "editing" }] : /* istanbul ignore next */ []));
4868
4859
  /**
4869
4860
  * Enable clipboard copy/paste. Requires selection to be enabled.
4870
4861
  *
@@ -4878,7 +4869,7 @@ class Grid {
4878
4869
  * <tbw-grid [selection]="'range'" [clipboard]="true" />
4879
4870
  * ```
4880
4871
  */
4881
- clipboard = input(...(ngDevMode ? [undefined, { debugName: "clipboard" }] : []));
4872
+ clipboard = input(...(ngDevMode ? [undefined, { debugName: "clipboard" }] : /* istanbul ignore next */ []));
4882
4873
  /**
4883
4874
  * Enable right-click context menu.
4884
4875
  *
@@ -4892,7 +4883,7 @@ class Grid {
4892
4883
  * <tbw-grid [contextMenu]="true" />
4893
4884
  * ```
4894
4885
  */
4895
- contextMenu = input(...(ngDevMode ? [undefined, { debugName: "contextMenu" }] : []));
4886
+ contextMenu = input(...(ngDevMode ? [undefined, { debugName: "contextMenu" }] : /* istanbul ignore next */ []));
4896
4887
  /**
4897
4888
  * Enable multi-column sorting.
4898
4889
  *
@@ -4916,7 +4907,7 @@ class Grid {
4916
4907
  * <tbw-grid [multiSort]="{ maxSortColumns: 3 }" />
4917
4908
  * ```
4918
4909
  */
4919
- multiSort = input(...(ngDevMode ? [undefined, { debugName: "multiSort" }] : []));
4910
+ multiSort = input(...(ngDevMode ? [undefined, { debugName: "multiSort" }] : /* istanbul ignore next */ []));
4920
4911
  /**
4921
4912
  * @deprecated Use `[multiSort]` instead. Will be removed in v2.
4922
4913
  *
@@ -4927,7 +4918,7 @@ class Grid {
4927
4918
  * import '@toolbox-web/grid-angular/features/multi-sort';
4928
4919
  * ```
4929
4920
  */
4930
- sorting = input(...(ngDevMode ? [undefined, { debugName: "sorting" }] : []));
4921
+ sorting = input(...(ngDevMode ? [undefined, { debugName: "sorting" }] : /* istanbul ignore next */ []));
4931
4922
  /**
4932
4923
  * Enable column filtering.
4933
4924
  *
@@ -4943,7 +4934,7 @@ class Grid {
4943
4934
  * ```
4944
4935
  */
4945
4936
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4946
- filtering = input(...(ngDevMode ? [undefined, { debugName: "filtering" }] : []));
4937
+ filtering = input(...(ngDevMode ? [undefined, { debugName: "filtering" }] : /* istanbul ignore next */ []));
4947
4938
  /**
4948
4939
  * Enable column drag-to-reorder.
4949
4940
  *
@@ -4957,11 +4948,11 @@ class Grid {
4957
4948
  * <tbw-grid [reorderColumns]="true" />
4958
4949
  * ```
4959
4950
  */
4960
- reorderColumns = input(...(ngDevMode ? [undefined, { debugName: "reorderColumns" }] : []));
4951
+ reorderColumns = input(...(ngDevMode ? [undefined, { debugName: "reorderColumns" }] : /* istanbul ignore next */ []));
4961
4952
  /**
4962
4953
  * @deprecated Use `reorderColumns` instead. Will be removed in v2.
4963
4954
  */
4964
- reorder = input(...(ngDevMode ? [undefined, { debugName: "reorder" }] : []));
4955
+ reorder = input(...(ngDevMode ? [undefined, { debugName: "reorder" }] : /* istanbul ignore next */ []));
4965
4956
  /**
4966
4957
  * Enable column visibility toggle panel.
4967
4958
  *
@@ -4975,7 +4966,7 @@ class Grid {
4975
4966
  * <tbw-grid [visibility]="true" />
4976
4967
  * ```
4977
4968
  */
4978
- visibility = input(...(ngDevMode ? [undefined, { debugName: "visibility" }] : []));
4969
+ visibility = input(...(ngDevMode ? [undefined, { debugName: "visibility" }] : /* istanbul ignore next */ []));
4979
4970
  /**
4980
4971
  * Enable pinned/sticky columns.
4981
4972
  * Columns are pinned via the `sticky` column property.
@@ -4994,7 +4985,7 @@ class Grid {
4994
4985
  * ]" />
4995
4986
  * ```
4996
4987
  */
4997
- pinnedColumns = input(...(ngDevMode ? [undefined, { debugName: "pinnedColumns" }] : []));
4988
+ pinnedColumns = input(...(ngDevMode ? [undefined, { debugName: "pinnedColumns" }] : /* istanbul ignore next */ []));
4998
4989
  /**
4999
4990
  * Enable multi-level column headers (column groups).
5000
4991
  *
@@ -5008,7 +4999,7 @@ class Grid {
5008
4999
  * <tbw-grid [groupingColumns]="true" />
5009
5000
  * ```
5010
5001
  */
5011
- groupingColumns = input(...(ngDevMode ? [undefined, { debugName: "groupingColumns" }] : []));
5002
+ groupingColumns = input(...(ngDevMode ? [undefined, { debugName: "groupingColumns" }] : /* istanbul ignore next */ []));
5012
5003
  /**
5013
5004
  * Enable horizontal column virtualization for wide grids.
5014
5005
  *
@@ -5022,7 +5013,7 @@ class Grid {
5022
5013
  * <tbw-grid [columnVirtualization]="true" />
5023
5014
  * ```
5024
5015
  */
5025
- columnVirtualization = input(...(ngDevMode ? [undefined, { debugName: "columnVirtualization" }] : []));
5016
+ columnVirtualization = input(...(ngDevMode ? [undefined, { debugName: "columnVirtualization" }] : /* istanbul ignore next */ []));
5026
5017
  /**
5027
5018
  * Enable row drag-to-reorder.
5028
5019
  *
@@ -5036,11 +5027,11 @@ class Grid {
5036
5027
  * <tbw-grid [reorderRows]="true" />
5037
5028
  * ```
5038
5029
  */
5039
- reorderRows = input(...(ngDevMode ? [undefined, { debugName: "reorderRows" }] : []));
5030
+ reorderRows = input(...(ngDevMode ? [undefined, { debugName: "reorderRows" }] : /* istanbul ignore next */ []));
5040
5031
  /**
5041
5032
  * @deprecated Use `reorderRows` instead. Will be removed in v2.0.
5042
5033
  */
5043
- rowReorder = input(...(ngDevMode ? [undefined, { debugName: "rowReorder" }] : []));
5034
+ rowReorder = input(...(ngDevMode ? [undefined, { debugName: "rowReorder" }] : /* istanbul ignore next */ []));
5044
5035
  /**
5045
5036
  * Enable row grouping by field values.
5046
5037
  *
@@ -5054,7 +5045,7 @@ class Grid {
5054
5045
  * <tbw-grid [groupingRows]="{ groupBy: ['department'] }" />
5055
5046
  * ```
5056
5047
  */
5057
- groupingRows = input(...(ngDevMode ? [undefined, { debugName: "groupingRows" }] : []));
5048
+ groupingRows = input(...(ngDevMode ? [undefined, { debugName: "groupingRows" }] : /* istanbul ignore next */ []));
5058
5049
  /**
5059
5050
  * Enable pinned rows (aggregation/status bar).
5060
5051
  *
@@ -5068,7 +5059,7 @@ class Grid {
5068
5059
  * <tbw-grid [pinnedRows]="{ bottom: [{ type: 'aggregation' }] }" />
5069
5060
  * ```
5070
5061
  */
5071
- pinnedRows = input(...(ngDevMode ? [undefined, { debugName: "pinnedRows" }] : []));
5062
+ pinnedRows = input(...(ngDevMode ? [undefined, { debugName: "pinnedRows" }] : /* istanbul ignore next */ []));
5072
5063
  /**
5073
5064
  * Enable hierarchical tree view.
5074
5065
  *
@@ -5082,7 +5073,7 @@ class Grid {
5082
5073
  * <tbw-grid [tree]="{ childrenField: 'children' }" />
5083
5074
  * ```
5084
5075
  */
5085
- tree = input(...(ngDevMode ? [undefined, { debugName: "tree" }] : []));
5076
+ tree = input(...(ngDevMode ? [undefined, { debugName: "tree" }] : /* istanbul ignore next */ []));
5086
5077
  /**
5087
5078
  * Enable master-detail expandable rows.
5088
5079
  *
@@ -5096,7 +5087,7 @@ class Grid {
5096
5087
  * <tbw-grid [masterDetail]="{ detailRenderer: detailFn }" />
5097
5088
  * ```
5098
5089
  */
5099
- masterDetail = input(...(ngDevMode ? [undefined, { debugName: "masterDetail" }] : []));
5090
+ masterDetail = input(...(ngDevMode ? [undefined, { debugName: "masterDetail" }] : /* istanbul ignore next */ []));
5100
5091
  /**
5101
5092
  * Enable responsive card layout for narrow viewports.
5102
5093
  *
@@ -5110,7 +5101,7 @@ class Grid {
5110
5101
  * <tbw-grid [responsive]="{ breakpoint: 768 }" />
5111
5102
  * ```
5112
5103
  */
5113
- responsive = input(...(ngDevMode ? [undefined, { debugName: "responsive" }] : []));
5104
+ responsive = input(...(ngDevMode ? [undefined, { debugName: "responsive" }] : /* istanbul ignore next */ []));
5114
5105
  /**
5115
5106
  * Enable undo/redo for cell edits. Requires editing to be enabled.
5116
5107
  *
@@ -5124,7 +5115,7 @@ class Grid {
5124
5115
  * <tbw-grid [editing]="'dblclick'" [undoRedo]="true" />
5125
5116
  * ```
5126
5117
  */
5127
- undoRedo = input(...(ngDevMode ? [undefined, { debugName: "undoRedo" }] : []));
5118
+ undoRedo = input(...(ngDevMode ? [undefined, { debugName: "undoRedo" }] : /* istanbul ignore next */ []));
5128
5119
  /**
5129
5120
  * Enable CSV/JSON export functionality.
5130
5121
  *
@@ -5139,7 +5130,7 @@ class Grid {
5139
5130
  * <tbw-grid [export]="{ filename: 'data.csv' }" />
5140
5131
  * ```
5141
5132
  */
5142
- exportFeature = input(undefined, { ...(ngDevMode ? { debugName: "exportFeature" } : {}), alias: 'export' });
5133
+ exportFeature = input(undefined, { ...(ngDevMode ? { debugName: "exportFeature" } : /* istanbul ignore next */ {}), alias: 'export' });
5143
5134
  /**
5144
5135
  * Enable print functionality.
5145
5136
  *
@@ -5153,7 +5144,7 @@ class Grid {
5153
5144
  * <tbw-grid [print]="true" />
5154
5145
  * ```
5155
5146
  */
5156
- print = input(...(ngDevMode ? [undefined, { debugName: "print" }] : []));
5147
+ print = input(...(ngDevMode ? [undefined, { debugName: "print" }] : /* istanbul ignore next */ []));
5157
5148
  /**
5158
5149
  * Enable pivot table functionality.
5159
5150
  *
@@ -5167,7 +5158,7 @@ class Grid {
5167
5158
  * <tbw-grid [pivot]="{ rowFields: ['category'], valueField: 'sales' }" />
5168
5159
  * ```
5169
5160
  */
5170
- pivot = input(...(ngDevMode ? [undefined, { debugName: "pivot" }] : []));
5161
+ pivot = input(...(ngDevMode ? [undefined, { debugName: "pivot" }] : /* istanbul ignore next */ []));
5171
5162
  /**
5172
5163
  * Enable server-side data operations.
5173
5164
  *
@@ -5181,7 +5172,7 @@ class Grid {
5181
5172
  * <tbw-grid [serverSide]="{ dataSource: fetchDataFn }" />
5182
5173
  * ```
5183
5174
  */
5184
- serverSide = input(...(ngDevMode ? [undefined, { debugName: "serverSide" }] : []));
5175
+ serverSide = input(...(ngDevMode ? [undefined, { debugName: "serverSide" }] : /* istanbul ignore next */ []));
5185
5176
  // ═══════════════════════════════════════════════════════════════════════════
5186
5177
  // EVENT OUTPUTS - All grid events
5187
5178
  // ═══════════════════════════════════════════════════════════════════════════
@@ -5679,10 +5670,10 @@ class Grid {
5679
5670
  this.adapter = null;
5680
5671
  }
5681
5672
  }
5682
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: Grid, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5683
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", 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 }, angularConfig: { classPropertyName: "angularConfig", publicName: "angularConfig", 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 }, sorting: { classPropertyName: "sorting", publicName: "sorting", 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 }, reorder: { classPropertyName: "reorder", publicName: "reorder", 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 }, rowReorder: { classPropertyName: "rowReorder", publicName: "rowReorder", 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 } }, 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" }, ngImport: i0 });
5673
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: Grid, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5674
+ 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 }, angularConfig: { classPropertyName: "angularConfig", publicName: "angularConfig", 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 }, sorting: { classPropertyName: "sorting", publicName: "sorting", 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 }, reorder: { classPropertyName: "reorder", publicName: "reorder", 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 }, rowReorder: { classPropertyName: "rowReorder", publicName: "rowReorder", 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 } }, 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" }, ngImport: i0 });
5684
5675
  }
5685
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: Grid, decorators: [{
5676
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: Grid, decorators: [{
5686
5677
  type: Directive,
5687
5678
  args: [{ selector: 'tbw-grid' }]
5688
5679
  }], 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 }] }], angularConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "angularConfig", 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 }] }], sorting: [{ type: i0.Input, args: [{ isSignal: true, alias: "sorting", required: false }] }], filtering: [{ type: i0.Input, args: [{ isSignal: true, alias: "filtering", required: false }] }], reorderColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "reorderColumns", required: false }] }], reorder: [{ type: i0.Input, args: [{ isSignal: true, alias: "reorder", 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 }] }], rowReorder: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowReorder", 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 }] }], 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"] }] } });