@toolbox-web/grid-angular 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toolbox-web/grid-angular",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "Angular adapter for @toolbox-web/grid data grid component",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -35,6 +35,7 @@ export { PluginFactory, clearFeatureRegistry, createPluginFromFeature, getFeatur
35
35
  * column = input<unknown>();
36
36
  * }
37
37
  * ```
38
+ * @since 0.11.0
38
39
  */
39
40
  interface CellRenderer<TRow = unknown, TValue = unknown> {
40
41
  /** The cell value - use `input<TValue>()` or `input.required<TValue>()` */
@@ -78,6 +79,7 @@ interface CellRenderer<TRow = unknown, TValue = unknown> {
78
79
  * cancel = output<void>();
79
80
  * }
80
81
  * ```
82
+ * @since 0.11.0
81
83
  */
82
84
  interface CellEditor<TRow = unknown, TValue = unknown> extends CellRenderer<TRow, TValue> {
83
85
  /** Emit to commit the new value - use `output<TValue>()` */
@@ -120,6 +122,7 @@ interface CellEditor<TRow = unknown, TValue = unknown> extends CellRenderer<TRow
120
122
  * params = input.required<FilterPanelParams>();
121
123
  * }
122
124
  * ```
125
+ * @since 0.12.0
123
126
  */
124
127
  interface FilterPanel {
125
128
  /** The filter panel parameters — use `input.required<FilterPanelParams>()` */
@@ -148,6 +151,7 @@ interface FilterPanel {
148
151
  * }
149
152
  * };
150
153
  * ```
154
+ * @since 0.10.0
151
155
  */
152
156
  interface TypeDefault<TRow = unknown> {
153
157
  /** Format function for cell display */
@@ -198,6 +202,7 @@ interface TypeDefault<TRow = unknown> {
198
202
  * },
199
203
  * ];
200
204
  * ```
205
+ * @since 0.3.0
201
206
  */
202
207
  interface ColumnConfig<TRow = unknown> extends Omit<ColumnConfig$1<TRow>, 'renderer' | 'editor' | 'headerRenderer' | 'headerLabelRenderer'> {
203
208
  /**
@@ -240,8 +245,9 @@ interface ColumnConfig<TRow = unknown> extends Omit<ColumnConfig$1<TRow>, 'rende
240
245
  * plugins: [...],
241
246
  * };
242
247
  * ```
248
+ * @since 0.3.0
243
249
  */
244
- interface GridConfig<TRow = unknown> extends Omit<GridConfig$1<TRow>, 'columns' | 'typeDefaults' | 'loadingRenderer'> {
250
+ interface GridConfig<TRow = unknown> extends Omit<GridConfig$1<TRow>, 'columns' | 'typeDefaults' | 'loadingRenderer' | 'emptyRenderer'> {
245
251
  columns?: ColumnConfig<TRow>[];
246
252
  /** Type-level defaults that can use Angular component classes */
247
253
  typeDefaults?: Record<string, TypeDefault<TRow>>;
@@ -251,6 +257,15 @@ interface GridConfig<TRow = unknown> extends Omit<GridConfig$1<TRow>, 'columns'
251
257
  * - An Angular component class with a `size` input
252
258
  */
253
259
  loadingRenderer?: GridConfig$1<TRow>['loadingRenderer'] | Type<unknown>;
260
+ /**
261
+ * Custom empty-state renderer shown when the grid has no rows and is not
262
+ * loading. Can be:
263
+ * - A function `(ctx: EmptyContext) => HTMLElement | string`
264
+ * - An Angular component class with `sourceRowCount` and `filteredOut` inputs
265
+ *
266
+ * Set explicitly to `null` to suppress the built-in default message.
267
+ */
268
+ emptyRenderer?: GridConfig$1<TRow>['emptyRenderer'] | Type<unknown>;
254
269
  }
255
270
  /**
256
271
  * Type guard to check if a value is an Angular component class.
@@ -261,6 +276,7 @@ interface GridConfig<TRow = unknown> extends Omit<GridConfig$1<TRow>, 'columns'
261
276
  *
262
277
  * Also checks if it's an ES6 class (vs function) by inspecting the
263
278
  * string representation.
279
+ * @since 0.3.0
264
280
  */
265
281
  declare function isComponentClass(value: unknown): value is Type<unknown>;
266
282
 
@@ -281,6 +297,7 @@ declare function isComponentClass(value: unknown): value is Type<unknown>;
281
297
  /**
282
298
  * Hook called when an editor host is mounted. Returning a function
283
299
  * registers a teardown that runs when the editor is released.
300
+ * @since 1.4.0
284
301
  */
285
302
  type EditorMountHook = (ctx: {
286
303
  container: HTMLElement;
@@ -291,6 +308,7 @@ type EditorMountHook = (ctx: {
291
308
  * (e.g. `features/editing`) on import.
292
309
  *
293
310
  * @internal Plugin API
311
+ * @since 1.4.0
294
312
  */
295
313
  declare function registerEditorMountHook(hook: EditorMountHook): void;
296
314
  /**
@@ -300,6 +318,7 @@ declare function registerEditorMountHook(hook: EditorMountHook): void;
300
318
  * `(blur)` flush their pending value before the cell DOM is torn down by Tab /
301
319
  * programmatic row exit.
302
320
  * @internal
321
+ * @since 1.4.0
303
322
  */
304
323
  declare function makeFlushFocusedInput(host: HTMLElement): () => void;
305
324
 
@@ -325,6 +344,7 @@ declare function makeFlushFocusedInput(host: HTMLElement): () => void;
325
344
  * the adapter should expose, or undefined if no Angular template is registered
326
345
  * for that grid. Used by `features/master-detail` and `features/responsive`.
327
346
  * @internal
347
+ * @since 1.4.0
328
348
  */
329
349
  type RowRendererBridge = <TRow = unknown>(gridElement: HTMLElement, adapter: GridAdapter) => ((row: TRow, rowIndex: number) => HTMLElement) | undefined;
330
350
  /**
@@ -333,18 +353,21 @@ type RowRendererBridge = <TRow = unknown>(gridElement: HTMLElement, adapter: Gri
333
353
  * (so the adapter does not depend on filtering types) and returns the
334
354
  * imperative `(container, params) => void` form required by core.
335
355
  * @internal
356
+ * @since 1.4.0
336
357
  */
337
358
  type FilterPanelTypeDefaultBridge = (rendererValue: unknown, adapter: GridAdapter) => NonNullable<TypeDefault$1['filterPanelRenderer']> | undefined;
338
359
  /**
339
360
  * Install the master-detail row-renderer bridge. Called once on import by
340
361
  * `@toolbox-web/grid-angular/features/master-detail`.
341
362
  * @internal Plugin API
363
+ * @since 1.4.0
342
364
  */
343
365
  declare function registerDetailRendererBridge(bridge: RowRendererBridge): void;
344
366
  /**
345
367
  * Install the responsive-card row-renderer bridge. Called once on import by
346
368
  * `@toolbox-web/grid-angular/features/responsive`.
347
369
  * @internal Plugin API
370
+ * @since 1.4.0
348
371
  */
349
372
  declare function registerResponsiveCardRendererBridge(bridge: RowRendererBridge): void;
350
373
  /**
@@ -353,9 +376,11 @@ declare function registerResponsiveCardRendererBridge(bridge: RowRendererBridge)
353
376
  * type-default and grid-config-level component-class filterPanelRenderers are
354
377
  * silently dropped — same precondition as the FilteringPlugin (TBW031).
355
378
  * @internal Plugin API
379
+ * @since 1.4.0
356
380
  */
357
381
  declare function registerFilterPanelTypeDefaultBridge(bridge: FilterPanelTypeDefaultBridge): void;
358
382
 
383
+ /** @since 0.11.0 */
359
384
  declare class GridAdapter implements FrameworkAdapter {
360
385
  private injector;
361
386
  private appRef;
@@ -569,6 +594,13 @@ declare class GridAdapter implements FrameworkAdapter {
569
594
  * @internal
570
595
  */
571
596
  private createComponentLoadingRenderer;
597
+ /**
598
+ * Creates an empty-state renderer function from an Angular component class.
599
+ *
600
+ * The component receives `sourceRowCount` and `filteredOut` inputs.
601
+ * @internal
602
+ */
603
+ private createComponentEmptyRenderer;
572
604
  /**
573
605
  * Create an embedded view from a `TemplateRef` and append-track it on the
574
606
  * adapter's view-ref pool so it is cleaned up on `destroy()` / `unmount()`.
@@ -664,6 +696,7 @@ declare class GridAdapter implements FrameworkAdapter {
664
696
  * },
665
697
  * };
666
698
  * ```
699
+ * @since 0.11.0
667
700
  */
668
701
  interface TypeDefaultRegistration<TRow = unknown> {
669
702
  /** Angular component class for rendering cells of this type */
@@ -683,6 +716,7 @@ interface TypeDefaultRegistration<TRow = unknown> {
683
716
  }
684
717
  /**
685
718
  * Injection token for providing type defaults at app level.
719
+ * @since 0.3.0
686
720
  */
687
721
  declare const GRID_TYPE_DEFAULTS: InjectionToken<Record<string, TypeDefaultRegistration<unknown>>>;
688
722
  /**
@@ -720,6 +754,7 @@ declare const GRID_TYPE_DEFAULTS: InjectionToken<Record<string, TypeDefaultRegis
720
754
  * }
721
755
  * }
722
756
  * ```
757
+ * @since 0.3.0
723
758
  */
724
759
  declare class GridTypeRegistry {
725
760
  private readonly defaults;
@@ -776,6 +811,7 @@ declare class GridTypeRegistry {
776
811
  * ]
777
812
  * };
778
813
  * ```
814
+ * @since 0.3.0
779
815
  */
780
816
  declare function provideGridTypeDefaults(defaults: Record<string, TypeDefaultRegistration>): EnvironmentProviders;
781
817
 
@@ -788,6 +824,7 @@ declare function provideGridTypeDefaults(defaults: Record<string, TypeDefaultReg
788
824
 
789
825
  /**
790
826
  * Injection token for providing icon overrides at app level.
827
+ * @since 0.8.0
791
828
  */
792
829
  declare const GRID_ICONS: InjectionToken<Partial<GridIcons>>;
793
830
  /**
@@ -820,6 +857,7 @@ declare const GRID_ICONS: InjectionToken<Partial<GridIcons>>;
820
857
  * }
821
858
  * }
822
859
  * ```
860
+ * @since 0.8.0
823
861
  */
824
862
  declare class GridIconRegistry {
825
863
  private readonly icons;
@@ -890,11 +928,13 @@ declare class GridIconRegistry {
890
928
  * ]
891
929
  * };
892
930
  * ```
931
+ * @since 0.8.0
893
932
  */
894
933
  declare function provideGridIcons(icons: Partial<GridIcons>): EnvironmentProviders;
895
934
 
896
935
  /**
897
936
  * Return type for injectGrid function.
937
+ * @since 0.6.0
898
938
  */
899
939
  interface InjectGridReturn<TRow = unknown> {
900
940
  /** Direct access to the typed grid element */
@@ -965,6 +1005,7 @@ interface InjectGridReturn<TRow = unknown> {
965
1005
  * Defaults to `'tbw-grid'` (first grid in the component). Use when the
966
1006
  * component contains multiple grids, e.g. `'tbw-grid.primary'` or `'#my-grid'`.
967
1007
  * @returns Object with grid access methods and state signals
1008
+ * @since 0.6.0
968
1009
  */
969
1010
  declare function injectGrid<TRow = unknown>(selector?: string): InjectGridReturn<TRow>;
970
1011
 
@@ -988,6 +1029,7 @@ declare function injectGrid<TRow = unknown>(selector?: string): InjectGridReturn
988
1029
 
989
1030
  /**
990
1031
  * Feature names supported by the Grid directive.
1032
+ * @since 0.6.0
991
1033
  */
992
1034
  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';
993
1035
 
@@ -1040,6 +1082,7 @@ type FeatureName = 'selection' | 'editing' | 'clipboard' | 'contextMenu' | 'mult
1040
1082
  * `@toolbox-web/grid-angular/features/filtering` in v2.0.0; the deprecated
1041
1083
  * re-export from the main `@toolbox-web/grid-angular` entry will be removed at
1042
1084
  * the same time. Consumers should already be importing from the feature entry.
1085
+ * @since 0.13.0
1043
1086
  */
1044
1087
  declare abstract class BaseFilterPanel implements FilterPanel {
1045
1088
  /**
@@ -1153,6 +1196,7 @@ declare abstract class BaseFilterPanel implements FilterPanel {
1153
1196
  * `@toolbox-web/grid-angular/features/editing` in v2.0.0; the deprecated
1154
1197
  * re-export from the main `@toolbox-web/grid-angular` entry will be removed at
1155
1198
  * the same time. Consumers should already be importing from the feature entry.
1199
+ * @since 0.5.0
1156
1200
  */
1157
1201
  declare abstract class BaseGridEditor<TRow = unknown, TValue = unknown> {
1158
1202
  protected readonly elementRef: ElementRef<any>;
@@ -1344,6 +1388,7 @@ declare abstract class BaseGridEditor<TRow = unknown, TValue = unknown> {
1344
1388
  * `@toolbox-web/grid-angular/features/editing` in v2.0.0; the deprecated
1345
1389
  * re-export from the main `@toolbox-web/grid-angular` entry will be removed at
1346
1390
  * the same time. Consumers should already be importing from the feature entry.
1391
+ * @since 0.13.0
1347
1392
  */
1348
1393
  declare abstract class BaseGridEditorCVA<TRow = unknown, TValue = unknown> extends BaseGridEditor<TRow, TValue> implements ControlValueAccessor {
1349
1394
  /** Internal onChange callback registered by the form control. */
@@ -1410,6 +1455,7 @@ declare abstract class BaseGridEditorCVA<TRow = unknown, TValue = unknown> exten
1410
1455
  * - `'below-right'` — panel appears below the cell, right-aligned
1411
1456
  * - `'over-top-left'` — panel top-left corner aligns with cell top-left corner (opens downward)
1412
1457
  * - `'over-bottom-left'` — panel bottom-left corner aligns with cell bottom-left corner (opens upward)
1458
+ * @since 0.13.0
1413
1459
  */
1414
1460
  type OverlayPosition = 'below' | 'above' | 'below-right' | 'over-top-left' | 'over-bottom-left';
1415
1461
  /**
@@ -1513,6 +1559,7 @@ type OverlayPosition = 'below' | 'above' | 'below-right' | 'over-top-left' | 'ov
1513
1559
  * the deprecated re-export from the main `@toolbox-web/grid-angular` entry
1514
1560
  * will be removed at the same time. Consumers should already be importing
1515
1561
  * from the feature entry.
1562
+ * @since 0.13.0
1516
1563
  */
1517
1564
  declare abstract class BaseOverlayEditor<TRow = unknown, TValue = unknown> extends BaseGridEditor<TRow, TValue> {
1518
1565
  private readonly _elementRef;
@@ -1675,6 +1722,7 @@ declare abstract class BaseOverlayEditor<TRow = unknown, TValue = unknown> exten
1675
1722
  /**
1676
1723
  * Context object passed to the cell editor template.
1677
1724
  * Contains the cell value, row data, column configuration, and commit/cancel functions.
1725
+ * @since 0.1.0
1678
1726
  */
1679
1727
  interface GridEditorContext<TValue = unknown, TRow = unknown> {
1680
1728
  /** The cell value for this column */
@@ -1778,6 +1826,7 @@ interface GridEditorContext<TValue = unknown, TRow = unknown> {
1778
1826
  * re-exports from the main `@toolbox-web/grid-angular` entry will be removed
1779
1827
  * at the same time. Consumers should already be importing from the feature
1780
1828
  * entry.
1829
+ * @since 0.1.0
1781
1830
  */
1782
1831
  declare class GridColumnEditor {
1783
1832
  private elementRef;
@@ -1799,6 +1848,7 @@ declare class GridColumnEditor {
1799
1848
  /**
1800
1849
  * Context object passed to the cell renderer template.
1801
1850
  * Contains the cell value, row data, and column configuration.
1851
+ * @since 0.1.0
1802
1852
  */
1803
1853
  interface GridCellContext<TValue = unknown, TRow = unknown> {
1804
1854
  /** The cell value for this column */
@@ -1845,6 +1895,7 @@ interface GridCellContext<TValue = unknown, TRow = unknown> {
1845
1895
  * ```
1846
1896
  *
1847
1897
  * @category Directive
1898
+ * @since 0.1.0
1848
1899
  */
1849
1900
  declare class GridColumnView {
1850
1901
  private elementRef;
@@ -1892,6 +1943,7 @@ declare class GridColumnView {
1892
1943
  * ```
1893
1944
  *
1894
1945
  * @category Directive
1946
+ * @since 0.13.0
1895
1947
  */
1896
1948
  declare class TbwGridColumn {
1897
1949
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TbwGridColumn, never>;
@@ -1901,6 +1953,7 @@ declare class TbwGridColumn {
1901
1953
  /**
1902
1954
  * Context object passed to the detail renderer template.
1903
1955
  * Contains the row data for the expanded detail view.
1956
+ * @since 0.1.0
1904
1957
  */
1905
1958
  interface GridDetailContext<TRow = unknown> {
1906
1959
  /** The row data (implicit binding for let-row) */
@@ -1911,6 +1964,7 @@ interface GridDetailContext<TRow = unknown> {
1911
1964
  /**
1912
1965
  * Gets the detail template registered for a given grid element.
1913
1966
  * Used by AngularGridAdapter to retrieve templates at render time.
1967
+ * @since 0.1.0
1914
1968
  */
1915
1969
  declare function getDetailTemplate(gridElement: HTMLElement): TemplateRef<GridDetailContext> | undefined;
1916
1970
  /**
@@ -1961,6 +2015,7 @@ declare function getDetailTemplate(gridElement: HTMLElement): TemplateRef<GridDe
1961
2015
  * ```
1962
2016
  *
1963
2017
  * @category Directive
2018
+ * @since 0.1.0
1964
2019
  */
1965
2020
  declare class GridDetailView {
1966
2021
  private elementRef;
@@ -1986,6 +2041,7 @@ declare class GridDetailView {
1986
2041
  /**
1987
2042
  * Context provided to the grid containing form-related information.
1988
2043
  * This can be accessed by other directives to get form controls.
2044
+ * @since 0.5.0
1989
2045
  */
1990
2046
  interface FormArrayContext {
1991
2047
  /** Get the row data at a specific index */
@@ -2052,6 +2108,7 @@ interface FormArrayContext {
2052
2108
  /**
2053
2109
  * Gets the FormArrayContext from a grid element, if present.
2054
2110
  * @internal
2111
+ * @since 0.5.0
2055
2112
  */
2056
2113
  declare function getFormArrayContext(gridElement: HTMLElement): FormArrayContext | undefined;
2057
2114
  /**
@@ -2120,6 +2177,7 @@ declare function getFormArrayContext(gridElement: HTMLElement): FormArrayContext
2120
2177
  * re-exports from the main `@toolbox-web/grid-angular` entry will be removed
2121
2178
  * at the same time. Consumers should already be importing from the feature
2122
2179
  * entry.
2180
+ * @since 0.5.0
2123
2181
  */
2124
2182
  declare class GridFormArray implements OnInit, OnDestroy {
2125
2183
  #private;
@@ -2184,6 +2242,7 @@ declare class GridFormArray implements OnInit, OnDestroy {
2184
2242
  * ```
2185
2243
  *
2186
2244
  * @category Directive
2245
+ * @since 0.13.0
2187
2246
  */
2188
2247
  declare class TbwGridHeader {
2189
2248
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TbwGridHeader, never>;
@@ -2193,6 +2252,7 @@ declare class TbwGridHeader {
2193
2252
  /**
2194
2253
  * Gets the FormArrayContext from a grid element, if present.
2195
2254
  * @internal
2255
+ * @since 0.11.0
2196
2256
  */
2197
2257
  declare function getLazyFormContext(gridElement: HTMLElement): FormArrayContext | undefined;
2198
2258
  /**
@@ -2203,10 +2263,12 @@ declare function getLazyFormContext(gridElement: HTMLElement): FormArrayContext
2203
2263
  * @param row The row data object
2204
2264
  * @param rowIndex The row index in the grid
2205
2265
  * @returns A FormGroup for the row (only include editable fields)
2266
+ * @since 0.11.0
2206
2267
  */
2207
2268
  type LazyFormFactory<TRow = unknown> = (row: TRow, rowIndex: number) => FormGroup;
2208
2269
  /**
2209
2270
  * Event emitted when a row's form values have changed.
2271
+ * @since 0.11.0
2210
2272
  */
2211
2273
  interface RowFormChangeEvent<TRow = unknown> {
2212
2274
  /** The row index */
@@ -2306,6 +2368,7 @@ interface RowFormChangeEvent<TRow = unknown> {
2306
2368
  * re-exports from the main `@toolbox-web/grid-angular` entry will be removed
2307
2369
  * at the same time. Consumers should already be importing from the feature
2308
2370
  * entry.
2371
+ * @since 0.11.0
2309
2372
  */
2310
2373
  declare class GridLazyForm<TRow = unknown> implements OnInit, OnDestroy {
2311
2374
  #private;
@@ -2403,6 +2466,7 @@ declare class GridLazyForm<TRow = unknown> implements OnInit, OnDestroy {
2403
2466
  * </ng-template>
2404
2467
  * </tbw-grid-responsive-card>
2405
2468
  * ```
2469
+ * @since 0.4.0
2406
2470
  */
2407
2471
  interface GridResponsiveCardContext<TRow = unknown> {
2408
2472
  /**
@@ -2423,6 +2487,7 @@ interface GridResponsiveCardContext<TRow = unknown> {
2423
2487
  *
2424
2488
  * @param gridElement - The grid element to look up
2425
2489
  * @returns The template reference or undefined if not found
2490
+ * @since 0.4.0
2426
2491
  */
2427
2492
  declare function getResponsiveCardTemplate(gridElement: HTMLElement): TemplateRef<GridResponsiveCardContext> | undefined;
2428
2493
  /**
@@ -2457,6 +2522,7 @@ declare function getResponsiveCardTemplate(gridElement: HTMLElement): TemplateRe
2457
2522
  *
2458
2523
  * @see ResponsivePlugin
2459
2524
  * @category Directive
2525
+ * @since 0.4.0
2460
2526
  */
2461
2527
  declare class GridResponsiveCard<TRow = unknown> {
2462
2528
  private elementRef;
@@ -2517,6 +2583,7 @@ declare class GridResponsiveCard<TRow = unknown> {
2517
2583
  * ```
2518
2584
  *
2519
2585
  * @category Directive
2586
+ * @since 0.13.0
2520
2587
  */
2521
2588
  declare class TbwGridToolButtons {
2522
2589
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TbwGridToolButtons, never>;
@@ -2526,6 +2593,7 @@ declare class TbwGridToolButtons {
2526
2593
  /**
2527
2594
  * Context object passed to the tool panel template.
2528
2595
  * Provides access to grid-related information for the panel content.
2596
+ * @since 0.1.0
2529
2597
  */
2530
2598
  interface GridToolPanelContext {
2531
2599
  /** The grid element (implicit binding) */
@@ -2591,6 +2659,7 @@ interface GridToolPanelContext {
2591
2659
  * ```
2592
2660
  *
2593
2661
  * @category Directive
2662
+ * @since 0.1.0
2594
2663
  */
2595
2664
  declare class GridToolPanel {
2596
2665
  private elementRef;
@@ -2647,6 +2716,7 @@ declare class GridToolPanel {
2647
2716
  * const cols2 = ['id:number', 'name:string', 'email'];
2648
2717
  * const cols3 = [{ field: 'id' }, { field: 'name' }, { field: 'email' }];
2649
2718
  * ```
2719
+ * @since 1.4.0
2650
2720
  */
2651
2721
  type ColumnShorthand<TRow = unknown> = string | ColumnConfig$1<TRow>;
2652
2722
  /**
@@ -2658,6 +2728,7 @@ type ColumnShorthand<TRow = unknown> = string | ColumnConfig$1<TRow>;
2658
2728
  *
2659
2729
  * @param shorthand - The shorthand string (e.g., 'name', 'salary:number')
2660
2730
  * @returns A ColumnConfig object
2731
+ * @since 1.4.0
2661
2732
  */
2662
2733
  declare function parseColumnShorthand<TRow = unknown>(shorthand: string): ColumnConfig$1<TRow>;
2663
2734
  /**
@@ -2665,18 +2736,22 @@ declare function parseColumnShorthand<TRow = unknown>(shorthand: string): Column
2665
2736
  *
2666
2737
  * @param columns - Array of column shorthands (strings or ColumnConfig objects)
2667
2738
  * @returns Array of ColumnConfig objects
2739
+ * @since 1.4.0
2668
2740
  */
2669
2741
  declare function normalizeColumns<TRow = unknown>(columns: ColumnShorthand<TRow>[]): ColumnConfig$1<TRow>[];
2670
2742
  /**
2671
2743
  * Apply column defaults to a list of columns. Individual column properties
2672
2744
  * override defaults.
2745
+ * @since 1.4.0
2673
2746
  */
2674
2747
  declare function applyColumnDefaults<TRow = unknown>(columns: ColumnConfig$1<TRow>[], defaults: Partial<ColumnConfig$1<TRow>> | undefined): ColumnConfig$1<TRow>[];
2675
- /** Check if an array of columns contains any shorthand strings. */
2748
+ /** Check if an array of columns contains any shorthand strings. * @since 1.4.0
2749
+ */
2676
2750
  declare function hasColumnShorthands<TRow>(columns: ColumnShorthand<TRow>[]): boolean;
2677
2751
 
2678
2752
  /**
2679
2753
  * Event detail for cell commit events.
2754
+ * @since 0.1.1
2680
2755
  */
2681
2756
  interface CellCommitEvent<TRow = unknown, TValue = unknown> {
2682
2757
  /** The row data object */
@@ -2696,6 +2771,7 @@ interface CellCommitEvent<TRow = unknown, TValue = unknown> {
2696
2771
  }
2697
2772
  /**
2698
2773
  * Event detail for row commit events (bulk editing).
2774
+ * @since 0.1.1
2699
2775
  */
2700
2776
  interface RowCommitEvent<TRow = unknown> {
2701
2777
  /** The row data object */
@@ -2744,6 +2820,7 @@ interface RowCommitEvent<TRow = unknown> {
2744
2820
  * - Handles cleanup on destruction
2745
2821
  *
2746
2822
  * @category Directive
2823
+ * @since 0.1.0
2747
2824
  */
2748
2825
  declare class Grid implements OnInit, AfterContentInit, OnDestroy {
2749
2826
  private elementRef;
@@ -3907,6 +3984,7 @@ declare class Grid implements OnInit, AfterContentInit, OnDestroy {
3907
3984
  * This provides better ergonomics in templates without requiring explicit type annotations.
3908
3985
  *
3909
3986
  * @internal Use `GridCellContext` in application code for stricter typing.
3987
+ * @since 0.1.1
3910
3988
  */
3911
3989
  interface StructuralCellContext<TValue = any, TRow = any> {
3912
3990
  /** The cell value for this column */
@@ -3923,6 +4001,7 @@ interface StructuralCellContext<TValue = any, TRow = any> {
3923
4001
  * This provides better ergonomics in templates without requiring explicit type annotations.
3924
4002
  *
3925
4003
  * @internal Use `GridEditorContext` in application code for stricter typing.
4004
+ * @since 0.1.1
3926
4005
  */
3927
4006
  interface StructuralEditorContext<TValue = any, TRow = any> {
3928
4007
  /** The cell value for this column */
@@ -4001,6 +4080,7 @@ interface StructuralEditorContext<TValue = any, TRow = any> {
4001
4080
  * ```
4002
4081
  *
4003
4082
  * @category Directive
4083
+ * @since 0.1.1
4004
4084
  */
4005
4085
  declare class TbwRenderer implements OnDestroy {
4006
4086
  private template;
@@ -4076,6 +4156,7 @@ declare class TbwRenderer implements OnDestroy {
4076
4156
  * will be removed at the same time. Consumers should already be importing
4077
4157
  * from the feature entry. (`TbwRenderer` stays in the main entry — it is
4078
4158
  * editor-agnostic.)
4159
+ * @since 0.1.1
4079
4160
  */
4080
4161
  declare class TbwEditor implements OnDestroy {
4081
4162
  private template;
@@ -4123,6 +4204,7 @@ declare class TbwEditor implements OnDestroy {
4123
4204
 
4124
4205
  /**
4125
4206
  * Options for {@link provideGrid}.
4207
+ * @since 1.4.0
4126
4208
  */
4127
4209
  interface ProvideGridOptions {
4128
4210
  /** Type defaults to register globally. Equivalent to `provideGridTypeDefaults`. */
@@ -4139,6 +4221,7 @@ interface ProvideGridOptions {
4139
4221
  *
4140
4222
  * Equivalent to calling `provideGridTypeDefaults(options.typeDefaults)` and
4141
4223
  * `provideGridIcons(options.icons)` separately.
4224
+ * @since 1.4.0
4142
4225
  */
4143
4226
  declare function provideGrid(options?: ProvideGridOptions): EnvironmentProviders;
4144
4227
 
@@ -4169,6 +4252,7 @@ declare function provideGrid(options?: ProvideGridOptions): EnvironmentProviders
4169
4252
  * Context passed to template bridges.
4170
4253
  *
4171
4254
  * @internal
4255
+ * @since 1.4.0
4172
4256
  */
4173
4257
  interface TemplateBridgeContext {
4174
4258
  /** The `<tbw-grid>` element this directive is attached to. */
@@ -4183,6 +4267,7 @@ interface TemplateBridgeContext {
4183
4267
  * sequentially — they run concurrently.
4184
4268
  *
4185
4269
  * @internal
4270
+ * @since 1.4.0
4186
4271
  */
4187
4272
  type TemplateBridge = (ctx: TemplateBridgeContext) => void | Promise<void>;
4188
4273
  /**
@@ -4194,6 +4279,7 @@ type TemplateBridge = (ctx: TemplateBridgeContext) => void | Promise<void>;
4194
4279
  * by the JS loader.
4195
4280
  *
4196
4281
  * @internal
4282
+ * @since 1.4.0
4197
4283
  */
4198
4284
  declare function registerTemplateBridge(bridge: TemplateBridge): void;
4199
4285
  /**
@@ -4202,6 +4288,7 @@ declare function registerTemplateBridge(bridge: TemplateBridge): void;
4202
4288
  * errors thrown by one bridge do not stop the others.
4203
4289
  *
4204
4290
  * @internal
4291
+ * @since 1.4.0
4205
4292
  */
4206
4293
  declare function runTemplateBridges(ctx: TemplateBridgeContext): void;
4207
4294
  /**
@@ -4215,6 +4302,7 @@ declare function runTemplateBridges(ctx: TemplateBridgeContext): void;
4215
4302
  * reference is fine — preprocessors typically clone-and-augment.
4216
4303
  *
4217
4304
  * @internal
4305
+ * @since 1.4.0
4218
4306
  */
4219
4307
  type FeatureConfigPreprocessor = (config: unknown, adapter: GridAdapter) => unknown;
4220
4308
  /**
@@ -4223,12 +4311,14 @@ type FeatureConfigPreprocessor = (config: unknown, adapter: GridAdapter) => unkn
4223
4311
  * a no-op).
4224
4312
  *
4225
4313
  * @internal
4314
+ * @since 1.4.0
4226
4315
  */
4227
4316
  declare function registerFeatureConfigPreprocessor(name: FeatureName, fn: FeatureConfigPreprocessor): void;
4228
4317
  /**
4229
4318
  * Look up the preprocessor for a feature, if any.
4230
4319
  *
4231
4320
  * @internal
4321
+ * @since 1.4.0
4232
4322
  */
4233
4323
  declare function getFeatureConfigPreprocessor(name: FeatureName): FeatureConfigPreprocessor | undefined;
4234
4324
 
@@ -4268,6 +4358,7 @@ type ClaimableEventName = keyof DataGridEventMap<unknown>;
4268
4358
  * signal inside it establishes reactive dependency tracking — the effect
4269
4359
  * re-runs when the directive's input changes.
4270
4360
  * @internal
4361
+ * @since 1.4.0
4271
4362
  */
4272
4363
  type FeatureConfigGetter = () => unknown;
4273
4364
  /**
@@ -4275,12 +4366,14 @@ type FeatureConfigGetter = () => unknown;
4275
4366
  * the {@link Grid} directive will then use {@link getFeatureClaim} during
4276
4367
  * plugin creation instead of reading its own deprecated input.
4277
4368
  * @internal
4369
+ * @since 1.4.0
4278
4370
  */
4279
4371
  declare function registerFeatureClaim(grid: HTMLElement, name: FeatureName, getConfig: FeatureConfigGetter): void;
4280
4372
  /**
4281
4373
  * Look up a feature claim. Returns the registered config getter, or
4282
4374
  * `undefined` if no directive owns this feature on this element.
4283
4375
  * @internal
4376
+ * @since 1.4.0
4284
4377
  */
4285
4378
  declare function getFeatureClaim(grid: HTMLElement, name: FeatureName): FeatureConfigGetter | undefined;
4286
4379
  /**
@@ -4288,6 +4381,7 @@ declare function getFeatureClaim(grid: HTMLElement, name: FeatureName): FeatureC
4288
4381
  * that, if the directive is removed (e.g. via `*ngIf`) but the host
4289
4382
  * `<tbw-grid>` survives, {@link Grid}'s deprecated input takes back over.
4290
4383
  * @internal
4384
+ * @since 1.4.0
4291
4385
  */
4292
4386
  declare function unregisterFeatureClaim(grid: HTMLElement, name: FeatureName): void;
4293
4387
  /**
@@ -4295,17 +4389,20 @@ declare function unregisterFeatureClaim(grid: HTMLElement, name: FeatureName): v
4295
4389
  * `setupEventListeners` skips wiring its own deprecated `output()` for any
4296
4390
  * claimed event — the directive owns the listener and the emit.
4297
4391
  * @internal
4392
+ * @since 1.4.0
4298
4393
  */
4299
4394
  declare function claimEvent(grid: HTMLElement, eventName: ClaimableEventName): void;
4300
4395
  /**
4301
4396
  * Returns true if a directive has claimed this event on this grid element.
4302
4397
  * @internal
4398
+ * @since 1.4.0
4303
4399
  */
4304
4400
  declare function isEventClaimed(grid: HTMLElement, eventName: ClaimableEventName): boolean;
4305
4401
  /**
4306
4402
  * Drop an event claim. Pair with {@link claimEvent} in a directive's
4307
4403
  * `ngOnDestroy`.
4308
4404
  * @internal
4405
+ * @since 1.4.0
4309
4406
  */
4310
4407
  declare function unclaimEvent(grid: HTMLElement, eventName: ClaimableEventName): void;
4311
4408