@toolbox-web/grid-angular 1.3.1 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +146 -54
  2. package/fesm2022/toolbox-web-grid-angular-features-clipboard.mjs +58 -0
  3. package/fesm2022/toolbox-web-grid-angular-features-clipboard.mjs.map +1 -1
  4. package/fesm2022/toolbox-web-grid-angular-features-column-virtualization.mjs +37 -0
  5. package/fesm2022/toolbox-web-grid-angular-features-column-virtualization.mjs.map +1 -1
  6. package/fesm2022/toolbox-web-grid-angular-features-context-menu.mjs +51 -0
  7. package/fesm2022/toolbox-web-grid-angular-features-context-menu.mjs.map +1 -1
  8. package/fesm2022/toolbox-web-grid-angular-features-editing.mjs +115 -1
  9. package/fesm2022/toolbox-web-grid-angular-features-editing.mjs.map +1 -1
  10. package/fesm2022/toolbox-web-grid-angular-features-export.mjs +55 -2
  11. package/fesm2022/toolbox-web-grid-angular-features-export.mjs.map +1 -1
  12. package/fesm2022/toolbox-web-grid-angular-features-filtering.mjs +159 -5
  13. package/fesm2022/toolbox-web-grid-angular-features-filtering.mjs.map +1 -1
  14. package/fesm2022/toolbox-web-grid-angular-features-grouping-columns.mjs +83 -0
  15. package/fesm2022/toolbox-web-grid-angular-features-grouping-columns.mjs.map +1 -1
  16. package/fesm2022/toolbox-web-grid-angular-features-grouping-rows.mjs +82 -0
  17. package/fesm2022/toolbox-web-grid-angular-features-grouping-rows.mjs.map +1 -1
  18. package/fesm2022/toolbox-web-grid-angular-features-master-detail.mjs +115 -2
  19. package/fesm2022/toolbox-web-grid-angular-features-master-detail.mjs.map +1 -1
  20. package/fesm2022/toolbox-web-grid-angular-features-multi-sort.mjs +38 -0
  21. package/fesm2022/toolbox-web-grid-angular-features-multi-sort.mjs.map +1 -1
  22. package/fesm2022/toolbox-web-grid-angular-features-pinned-columns.mjs +37 -0
  23. package/fesm2022/toolbox-web-grid-angular-features-pinned-columns.mjs.map +1 -1
  24. package/fesm2022/toolbox-web-grid-angular-features-pinned-rows.mjs +103 -0
  25. package/fesm2022/toolbox-web-grid-angular-features-pinned-rows.mjs.map +1 -1
  26. package/fesm2022/toolbox-web-grid-angular-features-pivot.mjs +36 -0
  27. package/fesm2022/toolbox-web-grid-angular-features-pivot.mjs.map +1 -1
  28. package/fesm2022/toolbox-web-grid-angular-features-print.mjs +58 -2
  29. package/fesm2022/toolbox-web-grid-angular-features-print.mjs.map +1 -1
  30. package/fesm2022/toolbox-web-grid-angular-features-reorder-columns.mjs +52 -0
  31. package/fesm2022/toolbox-web-grid-angular-features-reorder-columns.mjs.map +1 -1
  32. package/fesm2022/toolbox-web-grid-angular-features-reorder-rows.mjs +41 -0
  33. package/fesm2022/toolbox-web-grid-angular-features-reorder-rows.mjs.map +1 -1
  34. package/fesm2022/toolbox-web-grid-angular-features-responsive.mjs +112 -2
  35. package/fesm2022/toolbox-web-grid-angular-features-responsive.mjs.map +1 -1
  36. package/fesm2022/toolbox-web-grid-angular-features-row-drag-drop.mjs +77 -0
  37. package/fesm2022/toolbox-web-grid-angular-features-row-drag-drop.mjs.map +1 -1
  38. package/fesm2022/toolbox-web-grid-angular-features-selection.mjs +52 -2
  39. package/fesm2022/toolbox-web-grid-angular-features-selection.mjs.map +1 -1
  40. package/fesm2022/toolbox-web-grid-angular-features-server-side.mjs +36 -0
  41. package/fesm2022/toolbox-web-grid-angular-features-server-side.mjs.map +1 -1
  42. package/fesm2022/toolbox-web-grid-angular-features-tooltip.mjs +36 -0
  43. package/fesm2022/toolbox-web-grid-angular-features-tooltip.mjs.map +1 -1
  44. package/fesm2022/toolbox-web-grid-angular-features-tree.mjs +53 -0
  45. package/fesm2022/toolbox-web-grid-angular-features-tree.mjs.map +1 -1
  46. package/fesm2022/toolbox-web-grid-angular-features-undo-redo.mjs +57 -2
  47. package/fesm2022/toolbox-web-grid-angular-features-undo-redo.mjs.map +1 -1
  48. package/fesm2022/toolbox-web-grid-angular-features-visibility.mjs +53 -0
  49. package/fesm2022/toolbox-web-grid-angular-features-visibility.mjs.map +1 -1
  50. package/fesm2022/toolbox-web-grid-angular.mjs +1274 -727
  51. package/fesm2022/toolbox-web-grid-angular.mjs.map +1 -1
  52. package/package.json +1 -1
  53. package/types/toolbox-web-grid-angular-features-clipboard.d.ts +23 -0
  54. package/types/toolbox-web-grid-angular-features-clipboard.d.ts.map +1 -1
  55. package/types/toolbox-web-grid-angular-features-column-virtualization.d.ts +19 -0
  56. package/types/toolbox-web-grid-angular-features-column-virtualization.d.ts.map +1 -1
  57. package/types/toolbox-web-grid-angular-features-context-menu.d.ts +22 -0
  58. package/types/toolbox-web-grid-angular-features-context-menu.d.ts.map +1 -1
  59. package/types/toolbox-web-grid-angular-features-editing.d.ts +32 -0
  60. package/types/toolbox-web-grid-angular-features-editing.d.ts.map +1 -1
  61. package/types/toolbox-web-grid-angular-features-export.d.ts +21 -3
  62. package/types/toolbox-web-grid-angular-features-export.d.ts.map +1 -1
  63. package/types/toolbox-web-grid-angular-features-filtering.d.ts +67 -6
  64. package/types/toolbox-web-grid-angular-features-filtering.d.ts.map +1 -1
  65. package/types/toolbox-web-grid-angular-features-grouping-columns.d.ts +19 -0
  66. package/types/toolbox-web-grid-angular-features-grouping-columns.d.ts.map +1 -1
  67. package/types/toolbox-web-grid-angular-features-grouping-rows.d.ts +25 -0
  68. package/types/toolbox-web-grid-angular-features-grouping-rows.d.ts.map +1 -1
  69. package/types/toolbox-web-grid-angular-features-master-detail.d.ts +23 -0
  70. package/types/toolbox-web-grid-angular-features-master-detail.d.ts.map +1 -1
  71. package/types/toolbox-web-grid-angular-features-multi-sort.d.ts +19 -0
  72. package/types/toolbox-web-grid-angular-features-multi-sort.d.ts.map +1 -1
  73. package/types/toolbox-web-grid-angular-features-pinned-columns.d.ts +18 -0
  74. package/types/toolbox-web-grid-angular-features-pinned-columns.d.ts.map +1 -1
  75. package/types/toolbox-web-grid-angular-features-pinned-rows.d.ts +19 -0
  76. package/types/toolbox-web-grid-angular-features-pinned-rows.d.ts.map +1 -1
  77. package/types/toolbox-web-grid-angular-features-pivot.d.ts +19 -0
  78. package/types/toolbox-web-grid-angular-features-pivot.d.ts.map +1 -1
  79. package/types/toolbox-web-grid-angular-features-print.d.ts +22 -3
  80. package/types/toolbox-web-grid-angular-features-print.d.ts.map +1 -1
  81. package/types/toolbox-web-grid-angular-features-reorder-columns.d.ts +22 -0
  82. package/types/toolbox-web-grid-angular-features-reorder-columns.d.ts.map +1 -1
  83. package/types/toolbox-web-grid-angular-features-reorder-rows.d.ts +19 -0
  84. package/types/toolbox-web-grid-angular-features-reorder-rows.d.ts.map +1 -1
  85. package/types/toolbox-web-grid-angular-features-responsive.d.ts +22 -0
  86. package/types/toolbox-web-grid-angular-features-responsive.d.ts.map +1 -1
  87. package/types/toolbox-web-grid-angular-features-row-drag-drop.d.ts +27 -0
  88. package/types/toolbox-web-grid-angular-features-row-drag-drop.d.ts.map +1 -1
  89. package/types/toolbox-web-grid-angular-features-selection.d.ts +21 -3
  90. package/types/toolbox-web-grid-angular-features-selection.d.ts.map +1 -1
  91. package/types/toolbox-web-grid-angular-features-server-side.d.ts +19 -0
  92. package/types/toolbox-web-grid-angular-features-server-side.d.ts.map +1 -1
  93. package/types/toolbox-web-grid-angular-features-tooltip.d.ts +19 -0
  94. package/types/toolbox-web-grid-angular-features-tooltip.d.ts.map +1 -1
  95. package/types/toolbox-web-grid-angular-features-tree.d.ts +22 -0
  96. package/types/toolbox-web-grid-angular-features-tree.d.ts.map +1 -1
  97. package/types/toolbox-web-grid-angular-features-undo-redo.d.ts +22 -3
  98. package/types/toolbox-web-grid-angular-features-undo-redo.d.ts.map +1 -1
  99. package/types/toolbox-web-grid-angular-features-visibility.d.ts +22 -0
  100. package/types/toolbox-web-grid-angular-features-visibility.d.ts.map +1 -1
  101. package/types/toolbox-web-grid-angular.d.ts +939 -128
  102. package/types/toolbox-web-grid-angular.d.ts.map +1 -1
@@ -1,13 +1,10 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { Type, EnvironmentInjector, ApplicationRef, ViewContainerRef, InjectionToken, EnvironmentProviders, Signal, ElementRef, TemplateRef, OnInit, OnDestroy, AfterContentInit } from '@angular/core';
3
- import { GridConfig as GridConfig$1, ColumnConfig as ColumnConfig$1, FrameworkAdapter, TypeDefault as TypeDefault$1, ColumnViewRenderer, ColumnEditorSpec, GridIcons, DataGridElement, ExpandCollapseAnimation, FitMode, CellClickDetail, RowClickDetail, CellActivateDetail, CellChangeDetail, SortChangeDetail, ColumnResizeDetail, GridColumnState, TbwScrollDetail } from '@toolbox-web/grid';
4
- import { GroupingColumnsConfig } from '@toolbox-web/grid/plugins/grouping-columns';
5
- import { GroupingRowsConfig } from '@toolbox-web/grid/plugins/grouping-rows';
6
- import { PinnedRowsConfig } from '@toolbox-web/grid/plugins/pinned-rows';
2
+ import { Type, EnvironmentInjector, ApplicationRef, ViewContainerRef, ComponentRef, TemplateRef, EmbeddedViewRef, InjectionToken, EnvironmentProviders, Signal, ElementRef, OnInit, OnDestroy, AfterContentInit } from '@angular/core';
3
+ import { GridConfig as GridConfig$1, ColumnConfig as ColumnConfig$1, TypeDefault as TypeDefault$1, FrameworkAdapter, ColumnViewRenderer, ColumnEditorSpec, GridIcons, DataGridElement, ExpandCollapseAnimation, FitMode, CellClickDetail, RowClickDetail, CellActivateDetail, CellChangeDetail, SortChangeDetail, ColumnResizeDetail, GridColumnState, TbwScrollDetail, DataGridEventMap } from '@toolbox-web/grid';
7
4
  import { FilterPanelRenderer, FilterPanelParams } from '@toolbox-web/grid/plugins/filtering';
8
- import { AbstractControl, ControlValueAccessor, FormGroup, FormArray } from '@angular/forms';
9
- import { EditingConfig, ChangedRowsResetDetail } from '@toolbox-web/grid/plugins/editing';
10
- import { SelectionConfig, ClipboardConfig, ContextMenuConfig, MultiSortConfig, FilterConfig, ReorderConfig, VisibilityConfig, GroupingColumnsConfig as GroupingColumnsConfig$1, ColumnVirtualizationConfig, RowReorderConfig, RowDragDropConfig, GroupingRowsConfig as GroupingRowsConfig$1, PinnedRowsConfig as PinnedRowsConfig$1, TreeConfig, MasterDetailConfig, ResponsivePluginConfig, UndoRedoConfig, ExportConfig, PrintConfig, PivotConfig, ServerSideConfig, TooltipConfig, FilterChangeDetail, ColumnMoveDetail, ColumnVisibilityDetail, SelectionChangeDetail, RowMoveDetail, RowDragStartDetail, RowDragEndDetail, RowDropDetail, RowTransferDetail, GroupToggleDetail, TreeExpandDetail, DetailExpandDetail, ResponsiveChangeDetail, CopyDetail, PasteDetail, UndoRedoDetail, ExportCompleteDetail, PrintStartDetail, PrintCompleteDetail } from '@toolbox-web/grid/all';
5
+ import { AbstractControl, ControlValueAccessor, FormArray, FormGroup } from '@angular/forms';
6
+ import { EditingConfig, CellCancelDetail, EditOpenDetail, BeforeEditCloseDetail, EditCloseDetail, DirtyChangeDetail, ChangedRowsResetDetail } from '@toolbox-web/grid/plugins/editing';
7
+ import { SelectionConfig, ClipboardConfig, ContextMenuConfig, MultiSortConfig, FilterConfig, ReorderConfig, VisibilityConfig, GroupingColumnsConfig, ColumnVirtualizationConfig, RowReorderConfig, RowDragDropConfig, GroupingRowsConfig, PinnedRowsConfig, TreeConfig, MasterDetailConfig, ResponsivePluginConfig, UndoRedoConfig, ExportConfig, PrintConfig, PivotConfig, ServerSideConfig, TooltipConfig, DataChangeDetail, FilterChangeDetail, ColumnResizeResetDetail, ColumnMoveDetail, ColumnVisibilityDetail, SelectionChangeDetail, RowMoveDetail, RowDragStartDetail, RowDragEndDetail, RowDropDetail, RowTransferDetail, GroupToggleDetail, GroupExpandDetail, GroupCollapseDetail, TreeExpandDetail, DetailExpandDetail, ResponsiveChangeDetail, ContextMenuOpenDetail, CopyDetail, PasteDetail, UndoRedoDetail, ExportCompleteDetail, PrintStartDetail, PrintCompleteDetail } from '@toolbox-web/grid/all';
11
8
  export { PluginFactory, clearFeatureRegistry, createPluginFromFeature, getFeatureFactory, getRegisteredFeatures, isFeatureRegistered, registerFeature } from '@toolbox-web/grid/features/registry';
12
9
 
13
10
  /**
@@ -38,6 +35,7 @@ export { PluginFactory, clearFeatureRegistry, createPluginFromFeature, getFeatur
38
35
  * column = input<unknown>();
39
36
  * }
40
37
  * ```
38
+ * @since 0.11.0
41
39
  */
42
40
  interface CellRenderer<TRow = unknown, TValue = unknown> {
43
41
  /** The cell value - use `input<TValue>()` or `input.required<TValue>()` */
@@ -81,6 +79,7 @@ interface CellRenderer<TRow = unknown, TValue = unknown> {
81
79
  * cancel = output<void>();
82
80
  * }
83
81
  * ```
82
+ * @since 0.11.0
84
83
  */
85
84
  interface CellEditor<TRow = unknown, TValue = unknown> extends CellRenderer<TRow, TValue> {
86
85
  /** Emit to commit the new value - use `output<TValue>()` */
@@ -123,6 +122,7 @@ interface CellEditor<TRow = unknown, TValue = unknown> extends CellRenderer<TRow
123
122
  * params = input.required<FilterPanelParams>();
124
123
  * }
125
124
  * ```
125
+ * @since 0.12.0
126
126
  */
127
127
  interface FilterPanel {
128
128
  /** The filter panel parameters — use `input.required<FilterPanelParams>()` */
@@ -151,6 +151,7 @@ interface FilterPanel {
151
151
  * }
152
152
  * };
153
153
  * ```
154
+ * @since 0.10.0
154
155
  */
155
156
  interface TypeDefault<TRow = unknown> {
156
157
  /** Format function for cell display */
@@ -201,6 +202,7 @@ interface TypeDefault<TRow = unknown> {
201
202
  * },
202
203
  * ];
203
204
  * ```
205
+ * @since 0.3.0
204
206
  */
205
207
  interface ColumnConfig<TRow = unknown> extends Omit<ColumnConfig$1<TRow>, 'renderer' | 'editor' | 'headerRenderer' | 'headerLabelRenderer'> {
206
208
  /**
@@ -243,6 +245,7 @@ interface ColumnConfig<TRow = unknown> extends Omit<ColumnConfig$1<TRow>, 'rende
243
245
  * plugins: [...],
244
246
  * };
245
247
  * ```
248
+ * @since 0.3.0
246
249
  */
247
250
  interface GridConfig<TRow = unknown> extends Omit<GridConfig$1<TRow>, 'columns' | 'typeDefaults' | 'loadingRenderer'> {
248
251
  columns?: ColumnConfig<TRow>[];
@@ -264,9 +267,111 @@ interface GridConfig<TRow = unknown> extends Omit<GridConfig$1<TRow>, 'columns'
264
267
  *
265
268
  * Also checks if it's an ES6 class (vs function) by inspecting the
266
269
  * string representation.
270
+ * @since 0.3.0
267
271
  */
268
272
  declare function isComponentClass(value: unknown): value is Type<unknown>;
269
273
 
274
+ /**
275
+ * Editor mount hook registry — append-only hooks called when an Angular-managed
276
+ * editor host is mounted into the DOM with a known owner grid.
277
+ *
278
+ * This is the augmentation point that lets feature secondary entries
279
+ * (e.g. `@toolbox-web/grid-angular/features/editing`) install per-editor
280
+ * lifecycle behaviour (such as the `before-edit-close` blur bridge)
281
+ * without coupling the central adapter file to the editing feature.
282
+ * Mirrors React's and Vue's `editor-mount-hooks` and how core grid plugins
283
+ * augment the grid via `registerPlugin()`.
284
+ *
285
+ * @packageDocumentation
286
+ * @internal
287
+ */
288
+ /**
289
+ * Hook called when an editor host is mounted. Returning a function
290
+ * registers a teardown that runs when the editor is released.
291
+ * @since 1.4.0
292
+ */
293
+ type EditorMountHook = (ctx: {
294
+ container: HTMLElement;
295
+ gridEl: HTMLElement;
296
+ }) => (() => void) | void;
297
+ /**
298
+ * Install an editor-mount hook. Called by feature secondary entries
299
+ * (e.g. `features/editing`) on import.
300
+ *
301
+ * @internal Plugin API
302
+ * @since 1.4.0
303
+ */
304
+ declare function registerEditorMountHook(hook: EditorMountHook): void;
305
+ /**
306
+ * Returns a function that, when invoked, blurs the focused input/textarea/select
307
+ * inside `host` (if any). Used by the `before-edit-close` bridge installed by
308
+ * `@toolbox-web/grid-angular/features/editing` so editors that commit on
309
+ * `(blur)` flush their pending value before the cell DOM is torn down by Tab /
310
+ * programmatic row exit.
311
+ * @internal
312
+ * @since 1.4.0
313
+ */
314
+ declare function makeFlushFocusedInput(host: HTMLElement): () => void;
315
+
316
+ /**
317
+ * Append-only bridge registries used by `@toolbox-web/grid-angular`.
318
+ *
319
+ * These let feature secondary entries plug into the central `GridAdapter`
320
+ * without the adapter needing to know about them. Mirrors React's and Vue's
321
+ * `register*Bridge` modules and how core grid plugins augment the grid via
322
+ * `registerPlugin()`.
323
+ *
324
+ * This module is deliberately framework-free: it holds plain module-level
325
+ * `let` state and never imports from `@angular/core` or from
326
+ * `@toolbox-web/grid/plugins/...`. Feature subpaths import the setters via
327
+ * the `@toolbox-web/grid-angular` package barrel (relative imports outside
328
+ * a secondary entry's `rootDir` are forbidden by ng-packagr).
329
+ *
330
+ * @internal
331
+ */
332
+
333
+ /**
334
+ * Installer signature: given a grid element + adapter, returns the row-renderer
335
+ * the adapter should expose, or undefined if no Angular template is registered
336
+ * for that grid. Used by `features/master-detail` and `features/responsive`.
337
+ * @internal
338
+ * @since 1.4.0
339
+ */
340
+ type RowRendererBridge = <TRow = unknown>(gridElement: HTMLElement, adapter: GridAdapter) => ((row: TRow, rowIndex: number) => HTMLElement) | undefined;
341
+ /**
342
+ * Installer signature for the type-default `filterPanelRenderer` wrapper.
343
+ * Receives the user-supplied component class loosely typed as `unknown`
344
+ * (so the adapter does not depend on filtering types) and returns the
345
+ * imperative `(container, params) => void` form required by core.
346
+ * @internal
347
+ * @since 1.4.0
348
+ */
349
+ type FilterPanelTypeDefaultBridge = (rendererValue: unknown, adapter: GridAdapter) => NonNullable<TypeDefault$1['filterPanelRenderer']> | undefined;
350
+ /**
351
+ * Install the master-detail row-renderer bridge. Called once on import by
352
+ * `@toolbox-web/grid-angular/features/master-detail`.
353
+ * @internal Plugin API
354
+ * @since 1.4.0
355
+ */
356
+ declare function registerDetailRendererBridge(bridge: RowRendererBridge): void;
357
+ /**
358
+ * Install the responsive-card row-renderer bridge. Called once on import by
359
+ * `@toolbox-web/grid-angular/features/responsive`.
360
+ * @internal Plugin API
361
+ * @since 1.4.0
362
+ */
363
+ declare function registerResponsiveCardRendererBridge(bridge: RowRendererBridge): void;
364
+ /**
365
+ * Install the type-default `filterPanelRenderer` wrapper. Called once on import
366
+ * by `@toolbox-web/grid-angular/features/filtering`. Without this bridge,
367
+ * type-default and grid-config-level component-class filterPanelRenderers are
368
+ * silently dropped — same precondition as the FilteringPlugin (TBW031).
369
+ * @internal Plugin API
370
+ * @since 1.4.0
371
+ */
372
+ declare function registerFilterPanelTypeDefaultBridge(bridge: FilterPanelTypeDefaultBridge): void;
373
+
374
+ /** @since 0.11.0 */
270
375
  declare class GridAdapter implements FrameworkAdapter {
271
376
  private injector;
272
377
  private appRef;
@@ -278,20 +383,16 @@ declare class GridAdapter implements FrameworkAdapter {
278
383
  /** Editor-specific component refs tracked separately for per-cell cleanup via releaseCell. */
279
384
  private editorComponentRefs;
280
385
  /**
281
- * Per-editor `before-edit-close` listener teardown functions, keyed by
282
- * editor host element.
283
- *
284
- * The grid's editing plugin emits `before-edit-close` on the host
285
- * `<tbw-grid>` before tearing down a row's managed editors. Angular
286
- * editors that commit on `(blur)` rely on the focused input firing `blur`
287
- * naturally, but Tab / programmatic row exit rebuilds the cell DOM
288
- * synchronously without giving the focused input a chance to blur first
289
- * — pending input is silently discarded.
386
+ * Per-editor mount-hook teardown functions, keyed by editor host element.
290
387
  *
291
- * Mirror of Vue's `editorBeforeCloseUnsubs` and React's
292
- * `wrapReactEditor` queueMicrotask bridge.
388
+ * Populated by {@link runEditorMountHooks} (which invokes
389
+ * {@link notifyEditorMounted}) and torn down per-cell from
390
+ * {@link releaseCell}, with full sweep on {@link destroy}. The actual
391
+ * lifecycle behaviour is supplied by feature secondary entries (e.g.
392
+ * `@toolbox-web/grid-angular/features/editing` installs the
393
+ * `before-edit-close` blur bridge).
293
394
  */
294
- private editorBeforeCloseUnsubs;
395
+ private editorMountTeardowns;
295
396
  private typeRegistry;
296
397
  constructor(injector: EnvironmentInjector, appRef: ApplicationRef, viewContainerRef: ViewContainerRef);
297
398
  /**
@@ -375,32 +476,25 @@ declare class GridAdapter implements FrameworkAdapter {
375
476
  */
376
477
  createEditor<TRow = unknown, TValue = unknown>(element: HTMLElement): ColumnEditorSpec<TRow, TValue> | undefined;
377
478
  /**
378
- * Creates a detail renderer function for MasterDetailPlugin.
379
- * Renders Angular templates for expandable detail rows.
479
+ * Creates a detail renderer function for MasterDetailPlugin. Delegates to
480
+ * the bridge installed by `@toolbox-web/grid-angular/features/master-detail`.
481
+ * Returns undefined if the feature is not imported or no `<tbw-grid-detail>`
482
+ * template is registered for this grid.
380
483
  */
381
484
  createDetailRenderer<TRow = unknown>(gridElement: HTMLElement): ((row: TRow) => HTMLElement) | undefined;
382
485
  /**
383
- * Framework adapter hook called by MasterDetailPlugin during attach().
384
- * Parses the <tbw-grid-detail> element and returns an Angular template-based renderer.
385
- *
386
- * This enables MasterDetailPlugin to automatically use Angular templates
387
- * without manual configuration in the Grid directive.
486
+ * FrameworkAdapter hook called by MasterDetailPlugin during attach(). Delegates
487
+ * to {@link createDetailRenderer} (bridge installed by master-detail feature).
388
488
  */
389
489
  parseDetailElement<TRow = unknown>(detailElement: Element): ((row: TRow, rowIndex: number) => HTMLElement | string) | undefined;
390
490
  /**
391
- * Creates a responsive card renderer function for ResponsivePlugin.
392
- * Renders Angular templates for card layout in responsive mode.
393
- *
394
- * @param gridElement - The grid element to look up the template for
395
- * @returns A card renderer function or undefined if no template is found
491
+ * Creates a responsive card renderer function for ResponsivePlugin. Delegates
492
+ * to the bridge installed by `@toolbox-web/grid-angular/features/responsive`.
396
493
  */
397
494
  createResponsiveCardRenderer<TRow = unknown>(gridElement: HTMLElement): ((row: TRow, rowIndex: number) => HTMLElement) | undefined;
398
495
  /**
399
- * FrameworkAdapter hook called by ResponsivePlugin during attach().
400
- * Parses the `<tbw-grid-responsive-card>` element and delegates to
401
- * {@link createResponsiveCardRenderer}. Required for parity with the Vue
402
- * adapter so ResponsivePlugin's standard lookup path works for Angular
403
- * users without relying on imperative `refreshCardRenderer` calls.
496
+ * FrameworkAdapter hook called by ResponsivePlugin during attach(). Delegates
497
+ * to {@link createResponsiveCardRenderer} (bridge installed by responsive feature).
404
498
  */
405
499
  parseResponsiveCardElement<TRow = unknown>(cardElement: Element): ((row: TRow, rowIndex: number) => HTMLElement) | undefined;
406
500
  /**
@@ -437,18 +531,38 @@ declare class GridAdapter implements FrameworkAdapter {
437
531
  */
438
532
  getTypeDefault<TRow = unknown>(type: string, _gridEl?: HTMLElement): TypeDefault$1<TRow> | undefined;
439
533
  /**
440
- * Creates and mounts an Angular component dynamically.
441
- * Shared logic between renderer and editor component creation.
534
+ * Generalized component-mount primitive. All `createComponent*Renderer` methods
535
+ * are thin wrappers around this. Returns a function `(ctx) => { hostElement, componentRef }`
536
+ * so callers that need the `componentRef` (editor wiring, value-change subscription)
537
+ * still have it; callers that only need the host element use `.hostElement`.
538
+ *
539
+ * Public so feature secondary entries can compose their own component renderers
540
+ * without re-implementing the mount/track plumbing.
541
+ *
542
+ * @param componentClass Angular component class to instantiate per call.
543
+ * @param mapInputs Maps the renderer context to a `setInput()` bag.
544
+ * @param pool Which `componentRefs[]` array tracks the instance for cleanup.
545
+ * `'render'` (default) is the long-lived pool cleared at `dispose()`.
546
+ * `'editor'` is the per-cell pool swept by `releaseCell()`.
442
547
  * @internal
443
548
  */
444
- private mountComponent;
549
+ mountComponentRenderer<TCtx>(componentClass: Type<unknown>, mapInputs: (ctx: TCtx) => Record<string, unknown>, pool?: 'render' | 'editor'): (ctx: TCtx) => {
550
+ hostElement: HTMLSpanElement;
551
+ componentRef: ComponentRef<unknown>;
552
+ };
445
553
  /**
446
554
  * Creates a renderer function from an Angular component class.
555
+ * Wraps {@link mountComponentRenderer} with a per-cell `WeakMap` cache so
556
+ * scroll-recycled cells reuse the existing component (just refresh inputs)
557
+ * instead of mounting a fresh one.
447
558
  * @internal
448
559
  */
449
560
  private createComponentRenderer;
450
561
  /**
451
562
  * Creates an editor function from an Angular component class.
563
+ * Wraps {@link mountComponentRenderer} (using the `'editor'` pool for per-cell
564
+ * cleanup) plus editor-specific wiring: callback bridge, mount-hook fan-out
565
+ * (see {@link runEditorMountHooks}), and external value-change subscription.
452
566
  * @internal
453
567
  */
454
568
  private createComponentEditor;
@@ -465,68 +579,45 @@ declare class GridAdapter implements FrameworkAdapter {
465
579
  */
466
580
  private createComponentHeaderLabelRenderer;
467
581
  /**
468
- * Creates a group header renderer function from an Angular component class.
582
+ * Creates a loading renderer function from an Angular component class.
469
583
  *
470
- * The component should accept group header inputs (id, label, columns, firstIndex, isImplicit).
471
- * Returns the host element directly (groupHeaderRenderer returns an element, not void).
584
+ * The component should accept a `size` input ('large' | 'small').
472
585
  * @internal
473
586
  */
474
- private createComponentGroupHeaderRenderer;
587
+ private createComponentLoadingRenderer;
475
588
  /**
476
- * Processes a GroupingColumnsConfig, converting component class references
477
- * to actual renderer functions.
478
- *
479
- * @param config - Angular grouping columns configuration with possible component class references
480
- * @returns Processed GroupingColumnsConfig with actual renderer functions
589
+ * Create an embedded view from a `TemplateRef` and append-track it on the
590
+ * adapter's view-ref pool so it is cleaned up on `destroy()` / `unmount()`.
591
+ * Public so feature secondary entries can mount Angular templates (e.g.
592
+ * master-detail rows, responsive cards) without reaching into the adapter's
593
+ * private `viewContainerRef` / `viewRefs`.
594
+ * @internal
481
595
  */
482
- processGroupingColumnsConfig(config: GroupingColumnsConfig): GroupingColumnsConfig;
596
+ createTrackedEmbeddedView<TCtx>(template: TemplateRef<TCtx>, context: TCtx): EmbeddedViewRef<TCtx>;
483
597
  /**
484
- * Processes a GroupingRowsConfig, converting component class references
485
- * to actual renderer functions.
486
- *
487
- * @param config - Angular grouping rows configuration with possible component class references
488
- * @returns Processed GroupingRowsConfig with actual renderer functions
598
+ * Processes a GroupingColumnsConfig. Delegates to the feature config
599
+ * preprocessor installed by `@toolbox-web/grid-angular/features/grouping-columns`,
600
+ * which handles converting Angular component class references to actual
601
+ * renderer functions. Returns the input config unchanged if the feature
602
+ * is not imported.
489
603
  */
490
- processGroupingRowsConfig(config: GroupingRowsConfig): GroupingRowsConfig;
604
+ processGroupingColumnsConfig<TConfig>(config: TConfig): TConfig;
491
605
  /**
492
- * Processes a PinnedRowsConfig, converting component class references
493
- * in `customPanels[].render` to actual renderer functions.
494
- *
495
- * @param config - Angular pinned rows configuration with possible component class references
496
- * @returns Processed PinnedRowsConfig with actual renderer functions
606
+ * Processes a GroupingRowsConfig. Delegates to the feature config preprocessor
607
+ * installed by `@toolbox-web/grid-angular/features/grouping-rows`.
497
608
  */
498
- processPinnedRowsConfig(config: PinnedRowsConfig): PinnedRowsConfig;
609
+ processGroupingRowsConfig<TConfig>(config: TConfig): TConfig;
499
610
  /**
500
- * Creates a pinned rows panel renderer function from an Angular component class.
501
- *
502
- * The component should accept inputs from PinnedRowsContext (totalRows, filteredRows,
503
- * selectedRows, columns, rows, grid).
504
- * @internal
611
+ * Processes a PinnedRowsConfig. Delegates to the feature config preprocessor
612
+ * installed by `@toolbox-web/grid-angular/features/pinned-rows`.
505
613
  */
506
- private createComponentPinnedRowsPanelRenderer;
614
+ processPinnedRowsConfig<TConfig>(config: TConfig): TConfig;
507
615
  /**
508
- * Creates a loading renderer function from an Angular component class.
509
- *
510
- * The component should accept a `size` input ('large' | 'small').
616
+ * Run a registered feature-config preprocessor against `config`, returning
617
+ * the original config unchanged when the feature is not imported.
511
618
  * @internal
512
619
  */
513
- private createComponentLoadingRenderer;
514
- /**
515
- * Creates a group row renderer function from an Angular component class.
516
- *
517
- * The component should accept group row inputs (key, value, depth, rows, expanded, toggleExpand).
518
- * Returns the host element directly (groupRowRenderer returns an element, not void).
519
- * @internal
520
- */
521
- private createComponentGroupRowRenderer;
522
- /**
523
- * Creates a filter panel renderer function from an Angular component class.
524
- *
525
- * The component must implement `FilterPanel` (i.e., have a `params` input).
526
- * The component is mounted into the filter panel container element.
527
- * @internal
528
- */
529
- private createComponentFilterPanelRenderer;
620
+ private applyFeatureConfigPreprocessor;
530
621
  /**
531
622
  * Sets component inputs using Angular's setInput API.
532
623
  * @internal
@@ -554,18 +645,19 @@ declare class GridAdapter implements FrameworkAdapter {
554
645
  */
555
646
  destroy(): void;
556
647
  /**
557
- * Attaches a `before-edit-close` listener on the host grid that flushes
558
- * the focused input inside `host` via native `.blur()` so editors that
559
- * commit on `(blur)` flush pending input before the cell DOM is torn
560
- * down by Tab / programmatic row exit.
561
- *
562
- * The grid is resolved lazily via `queueMicrotask` because the host is
563
- * appended to the cell *after* the editor wrapper returns. Mirror of
564
- * Vue's `attachBeforeEditCloseFlush` and React's `wrapReactEditor`
648
+ * Runs every registered {@link EditorMountHook} against a freshly mounted
649
+ * editor host once it has been parented to the grid. The grid is resolved
650
+ * lazily via `queueMicrotask` because the host is appended to the cell
651
+ * *after* the editor wrapper returns. Mirror of Vue's
652
+ * `attachBeforeEditCloseFlush` and React's `wrapReactEditor`
565
653
  * queueMicrotask bridge.
654
+ *
655
+ * Without any feature imports the hook list is empty and this is a no-op
656
+ * — `before-edit-close` blur handling lives in
657
+ * `@toolbox-web/grid-angular/features/editing`.
566
658
  * @internal
567
659
  */
568
- private attachBeforeEditCloseFlush;
660
+ private runEditorMountHooks;
569
661
  }
570
662
 
571
663
  /**
@@ -588,6 +680,7 @@ declare class GridAdapter implements FrameworkAdapter {
588
680
  * },
589
681
  * };
590
682
  * ```
683
+ * @since 0.11.0
591
684
  */
592
685
  interface TypeDefaultRegistration<TRow = unknown> {
593
686
  /** Angular component class for rendering cells of this type */
@@ -607,6 +700,7 @@ interface TypeDefaultRegistration<TRow = unknown> {
607
700
  }
608
701
  /**
609
702
  * Injection token for providing type defaults at app level.
703
+ * @since 0.3.0
610
704
  */
611
705
  declare const GRID_TYPE_DEFAULTS: InjectionToken<Record<string, TypeDefaultRegistration<unknown>>>;
612
706
  /**
@@ -644,6 +738,7 @@ declare const GRID_TYPE_DEFAULTS: InjectionToken<Record<string, TypeDefaultRegis
644
738
  * }
645
739
  * }
646
740
  * ```
741
+ * @since 0.3.0
647
742
  */
648
743
  declare class GridTypeRegistry {
649
744
  private readonly defaults;
@@ -700,6 +795,7 @@ declare class GridTypeRegistry {
700
795
  * ]
701
796
  * };
702
797
  * ```
798
+ * @since 0.3.0
703
799
  */
704
800
  declare function provideGridTypeDefaults(defaults: Record<string, TypeDefaultRegistration>): EnvironmentProviders;
705
801
 
@@ -712,6 +808,7 @@ declare function provideGridTypeDefaults(defaults: Record<string, TypeDefaultReg
712
808
 
713
809
  /**
714
810
  * Injection token for providing icon overrides at app level.
811
+ * @since 0.8.0
715
812
  */
716
813
  declare const GRID_ICONS: InjectionToken<Partial<GridIcons>>;
717
814
  /**
@@ -744,6 +841,7 @@ declare const GRID_ICONS: InjectionToken<Partial<GridIcons>>;
744
841
  * }
745
842
  * }
746
843
  * ```
844
+ * @since 0.8.0
747
845
  */
748
846
  declare class GridIconRegistry {
749
847
  private readonly icons;
@@ -814,11 +912,13 @@ declare class GridIconRegistry {
814
912
  * ]
815
913
  * };
816
914
  * ```
915
+ * @since 0.8.0
817
916
  */
818
917
  declare function provideGridIcons(icons: Partial<GridIcons>): EnvironmentProviders;
819
918
 
820
919
  /**
821
920
  * Return type for injectGrid function.
921
+ * @since 0.6.0
822
922
  */
823
923
  interface InjectGridReturn<TRow = unknown> {
824
924
  /** Direct access to the typed grid element */
@@ -839,6 +939,16 @@ interface InjectGridReturn<TRow = unknown> {
839
939
  unregisterStyles: (id: string) => void;
840
940
  /** Get current visible columns */
841
941
  visibleColumns: Signal<ColumnConfig$1<TRow>[]>;
942
+ /**
943
+ * Look up a plugin instance by its class constructor.
944
+ * Returns `undefined` if the plugin is not registered or the grid is not yet ready.
945
+ */
946
+ getPlugin: <T>(pluginClass: new (...args: unknown[]) => T) => T | undefined;
947
+ /**
948
+ * Look up a plugin instance by its registered name (e.g. `'tooltip'`, `'undoRedo'`).
949
+ * Returns `undefined` if the plugin is not registered or the grid is not yet ready.
950
+ */
951
+ getPluginByName: DataGridElement<TRow>['getPluginByName'];
842
952
  }
843
953
  /**
844
954
  * Angular inject function for programmatic access to a grid instance.
@@ -879,6 +989,7 @@ interface InjectGridReturn<TRow = unknown> {
879
989
  * Defaults to `'tbw-grid'` (first grid in the component). Use when the
880
990
  * component contains multiple grids, e.g. `'tbw-grid.primary'` or `'#my-grid'`.
881
991
  * @returns Object with grid access methods and state signals
992
+ * @since 0.6.0
882
993
  */
883
994
  declare function injectGrid<TRow = unknown>(selector?: string): InjectGridReturn<TRow>;
884
995
 
@@ -902,6 +1013,7 @@ declare function injectGrid<TRow = unknown>(selector?: string): InjectGridReturn
902
1013
 
903
1014
  /**
904
1015
  * Feature names supported by the Grid directive.
1016
+ * @since 0.6.0
905
1017
  */
906
1018
  type FeatureName = 'selection' | 'editing' | 'clipboard' | 'contextMenu' | 'multiSort' | 'filtering' | 'reorderColumns' | 'visibility' | 'pinnedColumns' | 'groupingColumns' | 'columnVirtualization' | 'reorderRows' | 'rowDragDrop' | 'groupingRows' | 'pinnedRows' | 'tree' | 'masterDetail' | 'responsive' | 'undoRedo' | 'export' | 'print' | 'pivot' | 'serverSide' | 'tooltip';
907
1019
 
@@ -949,6 +1061,12 @@ type FeatureName = 'selection' | 'editing' | 'clipboard' | 'contextMenu' | 'mult
949
1061
  * ```
950
1062
  *
951
1063
  * @typeParam TRow - The row data type (available via `params().column`)
1064
+ *
1065
+ * MOVE-IN-V2: this class will physically move into
1066
+ * `@toolbox-web/grid-angular/features/filtering` in v2.0.0; the deprecated
1067
+ * re-export from the main `@toolbox-web/grid-angular` entry will be removed at
1068
+ * the same time. Consumers should already be importing from the feature entry.
1069
+ * @since 0.13.0
952
1070
  */
953
1071
  declare abstract class BaseFilterPanel implements FilterPanel {
954
1072
  /**
@@ -1057,6 +1175,12 @@ declare abstract class BaseFilterPanel implements FilterPanel {
1057
1175
  *
1058
1176
  * @typeParam TRow - The row data type
1059
1177
  * @typeParam TValue - The cell value type
1178
+ *
1179
+ * MOVE-IN-V2: this class will physically move into
1180
+ * `@toolbox-web/grid-angular/features/editing` in v2.0.0; the deprecated
1181
+ * re-export from the main `@toolbox-web/grid-angular` entry will be removed at
1182
+ * the same time. Consumers should already be importing from the feature entry.
1183
+ * @since 0.5.0
1060
1184
  */
1061
1185
  declare abstract class BaseGridEditor<TRow = unknown, TValue = unknown> {
1062
1186
  protected readonly elementRef: ElementRef<any>;
@@ -1243,6 +1367,12 @@ declare abstract class BaseGridEditor<TRow = unknown, TValue = unknown> {
1243
1367
  *
1244
1368
  * @typeParam TRow - The row data type
1245
1369
  * @typeParam TValue - The cell/control value type
1370
+ *
1371
+ * MOVE-IN-V2: this class will physically move into
1372
+ * `@toolbox-web/grid-angular/features/editing` in v2.0.0; the deprecated
1373
+ * re-export from the main `@toolbox-web/grid-angular` entry will be removed at
1374
+ * the same time. Consumers should already be importing from the feature entry.
1375
+ * @since 0.13.0
1246
1376
  */
1247
1377
  declare abstract class BaseGridEditorCVA<TRow = unknown, TValue = unknown> extends BaseGridEditor<TRow, TValue> implements ControlValueAccessor {
1248
1378
  /** Internal onChange callback registered by the form control. */
@@ -1309,6 +1439,7 @@ declare abstract class BaseGridEditorCVA<TRow = unknown, TValue = unknown> exten
1309
1439
  * - `'below-right'` — panel appears below the cell, right-aligned
1310
1440
  * - `'over-top-left'` — panel top-left corner aligns with cell top-left corner (opens downward)
1311
1441
  * - `'over-bottom-left'` — panel bottom-left corner aligns with cell bottom-left corner (opens upward)
1442
+ * @since 0.13.0
1312
1443
  */
1313
1444
  type OverlayPosition = 'below' | 'above' | 'below-right' | 'over-top-left' | 'over-bottom-left';
1314
1445
  /**
@@ -1406,6 +1537,13 @@ type OverlayPosition = 'below' | 'above' | 'below-right' | 'over-top-left' | 'ov
1406
1537
  *
1407
1538
  * @typeParam TRow - The row data type
1408
1539
  * @typeParam TValue - The cell value type
1540
+ *
1541
+ * MOVE-IN-V2: this class (and its companion `OverlayPosition` type) will
1542
+ * physically move into `@toolbox-web/grid-angular/features/editing` in v2.0.0;
1543
+ * the deprecated re-export from the main `@toolbox-web/grid-angular` entry
1544
+ * will be removed at the same time. Consumers should already be importing
1545
+ * from the feature entry.
1546
+ * @since 0.13.0
1409
1547
  */
1410
1548
  declare abstract class BaseOverlayEditor<TRow = unknown, TValue = unknown> extends BaseGridEditor<TRow, TValue> {
1411
1549
  private readonly _elementRef;
@@ -1568,6 +1706,7 @@ declare abstract class BaseOverlayEditor<TRow = unknown, TValue = unknown> exten
1568
1706
  /**
1569
1707
  * Context object passed to the cell editor template.
1570
1708
  * Contains the cell value, row data, column configuration, and commit/cancel functions.
1709
+ * @since 0.1.0
1571
1710
  */
1572
1711
  interface GridEditorContext<TValue = unknown, TRow = unknown> {
1573
1712
  /** The cell value for this column */
@@ -1664,6 +1803,14 @@ interface GridEditorContext<TValue = unknown, TRow = unknown> {
1664
1803
  * ```
1665
1804
  *
1666
1805
  * @category Directive
1806
+ *
1807
+ * MOVE-IN-V2: this directive (and its companion `GridEditorContext` type and
1808
+ * `getEditorTemplate` helper) will physically move into
1809
+ * `@toolbox-web/grid-angular/features/editing` in v2.0.0; the deprecated
1810
+ * re-exports from the main `@toolbox-web/grid-angular` entry will be removed
1811
+ * at the same time. Consumers should already be importing from the feature
1812
+ * entry.
1813
+ * @since 0.1.0
1667
1814
  */
1668
1815
  declare class GridColumnEditor {
1669
1816
  private elementRef;
@@ -1685,6 +1832,7 @@ declare class GridColumnEditor {
1685
1832
  /**
1686
1833
  * Context object passed to the cell renderer template.
1687
1834
  * Contains the cell value, row data, and column configuration.
1835
+ * @since 0.1.0
1688
1836
  */
1689
1837
  interface GridCellContext<TValue = unknown, TRow = unknown> {
1690
1838
  /** The cell value for this column */
@@ -1731,6 +1879,7 @@ interface GridCellContext<TValue = unknown, TRow = unknown> {
1731
1879
  * ```
1732
1880
  *
1733
1881
  * @category Directive
1882
+ * @since 0.1.0
1734
1883
  */
1735
1884
  declare class GridColumnView {
1736
1885
  private elementRef;
@@ -1778,6 +1927,7 @@ declare class GridColumnView {
1778
1927
  * ```
1779
1928
  *
1780
1929
  * @category Directive
1930
+ * @since 0.13.0
1781
1931
  */
1782
1932
  declare class TbwGridColumn {
1783
1933
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TbwGridColumn, never>;
@@ -1787,6 +1937,7 @@ declare class TbwGridColumn {
1787
1937
  /**
1788
1938
  * Context object passed to the detail renderer template.
1789
1939
  * Contains the row data for the expanded detail view.
1940
+ * @since 0.1.0
1790
1941
  */
1791
1942
  interface GridDetailContext<TRow = unknown> {
1792
1943
  /** The row data (implicit binding for let-row) */
@@ -1794,6 +1945,12 @@ interface GridDetailContext<TRow = unknown> {
1794
1945
  /** The row data (explicit binding) */
1795
1946
  row: TRow;
1796
1947
  }
1948
+ /**
1949
+ * Gets the detail template registered for a given grid element.
1950
+ * Used by AngularGridAdapter to retrieve templates at render time.
1951
+ * @since 0.1.0
1952
+ */
1953
+ declare function getDetailTemplate(gridElement: HTMLElement): TemplateRef<GridDetailContext> | undefined;
1797
1954
  /**
1798
1955
  * Directive that captures an `<ng-template>` for use as a master-detail row renderer.
1799
1956
  *
@@ -1815,10 +1972,10 @@ interface GridDetailContext<TRow = unknown> {
1815
1972
  * The template context provides:
1816
1973
  * - `$implicit` / `row`: The full row data object
1817
1974
  *
1818
- * Import the directive in your component:
1975
+ * Import the directive from the master-detail feature entry:
1819
1976
  *
1820
1977
  * ```typescript
1821
- * import { GridDetailView } from '@toolbox-web/grid-angular';
1978
+ * import { GridDetailView } from '@toolbox-web/grid-angular/features/master-detail';
1822
1979
  *
1823
1980
  * @Component({
1824
1981
  * imports: [GridDetailView],
@@ -1826,6 +1983,10 @@ interface GridDetailContext<TRow = unknown> {
1826
1983
  * })
1827
1984
  * ```
1828
1985
  *
1986
+ * > Note: `GridDetailView` is also re-exported from `@toolbox-web/grid-angular`
1987
+ * > for backwards compatibility, but that re-export is deprecated and will be
1988
+ * > removed in v2.0.0. Always import from the feature entry.
1989
+ *
1829
1990
  * @example
1830
1991
  * ```html
1831
1992
  * <tbw-grid [rows]="rows" [gridConfig]="config">
@@ -1838,6 +1999,7 @@ interface GridDetailContext<TRow = unknown> {
1838
1999
  * ```
1839
2000
  *
1840
2001
  * @category Directive
2002
+ * @since 0.1.0
1841
2003
  */
1842
2004
  declare class GridDetailView {
1843
2005
  private elementRef;
@@ -1863,6 +2025,7 @@ declare class GridDetailView {
1863
2025
  /**
1864
2026
  * Context provided to the grid containing form-related information.
1865
2027
  * This can be accessed by other directives to get form controls.
2028
+ * @since 0.5.0
1866
2029
  */
1867
2030
  interface FormArrayContext {
1868
2031
  /** Get the row data at a specific index */
@@ -1929,6 +2092,7 @@ interface FormArrayContext {
1929
2092
  /**
1930
2093
  * Gets the FormArrayContext from a grid element, if present.
1931
2094
  * @internal
2095
+ * @since 0.5.0
1932
2096
  */
1933
2097
  declare function getFormArrayContext(gridElement: HTMLElement): FormArrayContext | undefined;
1934
2098
  /**
@@ -1990,6 +2154,14 @@ declare function getFormArrayContext(gridElement: HTMLElement): FormArrayContext
1990
2154
  * ```
1991
2155
  *
1992
2156
  * @category Directive
2157
+ *
2158
+ * MOVE-IN-V2: this directive (and its `FormArrayContext` type and
2159
+ * `getFormArrayContext` helper) will physically move into
2160
+ * `@toolbox-web/grid-angular/features/editing` in v2.0.0; the deprecated
2161
+ * re-exports from the main `@toolbox-web/grid-angular` entry will be removed
2162
+ * at the same time. Consumers should already be importing from the feature
2163
+ * entry.
2164
+ * @since 0.5.0
1993
2165
  */
1994
2166
  declare class GridFormArray implements OnInit, OnDestroy {
1995
2167
  #private;
@@ -2054,6 +2226,7 @@ declare class GridFormArray implements OnInit, OnDestroy {
2054
2226
  * ```
2055
2227
  *
2056
2228
  * @category Directive
2229
+ * @since 0.13.0
2057
2230
  */
2058
2231
  declare class TbwGridHeader {
2059
2232
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TbwGridHeader, never>;
@@ -2063,6 +2236,7 @@ declare class TbwGridHeader {
2063
2236
  /**
2064
2237
  * Gets the FormArrayContext from a grid element, if present.
2065
2238
  * @internal
2239
+ * @since 0.11.0
2066
2240
  */
2067
2241
  declare function getLazyFormContext(gridElement: HTMLElement): FormArrayContext | undefined;
2068
2242
  /**
@@ -2073,10 +2247,12 @@ declare function getLazyFormContext(gridElement: HTMLElement): FormArrayContext
2073
2247
  * @param row The row data object
2074
2248
  * @param rowIndex The row index in the grid
2075
2249
  * @returns A FormGroup for the row (only include editable fields)
2250
+ * @since 0.11.0
2076
2251
  */
2077
2252
  type LazyFormFactory<TRow = unknown> = (row: TRow, rowIndex: number) => FormGroup;
2078
2253
  /**
2079
2254
  * Event emitted when a row's form values have changed.
2255
+ * @since 0.11.0
2080
2256
  */
2081
2257
  interface RowFormChangeEvent<TRow = unknown> {
2082
2258
  /** The row index */
@@ -2169,6 +2345,14 @@ interface RowFormChangeEvent<TRow = unknown> {
2169
2345
  *
2170
2346
  * @see GridFormArray For small datasets with full upfront validation
2171
2347
  * @category Directive
2348
+ *
2349
+ * MOVE-IN-V2: this directive (and its `LazyFormFactory`, `RowFormChangeEvent`
2350
+ * types and `getLazyFormContext` helper) will physically move into
2351
+ * `@toolbox-web/grid-angular/features/editing` in v2.0.0; the deprecated
2352
+ * re-exports from the main `@toolbox-web/grid-angular` entry will be removed
2353
+ * at the same time. Consumers should already be importing from the feature
2354
+ * entry.
2355
+ * @since 0.11.0
2172
2356
  */
2173
2357
  declare class GridLazyForm<TRow = unknown> implements OnInit, OnDestroy {
2174
2358
  #private;
@@ -2266,6 +2450,7 @@ declare class GridLazyForm<TRow = unknown> implements OnInit, OnDestroy {
2266
2450
  * </ng-template>
2267
2451
  * </tbw-grid-responsive-card>
2268
2452
  * ```
2453
+ * @since 0.4.0
2269
2454
  */
2270
2455
  interface GridResponsiveCardContext<TRow = unknown> {
2271
2456
  /**
@@ -2281,6 +2466,14 @@ interface GridResponsiveCardContext<TRow = unknown> {
2281
2466
  */
2282
2467
  index: number;
2283
2468
  }
2469
+ /**
2470
+ * Retrieves the responsive card template for a grid element.
2471
+ *
2472
+ * @param gridElement - The grid element to look up
2473
+ * @returns The template reference or undefined if not found
2474
+ * @since 0.4.0
2475
+ */
2476
+ declare function getResponsiveCardTemplate(gridElement: HTMLElement): TemplateRef<GridResponsiveCardContext> | undefined;
2284
2477
  /**
2285
2478
  * Directive for providing custom Angular templates for responsive card layout.
2286
2479
  *
@@ -2313,9 +2506,19 @@ interface GridResponsiveCardContext<TRow = unknown> {
2313
2506
  *
2314
2507
  * @see ResponsivePlugin
2315
2508
  * @category Directive
2509
+ * @since 0.4.0
2316
2510
  */
2317
2511
  declare class GridResponsiveCard<TRow = unknown> {
2318
2512
  private elementRef;
2513
+ /**
2514
+ * Card row height in pixels. Use `'auto'` for dynamic height based on content.
2515
+ *
2516
+ * Mirrors to the `card-row-height` attribute on the underlying
2517
+ * `<tbw-grid-responsive-card>` element which the ResponsivePlugin reads.
2518
+ *
2519
+ * @default 'auto'
2520
+ */
2521
+ cardRowHeight: _angular_core.InputSignal<number | "auto" | undefined>;
2319
2522
  /**
2320
2523
  * The ng-template containing the card content.
2321
2524
  */
@@ -2324,12 +2527,17 @@ declare class GridResponsiveCard<TRow = unknown> {
2324
2527
  * Effect that registers the template when it becomes available.
2325
2528
  */
2326
2529
  private onTemplateReceived;
2530
+ /**
2531
+ * Effect that mirrors the `cardRowHeight` input to the kebab-cased attribute
2532
+ * read by the ResponsivePlugin.
2533
+ */
2534
+ private onCardRowHeightChange;
2327
2535
  /**
2328
2536
  * Type guard for template context inference.
2329
2537
  */
2330
2538
  static ngTemplateContextGuard<T>(_directive: GridResponsiveCard<T>, context: unknown): context is GridResponsiveCardContext<T>;
2331
2539
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridResponsiveCard<any>, never>;
2332
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridResponsiveCard<any>, "tbw-grid-responsive-card", never, {}, {}, ["template"], never, true, never>;
2540
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridResponsiveCard<any>, "tbw-grid-responsive-card", never, { "cardRowHeight": { "alias": "cardRowHeight"; "required": false; "isSignal": true; }; }, {}, ["template"], never, true, never>;
2333
2541
  }
2334
2542
 
2335
2543
  /**
@@ -2359,6 +2567,7 @@ declare class GridResponsiveCard<TRow = unknown> {
2359
2567
  * ```
2360
2568
  *
2361
2569
  * @category Directive
2570
+ * @since 0.13.0
2362
2571
  */
2363
2572
  declare class TbwGridToolButtons {
2364
2573
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TbwGridToolButtons, never>;
@@ -2368,6 +2577,7 @@ declare class TbwGridToolButtons {
2368
2577
  /**
2369
2578
  * Context object passed to the tool panel template.
2370
2579
  * Provides access to grid-related information for the panel content.
2580
+ * @since 0.1.0
2371
2581
  */
2372
2582
  interface GridToolPanelContext {
2373
2583
  /** The grid element (implicit binding) */
@@ -2433,6 +2643,7 @@ interface GridToolPanelContext {
2433
2643
  * ```
2434
2644
  *
2435
2645
  * @category Directive
2646
+ * @since 0.1.0
2436
2647
  */
2437
2648
  declare class GridToolPanel {
2438
2649
  private elementRef;
@@ -2461,8 +2672,70 @@ declare class GridToolPanel {
2461
2672
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GridToolPanel, "tbw-grid-tool-panel", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "order": { "alias": "order"; "required": false; "isSignal": true; }; }, {}, ["template"], never, true, never>;
2462
2673
  }
2463
2674
 
2675
+ /**
2676
+ * Column shorthand parsing for `@toolbox-web/grid-angular`.
2677
+ *
2678
+ * Intentionally duplicated across the React, Vue, and Angular adapters so each
2679
+ * adapter has zero shared-runtime dependency. Do not extract into a shared
2680
+ * package: the helpers are tiny (~100 lines), the duplication keeps each
2681
+ * adapter independently tree-shakeable, and a shared package would force
2682
+ * consumers to install an extra dep just to import shorthand support.
2683
+ *
2684
+ * If you change behavior here, mirror the change in `grid-react` and
2685
+ * `grid-vue`. The three implementations are kept byte-equivalent.
2686
+ */
2687
+
2688
+ /**
2689
+ * Type for column shorthand notation.
2690
+ *
2691
+ * Supports:
2692
+ * - Simple string: `'name'` → `{ field: 'name', header: 'Name' }`
2693
+ * - With type: `'salary:number'` → `{ field: 'salary', header: 'Salary', type: 'number' }`
2694
+ * - Full config object: `{ field: 'id', header: 'ID', width: 80 }` (passed through)
2695
+ *
2696
+ * @example
2697
+ * ```typescript
2698
+ * // All equivalent:
2699
+ * const cols1 = ['id', 'name', 'email'];
2700
+ * const cols2 = ['id:number', 'name:string', 'email'];
2701
+ * const cols3 = [{ field: 'id' }, { field: 'name' }, { field: 'email' }];
2702
+ * ```
2703
+ * @since 1.4.0
2704
+ */
2705
+ type ColumnShorthand<TRow = unknown> = string | ColumnConfig$1<TRow>;
2706
+ /**
2707
+ * Parse a column shorthand string into a ColumnConfig.
2708
+ *
2709
+ * Supports formats:
2710
+ * - `'fieldName'` → `{ field: 'fieldName', header: 'Field Name' }`
2711
+ * - `'fieldName:type'` → `{ field: 'fieldName', header: 'Field Name', type: 'type' }`
2712
+ *
2713
+ * @param shorthand - The shorthand string (e.g., 'name', 'salary:number')
2714
+ * @returns A ColumnConfig object
2715
+ * @since 1.4.0
2716
+ */
2717
+ declare function parseColumnShorthand<TRow = unknown>(shorthand: string): ColumnConfig$1<TRow>;
2718
+ /**
2719
+ * Normalize an array of column shorthands to ColumnConfig objects.
2720
+ *
2721
+ * @param columns - Array of column shorthands (strings or ColumnConfig objects)
2722
+ * @returns Array of ColumnConfig objects
2723
+ * @since 1.4.0
2724
+ */
2725
+ declare function normalizeColumns<TRow = unknown>(columns: ColumnShorthand<TRow>[]): ColumnConfig$1<TRow>[];
2726
+ /**
2727
+ * Apply column defaults to a list of columns. Individual column properties
2728
+ * override defaults.
2729
+ * @since 1.4.0
2730
+ */
2731
+ declare function applyColumnDefaults<TRow = unknown>(columns: ColumnConfig$1<TRow>[], defaults: Partial<ColumnConfig$1<TRow>> | undefined): ColumnConfig$1<TRow>[];
2732
+ /** Check if an array of columns contains any shorthand strings. * @since 1.4.0
2733
+ */
2734
+ declare function hasColumnShorthands<TRow>(columns: ColumnShorthand<TRow>[]): boolean;
2735
+
2464
2736
  /**
2465
2737
  * Event detail for cell commit events.
2738
+ * @since 0.1.1
2466
2739
  */
2467
2740
  interface CellCommitEvent<TRow = unknown, TValue = unknown> {
2468
2741
  /** The row data object */
@@ -2482,6 +2755,7 @@ interface CellCommitEvent<TRow = unknown, TValue = unknown> {
2482
2755
  }
2483
2756
  /**
2484
2757
  * Event detail for row commit events (bulk editing).
2758
+ * @since 0.1.1
2485
2759
  */
2486
2760
  interface RowCommitEvent<TRow = unknown> {
2487
2761
  /** The row data object */
@@ -2530,6 +2804,7 @@ interface RowCommitEvent<TRow = unknown> {
2530
2804
  * - Handles cleanup on destruction
2531
2805
  *
2532
2806
  * @category Directive
2807
+ * @since 0.1.0
2533
2808
  */
2534
2809
  declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2535
2810
  private elementRef;
@@ -2661,20 +2936,33 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2661
2936
  /**
2662
2937
  * Column configuration array.
2663
2938
  *
2939
+ * Accepts either full `ColumnConfig` objects or shorthand strings such as
2940
+ * `'name'` or `'salary:number'`. Shorthands auto-generate human-readable
2941
+ * headers from the field name.
2942
+ *
2664
2943
  * Shorthand for setting columns without wrapping them in a full `gridConfig`.
2665
2944
  * If both `columns` and `gridConfig.columns` are set, `columns` takes precedence
2666
2945
  * (see configuration precedence system).
2667
2946
  *
2668
2947
  * @example
2669
2948
  * ```html
2670
- * <tbw-grid [rows]="data" [columns]="[
2671
- * { field: 'id', header: 'ID', pinned: 'left', width: 80 },
2672
- * { field: 'name', header: 'Name' },
2673
- * { field: 'email', header: 'Email' }
2674
- * ]" />
2949
+ * <tbw-grid [rows]="data" [columns]="['id:number', 'name', { field: 'status', editable: true }]" />
2675
2950
  * ```
2676
2951
  */
2677
- columns: _angular_core.InputSignal<ColumnConfig<any>[] | undefined>;
2952
+ columns: _angular_core.InputSignal<ColumnShorthand<any>[] | undefined>;
2953
+ /**
2954
+ * Default column properties applied to every column in `columns`.
2955
+ * Individual column properties override these defaults.
2956
+ *
2957
+ * @example
2958
+ * ```html
2959
+ * <tbw-grid
2960
+ * [columnDefaults]="{ sortable: true, resizable: true }"
2961
+ * [columns]="[{ field: 'id', sortable: false }, { field: 'name' }]"
2962
+ * />
2963
+ * ```
2964
+ */
2965
+ columnDefaults: _angular_core.InputSignal<Partial<ColumnConfig<any>> | undefined>;
2678
2966
  /**
2679
2967
  * Column sizing strategy.
2680
2968
  *
@@ -2744,6 +3032,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2744
3032
  * <!-- Full config object -->
2745
3033
  * <tbw-grid [selection]="{ mode: 'range', checkbox: true }" />
2746
3034
  * ```
3035
+ *
3036
+ * @deprecated Use `GridSelectionDirective` from
3037
+ * `@toolbox-web/grid-angular/features/selection`. Will be removed in v2.0.0.
2747
3038
  */
2748
3039
  selection: _angular_core.InputSignal<"row" | SelectionConfig<any> | "cell" | "range" | undefined>;
2749
3040
  /**
@@ -2767,6 +3058,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2767
3058
  * <!-- Full config with callbacks -->
2768
3059
  * <tbw-grid [editing]="{ editOn: 'dblclick', onBeforeEditClose: myCallback }" />
2769
3060
  * ```
3061
+ *
3062
+ * @deprecated Use `GridEditingDirective` from
3063
+ * `@toolbox-web/grid-angular/features/editing`. Will be removed in v2.0.0.
2770
3064
  */
2771
3065
  editing: _angular_core.InputSignal<boolean | "click" | "dblclick" | "manual" | EditingConfig | undefined>;
2772
3066
  /**
@@ -2781,6 +3075,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2781
3075
  * ```html
2782
3076
  * <tbw-grid [selection]="'range'" [clipboard]="true" />
2783
3077
  * ```
3078
+ *
3079
+ * @deprecated Use `GridClipboardDirective` from
3080
+ * `@toolbox-web/grid-angular/features/clipboard`. Will be removed in v2.0.0.
2784
3081
  */
2785
3082
  clipboard: _angular_core.InputSignal<boolean | ClipboardConfig | undefined>;
2786
3083
  /**
@@ -2795,6 +3092,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2795
3092
  * ```html
2796
3093
  * <tbw-grid [contextMenu]="true" />
2797
3094
  * ```
3095
+ *
3096
+ * @deprecated Use `GridContextMenuDirective` from
3097
+ * `@toolbox-web/grid-angular/features/context-menu`. Will be removed in v2.0.0.
2798
3098
  */
2799
3099
  contextMenu: _angular_core.InputSignal<boolean | ContextMenuConfig | undefined>;
2800
3100
  /**
@@ -2819,6 +3119,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2819
3119
  * <!-- Full config -->
2820
3120
  * <tbw-grid [multiSort]="{ maxSortColumns: 3 }" />
2821
3121
  * ```
3122
+ *
3123
+ * @deprecated Use `GridMultiSortDirective` from
3124
+ * `@toolbox-web/grid-angular/features/multi-sort`. Will be removed in v2.0.0.
2822
3125
  */
2823
3126
  multiSort: _angular_core.InputSignal<boolean | "multi" | MultiSortConfig | "single" | undefined>;
2824
3127
  /**
@@ -2834,6 +3137,13 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2834
3137
  * <tbw-grid [filtering]="true" />
2835
3138
  * <tbw-grid [filtering]="{ debounceMs: 200 }" />
2836
3139
  * ```
3140
+ *
3141
+ * @deprecated Use `GridFilteringDirective` from
3142
+ * `@toolbox-web/grid-angular/features/filtering` and add it to your
3143
+ * component's `imports`. The directive owns the `filtering` input + the
3144
+ * `filterChange` output and lets the typed surface tree-shake away when
3145
+ * the feature is not imported. This input remains as a non-breaking shim
3146
+ * and will be removed in v2.0.0.
2837
3147
  */
2838
3148
  filtering: _angular_core.InputSignal<boolean | FilterConfig<any> | undefined>;
2839
3149
  /**
@@ -2848,6 +3158,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2848
3158
  * ```html
2849
3159
  * <tbw-grid [reorderColumns]="true" />
2850
3160
  * ```
3161
+ *
3162
+ * @deprecated Use `GridReorderColumnsDirective` from
3163
+ * `@toolbox-web/grid-angular/features/reorder-columns`. Will be removed in v2.0.0.
2851
3164
  */
2852
3165
  reorderColumns: _angular_core.InputSignal<boolean | ReorderConfig | undefined>;
2853
3166
  /**
@@ -2862,6 +3175,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2862
3175
  * ```html
2863
3176
  * <tbw-grid [visibility]="true" />
2864
3177
  * ```
3178
+ *
3179
+ * @deprecated Use `GridVisibilityDirective` from
3180
+ * `@toolbox-web/grid-angular/features/visibility`. Will be removed in v2.0.0.
2865
3181
  */
2866
3182
  visibility: _angular_core.InputSignal<boolean | VisibilityConfig | undefined>;
2867
3183
  /**
@@ -2881,6 +3197,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2881
3197
  * { field: 'actions', pinned: 'right' }
2882
3198
  * ]" />
2883
3199
  * ```
3200
+ *
3201
+ * @deprecated Use `GridPinnedColumnsDirective` from
3202
+ * `@toolbox-web/grid-angular/features/pinned-columns`. Will be removed in v2.0.0.
2884
3203
  */
2885
3204
  pinnedColumns: _angular_core.InputSignal<boolean | undefined>;
2886
3205
  /**
@@ -2895,8 +3214,11 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2895
3214
  * ```html
2896
3215
  * <tbw-grid [groupingColumns]="true" />
2897
3216
  * ```
3217
+ *
3218
+ * @deprecated Use `GridGroupingColumnsDirective` from
3219
+ * `@toolbox-web/grid-angular/features/grouping-columns`. Will be removed in v2.0.0.
2898
3220
  */
2899
- groupingColumns: _angular_core.InputSignal<boolean | GroupingColumnsConfig$1 | undefined>;
3221
+ groupingColumns: _angular_core.InputSignal<boolean | GroupingColumnsConfig | undefined>;
2900
3222
  /**
2901
3223
  * Enable horizontal column virtualization for wide grids.
2902
3224
  *
@@ -2909,6 +3231,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2909
3231
  * ```html
2910
3232
  * <tbw-grid [columnVirtualization]="true" />
2911
3233
  * ```
3234
+ *
3235
+ * @deprecated Use `GridColumnVirtualizationDirective` from
3236
+ * `@toolbox-web/grid-angular/features/column-virtualization`. Will be removed in v2.0.0.
2912
3237
  */
2913
3238
  columnVirtualization: _angular_core.InputSignal<boolean | ColumnVirtualizationConfig | undefined>;
2914
3239
  /**
@@ -2934,6 +3259,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2934
3259
  * ```html
2935
3260
  * <tbw-grid [rowDragDrop]="{ dropZone: 'employees', operation: 'move' }" />
2936
3261
  * ```
3262
+ *
3263
+ * @deprecated Use `GridRowDragDropDirective` from
3264
+ * `@toolbox-web/grid-angular/features/row-drag-drop`. Will be removed in v2.0.0.
2937
3265
  */
2938
3266
  rowDragDrop: _angular_core.InputSignal<boolean | RowDragDropConfig<any> | undefined>;
2939
3267
  /**
@@ -2948,8 +3276,11 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2948
3276
  * ```html
2949
3277
  * <tbw-grid [groupingRows]="{ groupBy: ['department'] }" />
2950
3278
  * ```
3279
+ *
3280
+ * @deprecated Use `GridGroupingRowsDirective` from
3281
+ * `@toolbox-web/grid-angular/features/grouping-rows`. Will be removed in v2.0.0.
2951
3282
  */
2952
- groupingRows: _angular_core.InputSignal<GroupingRowsConfig$1 | undefined>;
3283
+ groupingRows: _angular_core.InputSignal<GroupingRowsConfig | undefined>;
2953
3284
  /**
2954
3285
  * Enable pinned rows (aggregation/status bar).
2955
3286
  *
@@ -2962,8 +3293,11 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2962
3293
  * ```html
2963
3294
  * <tbw-grid [pinnedRows]="{ bottom: [{ type: 'aggregation' }] }" />
2964
3295
  * ```
3296
+ *
3297
+ * @deprecated Use `GridPinnedRowsDirective` from
3298
+ * `@toolbox-web/grid-angular/features/pinned-rows`. Will be removed in v2.0.0.
2965
3299
  */
2966
- pinnedRows: _angular_core.InputSignal<boolean | PinnedRowsConfig$1 | undefined>;
3300
+ pinnedRows: _angular_core.InputSignal<boolean | PinnedRowsConfig | undefined>;
2967
3301
  /**
2968
3302
  * Enable hierarchical tree view.
2969
3303
  *
@@ -2976,6 +3310,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2976
3310
  * ```html
2977
3311
  * <tbw-grid [tree]="{ childrenField: 'children' }" />
2978
3312
  * ```
3313
+ *
3314
+ * @deprecated Use `GridTreeDirective` from
3315
+ * `@toolbox-web/grid-angular/features/tree`. Will be removed in v2.0.0.
2979
3316
  */
2980
3317
  tree: _angular_core.InputSignal<boolean | TreeConfig | undefined>;
2981
3318
  /**
@@ -2990,6 +3327,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2990
3327
  * ```html
2991
3328
  * <tbw-grid [masterDetail]="{ detailRenderer: detailFn }" />
2992
3329
  * ```
3330
+ *
3331
+ * @deprecated Use `GridMasterDetailDirective` from
3332
+ * `@toolbox-web/grid-angular/features/master-detail`. Will be removed in v2.0.0.
2993
3333
  */
2994
3334
  masterDetail: _angular_core.InputSignal<MasterDetailConfig | undefined>;
2995
3335
  /**
@@ -3004,6 +3344,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3004
3344
  * ```html
3005
3345
  * <tbw-grid [responsive]="{ breakpoint: 768 }" />
3006
3346
  * ```
3347
+ *
3348
+ * @deprecated Use `GridResponsiveDirective` from
3349
+ * `@toolbox-web/grid-angular/features/responsive`. Will be removed in v2.0.0.
3007
3350
  */
3008
3351
  responsive: _angular_core.InputSignal<boolean | ResponsivePluginConfig<unknown> | undefined>;
3009
3352
  /**
@@ -3018,6 +3361,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3018
3361
  * ```html
3019
3362
  * <tbw-grid [editing]="'dblclick'" [undoRedo]="true" />
3020
3363
  * ```
3364
+ *
3365
+ * @deprecated Use `GridUndoRedoDirective` from
3366
+ * `@toolbox-web/grid-angular/features/undo-redo`. Will be removed in v2.0.0.
3021
3367
  */
3022
3368
  undoRedo: _angular_core.InputSignal<boolean | UndoRedoConfig | undefined>;
3023
3369
  /**
@@ -3033,6 +3379,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3033
3379
  * <tbw-grid [export]="true" />
3034
3380
  * <tbw-grid [export]="{ filename: 'data.csv' }" />
3035
3381
  * ```
3382
+ *
3383
+ * @deprecated Use `GridExportDirective` from
3384
+ * `@toolbox-web/grid-angular/features/export`. Will be removed in v2.0.0.
3036
3385
  */
3037
3386
  exportFeature: _angular_core.InputSignal<boolean | ExportConfig | undefined>;
3038
3387
  /**
@@ -3047,6 +3396,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3047
3396
  * ```html
3048
3397
  * <tbw-grid [print]="true" />
3049
3398
  * ```
3399
+ *
3400
+ * @deprecated Use `GridPrintDirective` from
3401
+ * `@toolbox-web/grid-angular/features/print`. Will be removed in v2.0.0.
3050
3402
  */
3051
3403
  print: _angular_core.InputSignal<boolean | PrintConfig | undefined>;
3052
3404
  /**
@@ -3061,6 +3413,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3061
3413
  * ```html
3062
3414
  * <tbw-grid [pivot]="{ rowFields: ['category'], valueField: 'sales' }" />
3063
3415
  * ```
3416
+ *
3417
+ * @deprecated Use `GridPivotDirective` from
3418
+ * `@toolbox-web/grid-angular/features/pivot`. Will be removed in v2.0.0.
3064
3419
  */
3065
3420
  pivot: _angular_core.InputSignal<PivotConfig | undefined>;
3066
3421
  /**
@@ -3075,6 +3430,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3075
3430
  * ```html
3076
3431
  * <tbw-grid [serverSide]="{ dataSource: fetchDataFn }" />
3077
3432
  * ```
3433
+ *
3434
+ * @deprecated Use `GridServerSideDirective` from
3435
+ * `@toolbox-web/grid-angular/features/server-side`. Will be removed in v2.0.0.
3078
3436
  */
3079
3437
  serverSide: _angular_core.InputSignal<ServerSideConfig | undefined>;
3080
3438
  /**
@@ -3085,6 +3443,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3085
3443
  * <tbw-grid [tooltip]="true" />
3086
3444
  * <tbw-grid [tooltip]="{ header: true, cell: false }" />
3087
3445
  * ```
3446
+ *
3447
+ * @deprecated Use `GridTooltipDirective` from
3448
+ * `@toolbox-web/grid-angular/features/tooltip`. Will be removed in v2.0.0.
3088
3449
  */
3089
3450
  tooltip: _angular_core.InputSignal<boolean | TooltipConfig | undefined>;
3090
3451
  /**
@@ -3137,8 +3498,81 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3137
3498
  * console.log(`Changed ${event.field} to ${event.value} in row ${event.rowIndex}`);
3138
3499
  * }
3139
3500
  * ```
3501
+ *
3502
+ * @deprecated Use `GridEditingDirective` from
3503
+ * `@toolbox-web/grid-angular/features/editing`. Will be removed in v2.0.0.
3140
3504
  */
3141
3505
  cellCommit: _angular_core.OutputEmitterRef<CellCommitEvent<unknown, unknown>>;
3506
+ /**
3507
+ * Emitted when a cell edit is cancelled (Escape, click outside without
3508
+ * commit, or `editor.cancel()`).
3509
+ *
3510
+ * @example
3511
+ * ```html
3512
+ * <tbw-grid (cellCancel)="onCellCancel($event)">...</tbw-grid>
3513
+ * ```
3514
+ *
3515
+ * @deprecated Use `GridEditingDirective` from
3516
+ * `@toolbox-web/grid-angular/features/editing`. Will be removed in v2.0.0.
3517
+ */
3518
+ cellCancel: _angular_core.OutputEmitterRef<CellCancelDetail>;
3519
+ /**
3520
+ * Emitted when a cell editor opens.
3521
+ *
3522
+ * @example
3523
+ * ```html
3524
+ * <tbw-grid (editOpen)="onEditOpen($event)">...</tbw-grid>
3525
+ * ```
3526
+ *
3527
+ * @deprecated Use `GridEditingDirective` from
3528
+ * `@toolbox-web/grid-angular/features/editing`. Will be removed in v2.0.0.
3529
+ */
3530
+ editOpen: _angular_core.OutputEmitterRef<EditOpenDetail<any>>;
3531
+ /**
3532
+ * Emitted before an editor closes. Useful for last-chance validation.
3533
+ *
3534
+ * @example
3535
+ * ```html
3536
+ * <tbw-grid (beforeEditClose)="onBeforeEditClose($event)">...</tbw-grid>
3537
+ * ```
3538
+ *
3539
+ * @deprecated Use `GridEditingDirective` from
3540
+ * `@toolbox-web/grid-angular/features/editing`. Will be removed in v2.0.0.
3541
+ */
3542
+ beforeEditClose: _angular_core.OutputEmitterRef<BeforeEditCloseDetail<any>>;
3543
+ /**
3544
+ * Emitted after an editor closes (whether committed or cancelled).
3545
+ *
3546
+ * @example
3547
+ * ```html
3548
+ * <tbw-grid (editClose)="onEditClose($event)">...</tbw-grid>
3549
+ * ```
3550
+ *
3551
+ * @deprecated Use `GridEditingDirective` from
3552
+ * `@toolbox-web/grid-angular/features/editing`. Will be removed in v2.0.0.
3553
+ */
3554
+ editClose: _angular_core.OutputEmitterRef<EditCloseDetail<any>>;
3555
+ /**
3556
+ * Emitted when the dirty / changed-rows state transitions.
3557
+ *
3558
+ * @example
3559
+ * ```html
3560
+ * <tbw-grid (dirtyChange)="onDirtyChange($event)">...</tbw-grid>
3561
+ * ```
3562
+ *
3563
+ * @deprecated Use `GridEditingDirective` from
3564
+ * `@toolbox-web/grid-angular/features/editing`. Will be removed in v2.0.0.
3565
+ */
3566
+ dirtyChange: _angular_core.OutputEmitterRef<DirtyChangeDetail<any>>;
3567
+ /**
3568
+ * Emitted when row data is replaced (e.g. via the `rows` setter).
3569
+ *
3570
+ * @example
3571
+ * ```html
3572
+ * <tbw-grid (dataChange)="onDataChange($event)">...</tbw-grid>
3573
+ * ```
3574
+ */
3575
+ dataChange: _angular_core.OutputEmitterRef<DataChangeDetail>;
3142
3576
  /**
3143
3577
  * Emitted when a row's values are committed (bulk/row editing).
3144
3578
  * Provides the row data and change tracking information.
@@ -3147,6 +3581,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3147
3581
  * ```html
3148
3582
  * <tbw-grid (rowCommit)="onRowCommit($event)">...</tbw-grid>
3149
3583
  * ```
3584
+ *
3585
+ * @deprecated Use `GridEditingDirective` from
3586
+ * `@toolbox-web/grid-angular/features/editing`. Will be removed in v2.0.0.
3150
3587
  */
3151
3588
  rowCommit: _angular_core.OutputEmitterRef<RowCommitEvent<unknown>>;
3152
3589
  /**
@@ -3156,6 +3593,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3156
3593
  * ```html
3157
3594
  * <tbw-grid (changedRowsReset)="onChangedRowsReset($event)">...</tbw-grid>
3158
3595
  * ```
3596
+ *
3597
+ * @deprecated Use `GridEditingDirective` from
3598
+ * `@toolbox-web/grid-angular/features/editing`. Will be removed in v2.0.0.
3159
3599
  */
3160
3600
  changedRowsReset: _angular_core.OutputEmitterRef<ChangedRowsResetDetail<unknown>>;
3161
3601
  /**
@@ -3174,6 +3614,11 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3174
3614
  * ```html
3175
3615
  * <tbw-grid (filterChange)="onFilterChange($event)">...</tbw-grid>
3176
3616
  * ```
3617
+ *
3618
+ * @deprecated Use `GridFilteringDirective` from
3619
+ * `@toolbox-web/grid-angular/features/filtering` (the directive
3620
+ * declares the `(filterChange)` output). This output remains as a
3621
+ * non-breaking shim and will be removed in v2.0.0.
3177
3622
  */
3178
3623
  filterChange: _angular_core.OutputEmitterRef<FilterChangeDetail>;
3179
3624
  /**
@@ -3185,6 +3630,15 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3185
3630
  * ```
3186
3631
  */
3187
3632
  columnResize: _angular_core.OutputEmitterRef<ColumnResizeDetail>;
3633
+ /**
3634
+ * Emitted when a column's width is reset (double-click on the resize handle).
3635
+ *
3636
+ * @example
3637
+ * ```html
3638
+ * <tbw-grid (columnResizeReset)="onColumnResizeReset($event)">...</tbw-grid>
3639
+ * ```
3640
+ */
3641
+ columnResizeReset: _angular_core.OutputEmitterRef<ColumnResizeResetDetail>;
3188
3642
  /**
3189
3643
  * Emitted when a column is moved via drag-and-drop.
3190
3644
  *
@@ -3192,15 +3646,23 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3192
3646
  * ```html
3193
3647
  * <tbw-grid (columnMove)="onColumnMove($event)">...</tbw-grid>
3194
3648
  * ```
3649
+ *
3650
+ * @deprecated Use `GridReorderColumnsDirective` from
3651
+ * `@toolbox-web/grid-angular/features/reorder-columns`. Will be removed in v2.0.0.
3195
3652
  */
3196
3653
  columnMove: _angular_core.OutputEmitterRef<ColumnMoveDetail>;
3197
3654
  /**
3198
- * Emitted when column visibility changes.
3655
+ * Emitted when a column is shown or hidden — either via the visibility
3656
+ * sidebar, `grid.toggleColumnVisibility(field)`, `grid.setColumnVisible(field, visible)`,
3657
+ * or `grid.showAllColumns()`.
3199
3658
  *
3200
3659
  * @example
3201
3660
  * ```html
3202
3661
  * <tbw-grid (columnVisibility)="onColumnVisibility($event)">...</tbw-grid>
3203
3662
  * ```
3663
+ *
3664
+ * @deprecated Use `GridVisibilityDirective` from
3665
+ * `@toolbox-web/grid-angular/features/visibility`. Will be removed in v2.0.0.
3204
3666
  */
3205
3667
  columnVisibility: _angular_core.OutputEmitterRef<ColumnVisibilityDetail>;
3206
3668
  /**
@@ -3219,6 +3681,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3219
3681
  * ```html
3220
3682
  * <tbw-grid (selectionChange)="onSelectionChange($event)">...</tbw-grid>
3221
3683
  * ```
3684
+ *
3685
+ * @deprecated Use `GridSelectionDirective` from
3686
+ * `@toolbox-web/grid-angular/features/selection`. Will be removed in v2.0.0.
3222
3687
  */
3223
3688
  selectionChange: _angular_core.OutputEmitterRef<SelectionChangeDetail>;
3224
3689
  /**
@@ -3228,6 +3693,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3228
3693
  * ```html
3229
3694
  * <tbw-grid (rowMove)="onRowMove($event)">...</tbw-grid>
3230
3695
  * ```
3696
+ *
3697
+ * @deprecated Use `GridRowDragDropDirective` from
3698
+ * `@toolbox-web/grid-angular/features/row-drag-drop`. Will be removed in v2.0.0.
3231
3699
  */
3232
3700
  rowMove: _angular_core.OutputEmitterRef<RowMoveDetail<any>>;
3233
3701
  /**
@@ -3237,20 +3705,32 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3237
3705
  * ```html
3238
3706
  * <tbw-grid (rowDragStart)="onRowDragStart($event)">...</tbw-grid>
3239
3707
  * ```
3708
+ *
3709
+ * @deprecated Use `GridRowDragDropDirective` from
3710
+ * `@toolbox-web/grid-angular/features/row-drag-drop`. Will be removed in v2.0.0.
3240
3711
  */
3241
3712
  rowDragStart: _angular_core.OutputEmitterRef<RowDragStartDetail<any>>;
3242
3713
  /**
3243
3714
  * Emitted when a row drag ends (after drop or cancel).
3715
+ *
3716
+ * @deprecated Use `GridRowDragDropDirective` from
3717
+ * `@toolbox-web/grid-angular/features/row-drag-drop`. Will be removed in v2.0.0.
3244
3718
  */
3245
3719
  rowDragEnd: _angular_core.OutputEmitterRef<RowDragEndDetail<any>>;
3246
3720
  /**
3247
3721
  * Emitted on the target grid when rows are dropped from another grid.
3248
3722
  * Cancelable via `event.preventDefault()`.
3723
+ *
3724
+ * @deprecated Use `GridRowDragDropDirective` from
3725
+ * `@toolbox-web/grid-angular/features/row-drag-drop`. Will be removed in v2.0.0.
3249
3726
  */
3250
3727
  rowDrop: _angular_core.OutputEmitterRef<RowDropDetail<any>>;
3251
3728
  /**
3252
3729
  * Emitted on BOTH source and target grids after a successful cross-grid
3253
3730
  * row transfer.
3731
+ *
3732
+ * @deprecated Use `GridRowDragDropDirective` from
3733
+ * `@toolbox-web/grid-angular/features/row-drag-drop`. Will be removed in v2.0.0.
3254
3734
  */
3255
3735
  rowTransfer: _angular_core.OutputEmitterRef<RowTransferDetail<any>>;
3256
3736
  /**
@@ -3260,8 +3740,35 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3260
3740
  * ```html
3261
3741
  * <tbw-grid (groupToggle)="onGroupToggle($event)">...</tbw-grid>
3262
3742
  * ```
3743
+ *
3744
+ * @deprecated Use `GridGroupingRowsDirective` from
3745
+ * `@toolbox-web/grid-angular/features/grouping-rows`. Will be removed in v2.0.0.
3263
3746
  */
3264
3747
  groupToggle: _angular_core.OutputEmitterRef<GroupToggleDetail>;
3748
+ /**
3749
+ * Emitted when a group is expanded.
3750
+ *
3751
+ * @example
3752
+ * ```html
3753
+ * <tbw-grid (groupExpand)="onGroupExpand($event)">...</tbw-grid>
3754
+ * ```
3755
+ *
3756
+ * @deprecated Use `GridGroupingRowsDirective` from
3757
+ * `@toolbox-web/grid-angular/features/grouping-rows`. Will be removed in v2.0.0.
3758
+ */
3759
+ groupExpand: _angular_core.OutputEmitterRef<GroupExpandDetail>;
3760
+ /**
3761
+ * Emitted when a group is collapsed.
3762
+ *
3763
+ * @example
3764
+ * ```html
3765
+ * <tbw-grid (groupCollapse)="onGroupCollapse($event)">...</tbw-grid>
3766
+ * ```
3767
+ *
3768
+ * @deprecated Use `GridGroupingRowsDirective` from
3769
+ * `@toolbox-web/grid-angular/features/grouping-rows`. Will be removed in v2.0.0.
3770
+ */
3771
+ groupCollapse: _angular_core.OutputEmitterRef<GroupCollapseDetail>;
3265
3772
  /**
3266
3773
  * Emitted when a tree node is expanded.
3267
3774
  *
@@ -3269,6 +3776,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3269
3776
  * ```html
3270
3777
  * <tbw-grid (treeExpand)="onTreeExpand($event)">...</tbw-grid>
3271
3778
  * ```
3779
+ *
3780
+ * @deprecated Use `GridTreeDirective` from
3781
+ * `@toolbox-web/grid-angular/features/tree`. Will be removed in v2.0.0.
3272
3782
  */
3273
3783
  treeExpand: _angular_core.OutputEmitterRef<TreeExpandDetail<any>>;
3274
3784
  /**
@@ -3278,6 +3788,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3278
3788
  * ```html
3279
3789
  * <tbw-grid (detailExpand)="onDetailExpand($event)">...</tbw-grid>
3280
3790
  * ```
3791
+ *
3792
+ * @deprecated Use `GridMasterDetailDirective` from
3793
+ * `@toolbox-web/grid-angular/features/master-detail`. Will be removed in v2.0.0.
3281
3794
  */
3282
3795
  detailExpand: _angular_core.OutputEmitterRef<DetailExpandDetail>;
3283
3796
  /**
@@ -3287,8 +3800,23 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3287
3800
  * ```html
3288
3801
  * <tbw-grid (responsiveChange)="onResponsiveChange($event)">...</tbw-grid>
3289
3802
  * ```
3803
+ *
3804
+ * @deprecated Use `GridResponsiveDirective` from
3805
+ * `@toolbox-web/grid-angular/features/responsive`. Will be removed in v2.0.0.
3290
3806
  */
3291
3807
  responsiveChange: _angular_core.OutputEmitterRef<ResponsiveChangeDetail>;
3808
+ /**
3809
+ * Emitted when the context menu opens.
3810
+ *
3811
+ * @example
3812
+ * ```html
3813
+ * <tbw-grid (contextMenuOpen)="onContextMenuOpen($event)">...</tbw-grid>
3814
+ * ```
3815
+ *
3816
+ * @deprecated Use `GridContextMenuDirective` from
3817
+ * `@toolbox-web/grid-angular/features/context-menu`. Will be removed in v2.0.0.
3818
+ */
3819
+ contextMenuOpen: _angular_core.OutputEmitterRef<ContextMenuOpenDetail>;
3292
3820
  /**
3293
3821
  * Emitted when cells are copied to clipboard.
3294
3822
  *
@@ -3296,6 +3824,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3296
3824
  * ```html
3297
3825
  * <tbw-grid (copy)="onCopy($event)">...</tbw-grid>
3298
3826
  * ```
3827
+ *
3828
+ * @deprecated Use `GridClipboardDirective` from
3829
+ * `@toolbox-web/grid-angular/features/clipboard`. Will be removed in v2.0.0.
3299
3830
  */
3300
3831
  copy: _angular_core.OutputEmitterRef<CopyDetail>;
3301
3832
  /**
@@ -3305,17 +3836,35 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3305
3836
  * ```html
3306
3837
  * <tbw-grid (paste)="onPaste($event)">...</tbw-grid>
3307
3838
  * ```
3839
+ *
3840
+ * @deprecated Use `GridClipboardDirective` from
3841
+ * `@toolbox-web/grid-angular/features/clipboard`. Will be removed in v2.0.0.
3308
3842
  */
3309
3843
  paste: _angular_core.OutputEmitterRef<PasteDetail>;
3310
3844
  /**
3311
- * Emitted when undo/redo is performed.
3845
+ * Emitted when an undo action is performed.
3312
3846
  *
3313
3847
  * @example
3314
3848
  * ```html
3315
- * <tbw-grid (undoRedoAction)="onUndoRedo($event)">...</tbw-grid>
3849
+ * <tbw-grid (undo)="onUndo($event)">...</tbw-grid>
3316
3850
  * ```
3851
+ *
3852
+ * @deprecated Use `GridUndoRedoDirective` from
3853
+ * `@toolbox-web/grid-angular/features/undo-redo`. Will be removed in v2.0.0.
3317
3854
  */
3318
- undoRedoAction: _angular_core.OutputEmitterRef<UndoRedoDetail>;
3855
+ undo: _angular_core.OutputEmitterRef<UndoRedoDetail>;
3856
+ /**
3857
+ * Emitted when a redo action is performed.
3858
+ *
3859
+ * @example
3860
+ * ```html
3861
+ * <tbw-grid (redo)="onRedo($event)">...</tbw-grid>
3862
+ * ```
3863
+ *
3864
+ * @deprecated Use `GridUndoRedoDirective` from
3865
+ * `@toolbox-web/grid-angular/features/undo-redo`. Will be removed in v2.0.0.
3866
+ */
3867
+ redo: _angular_core.OutputEmitterRef<UndoRedoDetail>;
3319
3868
  /**
3320
3869
  * Emitted when export completes.
3321
3870
  *
@@ -3323,6 +3872,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3323
3872
  * ```html
3324
3873
  * <tbw-grid (exportComplete)="onExportComplete($event)">...</tbw-grid>
3325
3874
  * ```
3875
+ *
3876
+ * @deprecated Use `GridExportDirective` from
3877
+ * `@toolbox-web/grid-angular/features/export`. Will be removed in v2.0.0.
3326
3878
  */
3327
3879
  exportComplete: _angular_core.OutputEmitterRef<ExportCompleteDetail>;
3328
3880
  /**
@@ -3332,6 +3884,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3332
3884
  * ```html
3333
3885
  * <tbw-grid (printStart)="onPrintStart($event)">...</tbw-grid>
3334
3886
  * ```
3887
+ *
3888
+ * @deprecated Use `GridPrintDirective` from
3889
+ * `@toolbox-web/grid-angular/features/print`. Will be removed in v2.0.0.
3335
3890
  */
3336
3891
  printStart: _angular_core.OutputEmitterRef<PrintStartDetail>;
3337
3892
  /**
@@ -3341,6 +3896,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3341
3896
  * ```html
3342
3897
  * <tbw-grid (printComplete)="onPrintComplete($event)">...</tbw-grid>
3343
3898
  * ```
3899
+ *
3900
+ * @deprecated Use `GridPrintDirective` from
3901
+ * `@toolbox-web/grid-angular/features/print`. Will be removed in v2.0.0.
3344
3902
  */
3345
3903
  printComplete: _angular_core.OutputEmitterRef<PrintCompleteDetail>;
3346
3904
  /**
@@ -3360,15 +3918,37 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3360
3918
  */
3361
3919
  tbwScroll: _angular_core.OutputEmitterRef<TbwScrollDetail>;
3362
3920
  private readonly eventOutputMap;
3921
+ /** Events deliberately not exposed as Angular outputs. Keep empty unless documented. */
3922
+ private _intentionallyOmittedEvents;
3923
+ private _assertEventOutputMapCoversCore;
3363
3924
  private eventListeners;
3364
3925
  ngOnInit(): void;
3365
3926
  /**
3366
3927
  * Sets up event listeners for all outputs using the eventOutputMap.
3928
+ *
3929
+ * Hybrid v1.x / v2 ownership: events claimed by an attribute-selector
3930
+ * feature directive (via `claimEvent` in `feature-claims.ts`) are skipped
3931
+ * here so the directive's own `output()` is the sole emitter. Without
3932
+ * this skip both this directive's deprecated output and the directive's
3933
+ * new output would fire for the same DOM event.
3367
3934
  */
3368
3935
  private setupEventListeners;
3369
3936
  /**
3370
3937
  * Creates plugins from feature inputs.
3371
3938
  * Uses the feature registry to allow tree-shaking - only imported features are bundled.
3939
+ * Per-feature config bridging (e.g. converting Angular component classes inside
3940
+ * `groupingColumns` / `groupingRows` / `pinnedRows` configs to renderer functions)
3941
+ * runs via `getFeatureConfigPreprocessor`, populated by feature secondary entries.
3942
+ *
3943
+ * Hybrid v1.x / v2 ownership: when an attribute-selector feature directive
3944
+ * (e.g. `GridFilteringDirective`) is present on the same `<tbw-grid>`
3945
+ * element it claims its feature in `feature-claims.ts`. We then read the
3946
+ * claim's config getter — which transitively reads the directive's input
3947
+ * signal, establishing reactive dependency tracking — instead of the
3948
+ * deprecated input on this directive. This keeps the existing `[filtering]`
3949
+ * binding working when used directly on `<tbw-grid>` (no directive, no
3950
+ * claim) while letting the directive own the binding when imported.
3951
+ *
3372
3952
  * Returns the array of created plugins (doesn't modify grid).
3373
3953
  */
3374
3954
  private createFeaturePlugins;
@@ -3378,21 +3958,9 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3378
3958
  * Uses the grid's registerStyles() API for clean encapsulation.
3379
3959
  */
3380
3960
  private registerCustomStyles;
3381
- /**
3382
- * Configures the MasterDetailPlugin after Angular templates are registered.
3383
- * - If plugin exists: refresh its detail renderer
3384
- * - If plugin doesn't exist but <tbw-grid-detail> is present: dynamically import and add the plugin
3385
- */
3386
- private configureMasterDetail;
3387
- /**
3388
- * Configures the ResponsivePlugin with Angular template-based card renderer.
3389
- * - If plugin exists: updates its cardRenderer configuration
3390
- * - If plugin doesn't exist but <tbw-grid-responsive-card> is present: logs a warning
3391
- */
3392
- private configureResponsiveCard;
3393
3961
  ngOnDestroy(): void;
3394
3962
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Grid, never>;
3395
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Grid, "tbw-grid", never, { "customStyles": { "alias": "customStyles"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "fitMode": { "alias": "fitMode"; "required": false; "isSignal": true; }; "gridConfig": { "alias": "gridConfig"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "editing": { "alias": "editing"; "required": false; "isSignal": true; }; "clipboard": { "alias": "clipboard"; "required": false; "isSignal": true; }; "contextMenu": { "alias": "contextMenu"; "required": false; "isSignal": true; }; "multiSort": { "alias": "multiSort"; "required": false; "isSignal": true; }; "filtering": { "alias": "filtering"; "required": false; "isSignal": true; }; "reorderColumns": { "alias": "reorderColumns"; "required": false; "isSignal": true; }; "visibility": { "alias": "visibility"; "required": false; "isSignal": true; }; "pinnedColumns": { "alias": "pinnedColumns"; "required": false; "isSignal": true; }; "groupingColumns": { "alias": "groupingColumns"; "required": false; "isSignal": true; }; "columnVirtualization": { "alias": "columnVirtualization"; "required": false; "isSignal": true; }; "reorderRows": { "alias": "reorderRows"; "required": false; "isSignal": true; }; "rowDragDrop": { "alias": "rowDragDrop"; "required": false; "isSignal": true; }; "groupingRows": { "alias": "groupingRows"; "required": false; "isSignal": true; }; "pinnedRows": { "alias": "pinnedRows"; "required": false; "isSignal": true; }; "tree": { "alias": "tree"; "required": false; "isSignal": true; }; "masterDetail": { "alias": "masterDetail"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "undoRedo": { "alias": "undoRedo"; "required": false; "isSignal": true; }; "exportFeature": { "alias": "export"; "required": false; "isSignal": true; }; "print": { "alias": "print"; "required": false; "isSignal": true; }; "pivot": { "alias": "pivot"; "required": false; "isSignal": true; }; "serverSide": { "alias": "serverSide"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; }, { "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"; }, never, never, true, never>;
3963
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Grid, "tbw-grid", never, { "customStyles": { "alias": "customStyles"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "filterable": { "alias": "filterable"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "columnDefaults": { "alias": "columnDefaults"; "required": false; "isSignal": true; }; "fitMode": { "alias": "fitMode"; "required": false; "isSignal": true; }; "gridConfig": { "alias": "gridConfig"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "editing": { "alias": "editing"; "required": false; "isSignal": true; }; "clipboard": { "alias": "clipboard"; "required": false; "isSignal": true; }; "contextMenu": { "alias": "contextMenu"; "required": false; "isSignal": true; }; "multiSort": { "alias": "multiSort"; "required": false; "isSignal": true; }; "filtering": { "alias": "filtering"; "required": false; "isSignal": true; }; "reorderColumns": { "alias": "reorderColumns"; "required": false; "isSignal": true; }; "visibility": { "alias": "visibility"; "required": false; "isSignal": true; }; "pinnedColumns": { "alias": "pinnedColumns"; "required": false; "isSignal": true; }; "groupingColumns": { "alias": "groupingColumns"; "required": false; "isSignal": true; }; "columnVirtualization": { "alias": "columnVirtualization"; "required": false; "isSignal": true; }; "reorderRows": { "alias": "reorderRows"; "required": false; "isSignal": true; }; "rowDragDrop": { "alias": "rowDragDrop"; "required": false; "isSignal": true; }; "groupingRows": { "alias": "groupingRows"; "required": false; "isSignal": true; }; "pinnedRows": { "alias": "pinnedRows"; "required": false; "isSignal": true; }; "tree": { "alias": "tree"; "required": false; "isSignal": true; }; "masterDetail": { "alias": "masterDetail"; "required": false; "isSignal": true; }; "responsive": { "alias": "responsive"; "required": false; "isSignal": true; }; "undoRedo": { "alias": "undoRedo"; "required": false; "isSignal": true; }; "exportFeature": { "alias": "export"; "required": false; "isSignal": true; }; "print": { "alias": "print"; "required": false; "isSignal": true; }; "pivot": { "alias": "pivot"; "required": false; "isSignal": true; }; "serverSide": { "alias": "serverSide"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; }, { "cellClick": "cellClick"; "rowClick": "rowClick"; "cellActivate": "cellActivate"; "cellChange": "cellChange"; "cellCommit": "cellCommit"; "cellCancel": "cellCancel"; "editOpen": "editOpen"; "beforeEditClose": "beforeEditClose"; "editClose": "editClose"; "dirtyChange": "dirtyChange"; "dataChange": "dataChange"; "rowCommit": "rowCommit"; "changedRowsReset": "changedRowsReset"; "sortChange": "sortChange"; "filterChange": "filterChange"; "columnResize": "columnResize"; "columnResizeReset": "columnResizeReset"; "columnMove": "columnMove"; "columnVisibility": "columnVisibility"; "columnStateChange": "columnStateChange"; "selectionChange": "selectionChange"; "rowMove": "rowMove"; "rowDragStart": "rowDragStart"; "rowDragEnd": "rowDragEnd"; "rowDrop": "rowDrop"; "rowTransfer": "rowTransfer"; "groupToggle": "groupToggle"; "groupExpand": "groupExpand"; "groupCollapse": "groupCollapse"; "treeExpand": "treeExpand"; "detailExpand": "detailExpand"; "responsiveChange": "responsiveChange"; "contextMenuOpen": "contextMenuOpen"; "copy": "copy"; "paste": "paste"; "undo": "undo"; "redo": "redo"; "exportComplete": "exportComplete"; "printStart": "printStart"; "printComplete": "printComplete"; "tbwScroll": "tbwScroll"; }, never, never, true, never>;
3396
3964
  }
3397
3965
 
3398
3966
  /**
@@ -3400,6 +3968,7 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3400
3968
  * This provides better ergonomics in templates without requiring explicit type annotations.
3401
3969
  *
3402
3970
  * @internal Use `GridCellContext` in application code for stricter typing.
3971
+ * @since 0.1.1
3403
3972
  */
3404
3973
  interface StructuralCellContext<TValue = any, TRow = any> {
3405
3974
  /** The cell value for this column */
@@ -3416,6 +3985,7 @@ interface StructuralCellContext<TValue = any, TRow = any> {
3416
3985
  * This provides better ergonomics in templates without requiring explicit type annotations.
3417
3986
  *
3418
3987
  * @internal Use `GridEditorContext` in application code for stricter typing.
3988
+ * @since 0.1.1
3419
3989
  */
3420
3990
  interface StructuralEditorContext<TValue = any, TRow = any> {
3421
3991
  /** The cell value for this column */
@@ -3494,6 +4064,7 @@ interface StructuralEditorContext<TValue = any, TRow = any> {
3494
4064
  * ```
3495
4065
  *
3496
4066
  * @category Directive
4067
+ * @since 0.1.1
3497
4068
  */
3498
4069
  declare class TbwRenderer implements OnDestroy {
3499
4070
  private template;
@@ -3562,6 +4133,14 @@ declare class TbwRenderer implements OnDestroy {
3562
4133
  * ```
3563
4134
  *
3564
4135
  * @category Directive
4136
+ *
4137
+ * MOVE-IN-V2: this directive (and its `StructuralEditorContext` type) will
4138
+ * physically move into `@toolbox-web/grid-angular/features/editing` in v2.0.0;
4139
+ * the deprecated re-export from the main `@toolbox-web/grid-angular` entry
4140
+ * will be removed at the same time. Consumers should already be importing
4141
+ * from the feature entry. (`TbwRenderer` stays in the main entry — it is
4142
+ * editor-agnostic.)
4143
+ * @since 0.1.1
3565
4144
  */
3566
4145
  declare class TbwEditor implements OnDestroy {
3567
4146
  private template;
@@ -3579,6 +4158,238 @@ declare class TbwEditor implements OnDestroy {
3579
4158
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TbwEditor, "[tbwEditor]", never, {}, {}, never, never, true, never>;
3580
4159
  }
3581
4160
 
3582
- export { BaseFilterPanel, BaseGridEditor, BaseGridEditorCVA, BaseOverlayEditor, GRID_ICONS, GRID_TYPE_DEFAULTS, Grid, GridAdapter, GridColumnEditor, GridColumnView, GridDetailView, GridFormArray, GridIconRegistry, GridLazyForm, GridResponsiveCard, GridToolPanel, GridTypeRegistry, TbwEditor, TbwGridColumn, TbwGridHeader, TbwGridToolButtons, TbwRenderer, getFormArrayContext, getLazyFormContext, injectGrid, isComponentClass, provideGridIcons, provideGridTypeDefaults };
3583
- export type { CellCommitEvent, CellEditor, CellRenderer, ColumnConfig, FeatureName, FilterPanel, FormArrayContext, GridCellContext, GridConfig, GridDetailContext, GridEditorContext, GridResponsiveCardContext, GridToolPanelContext, InjectGridReturn, LazyFormFactory, OverlayPosition, RowCommitEvent, RowFormChangeEvent, StructuralCellContext, StructuralEditorContext, TypeDefault, TypeDefaultRegistration };
4161
+ /**
4162
+ * Combined provider helper for grid type defaults and icons.
4163
+ *
4164
+ * Convenience function that combines `provideGridTypeDefaults` and
4165
+ * `provideGridIcons` into a single call for application bootstrap.
4166
+ *
4167
+ * @example
4168
+ * ```typescript
4169
+ * // app.config.ts
4170
+ * import { ApplicationConfig } from '@angular/core';
4171
+ * import { provideGrid } from '@toolbox-web/grid-angular';
4172
+ *
4173
+ * export const appConfig: ApplicationConfig = {
4174
+ * providers: [
4175
+ * provideGrid({
4176
+ * typeDefaults: {
4177
+ * country: { renderer: CountryCellComponent },
4178
+ * },
4179
+ * icons: {
4180
+ * sortAsc: '↑',
4181
+ * sortDesc: '↓',
4182
+ * },
4183
+ * }),
4184
+ * ],
4185
+ * };
4186
+ * ```
4187
+ */
4188
+
4189
+ /**
4190
+ * Options for {@link provideGrid}.
4191
+ * @since 1.4.0
4192
+ */
4193
+ interface ProvideGridOptions {
4194
+ /** Type defaults to register globally. Equivalent to `provideGridTypeDefaults`. */
4195
+ typeDefaults?: Record<string, TypeDefaultRegistration>;
4196
+ /** Icon overrides to register globally. Equivalent to `provideGridIcons`. */
4197
+ icons?: Partial<GridIcons>;
4198
+ }
4199
+ /**
4200
+ * Combined provider for grid type defaults and icons.
4201
+ *
4202
+ * Returns environment providers that can be added to your `ApplicationConfig`
4203
+ * `providers` array. Either field is optional — only the registries you
4204
+ * supply are wired up.
4205
+ *
4206
+ * Equivalent to calling `provideGridTypeDefaults(options.typeDefaults)` and
4207
+ * `provideGridIcons(options.icons)` separately.
4208
+ * @since 1.4.0
4209
+ */
4210
+ declare function provideGrid(options?: ProvideGridOptions): EnvironmentProviders;
4211
+
4212
+ /**
4213
+ * Internal registries used by `@toolbox-web/grid-angular`.
4214
+ *
4215
+ * Two extension points are exposed so individual feature secondary entries
4216
+ * (e.g. `@toolbox-web/grid-angular/features/master-detail`) can plug into
4217
+ * the core `Grid` directive without the directive needing to know about them.
4218
+ *
4219
+ * - {@link registerTemplateBridge} — runs in `ngAfterContentInit` once Angular
4220
+ * templates inside the grid have been registered. Used to discover light-DOM
4221
+ * slot elements (`<tbw-grid-detail>`, `<tbw-grid-responsive-card>`, …) and
4222
+ * wire them to the corresponding plugin's renderer setter.
4223
+ * - {@link registerFeatureConfigPreprocessor} — runs inside the directive's
4224
+ * feature-plugin builder before `createPluginFromFeature` is called. Lets a
4225
+ * feature transform its config object (e.g. to convert Angular component
4226
+ * classes embedded in `customPanels` to renderer functions).
4227
+ *
4228
+ * Both registries are append-only and module-scoped: they are populated by
4229
+ * side-effect imports of feature secondary entries and consumed by the core
4230
+ * `Grid` directive. Order is insertion order.
4231
+ *
4232
+ * @internal — public for cross-entry-point use; not part of the supported API.
4233
+ */
4234
+
4235
+ /**
4236
+ * Context passed to template bridges.
4237
+ *
4238
+ * @internal
4239
+ * @since 1.4.0
4240
+ */
4241
+ interface TemplateBridgeContext {
4242
+ /** The `<tbw-grid>` element this directive is attached to. */
4243
+ grid: HTMLElement;
4244
+ /** The Angular `GridAdapter` instance for this grid. */
4245
+ adapter: GridAdapter;
4246
+ }
4247
+ /**
4248
+ * A template bridge runs once per grid in `ngAfterContentInit`, after the
4249
+ * grid has refreshed its columns and Angular content templates have been
4250
+ * registered. Bridges may be async; the directive does not await them
4251
+ * sequentially — they run concurrently.
4252
+ *
4253
+ * @internal
4254
+ * @since 1.4.0
4255
+ */
4256
+ type TemplateBridge = (ctx: TemplateBridgeContext) => void | Promise<void>;
4257
+ /**
4258
+ * Register a template bridge. Called by feature secondary entries at module
4259
+ * load (e.g. `import '@toolbox-web/grid-angular/features/master-detail'`).
4260
+ *
4261
+ * Bridges are append-only and never deduplicated; calling registration twice
4262
+ * for the same feature module is safe because module imports are deduplicated
4263
+ * by the JS loader.
4264
+ *
4265
+ * @internal
4266
+ * @since 1.4.0
4267
+ */
4268
+ declare function registerTemplateBridge(bridge: TemplateBridge): void;
4269
+ /**
4270
+ * Run all registered template bridges for a grid. The directive calls this
4271
+ * from `ngAfterContentInit` after `refreshColumns()`. Bridges run concurrently;
4272
+ * errors thrown by one bridge do not stop the others.
4273
+ *
4274
+ * @internal
4275
+ * @since 1.4.0
4276
+ */
4277
+ declare function runTemplateBridges(ctx: TemplateBridgeContext): void;
4278
+ /**
4279
+ * A feature config preprocessor receives the user-supplied config for a
4280
+ * specific feature input and returns a transformed config that the core
4281
+ * plugin factory can consume. Used to bridge Angular component classes
4282
+ * embedded in feature configs (e.g. `customPanels`, `groupHeaderRenderer`)
4283
+ * to plain renderer functions.
4284
+ *
4285
+ * Receives the typed config and the directive's adapter. Returning the same
4286
+ * reference is fine — preprocessors typically clone-and-augment.
4287
+ *
4288
+ * @internal
4289
+ * @since 1.4.0
4290
+ */
4291
+ type FeatureConfigPreprocessor = (config: unknown, adapter: GridAdapter) => unknown;
4292
+ /**
4293
+ * Register a feature config preprocessor. Last registration wins (subsequent
4294
+ * imports of the same feature module re-register the same function, which is
4295
+ * a no-op).
4296
+ *
4297
+ * @internal
4298
+ * @since 1.4.0
4299
+ */
4300
+ declare function registerFeatureConfigPreprocessor(name: FeatureName, fn: FeatureConfigPreprocessor): void;
4301
+ /**
4302
+ * Look up the preprocessor for a feature, if any.
4303
+ *
4304
+ * @internal
4305
+ * @since 1.4.0
4306
+ */
4307
+ declare function getFeatureConfigPreprocessor(name: FeatureName): FeatureConfigPreprocessor | undefined;
4308
+
4309
+ /**
4310
+ * Per-grid-element claims registry used by the hybrid feature-directive
4311
+ * refactor (v1.4 → v2).
4312
+ *
4313
+ * Background: historically every plugin's input/output (e.g. `[filtering]`,
4314
+ * `(filterChange)`) was declared on the central {@link Grid} directive. That
4315
+ * pulled the typed surface for every {@link FeatureName} into the core
4316
+ * bundle — even for apps that only used a few. The new approach gives every
4317
+ * feature a thin **attribute-selector** directive (e.g.
4318
+ * `GridFilteringDirective` with selector `tbw-grid[filtering], tbw-grid[filterChange]`)
4319
+ * that lives in the feature secondary entry, so the plugin's typed surface
4320
+ * is only paid for when the feature is actually imported.
4321
+ *
4322
+ * To stay non-breaking in v1.x, the deprecated inputs/outputs remain on
4323
+ * {@link Grid}. When a feature directive is present on the same `<tbw-grid>`
4324
+ * element it **claims** its feature here; {@link Grid} consults the registry
4325
+ * and lets the directive own the input + event so we never produce duplicate
4326
+ * plugins or double-emit events.
4327
+ *
4328
+ * This module is deliberately framework-free (plain {@link WeakMap} state, no
4329
+ * `@angular/core` imports) so feature secondary entries can import it through
4330
+ * the package barrel without introducing circular module graphs. The
4331
+ * {@link FeatureName} and {@link DataGridEventMap} type imports are
4332
+ * type-only, so no runtime dependency leaks.
4333
+ *
4334
+ * @internal
4335
+ */
4336
+
4337
+ /** Event names that can be claimed by a feature directive. */
4338
+ type ClaimableEventName = keyof DataGridEventMap<unknown>;
4339
+ /**
4340
+ * Reads the directive-owned config value for a feature. The function is
4341
+ * called during {@link Grid}'s `createFeaturePlugins` effect, so reading a
4342
+ * signal inside it establishes reactive dependency tracking — the effect
4343
+ * re-runs when the directive's input changes.
4344
+ * @internal
4345
+ * @since 1.4.0
4346
+ */
4347
+ type FeatureConfigGetter = () => unknown;
4348
+ /**
4349
+ * Register a feature claim. Called by a feature directive's constructor;
4350
+ * the {@link Grid} directive will then use {@link getFeatureClaim} during
4351
+ * plugin creation instead of reading its own deprecated input.
4352
+ * @internal
4353
+ * @since 1.4.0
4354
+ */
4355
+ declare function registerFeatureClaim(grid: HTMLElement, name: FeatureName, getConfig: FeatureConfigGetter): void;
4356
+ /**
4357
+ * Look up a feature claim. Returns the registered config getter, or
4358
+ * `undefined` if no directive owns this feature on this element.
4359
+ * @internal
4360
+ * @since 1.4.0
4361
+ */
4362
+ declare function getFeatureClaim(grid: HTMLElement, name: FeatureName): FeatureConfigGetter | undefined;
4363
+ /**
4364
+ * Drop a feature claim. Called by a feature directive's `ngOnDestroy` so
4365
+ * that, if the directive is removed (e.g. via `*ngIf`) but the host
4366
+ * `<tbw-grid>` survives, {@link Grid}'s deprecated input takes back over.
4367
+ * @internal
4368
+ * @since 1.4.0
4369
+ */
4370
+ declare function unregisterFeatureClaim(grid: HTMLElement, name: FeatureName): void;
4371
+ /**
4372
+ * Mark an event as owned by a feature directive. {@link Grid}'s
4373
+ * `setupEventListeners` skips wiring its own deprecated `output()` for any
4374
+ * claimed event — the directive owns the listener and the emit.
4375
+ * @internal
4376
+ * @since 1.4.0
4377
+ */
4378
+ declare function claimEvent(grid: HTMLElement, eventName: ClaimableEventName): void;
4379
+ /**
4380
+ * Returns true if a directive has claimed this event on this grid element.
4381
+ * @internal
4382
+ * @since 1.4.0
4383
+ */
4384
+ declare function isEventClaimed(grid: HTMLElement, eventName: ClaimableEventName): boolean;
4385
+ /**
4386
+ * Drop an event claim. Pair with {@link claimEvent} in a directive's
4387
+ * `ngOnDestroy`.
4388
+ * @internal
4389
+ * @since 1.4.0
4390
+ */
4391
+ declare function unclaimEvent(grid: HTMLElement, eventName: ClaimableEventName): void;
4392
+
4393
+ export { BaseFilterPanel, BaseGridEditor, BaseGridEditorCVA, BaseOverlayEditor, GRID_ICONS, GRID_TYPE_DEFAULTS, Grid, GridAdapter, GridColumnEditor, GridColumnView, GridDetailView, GridFormArray, GridIconRegistry, GridLazyForm, GridResponsiveCard, GridToolPanel, GridTypeRegistry, TbwEditor, TbwGridColumn, TbwGridHeader, TbwGridToolButtons, TbwRenderer, applyColumnDefaults, claimEvent, getDetailTemplate, getFeatureClaim, getFeatureConfigPreprocessor, getFormArrayContext, getLazyFormContext, getResponsiveCardTemplate, hasColumnShorthands, injectGrid, isComponentClass, isEventClaimed, makeFlushFocusedInput, normalizeColumns, parseColumnShorthand, provideGrid, provideGridIcons, provideGridTypeDefaults, registerDetailRendererBridge, registerEditorMountHook, registerFeatureClaim, registerFeatureConfigPreprocessor, registerFilterPanelTypeDefaultBridge, registerResponsiveCardRendererBridge, registerTemplateBridge, runTemplateBridges, unclaimEvent, unregisterFeatureClaim };
4394
+ export type { CellCommitEvent, CellEditor, CellRenderer, ColumnConfig, ColumnShorthand, EditorMountHook, FeatureConfigGetter, FeatureConfigPreprocessor, FeatureName, FilterPanel, FilterPanelTypeDefaultBridge, FormArrayContext, GridCellContext, GridConfig, GridDetailContext, GridEditorContext, GridResponsiveCardContext, GridToolPanelContext, InjectGridReturn, LazyFormFactory, OverlayPosition, ProvideGridOptions, RowCommitEvent, RowFormChangeEvent, RowRendererBridge, StructuralCellContext, StructuralEditorContext, TemplateBridge, TemplateBridgeContext, TypeDefault, TypeDefaultRegistration };
3584
4395
  //# sourceMappingURL=toolbox-web-grid-angular.d.ts.map